From a370616f0143cf0aa698088c8d772bd313ec1d92 Mon Sep 17 00:00:00 2001 From: xcs Date: Fri, 28 Aug 2026 12:38:26 +0800 Subject: [PATCH] =?UTF-8?q?CLAUDE.md=20=E4=B8=8E=20debt:humanWrites=20?= =?UTF-8?q?=E9=82=A3=E6=9D=A1=E5=85=A5=E5=BF=AB=E7=85=A7;=E8=AE=B0?= =?UTF-8?q?=E4=B8=8B=E6=9B=B4=E5=A4=A7=E7=9A=84=E4=B8=80=E6=9D=A1=20?= =?UTF-8?q?=E2=80=94=E2=80=94=20=E7=A1=AE=E5=AE=9A=E6=80=A7=E6=AD=A5?= =?UTF-8?q?=E9=AA=A4=E6=B2=A1=E6=9C=89=E8=90=BD=E7=82=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户同时点出(未做):**存在性核对 + 派数据工单是确定性流程,根本不该交给模型** —— W05 的「逐个料号查库 → 不在库就铺骨架、发数据工单」是纯规则,却写成了模型的 guide, 因为一个计划项的做法只有一个落点(模型的 guide):纯工具只读、判定表不写台账也不发卡、 `doneWhen` 只收步、哨兵只开门,**没有一个机制能整段承接**「读台账 + 写草稿 + 发人卡」。 引擎三样能力全有(`taskView` / `draftWrite` / `issueExecution`),缺的只是声明面。 代价已经付过两次:08-27 原 PN 不在库却判「在库」;08-28 模型把原 PN 的规格书抄到候选头上。 真治法:剧本加 `auto` 步(声明「这一步引擎按规则做,不问模型」)。 Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_0167qWjeyBwvfdGovd7FWbCu --- CLAUDE.md | 15 +++++++++++++++ docs/debt.md | 10 ++++++++++ 2 files changed, 25 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 61a9f30..10c944d 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -1607,6 +1607,21 @@ 比对依据可见,模型照它写影响、不自己重新解释值;契约描述与 S3 / P-08 剧本明写读法(示例用中性数 1~10, 不用真数据里的 4.5~40 —— 模型会把示例当这单的值)。W05 升版装上。3 测(11+7 种写法)。 +- **AI 把原 PN 的规格书填到了候选料号头上:人填的表要声明,判据不摆给还欠卡的那一步**(2026-08-28 + 柴浩实测单 6ddcecf8,连撞五拍熔断):P-10 资料记录的标题 / 版本 / 链接与台账里 `LM2596S-5.0` 那一行**逐字相同** + —— 不是幻觉,是「手边有一行看着对的就拿来用」(那一步 reads 摊开了 `parts.document`,视野里唯一一份真资料 + 就是原 PN 的)。三层合谋:①把 P-08 的回卡认成 P-10 的(P-10 的卡从没发过);②我 08-27 给这一步加的 doneWhen + 把「资料必填不缺」摆成目标、后面还跟「成立了就 finish」,**与同一份提示词里「唯一合法的动作是先发那一张卡」 + 直接打架**;③它顺手把 `exists_status` 改成 created,按剧本发卡名单自己空了 —— 一个合法动作都不剩。 + 止血两刀:**①`PlanStep.humanWrites`**(契约)—— 声明的台账 `write` 当场拒并指路「去发那张卡,值由人填」, + `drop` 不拦(写错了得撤得掉);判法认点名的项、点不出退回当下在办的那一步(压拍时骨架写在上一步名下正好放行)。 + **②还欠一张卡的那一步不摆 doneWhen** —— 判据同时是摆在模型眼前的目标,而它此刻只许发卡。 + W05@1.6.5 声明 `humanWrites: ['parts.document']` 并从 writes 去掉。4 测(墙 / 放行 / drop / 声明)。 + **一个闲着的模型 + 一个它够得着的判据 = 它一定会去凑那个判据。** + 用户同时点出更大的一条(记 debt,未做):**存在性核对 + 派数据工单是确定性流程,根本不该交给模型** —— + 平台缺「确定性步骤」(纯工具只读、判定表不写台账、doneWhen 只收步),所以只能写进 guide; + 引擎三样能力都有(taskView / draftWrite / issueExecution),缺的只是声明面。 + - **运营中心活动详情沙箱换成「关键台账数据」看板,数据接真台账**(2026-08-27 晚,用户定:只摆最近一次已放行 实例、替换掉全流程分支图):模版搬自 `docs/ss02-act-05/ACT-WORK-05-关键台账数据.html`(P-01 KV / P-08 逐颗 + 参数瓷贴 / P-11 主记录 + 差异明细 / P-10 / P-06 本单 + 同料号历史),徽标文案全由 `data-class-of` 投影。 diff --git a/docs/debt.md b/docs/debt.md index d82a1f5..3a5bd37 100644 --- a/docs/debt.md +++ b/docs/debt.md @@ -1308,3 +1308,13 @@ pnpm 硬链到全局 store,真实占盘远小于这个数,但 `du` 看着吓人 现在只有 W05 包内测试钉着 + 运行时「那一块空着 + stderr 点名」。该并进 `static-audit`(与 `refersTo` 目标核对同款)。 - **`docs/数据域字段说明-W05.md` §二 / §十二.4 的参数集口径过时**:仍写 `normalized_parameter_set` 是 text 列「不建子表」, 而清单早已拆成子表 `parts.parameter`(库里那一列全 null)。一览表也少 `parts.parameter` 一行。 + +- **平台缺「确定性步骤」:确定的流程只能交给模型**(2026-08-28 用户点出:「这个不是一个确定的流程吗? + 根本不需要交给 ai,你直接查库不就知道有没有了吗」)。W05 的「逐个料号查库 → 不在库就铺骨架、发数据工单」 + 是纯规则,却写成了模型的 guide —— 因为一个计划项的做法只有一个落点(模型的 guide):纯工具只读、 + 判定表不写台账也不发卡、`doneWhen` 只收步、哨兵只开门,**没有一个机制能整段承接**「读台账 + 写草稿 + 发人卡」。 + 引擎这三样能力全有(`taskView` / `draftWrite` / `issueExecution`),缺的只是**声明面**。 + 代价已经付过两次:08-27 原 PN 不在库却判「在库」(用 `found_pn_ref` 的 refersTo 兜了一半 —— + 「说不在库」那一侧至今没有校验);08-28 模型把原 PN 的规格书抄到候选头上(已用 `humanWrites` 立墙)。 + 真治法:剧本加 `auto` 步(声明「这一步引擎按规则做,不问模型」)。**代价**:活动模型往「配置化流程」挪一格, + 与「活动是 Agent 机制」的立场有张力 —— 但这一段本来就没有判断余地。真需要模型的只剩「有 datasheet 附件时从原文抽值预填」。