pstack 架构拆解
H10 / 十层 · 最底下

文字记不住"跑到哪了"
所以有了这一层

前九层全是说明书。但无人值守的任务必须能被接手:中断后从哪继续、谁在跑哪个子任务、 哪个决定是基于什么证据做的。这些没法靠"再读一遍 markdown"恢复,只能落盘。 这一层是 pstack 唯一真的写了代码的地方:全库 17 个脚本与测试文件 + 根目录 agents/ 里 2 份 subagent 定义。

图 10-1状态落在哪:三个区

区 1 · 跟着仓库走 工作区与决策留痕,可选择性提交 decisions.tsv └ ts · phase · decision · why · evidence · result   show-me-your-work 独占日志,防公式注入 .audit/<task-slug>.tsv └ 多并发任务时的分文件决策轨迹 wip: <commit> └ pause-safely 停机时持久化未完工改动 git worktree └ 多任务物理分支隔离,不污染主目录 写入者:show-me-your-work/scripts/log.sh 剧本:pause-safely.md(WIP 提交) 区 2 · 跟着 Cursor 宿主走 跨会话与跨项目的持久编排记忆 ~/.cursor/projects/<slug>/ └─ agent-transcripts/ ← 完整会话轨迹   session-pickup 复原依据、审计对账源 orchestrate/<slug>/ ├─ preferences.md · overview.md ├─ units.tsv · frontier.json · ledger.tsv ├─ inbox/ · gates.md · decisions.tsv └─ status.md ← 每次 drain 派生视图 ~/.cursor/rules/ └─ pstack-models.mdc ← 宿主模型映射 写入者:scripts/orch/orch.ts + store.ts 校验者:check-plan.mjs + .orch.lock 区 3 · 临时用完即弃 停机交接备忘、候选实现与证据截图 /tmp/<slug>-resume.md   pause-safely 写的离线恢复说明书   防止上下文压缩(compaction)丢进度 /tmp/arena-<slug>/ └─ candidate-<n>/   赛马候选实现,互不覆盖 /tmp/swarm-<pr-id>/ └─ worker-<n>/<slug>.png   每条泳道的真实界面截图与日志 盘点者:scripts/worktree-audit.sh 剧本:worktree-cleanup.md 三区依据生命周期严格切分:区 1 随仓库(换人接手需能读到),区 2 随 Cursor 宿主(跨项目编排记忆),区 3 随单次任务(跑完即弃)。 注意:上游没有 resume.mjs;停机靠 pause-safely 记入 /tmp/<slug>-resume.md 与 wip: commit,接手靠 session-pickup 读 transcript。 根目录的两份具名 Subagent 定义(住在 agents/,Cursor 插件直接识别) ① comment-sicko.md(专杀注释,标 MUST KILL,由 no-comments 调用);② poteto-agent.md(/poteto-mode 常驻代理,is_background: true,开工前强制通读 SKILL.md)。
图 10-1 · 路径与文件名取自 pause-safely.md、session-pickup.md、orchestrate.md 与 show-me-your-work/SKILL.md 原文。

10-2脚本清单

文件作用被谁调用
bootstrap.ts检查与安装 Bun 依赖(commander 等),比对 package.json 与 bun.lock 生成 sha256 缓存 key安装期
check-plan.mjs校验多阶段计划的 Markdown 结构(LANES, SUB_BLOCKS, PROGRAM_H3 等 9 块检查)multi-phase-plan
orch/orch.ts + store.ts编排状态仓 CLI(TS + Commander),带 .orch.lock 互斥锁与临时文件重命名原子写。配有单元测试orchestrate 剧本
watch-pr/ 套件轮询 PR 状态与合并安全策略(cli/github/policy/render/types 共 5 个 TS 文件,配 4 个测试与 fake)babysit、shipping
worktree-audit.sh只读盘点所有 worktree 的磁盘大小、合并状态、脏代码、PR 状态与关联 transcript(Bash 脚本)worktree-cleanup
show-me-your-work/scripts/log.sh原子追加决策行到 decisions.tsv,清洗制表符并防止 Excel/TSV 公式注入(=,+,-,@)show-me-your-work

10-3这一层透露的设计取舍

取舍
状态极少且人可读
没有数据库、没有外部守护进程。全是 TSV / JSON / Markdown 平面文件,人能直接 cat,git 能直接 diff。
取舍
写入加锁与防注入
store.ts 采用带 PID 的临时文件原子覆盖(rename);log.sh 对公式起始符加单引号转义,防止审计者打开表格时被注入攻击。
取舍
深度绑定 Cursor 宿主
区 2 硬编码在 ~/.cursor/projects/<slug>/agent-transcripts/ 与 ~/.cursor/rules/pstack-models.mdc。换宿主这一层代码必须重构。
本层的检验问题:为什么 pause-safely 宁可把恢复说明写在 /tmp/<slug>-resume.md 里,也不写进当前对话? 因为长任务遭遇上下文压缩(compaction)时,对话历史会被截断或丢失细节,而落盘文件能完好保留。 下一站是回顾页:把十层串成一次真实调用。
上一站← H09 宿主绑定