DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-custom-conversation-prefix

d

dsh-custom-conversation-prefix

Identified★ 1

DeepSeek Harness Plugin: dsh-custom-conversation-prefix – Manage your context with finer granularity. Now supports setting system prompt templates and conversation prefix templates, which are applied when starting a new session. Conversation prefixes support three preset message types: User, Assistant, and Tool. Also supports enabling or disabling context injection and tool definitions for the currently selected Agent preset.

dsh-custom-conversation-prefix

为 DeepSeek Harness 提供自定义系统提示词与多轮对话前缀的插件:在一个会话真正开始之前,先放好该会话要用的 system prompt 和若干轮 user / assistant / tool 历史,发送首条真实消息后配置锁定,上下文按快照重建。

管理页

适用于:让模型以一个已完成的示范会话起步、为特定任务固定人格与指令、回放带工具调用的历史,或按会话切换不同的系统提示词。

特性

  • 系统提示词:整段替换宿主 system prompt,{{变量}} 原样保留,不被宿主插值。
  • 对话前缀:多轮 user / assistant 历史,支持 assistant 工具调用与 tool 结果;结构、调用 ID、并行结果时序都会校验,未知字段直接报错而不是静默丢弃。
  • 独立选择:系统模板与前缀分开选择,新建会话默认沿用宿主提示词且不使用前缀。
  • 发送即锁定:首条真实输入被接纳后配置只读,会话日志保留快照;续聊、重启、模式重建、分叉与历史替换都不会重复注入。
  • 自动上下文开关:可逐项禁用工作目录、沙箱策略、技能目录、时间、工作区指令等自动贡献,含 required 上下文;用户输入、附件引用、显式技能调用保持原样。
  • 工具开关:按当前 Agent 预设列出实际可用工具,可搜索、多选禁用;模型声明与实际执行同时受限,覆盖 PTC 的 run_code 与嵌套调用。
  • 轨迹与聊天隔离:预设消息在轨迹中以独立角色显示并标注「预设历史,未执行」;聊天页不会把它们当成真实回复、过程计数或工具状态。
  • 原生观感:使用宿主 Button / Input、CSS Modules 与主题变量,支持深浅色与窄窗口。

兼容性

插件版本DeepSeek Harness构建提交
0.0.100.2.2-rc.1c59d10af
0.0.1 – 0.0.90.2.1-rc.3be72761e

插件通过 Host、Client 两个入口加载,不修改宿主源码或安装包。宿主升级后需重新验证:npm run check 会比对安装包与依赖的字节一致性,并检查本插件依赖的公开契约;不匹配时直接失败而不是带病运行。0.0.10 的适配说明见 0.2.2-rc.1 兼容性报告。

运行环境:Node.js 22.19+、pnpm。宿主侧依赖 @deepseek-ai/* 0.2.2-rc.1、cordis 4.1.0、schemastery 3.19.0。

安装

插件尚未发布到 npm 源(package.json 仍为 private: true),按本地包安装。

pnpm install --frozen-lockfile
npm run build
mkdir -p releases
npm --cache .cache/npm pack --pack-destination releases

产物为 releases/dsh-custom-conversation-prefix-0.0.10.tgz。安装前完全退出 DeepSeek Harness,再执行:

node scripts/install-profile.mjs \
  --profile "$HOME/.dsh/profiles/desktop" \
  --package ./releases/dsh-custom-conversation-prefix-0.0.10.tgz \
  --pnpm "$HOME/.dsh/dsh-runtimes/dsh-primary-runtime/dependencies/pnpm/bin/pnpm.cjs"

设置了 DSH_HOME 时,把 --profile 换成该目录下的 profiles/desktop。脚本会:

  1. 核对宿主版本与构建提交,未验证的宿主拒绝修改配置;
  2. 备份 profile 的 package.json 与 lockfile 到 prefix-backup-<timestamp>/;
  3. 按 SHA-256 把安装包存入 profile 的 .prefix-packages/,再安装并加入 bundle;
  4. 沿用既有 profile 的 pnpm 主版本与 store,版本不符时停止(可用 --pnpm 指定宿主包管理器)。

重启后在侧栏打开「提示词与前缀」。

回滚:退出 DSH,从脚本打印的备份目录恢复 package.json 与 lockfile,再运行 profile 依赖安装。会话内的原生消息仍保留;禁用插件后不再强制使用自定义 system。

使用

  1. 在「系统提示词」页新建完整提示词模板,或在「对话前缀」页建立消息数组。带工具历史的前缀必须包含完整的调用与结果配对。
  2. 回到尚未发送的新会话,在输入框下方分别选择系统模板与前缀。右侧「自动上下文」「工具」可全部启用、全部禁用或部分禁用;部分禁用时搜索并勾选目标后点「应用」。
  3. 发送第一条真实消息。配置转为只读,输入区上方可展开快照;要换配置请新建会话。
  4. 模板有新版本时会话仍用原快照;未发送前可重新选择以更新,删除模板不改变已有快照。

前缀示例(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 / developer 消息、图片与音频。DeepSeek 推理配置可能要求工具历史携带 reasoning / replay 字段,插件明确拒绝这类组合而不伪造内容。

配置

插件配置项(Host 侧):

配置默认上限说明
maxMessages2002000单个前缀的消息条数
maxCharacters1,000,0001,000,000UTF-16 代码单元数;配置调小后,超限的旧快照会在应用前被拒绝

工作原理

  • 存储:模板保存在宿主 storage domain custom_conversation_prefix,经其既有 backend 持久化。选择、修订快照、应用 ID、摘要与初始化进度保存在会话的 ignorable plugin record 中,原生历史消息在插件缺席时仍可读取。
  • 注入时机:初始化在公开的 agent/request 钩子中执行——step 已打开、真实 user 尚未追加。恢复未完成的前缀时保留 system 首节点,用公开 surface replacement 隐去半段历史,再从快照重建,完成后 flush 才允许模型请求。
  • 预设消息身份:安装版只接受 kind=model 的 assistant,预设 assistant 使用 provider=dsh-prefix / model=user-authored,stream 为空数组,不声称发生过真实模型请求;预设工具 ID 带 application ID 命名空间,结果 meta 与快照记录合成来源。
  • 展示:独立消息通过公开的 Conversation Definition 与 trajectory / chat target 独占事件处理。0.2.2-rc.1 的轨迹标签类型尚未开放扩展,插件使用版本限定的 DOM 适配呈现角色标签、详情与时间轴颜色,不改写 Session 日志或模型请求。

开发

所有命令在本项目目录执行。

pnpm install --frozen-lockfile
npm run typecheck      # 仅类型检查
npm run build          # tsc + esbuild 打包 lib/
npm test               # 构建后运行 67 项独立测试
npm run test:installed # 校验安装包后运行 32 项安装版复验
npm run check          # typecheck + test + test:installed
npm run dev:installed  # 用本机安装版 DSH 启动隔离 web profile

dev:installed 使用安装包中的真实后端与 UI,配置、模板、会话与请求捕获全部位于 .cache/,不读取正式 DSH 的账号和历史。打开终端打印的本机地址,在模型选择器选择「插件验收模型(离线)」即可验证发送流程,无需 API Key,退出用 Ctrl+C。该模式不是 Electron 窗口壳测试。

可用的环境变量:DSH_CLI(CLI 路径)、DSH_ASAR(安装包路径)、DSH_TEST_PORT(本机端口,默认 58173)。

项目文档:开发计划、开发日志、兼容性报告。

已知限制

  • 安装版只接受 kind=model 的 assistant;其他来源会被宿主拒绝。
  • 多个有效 complete section 同时存在时,宿主会明确报冲突,插件不代为裁决。
  • 挂载 PTC 执行器时,run_code 由执行器自行声明、无法从声明列表中移除:禁用后其 tools:sdk / tools:ptc-only 段落会被移除,调用被 guard 拒绝,但模型仍会看到这一项。
  • 自动上下文与工具禁用依赖宿主的公开方法适配(SystemPrompt.refreshContext、ToolsService.resolve),宿主升级必须重新验证;禁用后台环境信息不改变实际文件权限与审批规则。
  • 未执行过真实提供方请求的回归覆盖:静态格式通过不等于远端服务器必然接纳。

许可

MIT

Comments

Loading…