Files
goodbuddy/docs/features/assistant-workbar/progress.md
T
mesalogo 5a77dfdb93
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 darwin arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build linux arm64 Agent (push) Canceled after 0s
GoodBuddy Agents / Build linux x64 Agent (push) Canceled after 0s
fix: prevent managed runtime stalls during file changes
Automatic native Git snapshot diffs could block concurrent OpenCode sessions
after broad rewrites or line-ending conversions. Managed desktop and Agent
profiles now skip snapshots that GoodBuddy does not use, while preserving
file tools, native subagents, workspace Git operations, and Ask/Execute rules.

Drain otherwise-unused Continue utility-host stdout to prevent console output
from filling the pipe and blocking requests. Correct the lifecycle regression's
body observer to watch the underlying reader rather than a buffered wrapper.

Prepare Desktop 0.12.10 and Agent 0.11.22 with aligned bilingual notes and
feature documentation. Existing runtimes require restart or Agent update.
Full desktop UI before/after and Linux Agent production-path checks passed;
3626 tests passed, with 61 existing platform/manual skips.

Release note: 修复批量文件改写或换行转换后的托管 OpenCode 并行停顿,以及 Continue 控制台输出阻塞;本机升级重启后生效,远程项目请配套更新 Agent。
2026-09-09 03:07:55 +08:00

12 KiB
Raw Blame History

工作栏实现与验证进度

2026-09-09 托管 Runtime 并行阻塞

  • Windows 完整隔离测试程序通过界面发送 OpenCode 原生双子代理、直连与 Continue 文件 任务;随后三路上游请求在 917 ms 内发出并重叠,全部完成。普通并发没有复现全局排队。
  • 在同一程序中,让真实模型执行一次 4,000 行、约 98 KB 文件的 CRLF → LF 转换, 同时运行另一个会话。原生进程的无凭据存活探针两次延迟 3,301 ms、3,085 ms; 原生热线程持续使用 CPU,而 Main 没有同步满载。操作不是模拟事件或直接调用 Runtime 的脚本,模型请求来自实际输入框和发送按钮。
  • 托管 OpenCode 关闭未消费的自动 Git 快照后,完整程序重复相同操作和并行会话, 90 秒观察中的最大原生探针延迟为 210 ms,没有超过 500 ms 的探针,两条请求均完成。 该对照验证已复现的快照阻塞得到消除,不声称已经证明历史 90–125 秒事件的唯一原因。
  • Continue 的实际 Electron 原生宿主在不排空 stdout 时被注入的 128 KiB 输出阻塞; 使用当前生产适配器后,输出在 5 ms 内完成,20 次状态读取全部成功,最大 5 ms。 这证明管道修复有效,不代表普通启动约 640 字节的输出就是历史卡顿原因。
  • 修复版完整程序再次完成原生双子代理与 Continue 文件任务,实际请求重叠,三个页面 都通过计数按钮功能检查。Windows 诊断与程序验证合计 40 次成功模型调用; 另一次 UI 请求返回账户额度不足的 402,用户充值后才继续,没有把失败当成通过。
  • 当前源码 Linux x64 Agent 经桌面生产管理链路完成 Ask 读取和 Execute 换行转换, 共 4 次成功模型调用;最终原生配置确认 snapshot: false 且权限仍为 ask/allow。 此验证覆盖实际 Agent、模型桥、工具完成和关闭,不量化 Linux 提速,也未注入取消。
  • 定向回归先验证 7 项失败,再验证 124 项通过、5 项 Windows 平台跳过; 全项目类型检查和修改文件 lint 已通过。首次全量回归为 3625 通过、1 失败、61 跳过; 失败来自生命周期测试的包装流在底层 reader 关闭后仍计数为打开,已通过独立流实验 复现并改为观察 reader.closed,没有因此修改生产取消逻辑。最终候选全量回归为 3626 通过、0 失败、61 跳过,npm run typecheck、npm run lint、 npm run release:notes:verify、差异空白与文档相对链接检查通过。本机和远端的 测试进程已回收,安装版和正式 Host 环境未改动;正式发布仍需候选 CI 与资产核实。 运行策略见 托管 Runtime 并行与输出。

2026-09-08 消息底部请求状态

  • 已接入本机 OpenCode 父会话的原生重试等待及开始事件;直连模型把退避等待与实际发起 重试分开显示,Continue 初始文案改为中性的请求处理。显示规则和未接入边界见 消息底部请求状态。
  • 消息底部按真实事件显示准备、工具、待回答及终态;有新进展时清除旧状态,结束后不 接受迟到状态覆盖。仅该处状态点改为静态,会话列表闪点、发送和停止按钮未改动。
  • Windows 隔离开发桌面通过实际 UI 发送验证 OpenCode 的 503/Retry-After 等待、 原生重试开始、真实模型回复与完成;直连模型通过派发前连接拒绝、500 ms 等待、 重试、真实回复与完成。故障由本机测试代理注入,不冒充服务商实际故障。 三个隔离测试配置总计 5 次真实文本模型调用;另有一次直连重试被测试代理的调用 上限明确拒绝,界面正确显示失败,最终单次补测完成。未执行用户命令或修改安装版。
  • DOM 状态记录确认底部无闪烁、完成后无旧重试文案,浅色截图可见原生重试计划与原因; 底部 WCAG 2 A/AA 定向检查无违规。最小化窗口的补充截图超时,未作为通过证据。 隔离窗口及测试代理已结束。
  • 最终 npm test -- --reporter=json --outputFile=<临时报告路径> 为 3618 项通过、 0 项失败、61 项按平台或手动条件跳过;首轮的压缩状态旧断言已修正,途中被用户中断 的运行不计为通过。npm run typecheck、npm run lint、 npm run release:notes:verify、差异空白与相关文档相对链接检查通过。

2026-09-08 Desktop 0.12.8 安装包修复

  • 真实 0.12.7 安装目录确认 OpenCode 配置缺少整个 node_modules。新增测试调用实际 electron-builder 资源复制器,复现相同 ENOENT;把复制源上移到 .runtime-resources 后,插件及传递依赖逐文件复制验证通过。
  • 真实安装的 DSH bootstrap 存在 dsh-session-projection 外部导入,而 Host 解包目录没有 对应依赖。将其加入 Vite bundling,配置回归从失败转为通过;最终包会拒绝同类外部导入。
  • Windows x64 CI 已接入包内 OpenCode 插件导入、真实 DSH UtilityProcess 握手及 npm 探针,位于解包目录清理和发布之前。用户要求不做本地打包;CI 探针结果尚待本候选执行, 不能把当前源码回归通过当作真实发布包已通过。
  • 本次不改变 Agent 0.11.21 源码或包。macOS 改为 DMG-only,用户明确接受旧版客户端 手动升级影响;格式与发布规则见发布手册。

2026-09-08 Execute 目录权限等待修复

  • 本机 OpenCode 的内部配置显式允许默认工具权限;每次 Ask 仍设置 deny-all 会话规则并 禁用工具,当前请求精确分配的只读能力例外。Execute 不把 Workspace 当作目录边界。
  • permission.asked 不再忽略所有非父会话事件。Main 用 OpenCode Session 的 parentID 确认属于当前请求的子孙会话后按当前模式回复;其他并行会话不受影响,同一请求只回复 一次。子会话权限不伪装为父会话中的待完成工具。
  • 真实 OpenCode 1.18.9 和候选 1.18.29 均已通过本地确定性模型驱动的原生 Task 工作区外读取回归;同一 Runtime 的 Ask 仍不暴露文件与命令工具。
  • Continue 1.5.47 的真实 CLI 已通过 Execute Shell 写入工作区外测试文件;DSH 固定 Host 已通过 Execute 工作区外写入、随后 Ask 拒绝同一写工具,未增加权限策略或人工审批。
  • 真实 OpenCode 1.18.29 已完成原生 Task 后的 yes/no 与自由文本问答回传;父、子会话 提问及后台任务不能交互时的失败路径均有回归测试。Continue 真实 AskQuestion 暴露了 QuizService 扁平数据结构与原适配器不一致的问题,现已按锁定版本修正;真实自由文本 回传、yes/no、选项及跳过均验证通过,自定义答案不再误标为选项。
  • DSH 活跃 Execute 的 ACP 权限回调不再等待第二次 authorizer,Ask 继续拒绝;未添加 通用业务问答工具或从终端日志猜测确认意图。完整范围见 Runtime 交互边界。
  • 当前源码 Linux x64 Agent 通过签名组包、生产安装、真实 Ask/Execute、原生子代理 工作区外写入、重连同一 daemon 和 stop/bootstrap。实机回归同时定位并修复了握手 Base64URL 响应误用 ID 校验及断流未结算等待;13 项 Unix 原生端点测试和连续 20 次 握手通过。两轮真实模型调用合计 10 次,均 completed;本轮测试 Agent 已停止。
  • 最终完整回归使用 npm test -- --reporter=json --outputFile=<临时报告路径>,并通过 GOODBUDDY_TEST_OPENCODE_BINARY 指向已验证版本的候选 OpenCode。结果为 338 个文件、 3597 项通过、0 项失败、61 项按平台/手动条件跳过,报告 success=true、退出码 0; Windows 跳过的 Unix 端点场景另在 Linux Host 运行了上述 13 项原生测试。
  • 最终 npm run typecheck、npm run lint、npm run release:notes:verify 和差异空白检查 通过,相关 Markdown 相对链接有效。此前失败、暂停及控制台截断的回归记录由本次完整 JSON 报告覆盖,不代表仍有测试失败。未执行系统休眠/唤醒或本地桌面生产构建、打包; 后续发布仍需对应候选的 CI 构建和跨平台验证。

2026-09-08 OpenCode 复用与原生控件恢复

  • OpenCodeRuntime 仅在没有活动请求时探测缓存的 embedded server;活动对话或 Compact 期间直接复用服务,避免新会话的一次短探测失败关闭其他会话正在使用的进程。 空闲探测失败时仍清除旧 client 和会话映射并重建;并发调用共享检查与重建。 进程退出或服务关闭会中止绑定它的对话与 Compact,事件流重连等待也可立即取消, 请求明确报错,不自动重放已执行命令。本次修复后的真实模型验证共 6 次:正常并发、 已复现场景下的共享服务保护均正常完成;主动结束测试进程后旧请求明确失败,新请求 在替换服务上完成。此前“新会话完成、旧会话持续等待”的故障不再出现。
  • 请求级 MCP 注册与断开通过实例内 mutateMcp 队列串行执行。仅实际发出 mcp.add 的名称进入清理列表;注册尚在排队时取消不追加断开。断开的 1 秒超时从出队后开始。
  • App 按本机/远程、连接方式、项目和 Runtime 选择组成 scope 缓存原生清单,用请求 代次阻止旧 scope 结果回写;同 scope 会话刷新不清空重取,切换会话重置消息级选择, Runtime 切换状态也按 generation 隔离。清单请求失败或返回 unavailable/partial 时保留已有可用缓存并有界重试;没有可用缓存时保留新返回的部分数据,因此 unavailable 重试为可用 partial 后可显示 Agent 和 Command。

验证记录:首轮定向测试 273 项通过、5 项跳过;补充修复后的 Runtime 与生命周期测试 77 项通过,界面定向测试 6 项通过,类型检查通过。修复前的 lint 检查通过。 全量测试超过 120 秒被终止,期间出现一项 DS 本地 stdio MCP 测试失败,尚待定位。 这是当次历史结果。后续发布前修复与实机验证见本文上方及 远程主机技术设计;真实系统休眠恢复仍未完成验证。

2026-09-06 项目工作区

范围见 PRD 工作区。

当前源码已移除重复标题与底部完整 Diff 入口,使用彩色 Git 状态字母,点击更改项读取 单文件 Diff。已暂存与未暂存差异分开展示;本机 Git 测试覆盖无首次提交、未跟踪、 暂存后继续修改、重命名、删除及包含方括号的路径。Git 刷新驱动目录树重新读取,保留 展开状态;SSH 项目不提供本机系统打开按钮。审查后补齐了当前 Diff 随刷新重读、 旧请求结果失效,以及超过 50 项变更的继续加载入口。

验证记录:

  • 最终 npm run typecheck、npm run lint、npm run build 均通过。
  • 工作区专项 7 个测试文件复跑:317 项通过,3 项 Linux 专用测试在 Windows 跳过。 任务完成测试同时检查目录树出现新文件。
  • 最终 npm test:326 个测试文件、3552 项测试通过,9 个文件、58 项测试按既有条件 跳过。复核首轮曾有一项浏览器地址草稿测试超时,单独复跑及最终全量复跑均通过; 更早的超时/失败记录不再作为最终验收结果。
  • 后续复核已通过既有凭据和固定 Host Key 经 VPN 连接共享 Linux x64 Host,使用当前 源码构建的隔离 Agent 包安装并启动。真实 RemoteWorkspaceAccess → Agent git/status 与 git/diff 路径覆盖暂存后继续修改、删除、重命名、未跟踪和方括号路径;均通过。 Git 验证未调用模型。
  • Windows 隔离桌面实例已通过真实点击验收:当前项目单文件暂存/工作树 Diff 分组与 增删颜色正确,修改测试文件后点击刷新可更新正在查看的 Diff,53 项变更经加载更多 全部可访问。截图留在本地验证目录,不纳入产品包。

目录分页、任意目录切换和 HTML 预览不在本轮改动范围内。