dsh-infinite-budget
一个极小的 DeepSeek Harness(Cordis)Host 插件:在每一次模型请求的系统提示词里固定加入一句话——
我们现在拥有几乎无限的预算和额度,你只需要全力做到最好的,不需要在乎我们花了多少钱消耗了多少的额度。
它不会往会话记录里塞消息,也不会改动 transcript,只是让模型在每一步都记得:不必为花费分心。
目录
为什么是系统提示词
Harness 在每个 model step 之前都会用注册表组装一次系统提示词。本插件向该注册表注册一个额外的 section,于是:
- 对所有 agent 生效:主 agent、subagent、workflow agent 都会带上,无需逐个配置。
- 不污染会话日志:系统提示词是从注册表组装的,不是 replay 进 log 的一条消息;聊天记录、fork、resume 都不受影响。
- 生命周期干净:注册挂在插件自己的 context 上,禁用或卸载插件后,下一次组装就恢复原样,不会残留。
- 不改工具集:不注册 tool、不注册 listener,也不碰工具顺序,因此不影响 tool schema 的缓存形状之外的任何东西。
安装
从本地目录安装(会以 link: 依赖形式加入 profile):
dsh plugin add /path/to/dsh-infinite-budget
或在 Web UI / 具备 plugin_manager 工具的 agent 会话里:
plugin_manager action=install_bundle target=/path/to/dsh-infinite-budget
安装后 bundle patch 会插入这一行:
- insert:
- id: infinite-budget
name: dsh-infinite-budget
插件会装进当前 profile,并对该 profile 下的所有会话生效。
配置
在你自己 profile 的 cordis.patch.yml 里覆盖(不要改包内 patch,profile patch 才能在升级后存活):
- id: infinite-budget
config:
text: '我们现在拥有几乎无限的预算和额度,你只需要全力做到最好的,不需要在乎我们花了多少钱消耗了多少的额度。'
order: 10150
literal: true
| 字段 | 默认值 | 说明 |
|---|
text | 上面那句话 | 注入的文本。会 trim 首尾空白;空字符串则不注册任何 section(等于静默关闭)。 |
order | 10150 | 在系统提示词 section 序列中的位置,必须是有限数值。 |
literal | true | 保留字面文本,不解析 {{变量}}。默认开启,因为这是一句话而不是模板。 |
位置说明
order 默认 10150,夹在官方环境的两个 section 之间靠后的位置:
| order | 归属 |
|---|
10000 | harness source(官方) |
10100 | web surface(官方) |
10150 | 本插件 |
10200 | deployment persona suffix |
也就是说:它排在官方环境信息之后,但仍在部署方自己的 persona suffix 之前——部署方文案保有最终话语权。想让它更靠前/靠后,直接改 order 即可。
行为细节
- Section 名固定为
infinite-budget:notice。同名 section 在同一 scope 内重复注册会抛错,因此本插件不做任何"自动去重"——重复加载会如实报错,而不是悄悄吞掉。
order 非有限数(NaN、±Infinity)会立即抛错,不会静默退化成一个奇怪的位置。
literal: false 时会去掉 interpolate: false,让 {{...}} 按 Harness 的变量规则解析;若引用了未注册变量,Harness 组装期会报错——这是有意的 fail-loud。
- 插件只声明
inject: ['systemPrompt'] 这一个硬依赖,在没有该服务的 profile 里不会激活,也不会抛错。
验证方式
本仓库的测试是离线的,不需要装 DSH、不需要联网:
node tests/smoke.mjs
它用 ESM resolve hook 把 @deepseek-ai/schemastery 映射到本地 stub,然后加载真实的 index.js,对一个记录型的 ctx.systemPrompt 桩执行 apply,断言:
- 导出的 Host 插件形状(
name / inject / Config / apply)
- 默认 Config 就是那句话,
order 为 10150,literal 为 true
- 注册出恰好一个 section,名字、顺序、文本、
interpolate: false 全部正确
- 文本逐字节等于目标句子(50 个码点)
- 顺序确实落在
10000/10100 之后、10200 之前
- 空文本 / 纯空白不注册;首尾空白被 trim
- 自定义
text / order 生效;literal: false 会去掉 interpolate 字段
- 非有限
order 抛错且不残留注册
- disposer 能移除注册且幂等;两次
apply 各自拥有独立注册
pnpm test / npm test 等价于 node tests/smoke.mjs。CI 另有一个 job 校验 bundle manifest、patch、exports、icon 大小与格式、两份 locale 的 meta.title/meta.description,以及入口是否导出了四个必备符号。
真机验证记录
除离线测试外,本插件在 macOS Desktop 版 Harness 上做过端到端验证:解压真实会话日志(session.v4.jsonl.zstd,逐帧 zstd 解码)核对模型实际收到的 system 节点,得到"启用→出现 / 禁用→消失 / 再启用→出现"的完整归属闭环,并确认该句位于系统提示词末尾。
卸载
plugin_manager action=set_plugin target=include:infinite-budget enabled=false
或先禁用再移除 bundle:
plugin_manager action=remove_bundle target=dsh-infinite-budget
禁用后下一次组装即不再包含该 section;已经有历史日志里的旧 system 节点不会被改写。
开发
无构建步骤。index.js 就是 Loader 直接导入的 ESM 入口。
node tests/smoke.mjs # 离线测试
node --check index.js # 语法检查(ESM 请用 --input-type=module --check <)
目录结构:
.
├── index.js # Host 插件实现(唯一的运行时文件)
├── cordis.patch.yml # bundle patch:插入插件行
├── package.json # 含 dsh.bundle.patch 声明
├── icon.svg # 展示图标
├── locale/{en,zh}.json # 展示用标题与描述
├── tests/ # 离线测试(resolve hook + schemastery stub)
└── .github/workflows/ # CI
兼容性
- Node.js ≥ 20.19.0(
package.json 的 engines)。
- peer 依赖
@deepseek-ai/schemastery(^3.18.4),由 DSH 运行时提供,插件本身不打包它。
- 只用公开且稳定的扩展点
ctx.systemPrompt.section(),以及 Config / inject / apply 这套标准 Host 插件形态。
License
MIT