dsh-session-seed
为 DeepSeek Harness(DSH)的新对话自动注入一段可编辑的历史对话。插件会等到新对话第一次发送用户消息时再注入,单纯打开空白窗口不会写入内容。
插件支持两种方式:
- 写入对话(默认):作为真实的 user/assistant 消息写入会话,模型语义最接近原生历史,但注入内容会显示在对话窗口中。
- 隐藏带入:不在对话窗口显示,而是在该会话的每次模型请求中重复携带结构化历史,因此会额外消耗 Token。
写入对话模式会同步 DSH Agent 的回合编号,避免注入历史与真实聊天使用相同编号。如果当前 DSH 版本无法安全同步,插件会跳过这次显示注入并记录警告,不会冒险写坏会话投影。
设置页还提供总开关,关闭后,新建会话不再注入。插件在全新顶层会话第一次发送用户消息时读取模式和开关,不会中途改变已经开始聊天的会话,也不会递归注入 subagent。
环境要求
- DeepSeek Harness
0.1.0-rc.6或更高兼容版本 - Node.js 20 或更高版本
- DSH Web profile
安装
在终端运行:
dsh plugin --profile web add github:wdsjwzl/dsh-session-seed
然后打开 ~/.dsh/profiles/web/cordis.patch.yml,加入:
- insert:
- id: session-seed
name: dsh-session-seed
重启 dsh web,并在浏览器中强制刷新一次。随后可在 设置 → 对话注入 中启用插件、选择注入方式或打开对话配置文件。
对话配置文件
插件按以下顺序确定配置文件:
cordis.patch.yml中显式配置的config.file。- 环境变量
DSH_HOME下的session-seed.json。 - 用户目录下的
~/.dsh/session-seed.json。
如果文件不存在,插件会自动复制仓库附带的安全示例。插件升级不会覆盖已经存在的配置文件。
配置格式:
{
"enabled": true,
"messages": [
{
"role": "user",
"content": "以前聊过的用户消息"
},
{
"role": "assistant",
"content": "以前聊过的助手回复"
}
]
}
说明:
enabled: false可在文件层暂停注入;设置页总开关也必须同时开启。messages只读取非空的user和assistant消息。- 可填写
provider和model,用于“写入对话”模式下 assistant 历史消息的来源标记。 - JSON 无法读取时,插件只会跳过本次注入,不会阻塞 DSH 启动。
如需使用自定义路径,可在 profile patch 中配置:
- insert:
- id: session-seed
name: dsh-session-seed
config:
file: D:/dsh-data/my-session-seed.json
模式细节
写入对话
插件在全新的顶层 session 第一次收到真实用户消息、且 Agent 尚未开始该回合时,写入完整的 turn/step/message 生命周期。恢复旧 session 时不会重复写入,单纯创建或打开空白 session 也不会写入。
隐藏带入
插件在新 session 第一次收到真实用户消息时冻结当时的配置,并通过 system prompt 在每次请求中提供同一份 transcript。DSH 重启后,插件会从该 session 已持久化的 request header 恢复原快照,不会用后来修改的配置替换旧会话内容。
隐藏模式能避免页面出现注入消息,但底层不是原生 user/assistant 角色,且每次请求都会重复占用上下文 Token。
更新
dsh plugin --profile web update dsh-session-seed
更新后重启 dsh web。现有的 ~/.dsh/session-seed.json 不会被覆盖。
卸载
先从 cordis.patch.yml 删除 session-seed 条目,然后运行:
dsh plugin --profile web remove dsh-session-seed
用户配置文件不会自动删除。
隐私提醒
对话配置文件可能包含私人信息。提交 issue、日志或复刻本仓库时,请勿上传自己的 ~/.dsh/session-seed.json。
No comments yet. Be the first to write one.