dsh-helper-plugin-command-ask:为 DeepSeek Harness 提供 /ask 只读问答

前言

在 DeepSeek Harness(dsh)里跑智能体,默认行为是边查边改:读文件、写补丁、调工具,一轮对话里很容易顺手动到仓库。有时你只想问清楚——配置在哪、重试为什么是 3、改这里会坏什么——而不希望模型改任何文件。Cursor 等产品里有 Ask 只读模式;DSH 自带 /plan 等斜杠命令,但没有同类的「只答不改」入口。下面介绍社区插件 dsh-helper-plugin-command-ask(维护者 x102201),它在 Harness 里补上 /ask 模式:一轮只读问答,带引用、禁止编辑,并由工具守卫在模型「忘记规矩」时仍拦截写操作。

这是什么

dsh-helper-plugin-command-ask 是挂载在 DSH web profile 上的客户端插件(分类:客户端)。一句话:用 /ask <问题> 触发只读 Q&A,该轮结束后自动回到普通工作模式;也可 /ask off 提前退出。实现上参考了 DSH 内置 /plan 的模式切换方式,以及 Cursor Ask 的交互预期。

插件以 MIT 许可发布,当前 package 版本 0.2.0(README 徽章标注在 dsh 0.1.5-rc.2 环境下有 82 项测试通过)。它不引入额外运行时依赖,纯 ESM,无需构建步骤。

核心功能

/ask 斜杠命令

在 Composer 中输入 /ask,斜杠菜单会出现 /ask Enter or leave ask mode (read-only Q&A)。典型用法:

/ask why is the retry budget 3?    # 只读回答这一问题,随后回到普通模式
/ask                              # 为下一轮武装 ask 模式(可不带问题)
/ask off                          # 提前取消(正常一轮结束不必手动 off)
  • 作用域:默认 <scope: turn>,只覆盖一轮;Harness 在 turn/end 时释放模式,下一条不带 /ask 的消息按普通会话组装。
  • 可选 session 作用域(配置项):类似 /plan 的「持续 stance」,直到 /ask off;进入 standing ask 时会退出 plan 模式,避免两种矛盾立场并存。
  • 命令可附带问题,也支持图片、文件等附件(与 README 描述一致)。

只读策略与工具守卫

激活期间,请求中会注入 ask:policy 提示段,说明本部署下的只读指引;关闭后该段不再出现。

Read-only guard 默认开启:通过单调的 ctx.tools.guard() 拒绝配置中的 mutating 工具,并在拒绝时提示模型只能基于可读内容作答。若你在 ask 轮里明确要求改文件,模型应解释如何改而不是直接写;被拒绝的工具调用会报告 ask mode is read-only。

状态持久化

ask 状态由会话日志中的 /ask 的 command/run、command/done 以及 turn/end 折叠投影得到;插件不写入 Harness 未定义的 session 事件类型。每次切换经 ctx.sessions.flush() checkpoint,重启后可恢复。

插件还提供程序化接口 ctx.askMode:get(agent)、set(agent, active)(走真实命令分发)、isActive(session)。

与 0.1.x 升级相关(若你曾装过旧版)

0.1.x 曾持久化 ask/mode 事件,可能导致含该事件的日志无法被当前 Harness 加载。0.2.0 不再写入此类事件;若历史日志需修复,仓库提供 scripts/repair-ask-mode-logs.mjs(见 GitHub README「Upgrading from 0.1.x」)。新安装可忽略本节。

安装与启用

前提:dsh plugin 会把参数转给 pnpm,需保证 pnpm 在 PATH 上(例如 corepack enable pnpm)。Node 需 >= 20。

从 GitHub 安装(常用)

dsh plugin --profile web add github:x102201/dsh-helper-plugin-command-ask

需要固定版本时可加 revision:github:x102201/dsh-helper-plugin-command-ask#<tag-or-commit>。

路径须为绝对路径,或相对于你执行命令时的工作目录:

dsh plugin --profile web add link:/absolute/path/to/dsh-helper-plugin-command-ask

link: 会符号链接到 checkout,改 index.js / lib/*.js 后重启 dsh web 即可生效,无需重装。

挂载与重启

add 会在 $DSH_HOME/profiles/web 内通过 pnpm 安装,并把声明了 dsh.bundle.patch 的包写入 profile manifest;下次启动时 patch 层插入 host 行 command-ask。安装后重启 web profile:

dsh web

不安装先试跑

dsh --profile web --patch <checkout>/examples/standalone.patch.yml

验证

dsh --profile web --dump-config | grep -A2 command-ask

在 Web UI 输入 /ask,应看到 Ask mode on (read-only). Use /ask off to leave.;在 ask 轮请求编辑,应只解释不改。也可用仓库脚本 scripts/verify-live.mjs 对运行中的实例做 HTTP RPC 校验(README 有完整参数说明)。

卸载(包名见 package.json 的 name 字段):

dsh plugin --profile web remove dsh-helper-plugin-command-ask

典型用法

  1. 启动 dsh web,在会话 Composer 输入:/ask 重试预算为什么配置成 3?
  2. 阅读带引用的只读回答;该轮结束后直接发:把 budget 改成 5 并改对应测试 —— 无需 /ask off,下一轮即为普通编辑模式。
  3. 若配置了 session 级 ask 或你手动 /ask 未带问题武装了下一轮,可在改主意时用 /ask off 提前退出。

演示 GIF/MP4 见 GitHub 仓库 docs/assets/(在 dsh-helper 工作台录制):同一环境里 /ask 拒绝写文件,随后普通「do it」消息才创建文件。

适用场景与注意

适合谁:日常用 DSH web 做仓库内问答、代码走读、故障定位,希望默认零副作用的开发者;习惯 Cursor Ask、希望在 Harness 里用同样心智模型的人。

权限与安全:插件与当前 dsh 进程同权,守卫只拦「配置内的 mutating 工具」,不能替代你对源码与许可证的审查。安装前请阅读 GitHub 仓库 与 MIT 许可证;社区目录 SkillHub 插件页 为独立索引,与 DeepSeek / 幻方无官方从属关系。

生态背景:DSH 主张「一切皆插件」;本插件通过 cordis.patch.yml 向 web bundle 注入 command-ask host,属于客户端扩展,不改变 Harness 核心发行版。

结尾

dsh-helper-plugin-command-ask 用一条 /ask 把「只问不改」做成可强制的一轮模式:提示策略 + 工具守卫 + 回合边界自动释放,问完再让智能体动手改代码,流程自然分开。详情与配置、升级说明见 GitHub README(含 中文 README.zh.md)。

  • 目录页:https://www.skillhub.cn/plugins/x102201/dsh-helper-plugin-command-ask
  • 源码:https://github.com/x102201/dsh-helper-plugin-command-ask
羽毛球分组比赛记分
小程序二维码

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

Xiaoye