Skip to content

v0.7.13 — Code Review 修复

Choose a tag to compare

@Chasen-Liao Chasen-Liao released this 21 Jun 01:45

🔧 v0.7.13 — Code Review 修复

本版本修复 v0.7.12(pi core 升级)发布后由 3 个并行 review subagent(GLM-5.2)发现的问题。pi 核心依赖版本不变(仍是 @earendil-works/pi-aipi-coding-agent0.79.8)。

📦 安装

下载下方 Pi-Agent-Desktop-Setup-0.7.13.exe(约 200 MB)。已安装 0.7.12 的用户直接运行新安装包覆盖升级即可,安装程序会自动关闭运行中的实例。

🐛 修复内容

Critical — 测试中的进程泄漏

electron/process-tree.test.ts

  • try/finally 包裹测试体,确保断言失败时 spawn 的 parent 与 grandchild(都是 setInterval 死循环)不会作为僵尸进程泄漏。之前如果 drain 超时,每次失败泄漏两个无限期存活的 Node 进程 —— 正是原修复想解决的并行测试负载场景。
  • 断言 killProcessTree() 返回值为 null,区分"函数报告错误"和"进程因别的原因结束"。
  • 5 秒 pidDeadline 定时器在所有路径中清理(之前即使成功也悬挂 5 秒,拖慢测试运行器)。
  • drain 循环现在只接受完整(以换行结束的)行。之前的循环会从被切分的 "1234\n" 中接受半截 "12",返回 pid 12 —— 若 12 恰好存在则静默错误,若属于另一个进程则灾难性后果。
  • 用 1 秒轮询替换固定的 500ms post-kill sleep(成功时更快,慢速 CI 上更可靠)。
  • 新增 waitForExit() 辅助函数,先同步检查 exitCode/killed 再等待 'exit' 事件,避免 finally 块中 await once(parent, "exit") 在父进程已退出时陷入死锁。

Important — installer 测试覆盖

lib/installer-script.test.mjs

  • 新增 CommandLine 空安全断言:验证脚本中 $_.CommandLine -and$_.CommandLine.IndexOf 之前(短路求值保护),恢复 v0.7.12 删除 doesNotMatch 时丢失的覆盖。
  • 新增 $_.Path.StartsWith 断言到 closeInstallDirProcesses —— 没有它宏可能误杀同名的不相关应用。
  • 加强 logInstallDirProcesses 测试:之前匹配裸词 "Path"(同义反复 —— Select-Object Id,Name,Path 也含 "Path"),现在匹配 $_.Path.StartsWith($INSTDIR) 真正验证安装目录过滤器完整。

Important — 文档自相矛盾

docs/ARCHITECTURE.md

  • §7:删除陈旧描述"AgentSession.fork() 原地修改 wrapper 内部状态"。这是旧行为,与 §14.2 直接矛盾 —— §14.2 正是本次重构的全部意义。已对照 lib/rpc-manager.ts 验证:根本没有 this.inner.fork() 调用,fork 通过 SessionManager.createBranchedSession() + 全新 startRpcSession() 完成。
  • §7 状态图:把 fork() 后立即 destroy() 改成 send("fork") 后立即 destroy() —— 裸 fork() 读起来像 AgentSession.fork() 存在(实际不存在)。

CLAUDE.md

  • 补上遗漏的"或首条消息前的 SessionManager.create()"括注。AGENTS.md 和 §14.2 都提到双路径,CLAUDE.md 之前漏了。

Minor

AGENTS.md

  • 修复 startRpcSession 签名参数名:cwdnewCwd,与 lib/rpc-manager.ts:162 的实际变量名一致。

✅ 验证

  • npm test:135/135 全部通过
  • npx tsc --noEmit:通过
  • npm run lint:通过
  • npm run dist:生成 Pi-Agent-Desktop-Setup-0.7.13.exe(199.68 MB)

📝 Review 过程

由 3 个并行 subagent(GLM-5.2)审查 v0.7.12:

  • Agent 1:依赖升级(package.json / lockfile)
  • Agent 2:测试修复(process-tree / installer-script)
  • Agent 3:文档更新(AGENTS / CLAUDE / ARCHITECTURE)

共发现 2 个 Critical、5 个 Important、8 个 Minor 问题。本次提交修复所有 Critical 和 Important,Minor 中的 1 个(AGENTS.md 参数名)一并修复。