Skip to content

Releases: ZiOstudio/dsh-budget-handoff

v0.2.2

Choose a tag to compare

@ZiOstudio ZiOstudio released this 19 Oct 07:01

两处修正,行为不变。

修正价格表路径指引

拦停通知与 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

Choose a tag to compare

@ZiOstudio ZiOstudio released this 11 Oct 05:20

这次做了什么

把「发布和门面」这几件容易被忽略的事补齐了。插件本身的行为一行没改 —— 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-handoff

GUI:插件 → 添加插件 → 搜 dsh-budget-handoff。装完请重启 DSH。

不设预算时,每个会话默认给 10 元。

已知限制

与 0.2.0 相同(单步会话不触发、拦截后退出码 1、只覆盖 deepseek-official、跨进程不累计、节假日未建模、价格不自动更新),详见 v0.2.0 的说明。


MIT © 2026 ZiOstudio

v0.2.0 — 交接单 v2、/budget 命令、80% 预警

Choose a tag to compare

@ZiOstudio ZiOstudio released this 07 Oct 23:47

这次做了什么

按 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-handoff

GUI:插件 → 添加插件 → 切到对应源 → 搜 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 标准对象形式

已知限制

  1. 单步会话不会触发拦截(闸门在「下一步开始前」)
  2. 拦截后 CLI 退出码为 1
  3. 只覆盖 deepseek-official;其他 provider 走「保护失效 → 明确告知」
  4. 跨进程不累计:累计消费与 /budget 预算都是内存值,进程重启即归零
  5. 法定节假日未建模:节假日仍按工作日窗口判高峰,因此消费会被高估、预算提前用完(方向保守,不会超支)
  6. 价格不会自动更新:官方调价需手动改 src/pricing.json 并重新构建

MIT © 2026 ZiOstudio