dsh-custom-conversation-prefix:以更小颗粒度管理系统提示词与对话前缀

前言

在 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 覆盖。

典型用法

  1. 在管理页建立系统模板,或在「对话前缀」页建立消息数组;工具历史须包含完整调用与结果配对。
  2. 回到尚未发送的新会话,在模式选择器旁选择系统模板与前缀;按需配置「自动上下文」「工具」并应用。
  3. 发送第一条真实消息;之后仅能通过新建会话更换配置。

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 预设并存的工作流开发者。

注意:

  • 引擎要求 dsh 0.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
羽毛球分组比赛记分
小程序二维码

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

小夜