Files
Genarrative/docs/project-memory
lhk229 515682d571 修复账本寿命短于标记寿命导致的成功误判与孤儿失效
阶段 3 引入的判据「布局里有 perfectPixelOperationId、本机没有账本 ⇒ 无效」
按构造就是错的:标记写进布局后寿命无限(服务端完成 completion 只做字段级
改写,从不摘标记),账本寿命却很短(收口即清、75 秒对账窗口、7 天保留期、
换设备即无)。账本消失是正常终态,不是异常。

同一个不对称造成两个缺陷:

一、每一次成功都被判成失败。settle 时先清账本、紧接着用真实 hydrate 重新
套用权威快照,成功结果被判成 failed + perfectPixelOperationInvalid;该状态
还会被下一次自动保存写回服务端,覆盖正确的 idle,且标记一旦落库就能单独
强制 failed,自我固化。历史上早已完成的占位在标记化改写后同样中招。

二、孤儿账本对账在唯一目标场景下失效。它的场景是「关掉浏览器、稍后重开」,
重开必然晚于 75 秒,而分支按 reconcileUntil 短路,等于永不生效,条目还会在
本机躺满保留期反复被跳过。

修复:凡是「缺账本 ⇒ 无效」的判据一律先排除收口态(复用既有的
isUnresolvedCanvasGenerationDialogRecord 取反)。收口态无条件忽略已落库的
无效标记与残留错误文案、强制归位 idle,让被写脏的行自愈;写边界同步收窄,
收口后不再输出标记,让标记寿命与账本对齐。

孤儿不按 reconcileUntil 短路,改走新增的 readPerfectPixelOrphanVerdict——
一次确定性的读,不轮询。dialog-missing 提示结果只进素材库;applied 静默
刷新(本次读到的就是权威状态,结果本就在眼前);未落库完全静默。三者都清
账本,读失败不清。

测试缺口的根因:工作流里所有 applied 用例的 applyProjectSnapshot 都是空桩,
跨 hook 协作从未被跑过;共享 fixture 也没还原服务端真实保留的标记。补了一条
把 verdict.project 真正喂进 splitCanvasLayoutItems 的集成用例,回退修复后它
报 expected 'failed' to be 'idle'。

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-05 07:45:23 +00:00
..
2026-07-15 04:20:29 +08:00

项目记忆目录

本目录保存可以进入 Git 的项目级长期知识,供开发者和 Agent 读取。.hermes/ 只保留 Hermes 工具专用资源,不再作为项目知识库。

目录结构

docs/project-memory/
├─ README.md
├─ shared-memory/
│  ├─ project-overview.md
│  ├─ team-conventions.md
│  ├─ development-workflow.md
│  ├─ document-map.md
│  ├─ decision-log.md
│  ├─ pitfalls.md
│  └─ handoff-template.md
├─ plans/
└─ todos/

使用原则

  • 开发前先读 AGENTS.md;复杂任务继续读取 docs/【协作规范】Agent工作入口与执行准则-2026-06-22.md,再按任务读取 docs/project-memory/shared-memory/ 和当前 docs/ 文档。
  • 长期有效的架构约定、接口变化、排障经验、开发流程和协作规则写入 shared-memory/
  • 阶段性计划写入 plans/,已确定但暂未实施的共享 TODO 写入 todos/
  • 如果本目录内容与代码或最新 docs/ 冲突,以代码和最新 docs/ 为准,并同步修正过期记忆。
  • 禁止写入个人配置、API Key、Token、Cookie、会话记录、认证文件、本地私密路径、构建产物、日志、缓存和数据库 dump。

RAG 索引

本目录是 Agent 本地 RAG 的高权重索引源。RAG 主要用于 Agent 检索上下文,不替代人工阅读入口或正式文档地图。索引脚本位于 scripts/rag/,本地生成的 .rag/ 数据不提交 Git。