🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

Agent 预算账本 winter-street/dsh-plugin-agent-budget

DeepSeek Harness
winter-street43 天前有提交已提供中文文档扫描:含敏感能力

为整棵 Agent 树共享 Token 预算并记账

31.3/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add winter-street/dsh-plugin-agent-budget
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么[目录]—
dsh 原生插件 · model
暂无时间戳·判据 →
装得上吗[实装验证]!
实装验证未通过(unknown),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
数据截至 2026/10/31·判据 →
安全吗[自动扫描]—
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
数据截至 2026/11/04·判据 →
还在维护吗[仓库]—
更新放缓:最近一次提交在 43 天前
暂无时间戳·判据 →
图例:✓ 通过! 需注意— 未判定 / 无数据· 「未判定」= 本站尚无数据,不代表插件有问题
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →

可信度证据

⚠︎ 实装验证未通过(unknown · 2026/10/31) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-plugin-agent-budget(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 01:48:41

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 7 处,展示前 7 条)
  • 写入本地文件
    src/index.ts:495
    mkdirSync(dir, { recursive: true })
  • 写入本地文件
    src/index.ts:503
    appendFileSync(file, `${JSON.stringify(line)}\n`, { encoding: 'utf8', mode: 0o600, flush: true })
  • 读取本地文件
    src/index.ts:531
    if (existsSync(this.indexPath)) {
  • 读取本地文件
    src/index.ts:533
    const parsed = JSON.parse(readFileSync(this.indexPath, 'utf8')) as unknown
  • 读取本地文件
    src/index.ts:543
    if (existsSync(this.ledgerPath)) {
  • 读取本地文件
    src/index.ts:544
    const lines = readFileSync(this.ledgerPath, 'utf8').split(/ ? /)
  • 写入本地文件
    src/index.ts:562
    if (lines.at(-1) !== '') appendFileSync(this.ledgerPath, '\n', 'utf8')
扫描于 2026/11/4(0 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

社区实装还没有人打卡 · 装过的第一个就是你
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-system-prompt@deepseek-ai/dsh-tools
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 共享Token预算
  • 失败即拒准入闸门
  • 可重放用量账本

为 DeepSeek Harness 智能体树提供持久共享 token 预算——失败即拒的准入闸门,外加可重放的用量账本。

README

由 DeepSeek 最新模型翻译生成
dsh-plugin-agent-budget 面向 DeepSeek Harness Agent 树的共享 Token 预算插件。根 Agent、one-shot/continuable subagent 以及 workflow 后代可以共同消耗一份可持久化预算。 状态:实验性,已验证 DSH 0.1.0-rc.6。目前尚未发布到 npm,作为 DSH 插件生态的开源贡献持续开发中。 亮点 - 把整棵 Agent 树 当作一个预算账户(scope: tree),也支持每个 Session 独立账户(scope: session); - 账本保存在插件自有 sidecar 文件(~/.dsh/agent-budget/),不写入 Session 日志,卸载插件不会破坏会话; - 账本仍是 append-only、可重放、可恢复; - 给模型本身提供只读的 budget_status 工具,而不只是人类命令; - 提供设置页面板:查看所有 scope、调整上限、重置用量,无需手改账本文件; - 无外部服务,可作为普通 bundle 安装; - 保持范围狭窄:聚焦“Agent 树级、可持久化、可重放、fail-closed 的 Token 记账”。 安装 目前尚未发布到 npm。
展开完整文档(README 剩余 1 节)
dsh-plugin-agent-budget

面向 DeepSeek Harness Agent 树的共享 Token 预算插件。根 Agent、one-shot/continuable subagent 以及 workflow 后代可以共同消耗一份可持久化预算。

状态:实验性,已验证 DSH 0.1.0-rc.6。目前尚未发布到 npm,作为 DSH 插件生态的开源贡献持续开发中。

亮点

- 把整棵 Agent 树 当作一个预算账户(scope: tree),也支持每个 Session 独立账户(scope: session);
- 账本保存在插件自有 sidecar 文件(~/.dsh/agent-budget/),不写入 Session 日志,卸载插件不会破坏会话;
- 账本仍是 append-only、可重放、可恢复;
- 给模型本身提供只读的 budget_status 工具,而不只是人类命令;
- 提供设置页面板:查看所有 scope、调整上限、重置用量,无需手改账本文件;
- 无外部服务,可作为普通 bundle 安装;
- 保持范围狭窄:聚焦“Agent 树级、可持久化、可重放、fail-closed 的 Token 记账”。

安装

目前尚未发布到 npm。下面的命令默认包已存在于 profile workspace 中(例如通过本地 checkout 使用 dsh plugin --profile add -w .,或等仓库公开后从 GitHub bundle 安装)。

作为 bundle 安装到 profile(推荐,发布后可用):

dsh plugin --profile add dsh-plugin-agent-budget

也可以通过 npm/pnpm 直接安装:

pnpm add dsh-plugin-agent-budget

从 git 安装时,包会通过 prepare 脚本在安装期构建。pnpm ≥10 默认阻止 git 依赖的构建脚本,首次 add 会失败;请把 pnpm 打印的包名键加入 profile 的 pnpm-workspace.yaml 后重试:

allowBuilds:
dsh-plugin-agent-budget: true

本包声明 dsh.bundle,安装后由 dsh plugin 自动加入 profile 的 dsh.profile.bundles,--dump-config 中可见 # == dsh-plugin-agent-budget 层。
配置层由包根 cordis.patch.yml 提供:

- insert:
- id: agent-budget
name: dsh-plugin-agent-budget
config:
maxTokens: 200000
missingUsage: exhaust
scope: tree

maxTokens 必填,且必须是正安全整数。missingUsage 默认为 exhaust;只有当 provider 明确不返回 usage、并且你能接受预算统计不完整时,才建议设为 ignore。
scope 默认为 tree;session 会让每个 Session 独立计费。
storageDir 可选,默认是 ~/.dsh/agent-budget/。

控制层(可选)

在记账之外,插件可以在预算接近耗尽时主动压低消耗。除压力提示外均默认关闭:

- degradeRatio(0~1):当 scope 剩余预算占比低于该阈值,后续每个 agent/request 都会被降配——maxTokens 收紧到剩余预算(下限为 1);配置了 degradeModel 时同时切换为更便宜的模型。maxOutputTokens 可在降配期间限制输出硬上限。
- maxConcurrentCalls:限制每个 scope 的并发调用数,超出的调用在派发前以 TOKEN_BUDGET_CONCURRENT_LIMIT 失败。这也收敛了"已知限制"中的并发超额。
- pressurePrompt(默认 true):用量超过 50% 后向系统提示注入预算压力提示, 80% 后升级为紧急措辞,让模型在撞到硬上限之前自律。依赖可选的 @deepseek-ai/dsh-system-prompt peer;没有该服务的组合照常加载,仅不注入提示。

降配走 agent/request waterfall,因为 loop 发出的 llm/stream 请求被深冻结、不可在钩子里改写。控制层不写入账本,记账语义不变。

导出面(Export shape)

插件导出四个命名成员,没有默认导出:

- name: 'agent-budget'
- inject: ['llm', 'sessions', 'tools', 'agents'](Web 服务为可选依赖)
- apply(ctx, config) — 函数插件入口
- Config — loader 配置 schema

模型体验(Model Experience)

模型可以调用只读工具 budget_status,查看上限、已用量、剩余量、耗尽状态、四类 usage、meteringComplete 和 unmeteredCalls。工具不能修改预算。

设置页与 HTTP API

Web client 会在设置页注册 Token 预算 面板:列出所有已开启的预算 scope,展示 limit/used/remaining/exhausted 与进度条,每 30 秒轮询刷新。

Host HTTP API 位于 /agent-budget/api:

0.3.0 起仅允许本机回环连接,并校验 Host/Origin。POST 必须携带 Content-Type: application/json 和 X-Agent-Budget-Request: 1,请求体上限为 16 KiB。执行中的 scope 不能重置,返回 HTTP 409。内置设置页已适配。
不要通过公共反向代理暴露此接口。访问边界和故障恢复见 SECURITY.md。

- GET /scopes → { ok, scopes: [{ scopeKey, limitTokens, usedTokens, ... }] }
- POST /adjust-limit,body { scopeKey, limitTokens } → 覆盖该 scope 的上限
- POST /reset,body { scopeKey } → 清空用量但保留当前上限

adjust 与 reset 都以新行追加进 sidecar 账本。旧的 open/sample 行不会被修改,因此重放账本得到的结果与增量更新一致。

行为

- scope: tree(默认)下,优先按 DSH 的 runtime agent ownership 解析树根;无法解析时退回 durable parentSession 链;仍无法解析时退化为独立预算并告警,不会把多个会话错误地锁到同一个账户。
- scope: session 下,每个 Session 独立预算,包括 subagent。
- 所有携带 sessionId 的 llm/stream 调用都会计入,包括普通回复、subagent、workflow、 compaction 和标题生成。
- 未缓存输入、缓存读取、缓存写入和输出是四个互不重叠的桶;reasoning 已包含在输出中,不会重复累加。
- 预算上限在某个 scope 的首个 open 记录时固定。插件热重载不会修改已有预算。
- 已经准入的并发调用可以造成有限超额;已结算用量达到上限后,新调用会在 provider 执行前以 TOKEN_BUDGET_EXHAUSTED 失败。
- 不带 sessionId 的直接调用不属于 Agent 树,不纳入预算。

存储与卸载

插件把账本存在:

~/.dsh/agent-budget/
ledger.jsonl append-only 账本(含 start/end 调用记录) scope-index.json sessionId -> scopeKey 索引 writer.lock 独占写入锁

- 新版本不再向 Session 日志写入任何 budget/ 事件;
- 卸载插件后,DSH 可以直接打开所有会话;
- 彻底清除预算数据,删除 ~/.dsh/agent-budget/ 即可;
- 同一个 storageDir 同一时间只应由一个 DSH 进程使用。若 headless 与 web 同时运行,请为不同 profile 配置不同的 storageDir,或避免同时写同一账本。
- 0.3.0 使用独占锁拒绝并发写入。崩溃后须确认所有写入进程已停止,再删除遗留锁文件。
- 损坏的账本和索引会阻止启动;升级前备份整个目录,不要用旧版插件打开 0.3.0 写入的数据。
- 取消、流异常及进程崩溃导致用量无法完整确认时,默认按未计量调用阻止继续调用。

旧数据迁移

0.1.0 之前(或本仓库早期版本)写入过 Session 日志的 budget/ 事件,请在升级使用这些版本的 profile 前执行一次迁移:

node scripts/migrate-session-log.mjs

迁移工具会:

1. 扫描 ~/.dsh/sessions/*/session.jsonl(.zstd);
2. 把 budget/ 事件转换到 ledger.jsonl 和 scope-index.json;
3. 从 Session 日志中移除这些事件;
4. 写回前为每个文件创建 .bak 备份。

运行迁移前请先停止正在使用相关 profile 的 DSH 进程。

已知限制(Known Limitations)

- 错误处理只终止本插件确实拒绝过的会话的预算错误;各插件仍应保持错误码唯一。
- scope: tree 在极端冷启动且 parent 不可解析时会退化为独立预算,宁可少共享,也不误锁。
- 与 DSH 0.1.0-rc.6 验证;升级 DSH 时请重点回归:llm/stream 钩子签名、 agent/request-error 载荷结构、ctx.agents 的 runtime ownership API。
- 并发准入可能造成有限超额,这是设计取舍(README 语义已声明);配置 maxConcurrentCalls 可加以限制。
- 计量不完整时默认 fail-closed:明确不返回 usage 的 provider 请配置 missingUsage: 'ignore'。

仓库结构

src/index.ts 插件实现 tests/ 单元 + 集成测试(确定性 mock stream) cordis.patch.yml dsh plugin profile 的默认 bundle 层 scripts/ lint / test / pack / 旧数据迁移 docs/design.md 设计决策与兼容性说明 .github/workflows/ci.yml Node.js 22/24 CI

发布历史见 CHANGELOG.md。

开发

pnpm install
pnpm check

默认测试使用确定性的 mock stream。存在 DEEPSEEK_API_KEY 时,pnpm test:smoke 会执行一次很小的真实 DeepSeek 请求;没有 Key 时自动跳过。CI 覆盖 Node.js 22 和 24。

贡献指南见 CONTRIBUTING.md。

License

MIT
预览分享卡片长什么样 ↓winter-street/dsh-plugin-agent-budget
分享 · DeepSeek Harness Hub
winter-street/dsh-plugin-agent-budget

为整棵 Agent 树共享 Token 预算并记账

这个插件是你维护的吗?
作者本人可认领并核对本条目;认领通过后,详情页会显示「作者已认领」标记。
认领条目 →
回到顶部