前言¶
在 DeepSeek Harness(DSH)里做智能体或固定工作流时,系统提示词和「开场几轮对话」往往绑在 Agent 预设或宿主默认行为上:改一处可能影响全局,新开空白会话也未必能单独选一套 system 与历史前缀。若还需要在单次会话里关掉部分自动上下文注入,或只禁用预设里的某几个工具,宿主原生界面通常没有独立入口。
Phantom-Algo 维护的 dsh-custom-conversation-prefix(当前版本 0.0.9)面向上述需求:通过 Host、Client 双入口加载,无需改 DSH 源码或安装包;在侧栏提供「提示词与前缀」管理页,并在新会话发送首条真实消息前完成 system 替换、多角色前缀注入,以及可选的自动上下文与工具裁剪。首版针对 DSH 0.2.1-rc.3 验证,构建提交 be72761ee1a6736ebcdf4f3739363b083ae53c98。
这是什么¶
dsh-custom-conversation-prefix 是 DSH 社区插件(分类:工作流),仓库 Phantom-Algo/dsh-custom-conversation-prefix,目录页见 SkillHub。它解决的是:系统提示词模板、对话前缀模板独立管理;新开会话时按需替换;前缀支持 User、Assistant、Tool 预设消息;可启用或禁用当前所选 Agent 预设带来的上下文注入与工具定义——且首条真实用户消息发出后配置锁定为快照,续聊不会重复注入。
核心功能¶
提示词与前缀管理¶
独立管理页支持搜索、新建、保存、复制、删除及修订冲突检查;同类标题唯一,保存时对标题 trim 并做 Unicode NFC 规范化。系统模板与前缀可独立选择;新建会话默认沿用 DSH 系统提示词、不使用前缀。选择器右侧「预览」可跳到对应模板的只读详情;草稿离开编辑项时由 DSH 弹窗确认。
系统提示词为完整替换,{{...}} 占位原文保留。对话前缀为多轮 JSON 消息数组,支持 user / assistant(含 tool_calls)/ tool 结果;表单与 JSON 编辑均可,字段错误可定位。前缀不能包含 system / developer、图片或音频;未知字段会报错。新建前缀默认两条空消息,占位提示为「你好」与「你好,我是 DeepSeek,有什么可以帮到您?」,右下角可继续追加消息。
会话选择与锁定¶
在尚未发送真实消息的新会话中,于模式选择器旁分别选择系统模板与前缀;持久化以 Host 确认后的显示为准。DSH 复用空白会话时,原生新建按钮及其快捷键会先恢复本插件的默认选择;已开始的会话保留锁定快照。
发送第一条真实消息后,配置变为只读,输入区上方可展开快照;更换 system 或前缀需新建会话。已选模板后续修订不影响已锁定快照;未发送时可重新选择以更新。删除模板不改变已有快照。0.0.9 起修复:首条真实问题发出后、模型尚未输出时,聊天页不再错误显示最后一条预设助手回复;前缀不参与聊天回复、过程计数和工具状态,模型上下文与独立轨迹仍保留。
自动上下文与工具¶
模式选择器旁提供「自动上下文」「工具」菜单:可全部启用、全部禁用或部分禁用。部分禁用时搜索并勾选目标,点击「应用」保存;「取消」、Escape 或点击菜单外部会放弃未应用的菜单选择。
自动上下文可逐项关闭工作目录、环境策略、技能目录、时间及工作区指令等自动贡献(含 required 上下文);用户主动输入、附件、显式技能调用和预设历史保持原样。工具菜单按当前 Agent 预设列出可用工具,可搜索多选禁用;模型侧定义与实际执行同时受限,覆盖 PTC 的 run_code 与嵌套调用。禁用插件后恢复宿主默认,不修改 Agent 预设或宿主全局配置。
轨迹与存储¶
预设消息在轨迹中独立显示角色;预设工具标明「预设历史,未执行」。模板保存在宿主 storage domain custom_conversation_prefix;选择与快照等写入会话的 ignorable plugin record。插件配置可设 maxMessages(默认 200,上限 2000)与 maxCharacters(默认及上限 100 万 UTF-16 代码单元);变小后超限旧快照会在应用前被拒绝。
安装与启用¶
安装前应完全退出 DeepSeek Harness,并自行审阅仓库源码与 LICENSE。插件以当前 DSH 进程权限运行,安装脚本会向 profile 写入 bundle,不会编辑宿主源码。
先在本机构建产物(在克隆后的项目目录内,需要 Node.js 22.19+ 与 pnpm):
npm run build
mkdir -p releases
npm --cache .cache/npm pack --pack-destination releases
当前 pack 产物名为 releases/dsh-custom-conversation-prefix-0.0.9.tgz。其他环境安装示例(路径按本机调整;若设置了 DSH_HOME,将 --profile 改为该目录下的 profiles/desktop):
node scripts/install-profile.mjs \
--profile "$HOME/.dsh/profiles/desktop" \
--package ./releases/dsh-custom-conversation-prefix-0.0.9.tgz \
--pnpm "$HOME/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/pnpm/bin/pnpm.cjs"
脚本会核对 profile 的 pnpm 主版本、备份 manifest / lockfile,将安装包按 SHA-256 存入 profile 的 .prefix-packages/ 后安装并添加 bundle。重启 DSH 后,在侧栏打开「提示词与前缀」。回滚:退出 DSH,从脚本打印的备份目录恢复 package.json 与原 lockfile,再运行 profile 依赖安装。
开发者本地验收(不读正式账号与历史):
pnpm install --frozen-lockfile
npm run check
npm run dev:installed
在模型选择器选「插件验收模型(离线)」即可走发送流程,无需 API Key;macOS 默认 CLI 路径可通过 DSH_CLI、DSH_ASAR、DSH_TEST_PORT 覆盖。
典型用法¶
- 在管理页建立系统模板,或在「对话前缀」页建立消息数组;工具历史须包含完整调用与结果配对。
- 回到尚未发送的新会话,在模式选择器旁选择系统模板与前缀;按需配置「自动上下文」「工具」并应用。
- 发送第一条真实消息;之后仅能通过新建会话更换配置。
README 中的前缀示例(lookup_stock 仅为历史示例,插件不会执行该调用):
[
{ "role": "user", "content": "查询示例库存。" },
{ "role": "assistant", "content": null, "tool_calls": [
{ "id": "example_1", "type": "function", "function": { "name": "lookup_stock", "arguments": "{\"sku\":\"demo\"}" } }
] },
{ "role": "tool", "tool_call_id": "example_1", "content": "{\"stock\":12}" },
{ "role": "assistant", "content": "示例库存为 12。" }
]
适用场景与注意¶
适合:需要在单次新会话中固定 system 与多轮「假历史」、演示工具调用格式、或临时关掉部分自动上下文 / 个别工具,且希望与 DSH 原生 Agent 预设并存的工作流开发者。
注意:
- 引擎要求
dsh0.2.1-rc.3;宿主升级后需重验,README 指向 兼容性报告 与 0.0.9 验证记录。 - 存在其他有效 complete section 时宿主会报告冲突;DeepSeek 推理配置下需 reasoning / replay 的工具历史组合,首版明确拒绝。
- 静态 JSON 通过校验不等于远端模型或提供方必然接纳。
- SkillHub 为社区目录,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本插件是其中一条工作流向扩展。
结尾¶
dsh-custom-conversation-prefix 把 system、对话前缀、自动上下文和工具开关收到同一套会话级配置里,并在首条真实输入后锁定快照,避免续聊重复注入。若你的 DSH 版本与 README 一致,可从目录页了解概要,在 GitHub 查看构建与安装细节:
- 目录页:https://www.skillhub.cn/plugins/Phantom-Algo/dsh-custom-conversation-prefix
- 仓库:https://github.com/Phantom-Algo/dsh-custom-conversation-prefix