dsh-zh-think
让 DeepSeek Harness 的 agent 用简体中文进行内部推理(thinking)与回复的插件。
这是一个追加式插件:它往 system prompt 末尾追加一个 section,不修改任何既有配置行、不覆盖其他插件的设置。
为什么需要它
DSH 的系统提示词默认是英文,模型因此习惯用英文推理。思考过程用英文,中文用户就没法审阅自己 agent 的判断依据。
改 personaPrefix 也能达到同样效果,但那是修改既有配置行,代价更明显:
改 personaPrefix |
本插件 | |
|---|---|---|
| 改动性质 | 覆盖 system-prompt 行的整个 config |
insert: 追加一行,既有行零改动 |
| 缓存影响 | 文本插在最前面 → 前缀缓存整体失效 | order 10300 追加 → 落在最后,前缀保住 |
| 被设置面板重写 | 可能被 GUI 整文件覆盖掉 | 不受影响(挂载信息在 package.json) |
| 卸载 | 手工删除配置块 | 移除依赖,section 由 root.effect() 自动注销 |
工作原理
插件在 apply() 里通过 ctx.systemPrompt.section() 注册一个 section:
ctx.systemPrompt.section({
name: 'plugin:zh-think',
order: 10300,
text: '始终使用简体中文进行内部推理(thinking)和面向用户的回复…',
})
order: 10300— 现有最大 section 是DEPLOYMENT_PERSONA_SUFFIX = 10200,取 10300 即排在所有既有 section 之后。这意味着已有会话的缓存前缀完整保留,只在尾部失效。- 生命周期 — 注册返回的注销函数交给
root.effect(),插件卸载或热重载时 section 会被干净移除,不留残余。
安装
dsh plugin --profile desktop add dsh-zh-think
把 desktop 换成你要启用的 profile 名(例如 web)。重启 DSH 后生效。
为什么需要重启:
section()的注册发生在apply()执行时,DSH 的热重载不会重新执行它。profile 的patchReload: live只覆盖配置文件,不包括插件代码。
配置
插件行支持以下可选配置:
- id: dsh-zh-think
name: dsh-zh-think
config:
enabled: true # false 则不注册 section
instruction: '……' # 覆盖默认的中文要求文本
order: 10300 # 覆盖 section 排序位置
改文案(不用重启)
编辑 $DSH_HOME/zh-think.txt,写入你想要的完整文案:
notepad $env:DSH_HOME\zh-think.txt
保存后,下一个请求就会生效,不需要重启 DSH。
原因:section 的 text 注册成函数,DSH 在每次装配提示词时都会重新求值。只有改插件的逻辑(换 section 名、order 等)才需要重启。
文本优先级:
| 优先级 | 来源 | 生效方式 |
|---|---|---|
| 1 | config.instruction |
随配置文件热重载 |
| 2 | $DSH_HOME/zh-think.txt |
每次请求重新读取 |
| 3 | 内置默认 | — |
删掉 zh-think.txt 会回退到内置默认。
文案里避免写
{{和}}——它们会被当作变量插值,未知变量会导致提示词装配报错。
发版(改完代码后)
仓库自带 release.ps1,一条命令完成升版本、提交、打 tag、推送:
.\release.ps1 # 0.2.0 -> 0.2.1
.\release.ps1 minor # -> 0.3.0
.\release.ps1 major # -> 1.0.0
然后按提示手动执行 npm publish(需要浏览器 2FA 确认,无法自动化)。
临时关闭
三种方式,优先级从高到低:
| 方式 | 操作 | 生效 |
|---|---|---|
| 配置 | 插件行加 config: { enabled: false } |
重启 |
| 环境变量 | 设 DSH_ZH_THINK_OFF=1 |
重启 |
| 标记文件 | 在 $DSH_HOME 下放一个空文件 zh-think.off |
重启 |
关闭状态下插件仍会装载,只是不注册 section,不改变任何其他行为。删掉标记文件并重启即可恢复。
已知限制
- 中文推理不省 token — 思考篇幅与语言无关,中文甚至可能更占 token。这个插件解决的是可读性,不是成本。如果要压低开销,应该调整
reasoningEffort,那是另一件事。 - 单一语言 — section 内容是固定文本,不做按会话切换语言。需要多语言时,可以改成按
AssembleContext动态返回文本。 - 只影响 system prompt — 它约束的是推理与回复的语言,不改变工具输出、日志、代码的原始语言。
相关项目
本插件的功能与 liangzz1998/dsh-thinking-language 重叠。那个项目支持思考语言与回复语言分别配置、追加自定义要求,设置更完整,且发布时间早于本项目。
本项目为独立实现(未复制其代码),仅作为个人使用与二次修改的基础,未提交插件市场收录。若你需要更完整的语言配置,建议直接使用上面那个项目。
安装(快速)
# 从 npm 安装(推荐,已发布 0.1.0)
dsh plugin --profile desktop add dsh-zh-think
# 或直接从 GitHub 安装
dsh plugin --profile desktop add github:oicty/dsh-zh-think
装完重启 DSH 生效。
No comments yet. Be the first to write one.