4ccfdc68f6
判据是 status === 'generating' && !perfectPixelOperation,而 perfectPixelOperation 要到源图解析/直传完成后才写入。未登记的本地图片要走 ticket → PUT → confirm, 预算上限 90 秒;这段窗口里占位是 generating、只有 requiresLiveSession、没有账本, 判据返回 true——用户删一个免费操作会被告知「已消耗的泥点不会返还」,与「完美像素 任何状态直接删、不弹确认」的决策直接矛盾。 perfectPixelOperationId marker 从占位创建那一刻就写上(operationId === dialogId 在创建时已知),判据改看 marker。marker 的语义也因此更准确:它表示「这个占位属于 一次完美像素操作」,而不是「账本已存在」。 未采纳「删掉弹窗入口」:删除入口全仓只有 requestRemoveCanvasGenerationDialog 一条, 右键、Delete、工具栏全部汇入,完美像素没有自己的删除路径可摘。「从本链路删入口」 等价于「让判据认得出本链路」,绕不开识别问题。 未采纳新增计费字段(今天唯一生产者只有完美像素,属过度设计),也未采纳判据加 requiresLiveSession(那只是换一个代理,而用短寿命字段的存在性判断长期属性正是本 缺陷的成因模式)。 连带影响已核:会话内到期清理不受影响(看的是 perfectPixelOperation 而非 marker); 只有加载时的快照清理会豁免源准备阶段的占位,使其显示为可删的失败卡而非被静默清掉, 这与「系统不替用户删」一致。 测试夹具原本带着 perfectPixelOperation,编码了与判据相同的错误假设,结构上覆盖不到 这个窗口。夹具补上 marker 还原真实形状,并新增「只有 marker、尚无账本」用例,回退 判据后报 expected true to be false。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
项目记忆目录
本目录保存可以进入 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。