Repository navigation
Releases
0.2.2-rc.1-v1.3.6
Adapt the plugin to the DSH 0.2.2-rc.1 harness line.
- No behavior changes: `src/` and `client.js` are identical to v1.3.5.
- package.json now declares `engines.dsh: >=0.2.2-rc.1` (the 0.2.2 plugin manager checks it).
- Verified: 314 offline tests pass; plugin loads on 0.2.2-rc.1 with all three component probes 200;
hot restart works on 0.2.2; the turn-deletion transaction passes the 0.2.2 load checker;
session deletion leaves no residue on disk; delete records survive a restart. - See docs/VERIFY-0.2.2-rc.1-v1.3.6.md for details and remaining unverified items.
0.2.1-rc.5-v1.3.5
0.2.1-rc.5-v1.3.5
改动
- 只改文档与版本号,插件代码与 v1.3.4 完全相同。
AGENTS.md第 6 节的版本号示例更新到当前版本线。
验证
- 代码零变更,沿用 v1.3.4 的验证结论:离线 314 项全过,独立临时实例上的破坏性验证见
docs/VERIFY-0.2.1-rc.5-v1.3.4.md。 - 本版没有重跑测试与真机验证(纯文档)。
0.2.1-rc.5-v1.3.4
0.2.1-rc.5-v1.3.4
改动
- 版本线切到 harness
0.2.1-rc.5;插件代码与 v1.3.3 完全相同,只改版本号。 - 对 rc.5 做了公开 API 面侦察:插件依赖的 host 服务包代码逐字节相同,注册的五个槽位不变,客户端加载器只有内嵌 commit 字符串变化。结论是不需要改代码。
验证
- 在一个独立
DSH_HOME的临时实例上跑完破坏性验证:删中间一轮、删最后一轮、删整个活会话、重复删的幂等、重启后删除记录持久、界面就地刷新、关闭实例,全部通过(证据见docs/VERIFY-0.2.1-rc.5-v1.3.4.md)。 DELETE_FAILED的真实渲染、幽灵会话、子代理会话、裸 UUID 拼写与行开关仍未验证。
升级提示
- profile 的安装 ref 要改成
#release/0.2.1-rc.5-v1.3.4才会用上这一版。
0.2.1-rc.2-v1.3.3
0.2.1-rc.2-v1.3.3
改动
- 只改文档与版本号,插件代码与 v1.3.2 完全相同,发布包内容不变。
- 编码约定新增两条红线:删除一律归档到仓库根目录的
trash/(用fs.renameSync,不在 shell 里拼递归删除命令);删除trash/内内容仅当用户明确要求时按安全删除执行。 .gitignore忽略trash/。
验证
- 离线测试 314 项全过。
- 本轮没有重新装包:发布包内容与 v1.3.2 相同、代码零变更;同一份代码的 v1.3.2 包运行在 0.2.1-rc.5 实例上,三条组件探针 200(证据见
docs/VERIFY-0.2.1-rc.2-v1.3.3.md)。 - 真实删除会话 / 轮次、关闭实例仍未验证。
0.2.1-rc.2-v1.3.2
0.2.1-rc.2-v1.3.2
改动
- 版本线切到 0.2.1-rc.2;代码与 v1.3.1 相同。
- 组件行依赖主行提供的
agentControlCore服务,插件列表四行都有本地化说明文字。
验证
- 离线测试 314 项全过。
- 在 0.2.1-rc.2 实例上完成一次热重启:插件加载、三条探针、会话列表与续作均正常(证据见
docs/VERIFY-0.2.1-rc.2-v1.3.2.md)。 - 真实删除会话/轮次与关闭实例尚未在该版本上验证。
0.2.1-alpha.2-v1.3.1
0.2.1-alpha.2-v1.3.1
改动
- 组件行改为依赖主行提供的
agentControlCore服务:关掉主行时三个组件行停在 pending,不再各自注册路由。 - 插件列表四行都有本地化说明文字(
locale/,经exports与files暴露)。 - AGENTS.md 拆成入口 + 三份专题文档;补记主行关闭时宿主那条 warning 的含义。
验证
- 离线测试 314 项全过。
- 本版未附新的真机验证记录;真机证据见上一版的组件开关实测与
docs/PITFALLS.md§3。
0.2.1-alpha.2-v1.3.0
新功能(次版本):插件拆成四行,插件列表里可以逐个组件单独开关——关掉一个组件 = 它在本进程里根本不存在,路由与界面入口一起消失。
改了什么
- 四行结构:主行
dsh-agent-control(core:客户端 bundle 交付、启动清理、按行构建)+ 三个组件行/session(会话列表与删除)、/turn(轮次删除)、/restart(热重启与关闭实例)。主行的 id / name 没有改,旧配置照旧有效。 - 开关是真的:插件列表的开关写行级
disabled,而被禁用的行 loader 不会调用它的 apply(读宿主实现确认)。所以主入口只在「某个组件没有自己那一行」时才代装它——既让开关生效,又保证「只有一行主行」的老配置行为与从前完全一致。重复注册由进程内的认领表挡住。 - 客户端跟随:挂载时对三个组件各做一次只读探针(
GET /api/agent-control/session/status、.../turn/status,热重启复用/restart/status),只给探到的组件注册槽位。判据方向是少显示:宁可少一个按钮,也不留一个点了报错的按钮。排障抓手window.__dshAgentControl.features()。 - 配置回归修复:
approval历史上写在主行,拆行后热重启行会读不到 → 改为按优先级取一份(自己那一行 > 回退 > 主行);agent-control-restart行也带上approval。不这么做的话,主行写approval: auto的用户会在升级后静默变回每次都要审批。
实测(详见 docs/VERIFY-0.2.1-alpha.2-v1.3.0.md)
- 离线:七个测试文件 307 项全过、0 失败(上一版 291)。
- 真机(一次性实例,开关全部界面点击):关掉「会话」组件后
/session/status与/sessions不再是 200,而/turn/status、/restart/status仍 200;界面features()报{session:false,turn:true,restart:true},会话菜单里的删除项消失、垃圾桶仍在;开回来一切复原。 - 兼容:只 insert 主行的老 profile 九条路由全部注册,
approvalMode与主行配置一致。 - 回归:组件全开时,界面删一轮、界面删会话、热重启(两条入口)都正常,重启后九条路由仍在。
仍然未验证
关组件那一步的重启是冷启动(沙箱里 detached 辅助进程会被拉起它的作业一起收走,热重启在那种形态下起不来);设置页按钮那次重启后没有全刷一遍路由;删除取证没有做「用会话 id 全盘 grep」;关闭实例没有真跑;更细的粒度(删除按钮各自一个开关)做不到——槽位在同一份客户端 bundle 里。
0.2.1-alpha.2-v1.2.0
新功能(次版本):「本次启动后打开过」的会话也能删了;删的正是正在看的那个会话时,界面会切到同一工作区里的另一个会话。
改了什么
- 活会话可以删:不再拒绝活会话(
SESSION_LIVE闸门退场)。先停 agent,再删磁盘目录、工作区记账与投影缓存;响应里如实标注wasLive/liveDescendants。依据是实测:活会话的日志写句柄带共享删除位,删目录能成功,也不会被写回来。 - 投影缓存竞态修复:活会话的收尾写入会在删除之后把缓存写回一份,现在清缓存会复检(最多 3 次,哪一轮没删到就收手),没打开过的会话不加延迟。
- 删完列表就地刷新、不掉进「未分组」:删除前用宿主公开的归档能力临时遮盖这一行,删除后发宿主的公开事件
api-session/removed;启动时pruneOrphanArchives()收掉孤儿标记。 - 删当前会话时的「让开」:切走方案在删除之前算好,删完照做,不再落到空白页或新开的未分组会话。
- 删除路由的可信校验:会话与轮次删除路由都要求同源可信请求与 JSON content-type;宿主的 401 / 403 照抄。
- 幽灵会话清理:只剩工作区记账、磁盘上已没有目录的会话,现在能把记账清掉。
- 热重启的几处修复:取消重启时清掉
spec.json并停掉辅助进程;耗时只采用同一次重启的测量;界面不再因为缺少重启前的采样而干等到超时。 - 其它界面与测试修复见提交历史。
实测(详见 docs/VERIFY-0.2.1-alpha.2-v1.2.0.md)
- 离线测试:六个文件 291 项全过、0 失败。
- 在一次性备用实例上用真实模型对话走了完整闭环:界面点击删中间一轮与最后一轮,模型确认看不到被删内容;重启后重新打开会话无「日志损坏」;用真实 v4 加载校验器复核(原日志 OK,旧写法对照组仍 FAIL);界面菜单删整个会话,目录 / 缓存两种拼写 / 记账零残留;派生过子代理的会话,父子一起删净;重复删返回 404
TARGET_NOT_FOUND。 - 发布前隐私检查已过。
仍然未验证
- 受限沙箱里没能跑真正的
dsh plugin add(备用实例用手工联接代替);备用实例的工作区是手工预写的;消息是用与界面同形的 RPC 发的,不是输入框。 - 内核
/compact之后再删轮次、TURN_NOT_CLOSED、AGENT_BUSY、DELETE_FAILED的真实渲染、带工具调用记录的轮次、其它模型 provider。
提醒
删除是硬删除、不可撤销;轮次删除只影响模型可见上下文,内容仍在日志与附件里,不是安全删除。
0.2.1-alpha.2-v1.1.2
本版没有行为改动:相对 0.2.1-alpha.1-v1.1.1,唯一的改动是把版本号前缀切到 0.2.1-alpha.2,
并把这一轮在 0.2.1-alpha.2 上的兼容性复验写成 docs/VERIFY-0.2.1-alpha.2-v1.1.2.md。
为什么值得单独发一版
按仓库约定(AGENTS.md 第 11 节):换 harness 版本 = 新开一条版本线,插件版本继续累加,
package.json 的 version 是唯一真源。已发布的 0.2.1-alpha.1-v1.1.1 在 0.2.1-alpha.2 上确实能跑(见下面实测),
但它的版本前缀与实际运行环境对不上;这一版让「声明」与「实测」一致。
这一轮在 0.2.1-alpha.2 上实测到什么
- 装载与路由:会话列表与热重启状态两条 GET 都返回 200;
canRestart/canShutdown均为 true。 - 错误语义不变:活会话
409 SESSION_LIVE、目标不存在404、参数非法400(含路径穿越)、错误方法405;
未注册路由仍落到宿主鉴权,没有被插件误接管。 - 删除事务的格式仍然合法:用 0.2.1-alpha.2 自带的 v4 加载校验器复核——原日志 OK、对照组(v1.0.0 旧墓碑)照旧 FAIL、
逐轮模拟删除 OK。 - 真机删掉一个会话:磁盘目录、投影缓存(裸 UUID 拼写)、工作区记账引用零残留;
记账里本来就没有它时,插件如实回报 warning 而不是假装成功。 - 宿主 API 无破坏性漂移:
runMaintenance(签名与上一版逐字一致)等八个依赖面逐一核对,全部仍在。 - 客户端耦合静态核对:四个槽位、
assistant-actions仍只传messageId、三个 DOM 属性与四个原生原语都在。 - 离线测试:六个文件 225 项全过、0 失败。
仍然未验证(详见 VERIFY 文档第 4 节)
真机删轮次的成功路径(需要「活动且空闲」的会话)、界面点击、热重启与关闭实例的真跑——都还没做;
上一版 VERIFY 里已经收口的项目本轮没有重复跑。
0.2.1-alpha.1-v1.1.1
修订版(Z+1):两处修复,都来自真机反馈;另有一批文档修正。
修复
- 关闭实例后界面「没反应」 —
fix(ui):点「关闭 DSH」之后,shutdown-requested/closing/closed三个阶段曾落回普通确认框的样子(勾选框、取消、可点的「关闭 DSH」都还在),而进程随即退出,页面看起来就是「点了没反应,然后死了」。现在这三个阶段改用信息型模态(原生Modal、portal 到 body,稳定盖在设置面板之上),一个可点控件都没有;closed只留一颗「知道了」,收掉不丢信息。 - 退出延迟 300 ms → 1000 ms —
fix(restart):原来的 300 ms 只够把 202 响应刷出去,不够浏览器把「正在关闭」画给人看清。这一秒买的是人眼看得见的反馈,代价是实例晚 0.7 秒停。
文档
- 修正
README里几处会直接误导用户的地方:安装命令写了一个从未存在的版本号、排障用的回环地址写成117.0.0.1、接口状态码写成101(实际是202)、离线测试项数过时。 - 离线测试项数同步为 225(
AGENTS.md里三处)。 - 发布流程新增「发布前隐私检查」这一步(第 10 节第三步)。
- 改掉若干对第三方桌面启动器的表述:只保留可观察行为与结论,不再交代观察手段。
验证
真机复验(一次性实例,跑的就是这一版代码):确认弹窗变成信息型、设置页那一行同时给出同一句话、约 1 秒后进程干净退出(启动它的作业收到退出码 0)。完整记录与仍未验证项见仓库内 docs/VERIFY-0.2.1-alpha.1-v1.1.1.md。
离线测试:六个文件 225 项全过、0 失败。