From 28a6bd282a6c8ed2ec634ed2638f8c7a9c52efa2 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Tue, 15 Sep 2026 06:33:54 +0800 Subject: [PATCH] =?UTF-8?q?docs(dev-tooling):=20=E7=AC=AC=2021=20=E6=9D=A1?= =?UTF-8?q?=20=E2=80=94=E2=80=94=20=E5=A4=B9=E5=85=B7=E6=8A=8A=E7=94=9F?= =?UTF-8?q?=E4=BA=A7=E5=BD=A2=E7=8A=B6=E7=AE=80=E5=8C=96=E6=8E=89=E7=9A=84?= =?UTF-8?q?=E9=82=A3=E4=B8=80=E8=A7=92=EF=BC=88=E4=B8=80=E5=A4=A9=E5=86=85?= =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E4=B8=AA=E5=AE=9E=E4=BE=8B=EF=BC=9AagentDir?= =?UTF-8?q?=20=E4=B8=8E=E9=A6=96=E5=9B=9E=E5=90=88=20cwd=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/DEV-TOOLING.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/docs/DEV-TOOLING.md b/docs/DEV-TOOLING.md index 3b6979a..472e999 100644 --- a/docs/DEV-TOOLING.md +++ b/docs/DEV-TOOLING.md @@ -268,7 +268,17 @@ bash deploy/prune-deploy-artifacts.sh --self-check # 判据自检(16 项, 修法:进窗口前 `trap … INT TERM HUP`、出窗口摘掉,trap 只在"确实还停着"时动手 (否则会多起一次服务)。判据可喂:用 stub `systemctl` + 探针脚本,给自己发 `SIGINT`, 断言"停着 ⇒ 调了 start、退出码 130"与"没停 ⇒ 不调 start"。 -21. **注释里的数字无法被判据守住。** —— 而不是只落到你想到的那一个。** +21. **夹具把生产形状简化掉的那一角,恰好就是出问题的那一角。** + 同一个形状在**一天之内出现两次**(都是 pi 用读代码找出来、而我这边全绿): + · `sandbox-launch.test.mjs` 手写 `fsWith([…, '.pi/agent/sessions', …])`, + **只列 sessions、不列 agentDir** ⇒ "agentDir 在不在 rw 里"永远测不出来; + 生产里 hub 的凭据存储把 `auth.json.lock` 写在 `agentDir` **直下**, + 后果是那个 agent **整个不工作**(不是某次工具调用失败)。 + · `fsRealShape()` 里 cwd 总是存在的 ⇒ "兜底目录由 worker 自己建"这条测不出来; + 生产里无 path 新会话的首回合因此**不套沙箱**,`guardDecision` 退化成 `ask`。 + ⇒ 写夹具时问一句:**"生产里这个值是本来就有的,还是被谁建出来的?"** + 凡"由被测代码自己建出来的东西",夹具都不能预先给好,否则测的是另一半。 +22. **注释里的数字无法被判据守住。** —— 而不是只落到你想到的那一个。** 实例(pi 评审 2026-09-14):我在 `env-defaults.sh` 的 `HOME` 上写了两条规则 ("`mkdir -p` 对已存在的不可写目录会返回成功 ⇒ 必须单独判 `-w`"、"判据落在能不能写、 不落在路径像不像"),**同一条规则没落到紧邻的 `TMPDIR` 上** —— 而 ENOSPC 正是这条链的