Repository navigation
Releases: ZiOstudio/dsh-budget-handoff
Release list
v0.2.2
两处修正,行为不变。
修正价格表路径指引
拦停通知与 README 原本让人「把价格补进 src/pricing.json」,但发到 npm 的包里只有 dist/,装市场版的人根本找不到 src/。改为指向 dist/pricing.json,并说明改 src/pricing.json 需重新构建才生效。
写快照失败不再连累拦停
writeHandoffOut 里两次落盘(工作目录 / $DSH_HOME)各自包 try。此前工作目录不可写时异常会从 agent/pre-step 逃出去,导致 return { kind: 'reject' } 执行不到 —— 预算超了却放行,闸门 fail-open。现在写失败只降级通知文案(说明哪一处失败、原因是什么),拦停照旧。
安装:dsh plugin --profile <你的profile> add dsh-budget-handoff@0.2.2
v0.2.1 — 幂等发布 + CI + CHANGELOG
这次做了什么
把「发布和门面」这几件容易被忽略的事补齐了。插件本身的行为一行没改 —— dist/ 与 0.2.0 逐字节一致,升级只影响安装、发布和仓库的可读性。
修了什么
- 发布不再假失败:以前重复推同一个 tag,Publish 步骤会以
E403 You cannot publish over the previously published versions: 0.2.0收场。这行字看起来像 npm token 坏了(Actions 页面上也确实是一个红叉),其实只是「这个版本已经在 npm 上了」。现在发布前先查一次,已存在就跳过——重新推 tag 不会再留下一个假故障。 - CI 上了:每次 push / PR 跑一遍零安装自检:跑全部
dist/*.test.js、node --check每一个 dist 文件、核对package.json里的dsh.bundle.patch与files[]。之所以「零安装」,是因为dist/本来就入库、测试只用 node 内置模块——这样 CI 验的就是用户真正拿到的那份代码。 - peer 声明补齐:
@deepseek-ai/dsh-agent/dsh-llm/dsh-session/dsh-tools/schemastery/cordis现在都在peerDependencies里,全部标optional(这些包由 DSH 宿主提供,不是本包的依赖)。预发布版本写成显式区间>=0.2.0-rc.1 <0.2.1-0 || >=0.2.1-rc.1 <0.3.0-0——semver 对预发布号有条容易踩的规则:区间里若没有任何一个比较符带着相同的 major.minor.patch 前缀与预发布标签,0.2.0-rc.2这类版本会被静默判为不匹配。 - 文档:新增
CHANGELOG.md(顺手把 0.2.0 / 0.1.1 / 0.1.0 的历史补齐);README 的安装部分改成 npm 包优先——预构建包装起来不需要allowBuilds批准,也省掉一次构建。
安装
# npm(推荐:预构建,装完即用)
dsh plugin --profile <你的profile> add dsh-budget-handoff
# GitHub(想跟着主分支走)
dsh plugin --profile <你的profile> add github:ZiOstudio/dsh-budget-handoffGUI:插件 → 添加插件 → 搜 dsh-budget-handoff。装完请重启 DSH。
不设预算时,每个会话默认给 10 元。
已知限制
与 0.2.0 相同(单步会话不触发、拦截后退出码 1、只覆盖 deepseek-official、跨进程不累计、节假日未建模、价格不自动更新),详见 v0.2.0 的说明。
MIT © 2026 ZiOstudio
v0.2.0 — 交接单 v2、/budget 命令、80% 预警
这次做了什么
按 DeepSeek 官方价目表实时记账,预算耗尽时拦停任务,并在同一瞬间落盘一份能接着干活的交接单。
不是「花完钱给你发个邮件」——通知到达时损失已经发生。这里不留通知,留交接单。
核心能力
- 按官方价目表逐笔记账:高峰 / 空闲时段分别计价,输入 / 缓存读 / 缓存写 / 输出四个桶分开算
- 80% 提醒,不打断:到线只提示一句,任务照常往下跑
- 100% 当场拦停:那一步不再执行,不给模型任何回答机会
- 交接快照:写进你的工作目录,同时注入模型上下文,说「继续」就能从断点接着跑
/budget命令:/budget 5设上限、/budget查余额、/budget 20提额。改预算本身零成本- 账户余额耗尽兜底:认得 DeepSeek 的配额拒绝信号,走同一套收尾,且不调模型、不花一分钱
- 未知模型不瞎猜:价目表里查不到就明确告诉你「保护已失效」,而不是按 0 虚报
交接单长这样
## 这个任务要做什么
把 UserService 的注册流程改成异步,顺便补上集成测试
## 干到哪了
- 工作目录:D:\work\shop-backend
- 模型已回复:38 次
- 最近动作(旧的在上,最新的在下):
- edit — src/user/user.service.ts
## 动过哪些文件
- `src/user/user.service.ts`
- `test/user.spec.ts`
## 怎么接着干
1. 先看上面的「动过哪些文件」,逐个确认改动是否完整。
2. 把本会话预算调大。
3. 说一句「继续」——本快照已同时注入模型上下文,模型能看到断点。它是写给「第二天醒来的你」的,不是给排查用的日志。
安装
# GitHub(推荐,便于复现)
dsh plugin --profile <你的profile> add github:ZiOstudio/dsh-budget-handoff
# npm
dsh plugin --profile <你的profile> add dsh-budget-handoffGUI:插件 → 添加插件 → 切到对应源 → 搜 dsh-budget-handoff。装完请重启 DSH。
不设预算时,每个会话默认给 10 元。
这一版相对 v0.1.1 的变化
功能改动集中在 817f817,其后 src/ 未再改动:
- 新增
/budget会话内命令(设额 / 查询 / 提额) - 交接单改为语义化四段式,从面向排查日志改为面向人接手
- 新增 80% 预警,且修正了它的触发时机(原先会等到用户下一条消息才弹出)
- 新增账户余额耗尽兜底,与预算超支共用同一套收尾流程
- 新增未知模型的明确告知,不再静默失效
仓库侧的改动:
- 用 GitHub Actions 从 tag 自动发布 npm(npm 强制 2FA,本地登录无法完成发布)
- 发布前加入凭据诊断步骤(token 长度 / 前缀 / 空白字符 /
whoami) .bak备份移出包根目录,.gitignore忽略_backups/- README 加入 Star 徽章与求 Star 说明
repository字段改为 npm 标准对象形式
已知限制
- 单步会话不会触发拦截(闸门在「下一步开始前」)
- 拦截后 CLI 退出码为 1
- 只覆盖
deepseek-official;其他 provider 走「保护失效 → 明确告知」 - 跨进程不累计:累计消费与
/budget预算都是内存值,进程重启即归零 - 法定节假日未建模:节假日仍按工作日窗口判高峰,因此消费会被高估、预算提前用完(方向保守,不会超支)
- 价格不会自动更新:官方调价需手动改
src/pricing.json并重新构建
MIT © 2026 ZiOstudio