muse-agent-example/docs/2026-07-16-批9c-收官与优化方案.md
zizi abadaa15e9 框架: 正文评测链职责重构收口(writer/detector/judge 单一职责)+决策修复+加固门+探针刷新
- writer/detector/judge 按父仓专题-03/04 单一职责拆分:WriterDraft v2(仅 candidateBody)、CandidateEnvelope v2(adapter 确定性绑定)、SemanticDetection v3(quote 唯一匹配/unknown-gapReason)、blind judge v3(双盲第三评中位);预算两层(启动预留=Σ plannedCalls×cap,修正旧 maxCalls×cap 的 $2250 阻断 bug)。

- 决策修复:补第六类混淆项「场景选择偏差」(集合级、只标注不改终态);模型归属口径(planner/writer/judge 固定 opus,extractor/detector 可用它模型,拆书走 M3 不经角色派发);eval 评分尺改链接+一句话引用 quality-gate。

- 加固执行门:探针合同绑定(probe.executionProfileSha256 须等于 writer profile 身份哈希),陈旧探针被机械阻断 EXECUTE_PROBE_CONTRACT_MISMATCH。

- 新增探针刷新工具 refresh_runtime_probe.py(可注入 invoker+失败关闭+重签同源 canonical_sha256),并已按新合同真实重测探针(绑定 9d319ea0,成本 $0.155)。

- 逐行复核后修复:省略号被当路径穿越误杀(claude_runtime 共用精确判定 contains_path_traversal,盲评/检测统一引用);检测 failed 分支测试缺口;评委报告↔模型原始输出绑定恢复(reviewerStructuredOutputs,防一致篡改报告评分);上下文 purpose 词汇两层对齐;盲评死代码清理。

- 全量离线测试约 800+ 项全绿(continuation/detect/quality-gate/read-context/replay-eval/parse-book 572/llm),不连库不调模型。
2026-07-25 04:44:10 +08:00

198 lines
32 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 批9c 收官状态 + 下一步优化方案(2026-07-16 晚,compact 恢复锚点)
> 本文档=compact 后接续工作的详细锚点。概览见 README §九「批9c」条目;本文档给可执行细节。
> 任务完成后按仓库约定蒸馏进 README §九 并删本文档。
## 进展快照(2026-07-17 凌晨,最新——compact 恢复优先读这节)
- **item4 额度系统**:✅ 已实现+主代理亲验+**已提交 `9a513e7`**(chat_governed 统一治理,五书降级链上收,账本 example_llm_quota)。
- **范式卡去重(回溯聚类)**:recluster 子命令已实现+亲验(连接三段/贪心最近母卡/软删可逆/dry-run 门控)。**combat 已放量:886→770(并 116,缩减 13%)**,完整性/可逆性/质量四项亲验通过(116 输家软删+116 嵌入软删+83 母卡带回溯审计,被并卡全文留档可回滚)。**其余四型(emotion/craft/scene_pattern/trope)后台放量中**(/tmp/muse-recluster-rest.log,任务 bl8fwgyjc,受额度系统自动跨窗,约 5550 次判定、跑几小时)。真实归并率 ~13%(非预想 50%,创始人已知情拍板"全量 0.75")。cards() 前向修复(SIM_MERGE 0.85→0.80、0.75+ 均送判定)已随附。
- **升格卡改造**:4 决定已拍(①里程碑=结构化对象 章/台阶/周期 ②补齐=五型全补 ③character 一起改 ④存量迁移=人工精确化;+主代理定 演变概括独立字段),记入 `docs/2026-07-16-升格卡改造设计.md` §十。fable5 已实现**前向代码**+主代理亲验:6 个 schema yaml(演变历程 `[detection,extraction]`/演变概括·前身·后继 `true`/character 成长弧线回归"未来计划")、parse_upgrade.py(里程碑对象合并去重按真实章号+撤销靠 `_win` 键+当前态干净纪律+语义判重默认关)、迁移脚本 migrate_upgrade_windows.py(**确认只读零写库**)、read-context/detect SKILL.md 补说明。
- **进度(截 2026-07-17 06:00)**:范式卡去重 ✅ 五型全放量完成 **7045→6327(并 718 / ~10%)** 已提交 `9c87f0d`(五型均自洽可逆);升格卡前向代码 ✅ 已提交 `1786035`、seed 已重跑灌合同(6 型合同均含演变历程,亲验)、`type` 键兼容已核 OK。
- **独立审查(opus 对抗复核,2026-07-17)**:无阻断问题(软删/可逆/连接三段/额度不绕过/契约 全部独立复核成立);揪出并修复 2 真 bug(提交 `46704ee`)——① recluster `_absorb` 用输家书名覆写实例跨书归属(已污染 30 条/14 母卡,**已从回溯归并审计确定性还原、复验 0 残留**);② 迁移章号正则裸"N章"误抓"隔3章"数量词(迁移未真跑、无数据影响,已修+11 用例验证)。**步骤3 语义判重启用前需处理**:`semantic_dedup` 在持窗级 DB 连接期发 embed+M3(非三段式,靠 keepalives),开启前改三段或确认无碍。轻微项(`_win` 键入 payload 噪声、里程碑按台阶去重边界)已记、暂缓。
- **升格步骤2 方向已变(数据驱动,2026-07-17)——迁移否决、改重抽**:迁移低价值已弃(只清 character/relation 的 [窗N]、大头花在过度抽取的人物噪声卡[苏铭561/李锋527条]、且**根本不碰 item/power_system 机甲成长**——那才是创始人的目标"生物机甲4→7级")。核心解药=**用新提示词重抽**。(全库分布:2260 升格卡里 75% 无成长条目,极端过度抽取仅 ~17 张人物卡。)
- **升格重抽·小样验证 ✅(2026-07-17,零落库/6 调用/$0.07,主代理核实卡6223 未动、全库 0 带演变历程)**:新提示词能为力量体系抽出**干净逐级成长线**——生物机甲 IV代→伪V代→真V代 9 条里程碑、全真实章号、生命周期标对、当前态字段干净;远优于老卡(老卡无演变历程字段、成长史塞在戏剧作用/跨体系换算成流水)。方向**成、值得放全量**。
- **验证暴露 3 个洞(全量前必补)**:① **[最关键] 命名脆→成长线静默断**:新提示词给体系起了对不上正文的名("联邦生物机甲体系")→机械预扫认不出→更新路径不触发→整条线零里程碑;**解药=开语义判重(P1,默认关)**。② **登场里程碑易丢**:首现走"新名字"路径、倾向写当前态而非建"登场"里程碑。③ **单位事件串到体系卡+台阶偏长**:把某台具体机甲的事记到了体系卡(该归各自机甲卡)。
- **✅ 创始人拍板路径(2026-07-17):先补 3 洞 → 再零落库小样确认补洞效果 → 才放全量重抽**。补洞=改 `parse_upgrade.py` observe/update 提示词(治②③)+ 开语义判重①(需先把升格卡 embed 落库 + 先把 `semantic_dedup` 从"持连接期发 embed+M3"改成连接三段式,见上条独立审查)。
- **全量重抽的管线坑(执行者注意)**:升格是**串行有状态**;全书重抽要清多张状态表(`example_upgrade_window.status`/`example_upgrade_presence`/`_alias`/`_card_state`)+ 处理 **cid 冲突**(`INSERT ... ON CONFLICT (tenant_id,command_id) DO NOTHING` 会让新卡撞上软删旧卡的 cid 而被跳过→重抽建不出卡);`--redo-window` 重做中间窗会破坏串行依赖。小样用的是**内存零落库法**(脚本 `/tmp/muse_upgrade_dryrun.py`、`/tmp/muse_upgrade_warmupdate.py`)。目标书:**work=8 深空之影**(生物机甲6223/铁头1154,308 机甲力量卡)、work=4 机动风暴(104 张)。
## 一、批9c 已真收官(五书全量重审)
- **五书 b9-full-v2 审核库内校验 ALLOK**:星环 1525 / 机动 780 / 机战 2336 / 超神 1441 / 深空 963,全书全覆盖。
- **审核统计**:pass 1677(23.8%)/ revise 4358 / reject 1010 / blocked 0,均分 3.16,降级卡 30(全星环,敏感批用备用模型评分、已打标记;纯 M3 评分 7015)。
- **三份样张**:`docs/2026-07-16-批9终态样张-{范式五书,升格机动,升格深空}.md`(前两已提交;升格深空为本轮新出,untracked)。
- **额度**:旧 grep 次数口径(8965)作废;服务端实花 **$122.93**(累计=今日;授权上限 $2100)。
## 二、本轮踩坑与修复(勿回退)
1. **死锁解开**:原重审 wrapper 与深空残渣清洗钩子的 `pgrep -f` 交叉/自匹配互锁 → 杀钩子手动跑 `/tmp/muse-clean-debris.py 8` + 会话接管深空重审。**教训:解死锁最小动作优先**(曾多叠一个接管控制器、把正常在审的深空打断,纯属过度设计)。
2. **`review_cards.py` 修 3 处**(`.claude/skills/review-cards/scripts/review_cards.py`,工作树已改未提交):
- **敏感降级链** `DEGRADE_CHAIN=["MiniMax-M3","MiniMax-M2.7","deepseek-v4-flash","glm-5.2"]` + `chat_degrade_review()`;全链失败标 blocked 不崩。
- **分片** `--shard i/N`(id%N==i),多进程并发各自独立事务。
- **连接拆「读/算/写」三段**:LLM 阶段不持 DB 连接、写库用全新短连接(治 Tailscale 长事务空转超时,实测星环/机动崩因);+ reviews 条目 `isinstance(r,dict)` 守卫(防模型把条目返成 list 崩)。
3. **物理删除 work5/9**(机战/超神「源修复前重复导入」旧本,共 8596 行:章 4296+块 4296+参考档案 2+作品 2):**创始人 2026-07-16 明确授权覆盖「删除=软删、不物理删」红线,仅此两废本**;SQL=`/tmp/muse-b9c-purge-w59.sql`;删后作品表 8 本 8 活、好本 work10/11 无损。其余表仍守软删红线。
## 三、下一步工作(创始人已确认,compact 后继续)
### item 4:额度系统改造(✅ 已上线·主代理亲验)
**状态(2026-07-16 夜收口)**:compact 后重做完成并**主代理亲自验证上线**——
- 代码:`llm.py` 加 `chat_governed` 统一治理入口 + 计价/窗口/账本读写;四调用方(parse_llm/parse_outline/parse_ingest/review_cards)自建降级链上收复用;新建 `db/ddl/95-example额度账本.sql`(表 `example_llm_quota` 已 apply)+ 离线单测 `test_quota.py`。
- 亲验:① 9 条离线单测主代理亲跑全过(窗口/计价/六路由);② review_cards 三处红线修复完好未回退;③ 全模块导入无悬空引用;④ **真调用对账端到端闭合**——首个真调用我算 11.04 配额单位、服务端 total_used 实扣 +11(异步延迟十几秒落账),匹配;账本两笔原子累加正确(0.00018516/2 笔);⑤ 校准噪音已 `DELETE`,账本清零、额度从零起(当前窗 2026-07-16T20)。
- 已知:New-API `/api/usage/token/` 聚合口径异步滞后且高频轮询会限流返非 JSON(与计价正确性无关,勿据此判错)。
- 下方 spec 为实现依据,保留备查。
全局改 llm skill(**只改 `.claude/skills/llm/scripts/llm.py` + 新建 `example_llm_quota` 库表 DDL 落 `db/ddl/`**):
- **以钱为主**。每次调用:`cost_usd = model_ratio × ((prompt_tokens - cached_tokens) + cached_tokens×cache_ratio + completion_tokens×completion_ratio) / 500000`(New-API 口径,$1=500000 配额单位)。费率从 `GET http://100.64.0.8:3000/api/pricing` 取,硬编码兜底:**M3=0.15/4/0.2、M2.7=0.15/4/0.2、glm-5.2=0.5634/3.5/0.25、deepseek-v4-flash=0.07/2/0.0714**(model_ratio/completion_ratio/cache_ratio)。
- **时间窗**:按钟点 floor 到 00/05/10/15/20(每天 5 窗,末窗 20–24=4h),每窗独立、跨窗清零。用 `datetime.now()`(普通 python 可用)。
- **共享账本** `example_llm_quota`(窗口键、MiniMax花费usd、总调用数、更新时间),原子累加(`INSERT ... ON CONFLICT DO NOTHING` 建行 + `UPDATE ... RETURNING`),多进程/shard 共用一本账。
- **全局统一路由**(敏感降级 + 预算降级并成一条),每调用前:① 本窗总调用 ≥6000 → **自动 sleep 到下一窗边界续跑**(创始人选,非硬停退出);② 要 MiniMax(M3/M2.7) 且本窗 MiniMax 花费 ≥$24 → 切 glm-5.2 → 调用失败(不可用) → 切 deepseek-v4-flash(glm/deepseek 无 $ 上限、但可能失败);③ 撞 `SensitiveError` 沿链降级。成功后原子累加(花费仅 MiniMax 计、次数全计)。
- `review_cards.py` 里自建的 `chat_degrade_review` **改为复用 llm skill 统一路由**(避免两套降级)。
- 坑:sleep 到下一窗时**不持 DB 连接**(Tailscale);费率拉取失败用兜底值。
- **验证**:离线单测(窗口边界/成本公式/路由选择,假 usage)+ 1–2 次真调用对账(snapshot `/api/usage/token` 的 total_used 增量 ÷500000 vs 算出的 cost,±5%)。
- **额度清零** = 新表从零起(当前 20–24 窗从 0 算)。
### 卡质量优化(方案已确认,等 item 4 上线后实施;都要烧 M3、受新 $10/5h 窗管控)
**两只 fable5 诊断共同结论**:病根=**判重坏了**(当初为省钱关了语义判重)**+ 抽取过量产碎片**;两类卡头号修复都是**开启嵌入语义判重**。
**范式卡**(pass 率 23.8%;判据没冤枉卡=已校准 opus 金标准、卡真普通,但一大块好卡被「同功 family」机械压分打进 revise=判重漏检+抽取过量所致,**非判据太严**。硬证:81.5% 卡有 ≥0.75 近邻、0.75–0.85 段 5123 张全漏走且 64% 是 revise):
- **P0 生产期跨窗跨书聚类去重(最大杠杆)**:出卡入库前对全库同型卡聚类归并,一家族留一张母卡累积多实例;`SIM_MERGE` 0.85→0.80、0.75–0.85 段强制走 merge_judge(现只标记)。改 `parse_ingest.py`(SIM_MERGE≈L44、cards() L445–471)。预期 7045→~3000–4000 唯一卡,pass 率诚实抬升。
- **P1 抽取提干货**(改 `parse_llm.py` scaffold_prompt/window_cards_prompt):换书测试设硬前置 checklist;**combat 只抽战术原理、禁单场战斗走位、强制打题材标签**(=combat 打标签落地);craft 四件套(原理/失败模式/异质化/迁移用例)缺项不出卡;拆掉空批 nudge 逼卡效应(允许型-批真诚 0 卡)。
- **P2** 控出卡密度(平庸窗允许 0 卡);**P3** 判据不松(cal-002 红线),只把 3.33–3.49 贴线的 759 张 fable/opus 批量复审捞回(运营动作)。
**升格卡**(作品面,成长线丢失;根因=只有 character 有成长字段、机甲/武器/力量体系无成长字段→进阶被覆写抹平或塞错字段;主线被拆 30+ 张碎卡跨人物/物品/力量体系 3 型、无链接;判重纯字符串、语义判重关了):
- **P0 补骨架+记里程碑**(改 `meta/schemas/item.yaml`、`power_system.yaml`→`seed_schemas.py` 重跑入库;改 `parse_upgrade.py` `APPEND_FIELDS`(L47)、observe/update prompt):给 item/power_system 加「演变历程」数组字段;提示词记进化台阶 + 登场→高光→退场→结局生命周期,别覆写抹平。
- **P1 串链+语义判重**:加「前身/后继」链接字段串进化链;判重接 embed skill(≥0.78 召回 + M3 终判)治改名/跨型漏并。
- **P2** 清墓碑卡(深空 475 张 deleted=TRUE 回滚残留,物删需创始人授权);导出层 `parse_export.py` 按进化链聚合呈现。
**创始人两点细化(必须遵守):**
1. **历史/里程碑数组用「绝对章号」索引,绝不用 `[窗N]`**——窗口是运行时定义、会变、非卡属性;现有卡里的 `[窗N]` 要清成章号。
2. **卡做「渐进式披露」**:**现状层**(实体当前态+概括,写作 agent 续写默认只读)+ **完整历史层**(全里程碑,仅一致性检查/detector 读全);关键卡上万字。**落法=接现有 read-context 的 aiContext 按用途裁剪**——把「完整历史」字段标「仅 detection 用途可见、续写不给」(不是新机制,是字段可见性按用途/scenario 分层,与四层上下文/三级裁剪一脉相承)。schema 字段加用途可见性标注、抽取产出分层、read-context 按用途裁剪。
### combat 210 卡题材绑定 = 打标签(创始人拍板,纳入范式卡 P1 一起做)
## 四、遗留项
- 原有:B3 检索验证、B5 确认门、嵌入批量补算——延后。
- 本轮新增:降级卡 30(星环,如要纯 M3 可单独重审这 30 张);深空摘要重刷 20 条失败尾巴(可重跑补);卡格萨莫同名升格卡对 1 处(体检唯一黄线,可定点消歧);**框架改动待提交**(review_cards.py 3 修复 + item4 llm.py/DDL + 本 doc + README§九——创始人问过「要不要提交」未明确答,恢复后确认再提交)。
## 五、红线/环境(勿违反)
- review_cards.py 三处修复勿回退;深空清洗→重审串行(禁并发整行写回);新额度规则(item4)。
- 双轨:创作内容不 commit(确认=commit 只创始人指令触发);框架/文档正常提交推送。
- 汇报纪律:第一句先说创始人要做什么,白话不黑话(内部代号/英文行话不裸用当场展开)。
- Python=`.venv/bin/python`;DB 通道=db skill(DSN 锁脚本内,只连 muse-example);New-API base=`http://100.64.0.8:3000`、token 在 llm.py 头。
- 书:星环=work3 / 机动=4 / 深空=8 / 机战=10 / 超神=11(work5 机战旧本、work9 超神旧本已物删)。
- 两只 fable5 诊断全文在本 session 对话(升格卡+范式卡),关键点已蒸馏进本文档第三节。
---
## 批9d 插入记录(2026-07-17/18)
批9c 全量重抽启动前,创始人插入方向级任务:第一性原理分析各类卡是否符合要求,抽最重要的点完善 SoT。已完成并落 design-docs(提交 2124a793):新增专题-07(知识消费契约与质量闭环,"以用定卡")+ 七册配套拍板(含 aiContext 值域升级、参照作品面、双层拍板、purpose 枚举统一)。分析证据链见 `2026-07-17-卡的第一性原理与知识效用闭环.md`。**批9c 收尾已由创始人下"继续"口令启动(2026-07-18),compact 恢复后从这里接**:下一步 = **派 fable5 实现子代理补 3 洞**(尚未派出;任务清单 #9-12 已建)。子代理提示词要点:改 parse_upgrade.py——②观察/更新提示词令实体首现必立"登场"里程碑且归并不丢;③体系卡演变历程只收体系级变化、单位/个体事件归各自实体卡、台阶一句话限长;①语义判重连接改读-算-写三段式(opus 审计点名:现持窗级连接跨嵌入与 M3 调用)+ 新卡/更新卡写段增量嵌入落 example_knowledge_embedding(重抽期间判重才有向量可召回)+ 接入重抽流程。红线:三段式连接、软删、LLM 走 chat_governed(M3)、绝对章号、中文注释、最小改动面、不跑库写。之后顺序:主代理逐段核验 → 零落库小样验 3 洞(深空样窗:生物机甲/铁头判同归线、登场里程碑在、体系卡无单位事件)→ 呈报样张等创始人放行全量。**创始人 2026-07-18 拍板通过重抽后路线:批10 = 消费最小闭环 + 回放评测首跑**——顺序:①升格卡向量落库(补齐可命中)→②统一读取器 read-context 从设计桩变实(8587 张卡第一次被创作流消费)→③单书规划线回放首跑(冻结前 N 章知识推演下一台阶、对照原书评分,验收对齐专题-07 §4/§7);不再继续扩书拆卡。
## 批9c 收尾执行记录(2026-07-18,补3洞→小样全过,待创始人放行全量)
- **补洞实现(fable5 子代理)+ 主代理逐段核验 ✅**:`parse_upgrade.py` 每窗重构为 读1(短连)→观察(无连)→预判段(嵌入/召回/终判无长连)→写(窗事务)→嵌段(commit后三段式增量嵌入落 example_knowledge_embedding,软删旧活行+upsert);机械判重判据抽 `_classify_new_name` 纯函数预判/写段共用;四条归并路径换 `_merge_material`(演变历程完整不截);`new_card` 接 `_debut_milestone` 登场机械兜底;观察/更新提示词加登场硬约束+体系级纪律+台阶≤40字;`_clean_milestone` 加 80 字硬闸(主代理修复:截断必须放在内嵌章号抽取与周期推断**之后**,防截丢兜底线索);`build_embed_text` 补 type 键型修正(升格卡型认出)。离线自测 43 项全绿(`test_parse_upgrade_offline.py`)。提交 `2173c8f` + 校准提交。
- **零落库小样 ✅(深空窗35-37,观察3+终判若干+嵌入2批,≈$0.15,零卡表写入)**:报告 `/tmp/muse_upgrade_smoke3_report.txt` + probe4。洞② 登场:172 张适用型新卡 100% 有登场(模型自给 114+机械兜底 58,双保险成立)。洞③:299 条台阶 0 条超 80 字硬闸(>40 软目标 29 条);体系卡「联邦生物机甲技术」2 条里程碑均体系级、当前态字段干净。洞①:**阈值 0.78 实测证伪**——同实体改名对余弦仅 0.63-0.66("联邦生物机甲技术"vs 卡6223 = 0.6565)永不触发语义层,不同体系对 ≤0.58 → **阈值校准 0.78→0.60**;终判证据不对称修复(recall_neighbors 近邻带字段摘选 300 字入终判 prompt + 判据补"同型名称互含≈简称全称""改名不改实质")。校准后五探针全对:互含改名×2 → merge 6223;**非互含改名**("卡依斯反应驱动战械体系",语义层真正要接的残余缺口,机械子串层接不住)→ 0.6128 过阈 → merge 6223;反向安全(帝国4代纯机械体系)→ 0.576 不过阈 → new(误并方向守住);铁头 → 0.9456 → merge 1154;跨型全部未并。边距诚实说明:非互含 0.613 vs 反向 0.576 分离带窄,第二道守门=终判 M3(带字段证据)+ 同型才并 + 别名审计行(verdict_by='semantic')可回溯。
- **待办=呈报创始人放行全量重抽(任务#12)**。全量执行时注意本文档上方"全量重抽的管线坑"三条(清串行状态表 / cid 冲突吞卡 / 勿用 --redo-window 破串行),跑法:`run --work-id N --semantic-dedup` 逐书串行。
## 批9c 全量重抽收官验收(2026-07-18 完成,两书 100%)
**跑动结果**:机动风暴 80/80、深空之影 116/116,**零失败窗**。今日重抽共 $14.65 / 2690 次调用,5 个额度窗无一撞 $10/4000 硬顶。
**跑动中修一真 bug(提交 8e9e97c)**:模型偶把出场章输出成字符串("508"),与库内 int 章号 sorted 混排炸(深空窗113 当场停书),且 `len(chaps|hist)` 并集把 "508"/508 当两值虚增跨章计数误判立卡门槛。加 `_int_chaps` 归一化在四处消费点统一套用,离线补 6 用例(49 项全绿),窗113 续跑过关验证根治;清 1 张 pre-fix 残留卡(12640 出场章字符串→int),全库复验 0 残留。
**六项验收**(均库内实测):
1. 卡数:机动 627(=旧 627);深空 1407(旧 1579,少 172=语义判重合并改名碎片的预期效果,非丢数据)。
2. 成长线抽查(关键):深空 V代生物机甲各卡呈干净逐级线——如伊琳娅丝 388登场→423高光、血怒 421登场→423退场,真实章号、登场/高光/退场生命周期齐全,远优于旧卡散文流水。**方向兑现**。
3. 向量:实体卡 100% 有向量(边抽边嵌成立);关系卡(character_relation,机动138+深空229=367 张)**未嵌入**——设计如此(关系卡走独立写、不经 touched),**批10 消费前需用 embed skill 批量补嵌**。
4. 洞②登场覆盖:有演变历程的实体卡 100% 带登场里程碑(机动 489/489、深空 1178/1178)。
5. 洞③台阶限长:10351 条里程碑台阶,>80字硬闸 0 条(软目标>40字 2554 条=25%,模型常超软目标但硬闸兜住)。
6. 洞①语义判重:并卡 49 张(治改名碎片)+ 串链候选 204 条(前身后继);章号纪律 0 条 [窗N] 残留。
**收官后待办(进批10 前)**:① 用 embed skill 给 367 张关系卡批量补嵌(补齐可命中)→ 与实体卡一起满足批10 消费的向量前提。② 批10 三步(升格卡向量落库收尾→read-context 从桩变实→单书规划线回放首跑,验收对齐专题-07 §4/§7)未启动,等创始人放行(涉烧额度管线)。
## 额度阀提额(2026-07-18,创始人拍板)
MiniMax 每 5h 窗自限从 **$10/4000 次 → $24/6000 次**(改 `llm.py` 常量 WINDOW_BUDGET_USD=24.0 / WINDOW_CALL_CAP=6000)。机制不变(撞 $24 自动降级便宜模型、撞 6000 次自动挂窗续跑),仅抬高每窗吞吐上限。**注意**:此为 llm.py 独立于 New-API 服务端的本地自限阀,已运行进程需重启才生效(模块常量启动即载入)。上文所有 "$10/4000" 表述为提额前的历史记录,现行值以此条为准。
---
## Compact 恢复锚点(2026-07-19,后续结果已覆盖原锚点状态)
compact 只清主代理上下文、不动磁盘与后台进程。以下保留当时的恢复信息;当前状态以本节后续验收记录和回放评测计划为准。
### 线1:升格批量抽取(6本,task#17,已完成)
- **背景**:机动4/深空8 已收官(前文);剩 6 本首次做升格——机战10/机破7/机武6/星环3/超神11/希泊尼2,均已建窗(976窗),4条并发跑道:A=[10]、B=[7→6]、C=[3→11]、D=[2],命令 `parse_upgrade.py run --work-id N --semantic-dedup`(无max-calls,靠额度自停),nohup 脱离会话。
- **最终状态**:`.venv/bin/python /tmp/upg_dashboard.py` 显示机战276/276、机破189/189、机武71/71、星环159/159、超神156/156、希泊尼125/125,全部 `failed=0`,无活跃进程。
- **监控**:此前定时巡检已完成其断点续跑职责;额度窗最后核验为 `$19.51/2342`(上限 `$24/6000`)。
- **坑(已踩)**:①New-API账户有**独立Token Plan积分池**、和llm.py的$24/6000自限是两回事,积分耗尽会429→全模型403(**可恢复,非硬故障**,部分渠道耗尽);②出场章int/str混排bug已修(提交8e9e97c);③断点续跑靠failed窗自动撤销重跑,杀进程不丢数据。重跑准备脚本`reset_upgrade_work.py`。
- **额度**:llm.py自限已提到 $24/6000/5h窗(提交11bdbbd,创始人拍板)。
- **验收结果**:见下方“六本升格质量验收”;本批 6591 张升格卡向量全覆盖,关系卡本批未生成,暂不需要关系卡补嵌。
### 线2:正文智能体验证=消费闭环第1层(task#16,进行中,创始人深度参与设计)
- **大目标**:验证"卡到底帮不帮生成"。**自底向上建三层智能体**(创始人定序):①正文智能体→②细纲智能体→③大纲+设定智能体。每层用参考书当标准答案、在已验的下层输入上验。
- **已跑两轮**:run1(固定喂7卡+只给上一章,两臂都被喂残→**无效**);run2(两臂都能自主探索≤488历史正文、有卡臂+卡检索,/tmp/eval2_gen_*.md)→评委盲评 **无卡23 : 有卡20,卡没帮反拖后腿**:卡在核心硬设定(加特朗代际/核雷发射/卡依斯术语)带偏、文风更远,只堆了装饰性周边世界观;机制=**卡挤掉了读原文**(有卡臂读18次工具 vs 无卡29次)。
- **创始人关键判断(重要设计结论)**:**卡是索引、不是原文替代品;写作要两条线=卡检索(谁/什么/哪找)+原文检索(怎么说/什么质感)协同,卡指到原文不替原文**。另:①正文腰斩是主代理的错——原书489=7051汉字,两稿只~4000(我给的细纲cap成4000-5000)→缺叙事张力;②应照细纲执行、需**审查智能体**;③加特朗无卡是因**全书仅489一章出场**、按"单章龙套只留档不立卡"门槛漏掉——揭示"卡门槛是出场跨章数、非叙事重要度"的缺陷,正向创作时设定层应主动给关键一次性角色立卡。
- **run3(已完成)**:按上述重搭两写手(opus,agentId 有卡ae67300c/无卡a2c95442),三处修复:**篇幅对齐~7000汉字不腰斩、卡当索引查到后强制顺章号回读原文、通读485-488四章**;审查和双评委结果见下方。
- **run3后续**:写手层单点已验收;细纲智能体首跑仍受真实作品授权门阻断,不能把合成 smoke 或单章正文结果当作全书结论。
- **工具(冻结护栏≤488,已自测)**:`/tmp/eval_tools/eval_prose.py`(search/get正文,489+硬拦)、`/tmp/eval_tools/eval_cards.py`(by-name/search卡,只出6类实体卡冻结视图、排除关系卡)。标准答案`/tmp/eval_answer_489.md`;两稿副本`docs/eval-正文489/`(创始人可读)。
- **诚实保留**:n=1不下结论;须多样本(5-10章×2-3本×场景类型)+修注入(正经当前态视图非冻结历史)+控挤出(纯原文/纯卡/卡+原文三臂)+内容感知冻结(防事件卡窗口错位泄露,已抓一例:489反转被标488)+多评委。run3先把489修对拿站得住的单点对照,再决定上多样本大版。
### 线3:范式线(task#18,待启)
- 3本缺范式(希泊尼2/机武6/机破7)+超神11补8章(窗51-58的cards)。子代理研究已出**完整runbook**(续跑安全/并发安全/走同一chat_governed额度):一本一路 `parse_llm.py chapters→parse_outline.py window→parse_llm.py cards→check`,顺序不可乱、每步断点续跑。超神补:`parse_llm.py cards --work-id 11 --from-order 51` + `--from-order 57`。~7500次调用。**待升格跑道空出后启动**(共享额度,总并发控~6-8)。
**当前下一步**:范式线仍待单独启跑;回放细纲真实样本需先补齐权威不可变授权快照。质量黄线先保留为后续治理项,不直接改写内容库。
---
## 六本升格质量验收(2026-07-19)
### 已验证
- **窗口完成**:机战 276/276、机破 189/189、机武 71/71、星环 159/159、超神 156/156、希泊尼 125/125;6 本均 `failed=0`。
- **卡与向量**:6591 张活跃升格卡,六本按作品均为 100% 有向量;本批没有 `character_relation` 卡,因此没有遗漏关系卡嵌入这一项。
- **成长线结构**:6591 张卡均有可冻结的「演变历程」,每张都有登场台阶;里程碑台阶超过 80 字为 0,`[窗N]` 残留为 0,未来章号越界为 0。
- **结构红线**:结构垃圾、巨型粘连、范式卡 IP 专名和字符串尾部残渣均为 0。体检脚本已修正为跳过结构化里程碑对象,只扫描字符串数组,避免把对象的 `}` 误报成残渣。
### 边界与遗留
- 机破、机武、希泊尼只有升格线数据,尚无章级细纲、窗级大纲和范式卡;这三本只能宣称“升格线完成”,不能宣称全链完成。
- 全库仍有历史性黄线:前缀重复 118、同名卡对 11、单字别名 5;六本本批的前缀重复分别为机战 20、机破 7、机武 0、星环 23、超神 6、希泊尼 43。当前不写库修复,后续按卡逐条审计。
- 本验收只证明抽取产物的结构与可检索基础,不等于写作/规划消费效果已通过;回放细纲真实样本仍受授权快照门阻断。
---
## 正文智能体验证 run3 结果(2026-07-19,写手层验收完成)
**一句话**:写手层重搭后,489 这一章有卡臂 vs 无卡臂**几乎打平**(两评委各自独立判「无卡 +1 分」,评委2自评"在噪声范围内、实为几乎打平");有卡赢文采、无卡赢忠实,而无卡唯一的忠实优势几乎全押在"加特朗代际"这个**两臂都没卡可查的新角色**上——所以这局不算"卡输",反而证明写手层已达标、残余差距正是设定层要补的洞。**较 run2(无卡23:有卡20,卡明显拖后腿)大幅收敛到平局,写手层重搭生效**。
### 双评委盲评(稿甲/稿乙对调压位置偏差,去盲后)
| 维度 | 有卡臂(均) | 无卡臂(均) | 方向 | 主要依据 |
|---|:--:|:--:|:--:|---|
| 设定一致 | 7.0 | 8.0 | 无卡+1 | 加特朗代际:无卡写V代(对)、有卡写伪V代(错) |
| 实体保真 | 7.0 | 8.0 | 无卡+1 | 同上;boss战力标尺被有卡臂降格 |
| 要素覆盖 | 8.0 | 8.0 | 平 | 细纲5事件/10角色/3伏笔/钩子两臂全覆盖 |
| 情节忠实 | 7.0 | 8.0 | 无卡+1 | 有卡臂把赛莉丝破网前置到太空段、反水时机偏离原著时序 |
| 文风一致 | 8.0 | 7.5 | 有卡+0.5 | 评委分歧(一评平手/一评有卡更网文腔) |
| 文笔 | 8.5 | 7.0 | 有卡+1.5 | 有卡臂画面/悬念/台词更高级(老兵伏笔→"等了十七年"收线、神物结尾氛围) |
| **总分** | **45.5** | **46.5** | **无卡+1** | 评委1 46:47、评委2 45:46,两评委同向 |
- 报告:`/tmp/eval3_评委1.md`(甲=有卡)、`/tmp/eval3_评委2.md`(甲=无卡);审查:`/tmp/eval3_审查_{有卡,无卡}.md`(两稿都过细纲门,有卡臂1处中度阵营硬伤=弥萨克/佛罗科"送神物给敌方梵洛神皇",审查建议改1句、未污染评测)。
### 假阴假阳分析(关键,防单章下死结论)
- **无卡"赢"的忠实分主要是假阴**:拉分点头号是加特朗代际,而加特朗**全书仅489一章出场、被冻结、无卡可查**,两臂都在盲猜——无卡猜中V代、有卡猜偏伪V代,本质是**未卡实体上的抛硬币**,非"卡带偏设定"。剥掉这一点,忠实组回到平手、总分翻成有卡+1(靠文笔)。
- **有卡"该赢却漏"的一处**:有卡臂的阵营硬伤(弥萨克/佛罗科献宝给敌方)恰恰因为它**没去查这两人的卡+原文**——若走两条线本可避免,反证"卡在被真正检索时能挡设定错"。
- **有卡臂确有卡的增益**:文笔/文采两臂里有卡全胜(费埃卢殖装甲、杜萨卡点将、神物结尾等实体质感更足)——卡当索引指到原文细节,喂厚了描写。
- **场景类型对卡不利**:489是boss攻坚战、两个枢纽角色(加特朗/铎叔)都是新登场不可卡的——这类场景**天然对卡不友好**;卡在此都能打平并赢文采,已是不错表现。卡友好场景(老角色回归/callback/既有设定复用)大概率翻盘。
### 结论与下一步
- **写手层验收=达标**:卡当索引+两条线检索(卡检索指针→回读原文)+篇幅对齐~7000字+通读前4章,这套注入方式下卡不再拖后腿、还增文采;run2 的"卡挤掉读原文"病根已除。
- **加特朗洞直接指向设定层**:若设定层主动给"叙事关键的单章角色"立卡(加特朗=V代黑守者),有卡臂设定就对、这局就赢——**写手层的残余差距正是设定层的价值证明**,形成自底向上的接力。
- **诚实保留(n=1)**:单章、单场景类型(且是对卡不利的新角色攻坚战),**不下"卡有用/无用"的普适结论**。要站得住需多样本(5-10章×2-3本×含卡友好场景)+ 三臂控混淆(纯原文/纯卡/卡+原文)+ 内容感知冻结 + 多评委。此为可信单点,写手层可收;是否上多样本大版、或先走细纲/设定层,待创始人定。