fix: prevent duplicate queue replay and use cached Agents
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
GoodBuddy Agents / Validate Agent source (push) Canceled after 0s
GoodBuddy Agents / Build Linux arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build Linux x64 Agent (push) Canceled after 0s
Cross-platform packages / Validate source (push) Canceled after 0s
Cross-platform packages / Authorize desktop packaging (push) Canceled after 0s
Cross-platform packages / linux arm64 (push) Canceled after 0s
Cross-platform packages / macos arm64 (push) Canceled after 0s
Cross-platform packages / windows arm64 (push) Canceled after 0s
Cross-platform packages / linux x64 (push) Canceled after 0s
Cross-platform packages / macos x64 (push) Canceled after 0s
Cross-platform packages / windows x64 (push) Canceled after 0s
Cross-platform packages / Publish GitHub and OSS release (push) Canceled after 0s
GoodBuddy Agents / Validate Agent source (push) Canceled after 0s
GoodBuddy Agents / Build Linux arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build Linux x64 Agent (push) Canceled after 0s
An interrupted dispatch could leave the same user input both in conversation history and in the pending queue, causing it to be sent again after restart. Persisted user messages now retain their queue identity, startup recovery drops only matching materialized inputs, and conversation branches discard that ownership marker. Explicit GoodBuddy transfer now leases a verified local Agent package when the catalog is unavailable or the local version is at least as new, while a known newer online package still wins. Prepare both the desktop and Agent locks for 0.11.7; the experimental LoongArch preview remains excluded. Release note: 修复对话中断后同一条排队输入可能重复发送的问题;GoodBuddy 传输现在可复用已验证的本地 Agent 包,同时不会阻止已知的线上新版。
This commit is contained in:
@@ -13,7 +13,7 @@ Windows 到 Linux x64 的既有安装、
|
||||
Main-only 模型桥、断线恢复、输出重放、同一 OpenCode Session 续接与终态清理已经在真实
|
||||
Host 上完成 provider-free 验证。上一轮 Linux x64 验收使用 Agent `0.11.2-e2e.12` 与
|
||||
OpenCode Runtime `1.18.9` 完成了一次有界真实模型工具调用;加入每 helper 随机 loopback
|
||||
路径 capability 后,当前源码 lock 已更新为待发布 Agent `0.11.6`。失败的 `agent-v0.11.3`
|
||||
路径 capability 后,当前源码 lock 已更新为待发布 Agent `0.11.7`。失败的 `agent-v0.11.3`
|
||||
保持不可变且未发布。远程 OpenCode 功能仍处于发布前验证阶段;公开签名 key registry
|
||||
已供应,当前发布门槛是通过独立 Agent workflow 正式发布并公开验证 Linux x64/arm64
|
||||
复合包和签名累计目录。
|
||||
@@ -103,10 +103,11 @@ Detached GoodBuddy Agent
|
||||
可用才选 Host 下载,否则选 GoodBuddy 传输;显式选择不被改写。prepare、commit 或
|
||||
adoption 失败后都不跨 acquisition 自动 fallback。
|
||||
- Host 下载由桌面控制面通过固定 SSH prepare channel 和结构化 stdin 发送候选信息,
|
||||
Host 取得 compound `.gbagent` 并核对大小与 SHA-256。GoodBuddy 传输在本地缺少精确
|
||||
候选时,于同一次操作下载、验 SHA-256 与签名、缓存并取得 lease,再以有界流式 SFTP
|
||||
上传一个 compound archive 和归档中已验证的 bootstrap Node;约 294 MiB 完整包不会
|
||||
一次读入 Main `Buffer`,Host 仍再次校验完整包。
|
||||
Host 取得 compound `.gbagent` 并核对大小与 SHA-256。显式 GoodBuddy 传输在在线目录
|
||||
不可用,或本地已验证包版本不低于在线候选时优先租用本地包,包括更高版本离线导入;
|
||||
线上存在更新且可用时仍取得线上新包。需要下载时,同一次操作会验 SHA-256 与签名、
|
||||
缓存并取得 lease,再以有界流式 SFTP 上传一个 compound archive 和归档中已验证的
|
||||
bootstrap Node;约 294 MiB 完整包不会一次读入 Main `Buffer`,Host 仍再次校验完整包。
|
||||
- 两种 acquisition 交付到固定 operation staging 后,完全共用 control-plane
|
||||
`prepare → commit → Agent activate/health → Runtime activate → finalize → cleanup`。
|
||||
commit 终态持久化;通道丢失只用 `commit-status` 只读恢复,不重放 commit。prepare
|
||||
@@ -244,7 +245,7 @@ Execute 不经过 Ask 的 bubblewrap profile:
|
||||
|
||||
- 2026-08 的本地 fixture 完整验证 Linux x64 Agent `0.11.2-e2e.12`、Node `24.19.0`
|
||||
和 Agent protocol `2.0`;当时没有 arm64 fixture,因此该记录不能作为当前独立发布
|
||||
的双架构验收。当前源码 lock 是待发布版本 `0.11.6`,需要由新的复合包发布流程另行验证。
|
||||
的双架构验收。当前源码 lock 是待发布版本 `0.11.7`,需要由新的复合包发布流程另行验证。
|
||||
- 正常 Host 更新路径把 Linux x64 Host 的 Agent 更新为 `0.11.2-e2e.12`,并确认
|
||||
OpenCode Runtime 已安装版本与所需版本均为 `1.18.9`。
|
||||
- 一条新的 Ask 用户操作只提交一次。OpenCode 先在 build 模型轮次请求一个原生
|
||||
|
||||
@@ -140,10 +140,11 @@ daemon 参与。两种 acquisition 的差别只在于如何把同一个签名 co
|
||||
|
||||
- **Host 下载**:控制面通过固定 SSH prepare channel 发送签名目录绑定的 URL、大小和
|
||||
SHA-256;Host 有界下载并校验完整归档。
|
||||
- **GoodBuddy 传输**:若本地缺少精确候选,同一次用户操作先下载、验证 SHA-256 和签名、
|
||||
写入缓存并取得 lease;随后以有界流式 SFTP 上传一个 compound archive,以及从该归档中
|
||||
已验证的 bootstrap Node。约 294 MiB 的完整包不会一次读入 Main `Buffer`,Host 收到后
|
||||
仍再次校验完整包。
|
||||
- **GoodBuddy 传输**:显式选择时,在线目录不可用或本地已验证包版本不低于在线候选,
|
||||
则优先使用本地包,包括版本更高的离线导入;线上存在更新且可用时仍取得线上新包。
|
||||
需要下载时,同一次用户操作会验证 SHA-256 和签名、写入缓存并取得 lease。随后以有界
|
||||
流式 SFTP 上传一个 compound archive,以及从该归档中已验证的 bootstrap Node。约
|
||||
294 MiB 的完整包不会一次读入 Main `Buffer`,Host 收到后仍再次校验完整包。
|
||||
|
||||
交付后两种 acquisition 完全共用一个 control-plane 事务:
|
||||
|
||||
|
||||
@@ -363,7 +363,8 @@ Task Center 显示 Scheduled Task 的范围、关联 Conversation、状态、模
|
||||
- [x] 手动运行不改变下次计划时间。
|
||||
- [x] Scheduled Task 与普通消息共用 Conversation 级队列,不并发写入同一时间线。
|
||||
- [x] 当前回复期间可以继续发送普通消息,并在 Composer 上沿查看、删除或提升待发送项。
|
||||
- [x] 应用重启恢复尚未执行的队列项和有界附件上下文。
|
||||
- [x] 应用重启恢复尚未执行的队列项和有界附件上下文;已写入 Conversation 的用户输入
|
||||
通过队列项身份完成恢复对账,不会再次进入待发送队列。
|
||||
- [x] 文本结果只写入 Conversation,独立交付物才进入成果。
|
||||
- [ ] Task Center 和桌面通知可以打开正确 Conversation 并定位 Task。
|
||||
- [ ] 应用重启不自动重放结果未知的副作用。
|
||||
|
||||
Reference in New Issue
Block a user