dsh-task-decision:把 AI 每轮的待决问题收进右侧边栏

前言

在 DSH(DeepSeek Harness)里做多轮开发时,常见的一个场景是:AI 一轮抛出三五个需要你拍板的决策点,它们散落在正文里,逐条回复很容易漏答、或答错题号;等你把答案发回去,AI 又常常对不上”q1 到底问的是什么”。正文标记块的方案也不理想——DSH 聊天渲染器会把 HTML 注释原样转义显示,聊天流里会出现一大坨 JSON。

本文介绍的 long-yin-zi/dsh-task-decision 就是针对这个问题的 DSH 桌面端插件:AI 每轮结束时自动把「本轮摘要 + 待决问题」登记进右侧边栏的一个 tab,你在面板里一次选完、给每题写备注,点一下提交,答案带着问题标题自动发回当前会话。

这是什么

一句话定位:一个 DSH 客户端插件,把多轮会话中的”人-in-the-loop 拍板”环节从正文搬到右侧边栏,并保证回传内容结构化。

  • 维护者:Long-Yin-Zi(GitHub 组织)
  • 分类:客户端插件
  • 许可证:MIT
  • 版本:0.8.6(截至本文写作时 README 所列最新版本)
  • 目标宿主:在 DSH 0.2.1-rc.2(nightly)桌面端验证

解决的核心痛点有三个:决策点散落正文容易漏答;回传内容不带题号和选项 id,AI 无法对题;多轮之间”上一轮没拍板、新一轮已到达”的状态容易丢。

核心功能

下面按 README 中列出的能力逐条介绍。

右侧独立面板。 本轮摘要与全部待决问题集中在一个 tab(「本轮工作 & 待拍板」),聊天流里只出现一行卡片:📋 本轮有待拍板项,见右侧面板。

单选 / 多选。 按问题类型渲染,勾选框区分样式:圆形为单选,方形为多选。

每题一个常驻备注框。 选项都不满意时,可以不选任何选项,只在备注框里写自己的想法,照样能提交。

提交前校验。 既没选选项、也没写备注的题会被标红拦住,避免漏答。

回传带问题标题。 提交后发回会话的内容形如 q1(问题标题): 选 b「…」;整题备注:…,AI 拿到即可对上题号与选项 id。若用户否掉全部选项,格式为 未选项;整题备注:…。

提交后自动收起侧边栏。 把注意力还给 AI 的回复。

提交后只读回放。 已提交的轮次把「选了哪几项、每题备注、整体补充」原样列出,关掉面板再打开也能核对,不必翻聊天记录。

每题可加附件。 在题卡里 Ctrl+V 粘贴,或点「添加附件」选择。图片内联发出,其他文件走 DSH 自带的上传服务;提交时按题分组,哪道题的附件就跟在哪道题的文字后面。

可以取消整轮。 底栏「提交拍板」占 2/3、「取消本轮」占 1/3,点两次确认后整批问题划掉,面板变「已取消」、右侧栏自动收起;AI 下一轮登记新问题时自动恢复。

末尾固定附加「继续深挖还是直接开干」。 每轮尾部追加一道必答单选题:选「先继续讨论」则回传要求 AI 先讲清思路、细节、影响面、逻辑闭环再动手;选「不用讨论」则直接执行。空轮(0 题)不渲染这道题,也不能提交空拍板。

整题备注支持语音输入。 备注框下方点「语音输入」,说完点停止,自动转写并追加到备注;需相机/麦克风权限,且宿主已启用语音插件。

防重复提交与失败重试。 同步锁加「本轮已提交」双闸,连点或关掉再开都不会重复发送;发送失败保留已填内容,一键重试。

中英双语。 文案走 locale 表(locale/zh.json、locale/en.json),跟随 DSH 界面语言。

安装与启用

前置:已安装 DeepSeek Harness (dsh)。本插件没有发布到 npm,只能从 GitHub 源码安装。

# profile 名换成你自己的(桌面端一般是 desktop)
dsh plugin --profile desktop add github:Long-Yin-Zi/dsh-task-decision

安装完成后需要重启 DSH,因为宿主半部(index.js)在启动时加载工具与提示词;客户端改动刷新页面即可生效。

两个容易误解的点,README 里专门做过说明:

  • package.json 中的 dsh.client.platform = "web" 是 DSH 客户端加载器的硬性校验(只接受字符串 "web"),桌面端同样满足;它不代表插件”只支持网页端”。
  • 插件仅在桌面端 DSH 验证过。浏览器里单独部署的 dsh web 没有测试,是否可用未知。

启用后无需额外配置。每轮结束时 AI 会调用 gate_ask 工具登记摘要与问题,客户端侧自动弹出面板。

典型用法

  1. 正常对话,每轮结束时 AI 调用 gate_ask 登记摘要与问题。
  2. 聊天流出现一行卡片,右侧自动打开「本轮工作 & 待拍板」。
  3. 逐题选择;选项都不合适时,直接在该题备注框里写想法,可不选。
  4. 需要截图或文档时,在这道题的备注框里 Ctrl+V 粘贴,或点「添加附件」选择。
  5. 点「提交拍板」,回传自动发回当前会话,面板自动收起。
  6. 面板被关掉后,点会话页头右侧的「拍板」按钮可重新打开;已提交的轮次不会重复提交。
  7. 这一轮不用处理了:点「提交拍板」右边的「取消本轮」,再点「确认取消」,整轮划掉,右侧栏收起。
  8. 最后一题固定是「继续深挖,还是直接开干」:选第一项,AI 先讲思路、影响面、风险等你确认;选第二项则直接按上面的选择执行。

回传格式示例(README 原样):

【拍板回传】
q1(学生全流程收尾做哪些): 选 b「…」、c「…」;整题备注:优先做风险低的
q2(推进节奏): 选 a「做完一项再汇报」
(整体补充:……)

它是怎么工作的,README 给出的链路如下:

模型每轮结束前调用工具 gate_ask({ summary, questions })
        ↓
聊天流里只显示一行卡片,右侧自动打开 tab
        ↓
页头探针从 tool-result 的 argsRaw 解析出 gate,写入模块 store
        ↓
用户选选项 / 写备注 → 点「提交拍板」
        ↓
ctx.sessions.scope(sessionId).conversation.send("【拍板回传】…")
        ↓
面板自动收起,AI 继续干活

实现上分宿主半部与浏览器半部:index.js 注册 gate_ask 工具并注入系统提示词规则,client.js 负责解析、页头探针、右侧 tab、面板 UI 和提交回传。早期 v0.1 用正文标记块,因渲染转义问题改为工具调用,残留的标记块解析路径仍保留作兼容。

适用场景与注意

适合谁:在 DSH 桌面端做多轮、带审批环节开发的人。这类会话里每轮决策点较多、需要逐项确认和留备注,用正文来回贴容易乱,面板化的收益比较直接。

注意事项:

  • 安装前先读源码与许可证(MIT),确认 index.js 注入的系统提示词规则和 gate_ask 工具的参数结构符合你的预期。插件以当前 dsh 进程权限运行。
  • 插件自己不发起网络请求、不主动读写文件;只有你粘贴或选中的文件才由 DSH 自带的 fileUpload 服务保存,回传走 DSH 自己的发送通道发回当前会话。
  • 平台支持 Windows / macOS / Linux(纯 JS,无原生依赖,react 由宿主提供)。
  • 已知边界:拖拽附件不可用(DSH 在 document 冒泡阶段接管了拖拽事件),只能用 Ctrl+V 粘贴或「添加附件」;收起侧边栏依赖内部接口 sidebarRight.actionsFor(...).setExpanded(...),DSH 升级若改名会退化为”不自动收起”,不影响提交。

结尾

dsh-task-decision 的价值在于把”拍板”这个环节从正文里拆出来,用结构化回传降低漏答和错题的概率。它对现有工作流的侵入很小:装完重启,之后每轮只需在右侧面板里点选。

  • 目录页:https://www.skillhub.cn/plugins/Long-Yin-Zi/dsh-task-decision
  • GitHub:https://github.com/Long-Yin-Zi/dsh-task-decision
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜