dsh-persona-anchor:钉住人设文本,避开 AGENTS.md 预算限制

前言

在 DSH 工作流中,人设通常写在全局 ~/.dsh/AGENTS.md 里,由 @deepseek-ai/dsh-agent-instructions 插件注入。该注入插件为“全局 + 项目 AGENTS.md”共享 65536 字节的指令预算。其渲染规则是“按最宽泛 → 最具体排序,先整份丢掉最宽泛的”。如果人设恰好在最宽泛的那份里,项目文件一旦变大,人设就是第一个被牺牲的。更麻烦的是,这个过程静默发生,只会在注入块顶部留一行 Workspace instruction budget …,不报错。

现有的注入配置(如 maxBytes)没有任何 pin 或 alwaysInclude 选项能保住某个文件。另一个直觉方案 personaPrefix 也会失效,因为 dsh-system-prompt 的 assemble() 逻辑中,默认 agent preset(如 standard)已经注册了同名的 deployment:persona-prefix section,新写入的会被直接覆盖。

dsh-persona-anchor 旨在解决这个问题:换一个没人会注册的 section 名,通过 systemPrompt.section() 通道直接注入,完全绕过 AGENTS.md 的 65536 字节预算。

这是什么

这是一个 DSH host plugin(web profile),它将指定的「人设」文本钉进 system prompt section。

核心功能:
* 将人设文本钉进 system prompt section。
* 不消耗 AGENTS.md 的指令预算。
* 依赖:仅 Node.js 内置模块。

安装

安装前请确认当前 DSH 进程支持 --profile web。

dsh plugin --profile web add github:harmless0819-dev/dsh-persona-anchor

配置

在 DSH 的插件配置文件中添加以下内容:

- id: dsh-persona-anchor
  name: dsh-persona-anchor
  config:
    file: 'C:/Users/<you>/.dsh/persona.md'   # 必填,人设文件的绝对路径
    onError: log                             # log(默认)| throw

配置项说明:

键 默认值 说明
file 必填 人设文件绝对路径
section deployment:persona-anchor section 名;建议保持默认,确保唯一性
maxBytes 524288 (512 KiB) 单次读取上限,防止误操作读取过大文件
onError 'log' 读文件失败时的行为:log 仅告警 / throw 触发错误
order 部署人设位 section 排序位置
reloadMs 0 若大于 0,则定时重读文件
route true 是否注册状态路由以报告错误

典型用法

  1. 在磁盘上创建人设文件,例如 ~/.dsh/persona.md。
  2. 在插件配置中指定该文件的绝对路径。
  3. 修改配置后,新开一个会话。
  4. 询问 AI “你的名字/设定是什么”。
  5. 若人设未生效,插件会注册一个状态路由报告 state.error,从中可以看到失败原因(如文件不存在、过大或为空)。

注意事项

  • 自用性质:这是一个自用插件,已在本地跑通。
  • 可选依赖:webServer 是可选依赖。代码通过 ctx.inject([...]) 延迟注册,因此写进顶层 inject 不会导致没有 webServer 的 headless profile 加载失败。
  • 容错机制:读文件失败默认不抛异常,只在日志和状态里报告,避免一个人设文件打不开就把整个 profile 搞挂。

结尾

dsh-persona-anchor 提供了一条绕过 AGENTS.md 预算限制的路径,适合需要确保人设文本在所有场景下都存在的开发者。更多详情与源码可参考:GitHub。

羽毛球分组比赛记分
小程序二维码

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

小夜