diff --git a/CLAUDE.md b/CLAUDE.md index b005add..86b4b9f 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -264,6 +264,17 @@ validation_service/ (FastAPI, 端口 8001) — 不变 **Fix 5 — 消息耗时显示**: `api_server.py` `agent_complete` 事件新增 `total_duration_ms`,`SummaryCard.vue` 显示总耗时,`chat.ts` 暴露 `lastDurationMs` + `formatDuration()` +## 已安装的 Claude Code 插件/Skills + +| 插件 | 来源 | 关键 Skill | +|------|------|-----------| +| `superpowers` | `obra/superpowers-marketplace` | `tdd-workflow`(红-绿-重构)、`verification-loop`(修复验证)、`systematic-debugging`(根因分析) | +| `example-skills` | `anthropics/skills` | `webapp-testing`(Playwright E2E 浏览器自动化)、`skill-creator` | + +**测试工作流**:需求澄清 → TDD 红-绿-重构 → `webapp-testing` 浏览器验证 → `verification-loop` 确认 → 提交。 + +**E2E 测试前置条件**:Chrome 已安装 (`C:\Program Files\Google\Chrome\Application\chrome.exe`),Playwright MCP Bridge 扩展需手动安装。 + ## 更新 (v7 — 2026-05-22) ### 会话持久化 & 多轮对话记忆修复 @@ -301,3 +312,18 @@ validation_service/ (FastAPI, 端口 8001) — 不变 原有 `status == "pass"` 条件去除:只要 `current_jrxml` 存在即设置 `user_modification_request`,确保修改意图的请求能携带完整上下文。 + +## 更新 (v8 — 2026-05-22) + +### Prompt 花括号转义修复 + +**问题**: `skeleton_generation.md` 中 `$F{field_1}` 是给 LLM 看的占位字段名指令, +但 Python `.format()` 把 `{field_1}` 当作格式化占位符,因缺少对应 kwarg 抛出 `KeyError: 'field_1'`。 +所有图片上传触发的 `generate_skeleton` 节点均因此崩溃。 + +**修复**: 3 个 prompt 文件中 6 处 `{field_N}` / `{...}` 转义为 `{{field_N}}` / `{{...}}`: +- `prompts/skeleton_generation.md` — `$F{field_1}` → `$F{{field_1}}` +- `prompts/field_mapping.md` — 4 处 +- `prompts/refine_layout.md` — 1 处 + +Python 将 `{{` 输出为字面量 `{`,LLM 看到的内容不变。