← 返回列表
未验证
🐋 DeepSeek Harness 增强计划模式
尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/8/23 · 已提供中文文档
为🐋 DeepSeek Harness 打造的全屏、Grok-Build 风格的计划审查覆盖层,支持 vim 导航、内联搜索和内联评论。
综合分
28.1
GitHub 分
28.1
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add guillaumemeyer/dsh-plan-approval该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/18(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-client-runtime@deepseek-ai/cordis用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
🐋 DeepSeek Harness 增强计划模式
一个用于 DeepSeek Harness (DSH) 的全屏增强计划模式。
它用一个全屏审阅界面取代了聊天中那个小小的计划审阅卡片,让大型计划也能清晰可读、便于浏览。当智能体提交计划(exit_plan_mode)时它会自动渲染,并沿用现有的 planMode / userQuestions 审阅契约。
功能特性
- 在横跨整个框架的 shell.overlay 层中实现全屏审阅,尺寸为 90vw × 90vh。
- 行导航(vim 风格):j/k 逐行移动,gg 跳到顶部,G(Shift+g)跳到底部,光标行带有一条笔直的左侧高亮,并会自动滚动。
- 内联搜索:/ 打开搜索栏;匹配的行会实时高亮,Enter 循环到下一个匹配项,Shift+Enter 循环到上一个,Esc 关闭(一旦浮层重新获得焦点,n/N 也可用)。
- 内联评论:c(或点击某一行)会在该行锚定一条评论,以内联小标签的形式显示。评论会整合进计划中:
- 在请求修改(s)时,它们会被序列化进反馈答案中,让智能体据此修订计划。
- 在批准(a)时,计划被批准并退出计划模式;用 y 复制的是合并后的计划(含评论)。评论不会附加到批准操作上——请使用 s(请求修改)把它们发回去修订。
- 操作:a 批准 · s 请求修改 · y 复制计划 · q 退出计划。
- 底部状态行列出了所有键盘快捷键。
安装(到 DSH 部署中)
这是一个 dsh.client 浏览器插件,因此必须安装并挂载到 DSH 组合其 web 界面的位置(host/web 组合),然后重启 host,以便 client-modules 的 node 端生成 bundle。
简单安装(使用 dsh 插件 CLI)
dsh plugin --profile web add github:guillaumemeyer/dsh-plan-approval
--profile web 选择的是 web 界面——DSH 的默认 profile——如果你的部署对该 profile 的命名不同,请相应调整。这是 github:owner/repo 模板:请替换为你正在安装的插件的 owner/repo。
手动安装
若要手动接线(或者你的部署没有运行 dsh 插件 CLI),请将包安装并挂载到 DSH 组合其 web 界面的位置:
1. 安装该包到 DSH 部署的 web 应用中:
npm i @guillaumemeyer/dsh-plan-approval
2. 找到 web 界面(浏览器名册)组合。 这就是 DSH web 应用中的 cordis.yml / cordis.patch.yml,其中列出了其他浏览器名册行(ui-plan、ui-user-questions、ui-tool……)。(随附的 @deepseek-ai/dsh-web-app cordis.patch.yml 就是这段“浏览器插件名册”部分的参考。)
3. 向该名册添加一行:
- id: ui-plan-approval
name: '@guillaumemeyer/dsh-plan-approval'
4. 重启 DSH host。 @deepseek-ai/dsh-client-modules 的 node 端会重新扫描
用于声明 dsh.client 的包的加载器条目、bundle
/plugins/@guillaumemeyer/dsh-plan-approval/client.js,以及浏览器加载它。
(使用 pnpm run dev:web 监听器时,bundle 会自动重新构建而无需
重启;在生产/已构建部署中,需要重启宿主。)
该行必须位于Web 界面 dsh.client 名册中(一个
dsh.client platform: "web" 包)。将其放入 agent preset 或
非 Web 组合中不会被扫描进 window.__DSH_BOOT__。
验证它已挂载
重启后,该包的浏览器 bundle 会通过
/plugins/@guillaumemeyer/dsh-plan-approval/client.js 提供,并且该插件会出现在
shell.overlay 插槽中。
从 DSH 使用它
1. 进入 plan 模式 — 将 agent 切换到 plan 模式(/plan 命令或
会话的 plan 控件),并让它进行规划。
2. 提交计划 — 当 agent 有了计划后,它会调用 exit_plan_mode 并传入
计划 markdown。全屏审查覆盖层会自动打开。
3. 审查计划:
- 导航:j/k 移动光标行,gg 跳到顶部,G(Shift+g)跳到
底部;计划会自动滚动以跟随光标。
- 搜索:/ 打开搜索栏 — 输入以高亮匹配项,Enter 跳到
下一个匹配项,Shift+Enter 跳到上一个,Esc 关闭。
- 评论:c(或点击任意行)会在该行锚定一条内联评论;
输入后按 Enter 添加(Esc 取消)。评论会显示为内联标签。
- 复制:y 复制计划,包括任何内联评论(合并后的计划)。
4. 决定:
- a 批准计划。
- s 请求修改 — 反馈框会打开;提交你请求的修改
(以及任何内联评论)→ agent 会继续规划并修订计划。
- q 退出计划 — 取消审查,改为直接对话。
底部的状态行会显示所有快捷键:a approve · s changes · c comment ·
y copy · q quit · j/k move · gg/G ends · / search。
键盘快捷键
| 按键 | 操作 |
| --- | --- |
| a | 批准计划 |
| s | 请求修改(打开反馈框;Enter 提交) |
| c | 在当前行添加内联评论(Enter 添加,Esc 取消) |
| y | 复制计划(与评论合并) |
| q | 退出 / 取消计划审查 |
| j / k | 将光标向下 / 向上移动一行 |
| gg | 跳到顶部 |
| G(Shift+g) | 跳到底部 |
| / | 打开搜索(输入以高亮;Enter 下一个,Shift+Enter 上一个,Esc 关闭) |
| Esc | 关闭搜索/评论框,否则退出 |
审查答案如何映射
底层的 exit_plan_mode 审查是二元的(批准 vs. 继续规划)。此
插件保留该契约,并在其上叠加评论:
- a(批准) 始终发送普通的批准答案({ selected: [approve] }),
因此宿主会退出 plan 模式,计划会从下一步开始执行——无论
或者是否有内联评论。将评论作为 custom 附加到审批上,会让未打补丁的主机把该审批视为“继续规划”(使会话保持在计划模式,而不是切换到执行),因此批准路径有意保持答案干净。
- s(请求更改) 会将输入的反馈加上内联评论作为 custom 答案发送 → 主机会继续规划,智能体会根据你的评论修改计划。当你想让自己的评论被考虑时,就使用这条路径。
- 合并后的计划(计划 + 内联评论)仍可通过 y 复制。
主机更改:带备注批准(可选)
随附的 @deepseek-ai/dsh-plan-mode 工具会把审查答案上的任何 custom 值都视为“继续规划”。该插件的批准路径通过发送一个普通批准来维持这一约定,因此批准总是会离开计划模式并开始执行。如果你还希望将内联评论自动附加到批准上,请在 approve()(client.js)中重新启用 custom 字段,并修补主机的 exit_plan_mode 以接受它:
// before: if (... || item.custom !== void 0) { /* keep planning / }
if (item?.selected.length !== 1 || item.selected[0] !== APPROVE_LABEL) { / keep planning */ }
// after pendingIntents.set(...):
const notes = item?.custom;
return { approved: true, ...(notes ? { notes } : {}) };
并在该工具的 output.schema 中允许 notes(可选的 notes: { type: "string" }),同时将其包含在结果 render 中,以便模型在批准后看到这些评论。这需要重启主机才能生效,而且这是对已发布包的更改,升级会将其覆盖——理想情况下应向上游提交。
发布更新
要发布新版本,请确保本地 .env(未跟踪)中保存着你的 npm token,然后:
cp .env.example .env # once: edit to add NPM_TOKEN=...
npm run release # runs publish:check (preversion), bumps patch, publishes to npm
- token 从 .env 读取,并由已提交的 .npmrc 通过 ${NPM_TOKEN} 引用,因此它永远不会被跟踪。
- preversion 会在版本号提升之前自动运行 node --check client.js && npm pack --dry-run。
- 该脚本命名为 release,因为 publish 是 npm 的保留生命周期名称:npm 会在 npm publish 期间自动运行 publish 脚本。将其命名为 publish 会导致 npm publish 重新运行该脚本,从而在每次循环中提升版本号并发布一个版本。
备注
- 仅客户端浏览器插件;node 部分(index.js)是一个空的 apply。
- 包以 publishConfig.access: "public" 发布;.npmignore 会丢弃仓库/开发相关的杂物。
许可证
MIT同作者(guillaumemeyer)的其他插件
扫码进群