Repository navigation
Releases: eghrhegpe/dsh-connect-atomcode
Release list
v0.6.2 — 拉起失败说得清,末帧不再丢,轮数填错当场拒绝
🧰 v0.6.2 — 拉起失败说得清,末帧不再丢,轮数填错当场拒绝
本版主线是自动拉起这条链路的可诊断性:面板此前只给一句「自动拉起失败」,分不清是没装 AtomCode、装了但宿主找不到、还是那个文件不能执行。现在报出实际跑的是哪个文件、系统给的错误码是什么;macOS 上再多一条找回 AtomCode 的路。
第二主线是三处「看起来正常、其实少东西」的问题:回复的最后一句恰好没有换行时被静默丢掉、「最多轮数」填错被当成「清空上限」、后台进程死掉后插件再也不肯再拉起。
一、自动拉起:报出实际跑的是谁、报的什么码
- 失败说得清:自动拉起失败时,报出实际尝试的文件路径与系统错误码,不再只有一句「自动拉起失败」。
- macOS 多一条 PATH 回退:自动探测找不到时,再试
/opt/homebrew/bin/atomcode与/usr/local/bin/atomcode。这条承诺只给自动探测——你自己指定了可执行文件或设了环境变量时,找不到就如实说找不到。 - 后台进程死掉后还能再拉起:此前自动拉起成功过一次之后,插件就再也不肯拉起死掉的后台进程(工具调用不受影响)。现在每次都用新的进程。
- 「已自动拉起」要有证据才说:进程确实起来过才这么写;上一次失败留下的痕迹会在探活确认后台已应答时清掉,不再出现「运行中」和「拉起失败」同时挂着的情况。
二、回答与面板填错:少的东西补回来
- 末帧不再被丢掉:回复的最后一句恰好没有换行时,整句会被静默丢掉——你看到的是一条「看起来完整」的回答,缺的却是最后一句。现在末帧照常送达。
- 「最多轮数」填错当场拒绝:面板此前把填错的数字当成「清空上限」,敲错一个字母,自己的轮数上限就被悄悄抹掉。现在非数字或超出范围一律当场点名拒绝,不提交。
v0.6.1 — 额度面板不再自己编一句话
v0.6.1 — 额度面板不再自己编一句话
这版只有一条主线,属于「读数诚实」那一类:上游给的是一份半截数据时,面板不再把它当成完整读数,也不再自己编一句话填上去。
半读数不再算读数(修复)
上游的 CodingPlan 用量有时会给出「有计划名、但没有用量行」的形状。此前这种响应仍被当作「有读数」处理,于是面板上出现的是:百分比空白,兜底串「额度读数不可用」——而那句话是客户端自己拼的,不是上游说的。漂移灯不亮,host 一条日志都不打,用户看到的是一句没有出处的话。
现在:
- 这种半读数退回文本读数,并在读数旁注明为什么是回落——文本那条路本来就能对同一形状给出结论,只是 JSON 那条路没被应用同一条规则。
- 文本也认不出时,漂移灯亮起、tab 上出现标记,host 侧落一条结构化日志。「认不出」从此是一个看得见的状态,而不是一句编出来的话。
插件卡介绍中英文同源(修复)
插件卡的中文介绍此前漏掉了输入框下方那颗用量胶囊——插件明明有,介绍里整句没提;英文另有一段与中文对不上的译文(把 atomcode_ask 说成「模型侧工具」、把免配置说成「无模型接管」)。现在中文为准、英文逐句对应,与插件市场的投稿文案逐字相同。
安装与升级:npm i -g dsh-connect-atomcode@0.6.1(经 npm / 插件市场分发,本 Release 不附构建产物)。
v0.6.0 — 面板有了按天用量卡 · 面板设置真正生效
v0.6.0 — 面板有了按天用量卡,面板设置真正生效
这版有两条主线:一是详情页新增一张按天用量卡,额度读数从"只有本地化文本"升级为结构化 JSON 优先、原文回落;二是面板上的四个回合形状字段写进去现在真的会生效——此前路由漏转发,改了白改。
按天用量卡(新增)
- 额度优先读 daemon 的结构化用量数据(CodingPlan JSON);读不出时回落原文展示,绝不编数字。
- 宿主没提供按天数据时,卡片直说「宿主未提供」,不再把锅甩给 daemon。
面板设置真正生效(修复)
- 四个可写字段——简明模式 / 工作目录 / 审批模式 / 最大回合——现在由路由完整转发,写入即生效。
其他修复
- 额度上游失败现在具名报「额度未生效」并提示
/login,不再被误标成「文案漂移」。 - ask 计数落盘:计数不再随进程重置;卡片改称「经本桥的回合」。
- 「锐评」预填的回复有了长度上限,被截掉的部分会被明确说出来。
安装与升级:npm i -g dsh-connect-atomcode@0.6.0(经 npm / 插件市场分发,本 Release 不附构建产物)。
v0.5.1 — registry 页上现在看得到截图
v0.5.1 — registry 页上现在看得到截图
一个补丁版,只修一件你能在 npm 包页上直接看到的事;另外两处是开发侧的收尾。
修了什么
README 里的两张界面截图在 npm 包页上是裂的,现在不裂了。 原因很具体:截图资源(assets/)刻意不进 npm 包——
它们存在的意义是给插件市场读(市场取仓库根的 assets/ 与 screenshots.json),而 npm 包的 files 白名单里没有它们。
README 此前用相对路径引用它们(assets/xxx.png),于是同一份文档在 GitHub 上正常、在 registry 页上必然指向一个不存在于包里的文件。
现在两张截图走 raw.githubusercontent.com 的绝对地址:GitHub、npm 包页两边都渲染得出来。
截图仍然不进包——变的只是文档怎么引用它们,分发策略一点没动(test/release-artifacts.test.mjs 继续钉着它)。
顺带收尾(开发侧)
scripts/release-status.mjs的「发布提交 CI 绿」不再是永远查不动:附注 tag 的rev-parse refs/tags/X给的是
tag 对象,不是提交;拿它去gh run list里匹配 headSha 永远匹配不到,于是这一格显示?,
而同一行末尾又正确印着 master 头上那条 run 是绿的——自相矛盾。现在凡是「tag 指向哪个提交」的用途都先
rev-parse X^{commit}解引用。- 新门禁:
test/docs-integrity.test.mjs现在拦「仓库内截图用相对路径」,并验证绝对地址指向的文件真的在仓库里
(改了截图文件名而没改 README 会红);docs/README.md的「写文档的纪律」补上第 5 条讲这件事。
升级
装法不变:dsh plugin add dsh-connect-atomcode(或从 registry 更新),重启 DSH 进程。
本版没有配置变更、没有 state 文件迁移,直接覆盖即可。
v0.5.0 — 模型侧只留一个工具
v0.5.0 — 模型侧只留一个工具
这一版把插件对模型暴露的面收窄了:工具表里只剩 atomcode_ask 一个工具。 评审能力一个没少,只是换了入口——
一次性的代码评审现在走 /atomcode-review 斜杠命令和每条回复下方的「锐评」按钮,两者都在宿主侧执行,不花模型回合。
你会感觉到什么
1. 模型侧的 atomcode_review 工具退役(这就是本次升 minor 的原因)
此前并存两个工具:atomcode_ask(侧边咨询,一条消息进、一个完整自主回合出)与 atomcode_review(一次性差分评审)。
实际使用中,模型总是倾向调用更通用的 atomcode_ask——于是 atomcode_review 变成了一条没人走、却仍要占着工具表描述的路。
现在它被移除:需要评审时模型直接调 atomcode_ask,由 AtomCode 自己决定读哪些文件、跑哪些命令。
- 能力对照:
/atomcode-review只能看一个 diff;atomcode_ask能顺着调用链往下追。两者走同一条 daemon 通道,
所以评审的通道与质量与之前完全一致;区别只是 review 不返回结构化findings[],报告是文字。 - 如果你有依赖它的自动化(比如自己写的 prompt 里点名
atomcode_review):改成/atomcode-review命令,
或者直接让模型调atomcode_ask。这是模型可见面的破坏性变更,故按 semver 走 minor——安全更新通道不会把它当成修复吃进去。
2. 两个从来没有生效过的评审熔断字段被删掉
review_max_rounds 与 review_max_duration_secs 曾出现在 patch 配置里,但值被解析进快照后没有任何调用点读它——
改它们不会改变任何行为。一次评审就是一次 ask 回合,服从 ask_max_rounds(以及每次调用的 max_rounds / timeout_secs)。
如果你在 patch 里写过这两行,删掉即可。
3. 同版修复
npm run test:live自己就是断的:脚本去跑一个随 review CLI 一起被删掉的套件,必然以「Could not find」失败。
现在只跑存在的daemon-live——评审通路不需要单独的 live 套件,它和ask覆盖的是同一个runAsk。- 面板的工具调用统计不再随重启归零:
atomcode_ask的调用 / 成功 / 失败 / 用时 / tokens 五个计数落到磁盘,
插件重载或 Host 重启后接着上次继续累计。 - 一批「代码删了、说明还在说它活着」的文档被改正:
stats.review与面板warning现在都写明自己是保留的契约槽位、
当前没有写入点;README /docs/DECISIONS.md里说成「命令路径仍读它们」、评审另有report字段的句子已改写。 - 额度措辞改正:CodingPlan 是
atomcode login领取的免费限时体验版(按 5 小时滚动窗口计量、同样限流),
此前「不是免费额度」的说法已改正;「别当无限量」的提醒保留。
页面
仓库首页手册重排了一遍(30 秒上手 → 它给你什么 → 使用 → 安装 在最前,机制与纪律段下沉),并补了两张截图:
/atomcode-review 的回合卡片,以及详情页那张配置卡片。
升级
装法不变:dsh plugin add dsh-connect-atomcode(或从 registry 更新),重启 DSH 进程。
本版没有改名、没有换 id、没有 state 文件迁移——provider.json / sessions.json 原样继续用。
v0.4.3 — 审批模式写错一个值不再毁掉每个回合,并行提问的读数不再谎报
🧩 v0.4.3 — 审批模式写错一个值不再毁掉每个回合,并行提问的读数不再谎报
这一版有两条主线,都关于出错时你看到什么:一个配置项写错时,此前是每一次提问都被拒,而报错来自 daemon、看起来不像配置问题;两条提问并行时,面板会在其中一条还在跑的时候说「没有回合在跑」。顺带把 v0.4.2 之后的一批修复一起集结发布。
一、approval_mode 只接受四个值,写错不再等到每一次提问都失败
approval_mode 的合法取值是闭枚举——build / accept_edits / bypass / plan——这不是文档推断,是拿 daemon 的 422 参数门零额度枚举出来的(探针 scripts/probes/approval-mode.mjs,daemon 5.2.3)。而插件此前只检查「是不是一个非空字符串」,写错一个字就原样透传:于是此后每一次提问都被 daemon 拒掉,报错还来自 daemon 那一侧。
现在启动时就判定:不在枚举里 → 回落到 bypass,日志说明被拒的是哪个拼写,详情页「审批模式」那一行直接写明「你写的是什么」,悬停里列出四个合法值。不静默透传、也不静默改写——你写的值和真正生效的值同时可见。
二、面板不再谎报「没有回合在跑」
面板的回合读数只有一个槽位,语义是「最近开始的那一条」。旧实现在回合退出时先做身份校验,于是修掉了「旧的那条先结束、把新的清掉」这一种顺序——但反过来的顺序漏了:新的那条先跑完时,它正是槽位持有者,清空会把还在跑的那条一起抹掉。现象是最坏的一种:面板说没有回合在跑,而它正在烧工具调用和额度。
现在退出时从「仍在跑的回合」里重算——两种先后顺序都覆盖:新的先结束就改报还活着的那条,旧的先结束则不动读数。
三、第一次能看见正在跑的回合
atomcode_ask 的回复是整轮取回的,一次跑几分钟的回合此前在面板上一直是黑盒。详情页现在多一行「ask 进行中」:已发起的工具调用次数、其中几次还没回、最近调用的是哪个工具、已经收到多少字、已跑了多久。数字来自每 5 秒一次的轮询,最多落后一个周期;只报计数与耗时,不含回复内容。
四、v0.4.2 之后集结的修复
- 参数里写再大的上限都不再生效:
timeout_secs/max_rounds/review_max_duration_secs的上限在代码里钳制(轮数 1000、评审墙钟 1740 秒);0仍是「关掉熔断」的唯一写法。 - 取消 / 超时 / 熔断会真的去停掉 daemon 侧那个回合:此前只断本端等待,回合继续在后台烧额度。现在带会话 id 请求停止,并按 daemon 的应答如实回报(它答「已经不在跑了」也照说,不转述成「已停止」)。
- 轮数熔断这一轮到底有没有生效,当场能判定:daemon 自报的工具调用次数与本端计数一对照就是结论(一致 / 对不上 / daemon 没自报时照实说无法判定)。
- 评审返回的上下文体积不再翻倍:findings 清单与 report 原文共用一份预算,并说明被裁掉多少。
- 评审结论不再只有一坨原始 JSON:多一份结构化清单(严重程度 / 文件 / 行),解析不出来就明说「没能解析」,不拿 0 条冒充「没有问题」。
- 未知 SSE 类型不再静默:工具输出恒带
protocol_unknown_types字段,面板常驻提示——重中之重是若被改名的正是tool_start,熔断会静默失效。 - 过期的侧边会话不再被反复续接:会话记录随 daemon 身份走,daemon 一重启旧会话 id 直接判死。
- 面板上改模型档位立刻生效(此前弹回旧值、最长等 5 秒、又没有任何提示,看起来像没点中)。
- 开发副本在当前宿主上不再整体拒载:两个工具的输出 schema 曾携带「可为空」的类型并集,被宿主校验拒收,插件整体挂不上、详情页只剩一句 HTTP 404。现在注册前先翻译到宿主接受的子集(「可为空」的语义保留在字段说明里)。已发布的 0.4.2 不受影响。
破坏性改动:取不到工作目录时,atomcode_ask 直接拒绝
取不到工作目录等于让 AtomCode 的工具在你的用户目录里自动执行——当前 daemon 对任何 approval_mode 都无人值守自动放行,bypass 只是出厂默认。现在要么传 working_dir(或在插件配置里设一个默认),要么显式传 allow_unattended: true 表示知情同意。此前这种情况只在回合跑完之后提示一句。
核验
发布内容与 tag 指向的提交是同一份:拉取 registry 上的 dsh-connect-atomcode@0.4.3,与本机构建产物逐文件比 SHA256,23/23 一致(含真正跑起来的 client.js 与 lib/index.js、白名单内的全部文件)。包内 package.json 为 0.4.3,含本版新增的用户可见文案((已回落:你写的是 …))与本版 CHANGELOG 节。