dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
DeepSeek Harness Web 的计划评审增强:在评审卡片内直接回复意见让模型修订计划,并在全屏浮层中回看、对比、编辑和留档每一版计划。
#dsh #deepseek-harness #计划评审 #plan-mode #行级diff #版本回看
让 DeepSeek Harness Web 的计划评审不再是"一锤子买卖"——评审弹窗内直接提意见修改计划,随时回看、对比、甚至直接编辑每一版计划。
DeepSeek Harness(DSH)内置 plan mode:模型制定计划后通过 exit_plan_mode 弹出评审卡片,用户只能 批准 / 拒绝 / 回到聊天框。痛点有两个:
本插件补齐这两个缺口,全程不改动 DSH 仓库任何文件,纯插件方式增强,卸载即还原。
兼容性:适配 DeepSeek Harness Web(
dsh web,profileweb)。依赖官方 Slot 契约:conversation.composer/conversation.input.left/shell.overlay;不同版本 Slot 树若变化,评审接管会自动降级为原生 UI,「查看计划」按钮不受影响。
计划待审卡片底部内联多行输入框,不必关掉弹窗去聊天框打字。
输入行点「查看计划」弹出浮层,可切版本、对比上一版、直接编辑并留档为新版本。
会话产生过计划后,输入行左端出现图标的「查看计划」小按钮,刷新页面后依然可查。
# 从 GitHub 一键安装
dsh plugin --profile web add github:lsdt45/dsh-plan-plus
重启 dsh web(默认 http://127.0.0.1:3080),页面 Ctrl+Shift+R 硬刷新,打开任意会话即可生效。
# 方式一:GitHub 直装(推荐)
dsh plugin --profile web add github:lsdt45/dsh-plan-plus
# 方式二:克隆后本地安装(便于修改源码 / 二次开发)
git clone https://github.com/lsdt45/dsh-plan-plus.git
cd dsh-plan-plus
dsh plugin --profile web add .
# 方式三:手动软链接(不需要 pnpm)
ln -s "$(pwd)" ~/.dsh/profiles/web/node_modules/dsh-plan-plus
# 并在 ~/.dsh/profiles/web/package.json 中把 dsh-plan-plus 加入
# dsh.profile.bundles 数组与 dependencies(link: 协议)
exit_plan_mode 弹出的评审卡片中新增多行输入框 + 发送按钮:
实现上通过 conversation.composer chain 插槽(priority: -5,先于原生评审卡片命中)接管 plan-review 问题,收窄规则与原生 planReviewOf 完全一致;收窄失败时静默降级为原生 UI,不影响任何其他问题/审批流程。
exit_plan_mode 调用记录),composer 输入行左端出现 SVG 图标的「查看计划」小按钮tool/call 事件)恢复,刷新页面后依然可查每次模型经 exit_plan_mode 呈现计划都会留档为一个版本,浮层支持:
模型根据评审反馈修订计划、重新弹出评审卡时,正文直接呈现与上一版的逐行差异:
+/- 符号(与浮层对比共用同一 DiffView 组件与样式)+N/-M)「查看计划」浮层新增编辑模式,可不必经模型往返、直接修改计划正文:
dsh.planPlus.v1.edits),刷新页面后仍保留,且不随模型后续修订丢失--color-* 变量迁移到 DSH 原生 --dsw-* 主题 token(输入表面、文字、边框、警示/品牌色、遮罩、滚动条等),卡片/浮层/版本下拉/按钮在亮、暗两套主题下均与原生 UI 配色一致| 场景 | 操作 |
|---|---|
| 修改计划 | 评审弹窗底部的输入框输入意见 → Enter(或点「发送修改意见」) |
| 批准计划 | 点「确认执行」(与原生一致,退出 plan mode 开始执行) |
| 保持规划 | 点「拒绝」(与原生一致,模型继续规划) |
| 自由讨论 | 点「去聊天里说」(关闭弹窗回输入框) |
| 回看计划 | 输入行左端「查看计划」按钮 → 浮层查看 → ✕ 或点背景关闭 |
| 回看历史版本 | 浮层顶部「版本」下拉选择 v1…vN |
| 对比修订 | 浮层勾选「对比上一版」,红/绿高亮显示与上一版的差异 |
| 评审时看改动 | 模型修订后重弹评审卡,正文默认即差异视图;工具条切「全文」回原文 |
| 编辑计划 | 浮层工具栏点「编辑」→ 修改正文 → 保存(或 ⌘/Ctrl+Enter);编辑留档为新版本并持久化 |
| 展开阅读 | 评审弹窗标题条或浮层工具条点「展开查看」→ 计划铺满整个会话区域 → 点「收起」或按 Esc 返回 |
| 部分 | 文件 | 说明 |
|---|---|---|
| 宿主半 | index.mjs | ESM Cordis 插件;注册 GET /planx-latest-plan?sessionId=... HTTP 路由,从会话日志扫描全部 exit_plan_mode 的 tool/call 事件,返回版本数组({ plan, plans: [...] },plans 按时间排序) |
| 浏览器半 | client.js | window.__ModuleLoader__.load 自注册 bundle;注册 3 个 Slot:conversation.composer(评审接管卡)、conversation.input.left(查看计划按钮)、shell.overlay(计划浮层);浮层内含版本下拉、行级 diff(手写 LCS)与计划编辑模式;用户编辑经 localStorage 键 dsh.planPlus.v1.edits 持久化 |
| 组合声明 | cordis.patch.yml | - insert 一行把插件挂进 profile |
静态插件没有动态插件的 Package 私有 RPC(
harness.handle/host.call),因此宿主与浏览器之间改用webServerHTTP 路由通信。
欢迎提 Issue 与 PR(https://github.com/lsdt45/dsh-plan-plus)。
主要负责人:@lsdt45
MIT,详见 LEGAL.md。