Skip to content

dsh-extra-context

Verified

dsh-extra-context · v0.1.1 · MIT · Web UI

给当前 DSH 的全部会话与子代理统一附加一段额外说明和上下文:设置页分段维护、实时预览、模型自维护笔记。

Install

dsh plugin add dsh-extra-context

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Tags

Creators

Readme

dsh-extra-context

给当前 DeepSeek Harness 的所有对话(主会话、子代理、workflow 子步骤)统一附加一段额外说明和上下文。文本在设置页里分段维护、实时预览、热生效,另外提供一个让模型自己维护长期笔记的工具。

它解决什么问题

有些东西需要在每一次对话里都成立:回答语言与风格、跨项目的约定、你的身份与偏好、必须一直遵守的边界。把这些写进 AGENTS.md 会混进项目级指令;在每个会话里重复粘贴又容易漏。这个插件把一段文本放进 system prompt 的一个固定位置,对所有会话自动生效。

功能

  • 全局生效:注册为进程级 system prompt section(deployment:extra-context,order 204),位于人格段之后、官方工具说明之前。主会话、子代理、workflow 子步骤都会带上,且不依赖具体 agent preset。
  • 多条规则:每条规则可单独启停;停用或内容为空的不出现在提示词里。列表默认收起,点某一条展开编辑。
  • 无需保存:输入时不受打扰,离开输入框即写入;勾选框、增删规则点了即生效。
  • 设置页实时编辑:设置 → 额外上下文。文本写入 $DSH_HOME/settings.yamlextra-context: 段,热生效,不需要重启。左侧菜单里这一行有自己的图标(IconContextInjectionOutline16),不会再和"设置"本身那个齿轮撞脸。
  • 常显预览与消耗:直接显示最终会附加到对话里的完整文本,以及它的体积与大致 token 量;内容偏长时给出一句精简建议。
  • 模型笔记(默认关闭):可选的"模型自维护长期笔记"——开启后模型会多一个 extra_context_notes 工具,能自己把"你说过一次、希望它永远记住"的偏好写进这段上下文。默认关闭,因为它会占用模型一个工具位;需要时在 profile 的插件行写 config: { notes: true }
  • 降级可用:若部署里没有 settings 服务,插件仍按组合层配置生效(仅当前进程),并在设置页给出提示。

什么时候生效(重要)

system prompt 在会话启动时组装并固化,之后的改动不会追进已开始的会话:

场景 行为
修改规则后新建的会话 立即使用新版本
修改规则前已经开始的会话 继续使用启动时的旧文本,直到该会话结束
想用上最新规则 新开一个对话

设置页顶部有同样的说明,不会让你以为"改完了但没生效"。

这条结论来自实机对照,不是只看源码推断:在同一个对话里先问模型"你现在遵守哪些额外上下文规则",然后改设置(写入 settings.yaml 成功、设置页预览同步更新),不新开对话再问一次——模型的回答里只有旧规则,没有新加的那条。

为什么不提供"把新内容刷进旧对话"的命令:这类注入只能追加一条消息(引擎不会重写已固化的 system prompt),新旧两套要求会同时存在、互相冲突。与其留一个语义含糊的功能,不如只保留"新对话生效"这一条清晰规则。

和其它机制的分工

机制 适合放什么
本插件 跨工作区的长期偏好、全局约束、希望一直遵守的约定
$DSH_HOME/AGENTS.md 你所有工作区的通用工作指导(DSH 原生能力)
项目内 AGENTS.md 某个项目/目录的构建命令、代码规范

同一段话不要在两处维护:重复内容既占上下文,也会在你的两个来源冲突时让模型无所适从。

安装

cd ~/Documents/dsh-plugins/dsh-extra-context
./install.sh

脚本会先做兼容性与打包检查,再通过官方 profile manager 挂载。

首次安装必须重启 dsh web:新增插件会改变 profile 的 bundle 列表,而 bundle 列表只在启动时读取(patchReload 只热重载 patch 文件)。在 Warp 里 Ctrl+C 后重新执行 dsh web --no-open,然后刷新页面。

卸载

cd ~/Documents/dsh-plugins/dsh-extra-context
./uninstall.sh

只移除 profile 依赖与 bundle 层;settings.yaml 里的 extra-context: 段是你自己的数据,不会被删除。卸载同样需要重启 dsh web 才彻底生效。

使用

  1. 打开 设置 → 额外上下文,确认开关为"已开启"。
  2. + 添加规则,在展开的文本框里写入内容(没有保存按钮:输入时不受打扰,离开输入框即写入)。
  3. 无需保存:点勾选框、增删规则都是点了即生效,正文则在你离开输入框时写入。
  4. 设置页的预览区始终显示最终会附加进去的文本。改动对新开的对话生效;已经开始的对话继续用启动时的文本(实测结论,见上文「改动什么时候生效」)。如果新开的对话里也看不到,先看预览里是不是你想要的内容,再看下面第 3 条限制(同名 section 被预设遮蔽)。

限制与注意事项

  • 这段文本出现在每一次模型请求里,会持续占用上下文;请精简,并留意预览里的消耗提示与偏长提醒。
  • 模型笔记会进入 system prompt,等于给模型一个"自我提权"的通道;工具描述里已明确要求不写密钥、凭据和敏感信息,请自行复核模型写入的内容。
  • 如果某个 agent preset 注册了同名 section(deployment:extra-context),会按 DSH 的遮蔽规则覆盖本插件的文本;本插件自身不注册任何 agent 级 section。
  • 插件不会写入或修改 DSH 源码、不会改动 profile 的用户 patch 层,全部副作用都是可逆的。

开发

npm run check        # 语法与 shell 检查
npm test             # node --test
npm run pack:check   # 发布物清单校验
npm run publish:check  # 以上全部

技术细节(契约、机制、排查)见 AGENTS.md