v0.7.13 — Code Review 修复
🔧 v0.7.13 — Code Review 修复
本版本修复 v0.7.12(pi core 升级)发布后由 3 个并行 review subagent(GLM-5.2)发现的问题。pi 核心依赖版本不变(仍是 @earendil-works/pi-ai 与 pi-coding-agent 的 0.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签名参数名:cwd→newCwd,与 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 参数名)一并修复。