前言¶
在 DeepSeek Harness(DSH)里做模型能力评测或对照实验时,默认请求往往并不「干净」:全局层仍会带上工具 schema,用户输入之后还会追发一条 runtime-context 工作目录消息。预设配置层无法单独关掉这两类注入。若只改系统提示词、却希望请求里只有用户文本(以及你明确指定的 system 内容),就需要在装配瀑布和 context 注册层另行处理。
下面介绍社区插件 dsh-chat-preset(维护者 Xxx-Bin),它在 DSH 中提供名为 ChatOnly 的预设 agent:默认抑制工具与工作目录注入,系统提示词从本地文件热读,便于在受控条件下观察模型本身的行为。
这是什么¶
dsh-chat-preset 是 DSH 的 ChatOnly 预设包:无工具(可开关)、无运行时工作目录快照的纯对话形态;系统提示词存放在 ~/.dsh/chatonly-system-prompt.md,通过命令或直接编辑文件更新,下一条消息生效。
该包在 npm 上发布为 dsh-chat-preset(当前资料中版本 1.2.0,MIT 许可证,Node.js ≥ 18)。它声明 dsh.bundle.patch,安装后由 profile 的 layer stack 自动登记;分类上可归入「模型推理」——侧重控制请求形态以便评测,而非提供新的推理运行时。
需要事先了解:本包依赖 DSH 的三处内部语义(作用域同名 shadow 覆盖、system-prompt/assemble 瀑布、refreshContext() 的合并顺序)。DSH 升级若改变这些语义,插件可能静默失效(不报错,仅退回默认请求形态)。安装前应阅读仓库说明中的「兼容性与脆弱性」一节,并自行核对源码与许可证。
默认请求里多出来的东西¶
DSH 即便在精简模式下,仍有两类预设层无法消除的注入:
- 工具 schema:在全局层收集,预设只能追加、不能移除。
- 工作目录消息:默认在用户输入之后追加
runtime-context,内容为当前工作目录;且该 contribution 以required: true注册,includeRuntimeContext: false只能过滤可选项。
本包在桌面端 desktop profile 下观测到的抑制前后对比如下(工具数量随已安装插件变化,资料中给出本机区间 8–14 个):
# 抑制前
- tools: 9 个 — acp_cache, acp_read_original_image, …
- messages: [ …, { source: { kind: "runtime-context" } } ]
# 抑制后
+ tools: 该键不存在
+ messages: 仅用户输入
核心功能¶
ChatOnly 预设¶
安装并在预设选择中启用 ChatOnly 后,本包通过 agent 作用域内的同名空 shadow、system-prompt/assemble 瀑布,以及 buildRequest() 在工具列表为空时省略 tools 键的行为,分别处理工作目录与工具注入;section 角色从文件读取系统提示词,并以 complete: true 独占 deployment:persona-prefix 段。
/chatprompt:系统提示词¶
提示词文件:~/.dsh/chatonly-system-prompt.md。命令是读写入口,也可直接编辑文件。
| 命令 | 行为 |
|---|---|
/chatprompt <text> |
写入文件,下一条消息生效 |
/chatprompt |
预览、字符数与路径 |
/chatprompt show |
输出全文 |
/chatprompt clear |
清空;此后不发送系统提示词 |
文件为空时不发送任何系统消息。该命令全局注册,仅对 ChatOnly 生效;在其它预设下修改不会生效且无提示。
/chattools:工具抑制开关¶
默认抑制工具,即请求不携带工具 schema。状态文件:~/.dsh/chatonly-strip-tools.state(内容为 strip 或 pass),每次装配重新读取;不存在时采用配置项 stripTools(出厂默认 true)。
| 命令 | 行为 |
|---|---|
/chattools 或 /chattools status |
当前模式与状态文件路径 |
/chattools on |
抑制工具注入 |
/chattools off |
放行,assembly.tools 原样传递 |
/chattools reset |
删除状态文件,回退出厂默认 |
/chattools off 只放行工具;该会话中 working-directory:current 仍被抑制,模型不会从 runtime 获得工作目录。若评测需要文件类工具,资料建议同时限制工具集(例如通过 dsh-tool-manager)并在系统提示词中写明工作目录等环境约束。
工具开关是全局单一文件,对所有 ChatOnly 会话同时生效;工作目录抑制按 agent 注册且在同一会话内切换预设后仍可能保持为空,直至新建会话。两者机制不同,使用评测方案时需分开考虑。
其它限制(摘自文档)¶
- 未挂载压缩插件,不支持自动压缩与
/compact;上下文超长时请求可能直接失败。 - 与
dsh-prompt-setting的「我的 Prompt」互斥(同作用域complete: true)。 - 预设内不应再挂载同名 section(如
dsh-persona)。 - 插件以当前 DSH 进程权限运行;安装前请检查源码与 MIT 许可证,并知悉其对非公开 DSH 行为的依赖。
安装与启用¶
依赖:dsh(桌面端或 CLI)、pnpm 在 PATH(dsh plugin add 内部转发 pnpm add)、Node.js ≥ 18。安装后须重启 dsh(bundles 层仅在启动时合成)。
桌面端(desktop):
# npm
dsh plugin --profile desktop add dsh-chat-preset
# GitHub
dsh plugin --profile desktop add github:Xxx-Bin/dsh-chat-preset
dsh web(web):
dsh plugin --profile web add -w https://github.com/Xxx-Bin/dsh-chat-preset
--profile 对应 ~/.dsh/profiles/ 下的目录名。安装完成后重启,在预设中选择 ChatOnly。
配置要点(cordis.patch.yml):presetId 须与预设 config.id(chatonly)一致;两处 file 必须都指向 ~/.dsh/chatonly-system-prompt.md;toolsStateFile 不得与提示词文件同路径。
典型用法¶
- 按上文命令安装并重启 DSH,启用 ChatOnly 预设。
- 写入评测用 system prompt,例如:
# 在 DSH 对话中使用(亦可直接编辑 ~/.dsh/chatonly-system-prompt.md)
/chatprompt 你是严谨的评测助手。只根据用户问题回答,不要假设当前工作目录。
- 确认默认不携带工具;若需对照「带工具但无目录注入」的实验,先评估是否接受全局
/chattools off,并自行在 prompt 中补环境信息:
/chattools status
/chattools off # 放行工具;工作目录仍被 ChatOnly 抑制
- 卸载插件后,命令与运行期注册会 dispose;用户文件(提示词、开关状态、调试日志)需按 README 手动清理,重装时旧
chatonly-strip-tools.state会沿用上次开关,可用/chattools reset恢复出厂默认。
适用场景与注意¶
适合:需要在 DSH 里做相对可控的纯对话评测、对比不同 system prompt、或观察「无工具签名、无自动工作目录行」时的模型输出。
不适合或需额外准备:依赖默认工作目录与全量全局工具的日常工作流;需要 /compact 的长对话;希望与「我的 Prompt」并存的人设配置。
社区插件目录 SkillHub 上的 dsh-chat-preset 页 与 GitHub 仓库相互独立引用,并非 DeepSeek / 幻方官方应用商店;安装与启用仍以上游 README 为准。
结尾¶
dsh-chat-preset 把 DSH 请求收成「用户输入 + 可选文件 system」,并给出 /chatprompt、/chattools 两个运维入口,适合把变量收窄到提示词与模型本身。使用前请理解其对 DSH 内部行为的依赖及静默失效风险,并在安装前审阅源码。
- 目录页:https://www.skillhub.cn/plugins/Xxx-Bin/dsh-chat-preset
- 仓库:https://github.com/Xxx-Bin/dsh-chat-preset