dsh-work-on-request:提问就答,叫了才做

前言

在 DeepSeek Harness(DSH)里跑智能体时,常见情况是:你只是问一句「这段逻辑为什么这么写」,模型却顺手改了文件、补了测试、执行了 git commit、装了依赖或动了配置。问题不在模型不会干活,而是「问」和「让做」的边界没有被稳定地写进会话规则。

社区里有人会把约束写在 ~/.dsh/skills/ 或项目 .dsh/skills/ 的 SKILL.md 里,但多工作区、多机器时要自己同步版本。dsh-work-on-request 把「默认只答、明确指派才动手」做成 DSH 客户端插件,用 npm 包版本携带规则,装一次即可在该机所有工作区生效。维护者为 GitHub 用户 lll-77777777;在 SkillHub 插件目录 中分类为「客户端」。SkillHub 为独立社区站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-work-on-request 是面向 DeepSeek Harness 的轻量插件:注册一条内置技能,把「提问就答,叫了才做」写成常驻规则。插件本身不实现业务逻辑,只做技能注册;模型实际读到的规则全文在仓库 assets/work-on-request.md。

实现方式与 DSH 官方的 @deepseek-ai/dsh-skill-badge 一致:通过 ctx.skills.registerProvider 把打包在包内的技能挂进 DSH 技能注册表。当前包版本为 0.1.0,许可证 MIT;要求 dsh >= 0.2.0-rc.1、node >= 22。

核心规则

插件把行为边界写成三条,并在 README 中与规则文件对应说明:

  1. 提问(问句、求解释、求评价、闲聊)→ 只回答,不修改仓库、不执行会改变环境的操作。
  2. 明确让干活(例如「帮我写…」「改一下」「去跑一轮」「修复」)→ 按指令正常动手,完成后简短汇报「做了什么 + 怎么验证的」。
  3. 分不清 → 先给答案,末尾用一句话问要不要做。

只读不算干活:为回答问题而读文件、搜索、查状态、算数仍可进行。完整条文见 GitHub 仓库中的 assets/work-on-request.md。

为什么是插件而不是散落 skill 文件

插件只做一件事:把上述规则作为内置技能注册。入口逻辑与官方 badge 插件同型:

const inject = ['skills']
function apply(ctx) {
  ctx.skills.registerProvider(() => provider)
}

规则随 npm 包版本分发,不必在每个工作区或 ~/.dsh/skills/ 里维护同名 SKILL.md。需要更强控制时,仍可用本地 skill 或 AGENTS.md 覆盖(见下文)。

安装与启用

安装命令以仓库 README 为准。推荐从 GitHub 安装(README 说明可不等待 npm 发布):

# ① 直接从 GitHub 装(推荐,不用等 npm 发布)
dsh plugin --profile desktop add github:lll-77777777/dsh-work-on-request

# 固定到某个 tag(更稳,不会被后续提交影响)
dsh plugin --profile desktop add github:lll-77777777/dsh-work-on-request#v0.1.0

# ② 从 npm(发布后)
dsh plugin --profile desktop add dsh-work-on-request

# ③ 本地开发(link 到本目录)
dsh plugin --profile desktop add link:/path/to/dsh-work-on-request

装完后新开一个会话再验证:

  • 人肉触发:输入框输入 /,菜单中出现 work-on-request,或直接输入 /work-on-request 回车。
  • 自动触发:模型判断当前消息符合技能描述时,会自行加载。

插件以 rank 600(打包型提供方的标准优先级)注册,低于本地 skill 根(100–500)。因此在 ~/.dsh/skills/ 或项目 .dsh/skills/ 中放置同名技能会覆盖本插件。若希望规则常驻、不走按需加载,可将 assets/work-on-request.md 的内容贴入 ~/.dsh/AGENTS.md。

典型用法与预期行为

下面是对话层面的预期,便于自测是否生效(非仓库提供的自动化用例脚本):

你的输入倾向 预期
「这段代码在干什么?」 解释为主,不主动改文件或跑会改环境的命令
「帮我把这个函数改成 async」 在明确指派后编辑代码,并说明如何验证
意图模糊 先回答,末尾一句询问是否要继续动手

维护者在 README 中记录了端到端挂载验证(2026-10-16):在临时 profile 下 link 本插件后,dsh --dump-config 可见 id: work-on-request 进入 profile 树;headless 会话询问技能列表时,模型能确认存在 work-on-request。

适用场景与注意

适合谁:希望默认会话偏「顾问模式」、减少误改仓库的 DSH 桌面用户;与官方 skill 提供方模式一致,便于对照学习 registerProvider 写法。

开发与自测(维护者文档):

node --check index.js
node test/smoke.test.mjs     # 6 项契约测试

README 注明:在 DSH 受限沙箱里执行 node --test test/ 可能因子进程管道被拒(spawn EPERM)失败,可直接跑 test/smoke.test.mjs。

安全与权限:DSH 插件随当前 dsh 进程权限运行,安装前请自行查看 GitHub 源码 与 MIT 许可证,确认符合你的环境策略。

结尾

dsh-work-on-request 用一条打包技能把「问与做」的边界写清楚:提问只答,明确指派再动手,边界不清时先答再问。需要固定版本时可 pin 到 v0.1.0;需要完全自定义时,用本地同名 skill 或 AGENTS.md 覆盖即可。

羽毛球分组比赛记分
小程序二维码

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

小夜