deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
PROJECT TOPICS
PROJECT README
DeepSeek Harness (dsh) web 开发者工具面板 —— 文件浏览 / 多终端 / Git / 后台任务,样式 1:1 移植 pi-web-ui。
右侧嵌入对话页的开发者工具面板,默认展开、可拖拽调整宽度(360–900px)、可收起;所有视图随当前工作区/会话自动切换。
<工作区>/.dsh-ui-tools/commands.json,${pwd} 自动展开为会话工作区;npm run dev &、python -m http.server)——每次 shell 工具执行前后对比 LISTENING 端口,发现新服务即记录;参照 pi-marker-tools,把模型侧的 todo_write 工具替换为「写在回答正文里的 [[todo:...]] 行内标记」:
[[todo:new:写单元测试]] 新建、[[todo:set:2,completed]] 改状态、[[todo:remove:2]] 删除、[[todo:dep:2,blocks=1,3]] 声明依赖、[[todo:title:2:新标题]] 重命名;todo/write 事件持久化(随分支跟随,resume 恢复;旧日志兼容读取 marker/todos 快照) —— 现有 TodoDock 任务条零改动直接生效;todo_write 工具、不再解析标记)+ 每个内联标记插件独立开关(如 todo,停用后该插件的标记不再执行、恢复原生行为,其他插件不受影响;第三方注册的插件也会出现在列表里)。切换即时生效,持久化到 ~/.dsh-ui-tools/settings.json,对所有工作区生效;markers_list 工具;todo_write 已从模型可见工具中移除(不会出现 unknown tool 提示),旧调用也会被本插件接管、绝不报错;[[todo:title:<id>:<新标题>]] 支持冒号语法,持久化前做无损 JSON 清洗(杜绝 exotic 值导致 todo/write 写入失败)。通用内联标记系统以 Cordis Service inlineMarkers 发布 —— 任何 dsh bundle 插件都能用官方格式注册新的 [[tool:...]] 标记,与内置 todo 完全同权(解析、持久化、错误处理一致):
// 你的插件 dsh/index.js(官方 bundle 插件格式)
export const name = 'my-inline-tool'
export const inject = ['inlineMarkers']
export function apply(ctx) {
ctx.inlineMarkers.register('note', {
// state: 当前会话共享富状态(含 todo 的 tasks/nextId,JSON 安全字段自动透传持久化)
// token: { tool, op, args, kwargs, raw }
applyOp(state, token) {
const text = (token.args[0] || '').trim()
if (!text) return { applied: false, error: 'note:add 需要文本' }
state.notes = state.notes || []
state.notes.push({ text, at: Date.now() })
return { applied: true, feedback: `Note added: ${text}` }
},
})
}
applyOp 返回 { applied: true, feedback? } 表示状态已变(触发持久化);{ applied: false, error? } 表示忽略(不报错、不落库);[[note:add:...]] 即自动触发,与 [[todo:...]] 完全一致;examples/inline-note/,安装方式与任何 bundle 插件相同(dsh plugin --profile web add <你的包> 或本地路径 patch)。sounds.ts + SoundSettings.tsx 一一对应。--dsw-alias-* token(body / body[data-ds-dark-theme] 上定义),随 shell 的主题切换(亮/暗/跟随系统、第三方注册主题)自动级联,无需 JS 参与;body[data-ds-dark-theme] 实时重绘画布配色(背景/前景/光标读 shell token,ANSI 16 色用亮暗两套调色板)。| 文件面板 + 文件提及 | Git 面板 |
|---|---|
![]() |
![]() |
| 多终端(快捷命令一键运行) | 文件面板(目录浏览) |
![]() |
![]() |
# 从 npm 安装(推荐)
dsh plugin --profile web add dsh-ui-tools
# 或从 GitHub 安装
dsh plugin --profile web add github:xing-shuyin/dsh-ui-tools
把 dsh-ui-tools 加进 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles:
{
"dependencies": { "dsh-ui-tools": "^0.1.1" },
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-ui-tools"
]
}
}
}
重启 dsh web 并刷新页面。右侧工具面板默认展开;收起后点击右侧边缘的悬浮 🛠️ 按钮即可重新打开。
⚠️ 注意:终端使用
node-pty在 dsh 进程内直接启动 shell,不经过 dsh 的沙箱 —— 与 pi-web-ui 一致。
npm install # 需要允许 esbuild / node-pty 的安装脚本
npm run build # 打包 client → client/client.js
dsh-ui-tools/
├── package.json # 插件包清单 (dsh.bundle.patch / dsh.client)
├── cordis.patch.yml # bundle 层:插入插件行
├── dsh/
│ ├── index.js # Host 端:HTTP 路由 + node-pty 终端 + git + mentions 富化
│ ├── background-servers.js # 后台服务检测(移植自 pi-web-ui):端口 diff + 管理
│ └── marker-todo.js # 通用内联标记系统(发布 inlineMarkers 服务)+ todo 功能
├── client/
│ ├── src/ # Client 端源码 (TSX, esbuild 打包)
│ └── client.js # 构建产物 (window.__ModuleLoader__ 协议)
├── examples/
│ └── inline-note/ # 第三方内联标记工具示例(官方 bundle 格式)
└── scripts/build-client.mjs
| 本插件 | pi-web-ui 来源 |
|---|---|
dsh/index.js 终端管理 |
server/terminals.ts(node-pty + 命令文件) |
dsh/index.js 文件读写/预览分类 |
server/agent-service.ts(readFile / listFiles / hexDump / workspacePath) |
client/src/TerminalView.tsx |
web/src/components/TerminalPanel.tsx + TermXterm.tsx |
client/src/GitView.tsx + git-parse.ts |
web/src/components/SCMPanel.tsx |
client/src/FilesView.tsx + FilePreview.tsx |
web/src/components/RightPanel.tsx + FilePreview.tsx |
| 提及(随问题发送) | pi-web-ui 的 attachment(inline / reference / lines) |
| 声音提示(Web Audio 合成 + 设置) | web/src/sounds.ts + web/src/components/SoundSettings.tsx |
MIT
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。