Merged
Conversation
- TC 编号冲突:test_sync_maintenance TC-SM→TC-SYN,test_scripts TC-SC→TC-SCR - DRY:_parse_frontmatter/_headings/_product_md_files 提取到 conftest.py 共享 - parse_frontmatter 使用 find() 替代 index() 防止畸形 frontmatter 崩溃 - CR_STATES 8 态确认(含可选 released),修正 docstring 和硬编码状态列表 - _run_script dead code pass→实际 assert 检查退出码 - EXPECTED_TEMPLATES 去重,引用 conftest.TEMPLATE_FILES - test_hooks.py import yaml 移到文件顶部 - SKILL_NAMES 按字母序重排 - TC-CR-05 移到正确位置(04 和 06 之间) - TC-HK-07 添加最小覆盖断言(≥3 个状态) 392 passed, 23 skipped — 全部通过,与修复前一致。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Phase 1: 触发准确性修复 - H1: pace-feedback 添加 NOT for 排除条件,消除与 pace-dev 的触发冲突 - H2: pace-learn description 移除"做什么"描述,改为触发关键词列表 - H3: pace-pulse description 移除内部数字(5 checkpoints/30+ minutes) - M6: pace-sync description 统一格式(移除外层双引号、斜杠分隔改逗号) Phase 2: 结构一致性对齐 - H4: pace-feedback 添加 context:fork + agent:pace-engineer - M1: 5 个 Skill 补齐显式 model:sonnet(pace-dev/change/retro/plan/biz) - M5: 统一 14 个 Skill 的 allowed-tools 排列顺序 Phase 3: 测试基础设施 - M2: test_plugin_loading.sh Skill 列表 13→19 - M3: validate-all.sh 新增 Tier 1.9 Hook 测试集成 Phase 4: 文件清理 - M7: verify-procedures.md → test-procedures-verify.md + 更新 8 处引用 - M8: 根目录非标准文件移入 docs/(promt.md→scratch/, principle.md→design/, model.drawio→design/) - M10: pace-role SKILL.md 添加 role-procedures-inference.md 隐式依赖备注 Phase 5: 文档补全 - M4: 补齐 5 个中文特性文档(pace-change/dev/release/review/test) Phase 6: CI 增强 - M9: validate.yml 新增 hooks job(Node.js 20) 验证:pytest 400 pass / 18 skip,model 19/19,NOT for 11/19 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
L2: pace-learn 标题补齐 / 前缀(# pace-learn → # /pace-learn)
L4: 5 个 Skill 补齐 NOT for 排除条件:
- pace-test: NOT for /pace-dev, /pace-review
- pace-release: NOT for /pace-sync, /pace-dev
- pace-retro: NOT for /pace-next, /pace-status
- pace-role: NOT for /pace-status, /pace-theory
- pace-theory: NOT for /pace-trace, /pace-dev
Bug: test_pulse_counter.mjs 断言标签与 Hook 输出不匹配
- 测试检查 devpace:pulse-reminder(旧标签)
- Hook 实际输出 devpace:write-volume(重构后标签)
- 修复:测试断言对齐 Hook 实际输出
验证:validate-all.sh 全绿(含 Hook 9/9 pass),NOT for 覆盖 16/19
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
L1: pace-biz SKILL.md 输出示例(8 个子命令模板)移入
biz-procedures-output.md,SKILL.md 193→110 行(-43%)
L7: pace-release 添加"推荐使用流程"(create→deploy→verify→close)
pace-guard 添加"推荐使用流程"(scan→monitor→resolve→trends→report)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
P0: 收窄 explore 模式阻断范围——仅阻断 state.md 直接修改和 CR
状态推进(developing/verifying/in_review),放行管理 Skill
(pace-change/pace-biz/pace-plan)的合法 .devpace/ 写入。
新增 isStateEscalation() 函数精确判断推进模式专属状态。
P1: 去除 pace-dev-scope-check 的 Gate 3 双重阻断,委托给
全局 pre-tool-use.mjs(参照 pace-review 成功模式)。
P2: 精简 post-cr-update 职责——移除 7 步管道编排和 .learn-pending
文件写入,改为单行信号引用。学习触发器简化为单行输出。
P2: 修正 advisory hook 指令性语言——sync-push merged 场景
Auto-execute → Suggest。
P3: 收紧 intent-detect 关键词——移除独立的「恢复」,增加技术
上下文过滤(git/代码操作不误触发变更管理流程)。
P3: pulse-counter 改为 async,消除 PostToolUse 中唯一的同步瓶颈。
测试:126 tests pass, 0 fail(新增 isStateEscalation 8 条单元测试 +
explore 模式 4 条场景测试 + intent-detect 2 条误触发测试)。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
将 3 个 skill 级 scope-check 脚本从 hooks/ 根目录移入 hooks/skill/, 与 14 个全局 Hook 脚本做目录分层,便于快速区分全局行为与 skill 特有行为。 变更: - git mv 3 个脚本到 hooks/skill/ - 修正 import 路径 ./lib/utils.mjs → ../lib/utils.mjs - 更新 3 个 SKILL.md 的 hook command 路径 - 新增 skill 级脚本的专用测试(exist/executable/shebang) - 更新 test_pace_init.py 和 test_pace_dev_scope_check.mjs 的路径引用 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1.1 [P1] git rm --cached __pycache__,.gitignore 已有规则 1.2 [P2] Makefile 新增 test-hooks target,make test 统一入口 1.3 [P3] validate-all.sh 删除 Tier 1.5 重复 grep 检查,pytest 为 SSOT 2.1 [P1] test_hooks.py EXPECTED_SCRIPTS_MJS 补充 post-schema-check.mjs 2.2 [P2] TC-HK-13 补充 pace-init Skill 级 Hook 验证 2.3 [P2] 新增 TC-HK-17 hooks.json→文件系统交叉验证 3.1 [P2] pace-init-scope-check.mjs 复用 isDevpaceFile() 共享函数 3.2 [P3] 分层输出约定提取到 output-guide.md(SSOT),去除跨 Skill 重复 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1. pre-tool-use: 移除 existsSync 条件,新建 CR 设置 developing 也会被拦截 2. intent-detect: 格式化? → 格式化,避免"格式变了"误判为技术上下文 3. pulse-counter: 新增 stale CR 条目清理,防止 .pulse-cr-writes 膨胀 4. session-start: 删除 .learn-pending 死代码路径(post-cr-update 已不写入) 5. subagent-stop: 合并重复 node:fs 导入 6. pre-compact: 增加空文件路径防护 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- .githooks/pre-commit: 本地提交前运行 layer-check + lint - Makefile: 添加 setup-hooks target,layer-check 排除 *-workspace 目录 - CI: 同步排除 *-workspace 假阳性 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- §14 可选功能 → rules/devpace-rules-optional.md (34 行) - §16 同步管理 → rules/devpace-rules-sync.md (44 行) - 主文件 580→531 行 (-8.4%),条件生效规则仅在需要时由 rules/ 自动发现加载 - validate-all.sh token budget 检查适配新结构 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… 注入量" This reverts commit 09a0717.
检测 docs/features/ 下每个英文 pace-*.md 是否有对应 _zh.md 翻译文件。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- TC-CR-12: 通用孤儿 procedures 检测(反向引用检查,兼容缩写路由) - TC-CR-13: pace-dev 路由表覆盖核心 CR 状态 - TC-CR-14: pace-change 路由表子命令→procedures 文件存在 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- TC-SYN-11: signal-priority.md 引用的消费方 Skill 全部存在 - TC-SYN-12: cr-format.md 引用的 procedures 文件全部存在 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
skill-creator 是 Claude Code Plugin,无法在裸终端调用。 添加 REQUIRE_SKILL_CREATOR 宏,在 eval-trigger/eval-trigger-one/eval-behavior 执行前检查可用性,报错时提示用户在 Claude Code 会话中运行。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
优先级:skill-creator CLI > claude -p 包装 > 报错提示。 裸终端有 claude CLI 时可直接 make eval-trigger,无需进入 Claude Code 会话。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
产品层脚本移入各 Skill 目录实现自包含(${CLAUDE_SKILL_DIR}),
共享依赖 extract-cr-metadata.mjs 放入 skills/scripts/。
开发层脚本移入 dev-scripts/。
变更:
- 5 个 Skill 专有脚本 → skills/<skill>/scripts/
- 1 个共享脚本 → skills/scripts/
- 5 个开发脚本 → dev-scripts/
- 更新所有引用路径(procedures、knowledge、tests、Makefile 等)
- 428 静态测试 + 23 脚本测试全部通过
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
上一次重构遗漏的文档引用修复。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
High 级修复: - security-scan.mjs: execSync → execFileSync 消除命令注入(H1) - infer-version-bump.mjs: 子进程失败时输出 JSON 错误对象(H2) - infer-version-bump.mjs: 参数解析跳过 --flag 前缀(H3) Medium 级修复: - 三个脚本统一 fileURLToPath() 替代 .pathname(M1) - collect-signals.mjs: manualScanCrs fallback 补充 events 解析(M2) - compute-metrics.mjs: 子进程失败时输出 warning 到 stderr(M3) - security-scan.mjs: 移除不相关的 HEAD~5 fallback(M4) 测试补充(23→36): - 4 个横切面测试(脚本存在性、路径一致性、命令注入防护) - 7 个业务逻辑测试(major/patch bump、5 个 OWASP 规则覆盖) - 2 个 H2/H3 回归测试 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Low 级修复:
- L1: extract-cr-metadata 单文件读取添加 try/catch,坏文件不再导致全部失败
- L2: 全量正则 \d{3} → \d{3,},支持 CR/PF/BR-1000+ 编号
(涉及 extract-cr-metadata / validate-schema / collect-signals 三个脚本)
- L3: SIGNAL_GROUP_MAP 补充 S23 reserved 注释
- L4: security-scan path traversal 正则收窄,仅在文件操作上下文中匹配
- L5: infer-version-bump 项目根目录查找改为向上搜索 .git
- L6: bumpVersion 支持 pre-release 版本号(剥离 -suffix 后 bump)
新增测试(36→46):
- SCR-33/34/35: OWASP A05 default credentials、A03 template injection、A07 plaintext password
- SCR-36/37/38: extract-cr-metadata --no-release 过滤、breaking 检测、坏文件容错
- SCR-39/40/41/42: collect-signals S1/S2/S5/S25 高优先级信号覆盖
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Makefile: - 新增 init(一键环境搭建)、check(快速本地验证)、test-static(仅 pytest) - help 输出按 Development/Testing/Quality/Release/Eval 分组 - release-check 追加 eval-stale 健康检查 - clean 追加 skills/*-workspace/ 清理 - plugin-load 增加 claude CLI 存在性检查 release.yml: - 修复 scripts/ → dev-scripts/ 路径(extract-changelog.py) - layer-check 补充 --exclude-dir='*-workspace' 与 Makefile/validate.yml 对齐 CONTRIBUTING.md / CONTRIBUTING_zh.md: - Step 5 更新为 make init && make check Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
claude CLI wrapper 中 $* 不能正确处理含空格的参数, 改为逐个引用拼接确保参数完整性。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- utils.mjs: readCrState/getLastEvent/updateSyncStateCache 支持传入已读内容 - post-cr-update: 单次读取 CR 文件,复用于 state + event 检查 - pre-tool-use: 合并两段独立的 CR 状态检查为单次读取 - subagent-stop: 用 Map 缓存 CR 状态,避免 Check 3 重复扫描 - sync-push: 单次读取 CR 文件,复用于 state + link 检查 - post-schema-check: 用 fileURLToPath 替代 URL.pathname(跨平台兼容) - pre-compact: 移除冗余条件判断 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
删除 docs/brand/devpace-one-pager.md 和 .pptx, 内容已迁移至其他文档。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 在 utils.mjs 导出 CR_STATES 常量对象,替代散落在 6 个文件 20+ 处的 硬编码状态字符串(developing/verifying/in_review/merged 等) - isAdvanceMode() 增加可选 content 参数,subagent-stop.mjs 复用已读 state.md 内容,消除重复的内联正则 - readCrState() 注释添加 shell 等价物交叉引用,降低格式变更时的遗漏风险 - pulse-counter.mjs 卡死检测从每次 CR 写入节流到每 3 次,减少 67% I/O - post-cr-update.mjs gate 编号提取改用精确匹配(=== 替代 includes) - subagent-stop.mjs 添加注释说明为何只有 pace-engineer 触发 Gate 检查 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- conftest.py: 添加 SKILLS_ROOT/SCHEMA_DIR/TEMPLATE_DIR/RULES_FILE 共享常量, 删除 6 个无消费者的 pytest fixtures - Python 5 文件: 移除本地路径重复定义,统一从 conftest 导入 - test_hooks.py: 提取 _load_hooks_json(),内联 frontmatter 改用 parse_frontmatter() - test_plugin_json_sync.py: 提取 _load_plugin_json() - 新建 tests/hooks/_test-helpers.mjs: 共享 runHook/createTmpProject/cleanupDir/ writeCr/writeState/resolveHookScript - 9 个 mjs 测试文件迁移至共享 helpers,保留本地 runHook wrapper 净减 ~227 行重复代码,所有 559 测试行为不变。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
新增 §11 Single Responsibility(IA-11),与 IA-2(抽象分层)和 IA-4(信息分类)互补,提供"何时需要分拆"的判断元标准:当文件 内容有多个独立变更原因时应分拆。同步更新 §0 速查表和 CLAUDE.md 索引。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
8 项变更遵循 IA 原则压缩 always-loaded 上下文:
- §0: Mermaid→纯文本、删文件内重复速查表、压缩级联速查
- §3: 反向反馈外部化至 cascade-procedures.md §8.10
- §4: 去测试文件名硬编码、合并 plugin-dev 验证、
RED-GREEN-REFACTOR 外部化至 skill-content-check.md
- §7: 收紧恢复步骤引用 §6 格式
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
将 info-architecture.md(227 行)按职责分拆为三层: - references/common-ia.md:11 项通用 IA 原则 + 约束分级标记(可跨项目复用) - references/project-structure.md:六层架构 + 信息类型映射(devpace 专有) - rules/info-architecture.md:devpace 适配规则(197 行,plugin-dev-spec 引用 5→1) 依赖方向:common-ia ⊥ project-structure,info-architecture → 两者 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
明确文件范围为 Plugin 信息分层模型,同步更新 info-architecture.md 3 处引用。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
去掉模糊的 common 前缀,与 plugin-info-layers.md 形成语义配对。 同步更新 info-architecture.md(2 处)和 CLAUDE.md(1 处)引用。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
6 条同步链路是低频查找表,移至按需加载的 references 文件。 CLAUDE.md 保留一行引用作为触发提醒,减少 7 行始终加载内容。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
新文件回答"新文件放在哪":§0 速查卡片(目录映射/配置索引/禁止事项)、 §1-§2 产品层与开发层目录树、§3 放置决策树、§4 跨文档引用。 CLAUDE.md 开发规范索引表首行新增条目。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
更准确表达 IA-3 的核心:不是所有高频变更都需要分离, 而是被多处引用(高扇入)的文件需要通过隔离易变内容来保持稳定。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- §0 配置文件速查:5 行表格压缩为 2 行文本 - §0 禁止事项:去除 CLAUDE.md 分层约束重述,改为引用(IA-6) - §1/§2 目录树:去除与 §0 映射表重复的注释,仅保留嵌套结构 - §2 目录树:消除非标 `|` 记法,每目录独立一行 - §3 决策树:恢复纵向布局,修复横排压缩导致的解析困难(IA-9) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- 删除与职责描述重复的正文介绍段(L5) - Plugin 结构树去除与 §0 映射表重复的注释 - 删除"关键规则"文本段(与 §0 Plugin 目录规则表完全重复,IA-6) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
借鉴 OpenAI Harness Engineering 的 "remediation instructions" 理念, 将 12 条 Hook 消息从声明式约束改为指令式 ACTION 格式: - pre-tool-use.mjs: 5 条(探索模式阻断、Gate 3 阻断、Gate 1/2/3 提醒) - post-schema-check.mjs: 1 条(增加 schemaMap 动态映射 + Schema 路径提示) - post-cr-update.mjs: 3 条(去掉 §11 引用,内联 post-merge 步骤) - intent-detect.mjs: 1 条(去掉 §9 引用,指向 /pace-change) - post-tool-failure.mjs: 2 条(具体 git 命令替代模糊建议) 同步更新测试断言以匹配新消息格式。 新增 Harness Engineering 调研文档 docs/research/。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
借鉴 Harness Engineering "corrections are cheaper than waiting" 理念, S 复杂度 CR 执行裁剪版 Gate 1: - 命令检查:按 sensitivity 字段与变更文件交集判断,无交集则跳过 - 内置需求完整性:精简为单行判定(有标题+验收条件即通过) - 安全保障:无 sensitivity 的检查默认执行、hotfix 不裁剪、Gate 2 不裁剪 - 跳过项可见:标记为 ⏭️ 裁剪,人类审批时可审计 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- eval-runner.sh 从 dev-scripts/ 迁至 eval/(行为 eval 引用更新) - 新增 eval/shim.py:trigger eval 的 Python 封装(runs/timeout/smoke 参数化) - 新增 eval/apply.py:description 优化的 diff/apply 工具 - Makefile 新增 target:trigger-smoke/deep、fix/fix-diff/fix-apply、 regress、baseline-save/diff/save-all - .gitignore 添加 eval 结果目录排除 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
在现有"研发节奏管理器"定位基础上,补充 Harness Engineering 视角: - vision.md: 一句话概述段末追加 harness 定位描述 - README.md: tagline 下方追加英文 harness 副标题 - README_zh.md: 同步中文版 定位为"追加补充"而非替换——devpace 覆盖价值链追溯等 harness 概念未涉及的领域,用"从 X 视角看"措辞避免过度宣称。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
借鉴 Harness Engineering Garbage Collection 理念,新增 3 项周期性扫描: - 文档陈旧度:project.md/context.md/workflow.md 超 30 天未更新 - Schema 结构漂移:最近 CR 缺失必含章节(ID/状态/意图/事件) - 孤立 CR 检测:developing/verifying 状态超 7 天未推进 设计约束:会话开始时执行、独立 1 条/会话配额、model:haiku 轻量执行。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
在 project-format.md 的自主级别 Schema 中新增能力边界矩阵, 将辅助/标准/自主三级从 1 行描述细化为 10 个能力维度的确定性行为定义: Gate 失败处理、简化审批阈值、执行计划生成、意图检查点确认、 sync 创建、pace-next 引导、变更管理确认、checkpoint 通知等。 Claude 读取自主级别后可确定性判断"当前级别下该不该做", 无需从模糊描述中推断。三级名称和 project.md 字段格式不变。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
借鉴 Harness Engineering "treat struggle as signal" 理念, 新增第 4 个 pace-learn 自动触发源 struggle(挣扎信号): - 触发条件:Gate 自修复 >=3 次 / CR 写入 >=5 次状态未变 / 对抗审查 >=3 问题 - 提取方向:不提取"代码怎么改",提取"哪个 Skill/procedure/Schema 需要改进" - pattern 类型:harness-improvement(独立于现有模式/防御/改进/偏好) - 延迟提取:仅在 CR merged 后回顾性提取,不干扰进行中的工作 - pulse-counter stuck-warning 追加 struggle-signal 标记 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
调查发现 trigger eval 正面用例 0% 通过率的完整因果链: 1. 空 name: → 畸形命令名 → 注入 name: 修复 2. cd sc_root → 错误 project_root → PYTHONPATH 修复 3. 全局 plugin 竞争 → disable --all 修复 4. MCP 初始化 36s > 默认 timeout 30s → timeout=90s 5. 默认权限模式阻断工具调用 → --dangerously-skip-permissions 6. Claude 优先调非 Skill 工具 → --allowedTools "Skill" 7. 用户 CLAUDE.md 中 SuperClaude 框架劫持路由 → 临时隔离 已知限制(上游):run_eval.py:141 对首个非 Skill tool_use 立即 return False,而 ToolSearch/Glob/Bash 等内置工具不受 --allowedTools 控制且总是先于 Skill 触发。需上游修复检测逻辑。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
记录 7 层叠加根因的完整调查过程、关键调试时刻、 经验教训(递归调试成本、可观测性优先、环境隔离完整性) 及后续行动项。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Harness Engineering 调研 P2 #8:pace-test L1+ 浏览器验收与 Gate 流程打通。 已有 L1+ procedures 设计,需打通 init-checks 建议 + verify 证据标记 + Gate 2 引用。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
重写 shim.py trigger 检测: - 不再委托 run_eval.py(其 line 141 对非 Skill 工具 early-exit) - 自建 _run_single_query:Popen+select 解析 stream-json, 扫描所有 turn 的所有 tool_use 寻找 Skill(skill_name) 匹配 - 移除环境隔离代码(plugin disable/CLAUDE.md 隐藏), 改为在真实环境中检测真实 skill 触发 确认平台限制:`claude -p` 单轮无状态,不复现交互模式的 skill 自动路由管线。trigger eval 需要交互模式 API(待上游)。 更新复盘文档追加最终根因分析。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- shim.py: subprocess + stream-json → claude_agent_sdk.query() + ToolUseBlock
- 正面触发率从 0% 提升至 ~67%(SDK 运行完整 agent loop)
- 并发模型从 ProcessPoolExecutor → asyncio.Semaphore + gather
- os.environ.pop("CLAUDECODE") 防止嵌套会话错误
- async generator drain 避免 anyio cancel scope 异常
- shim.py loop: 自建优化循环替代 skill-creator 委托
- eval: 复用 SDK _run_eval_set()(可工作)
- generation: claude -p 生成改进 description(纯文本无触发问题)
- 临时替换 SKILL.md + try/finally 安全恢复
- 输出格式兼容 apply.py(loop/results.json + best-description.txt)
- 删除 find_sc_scripts_root() / patch_skill_md()(skill-creator 死代码)
- shim.py: from __future__ import annotations(Python 3.9 兼容)
- Makefile: 所有 eval-trigger-* target 支持 MODEL=<id> 参数
- requirements-dev.txt: 添加 claude-agent-sdk>=0.1.44
- eval/_gate_sdk.py: SDK 快速 gate 验证脚本(3 查询)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
SDK 要求 Python >=3.10,CI 矩阵含 3.9。添加 pip 环境标记 避免 3.9 上 pip install 失败(静态测试不导入 shim.py,无影响)。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
shim.py 617 行单文件拆分为 10 个模块的 Python 包: - skill_io: SKILL.md 读写(修复 quote-stripping bug) - results: 结果持久化 + P1.4 元数据(model/sdk/env/duration) - baseline: 基线管理 - trigger: SDK 触发检测(P2.1 max_turns=5, P2.2 结构化匹配, P2.3 Wilson CI) - regress: 多维回归检测(P3.1 四指标 + P3.2 git diff 变更检测) - improve: Anthropic API description 生成(P1.2 替代 claude -p) - loop: 优化循环 + train/test 分割(P1.3 holdout=0.3 防过拟合) - cli: 统一 CLI 入口(python3 -m eval) Makefile 新增 eval-trigger-changed、eval-regress-offline targets。 CI 新增 eval-regress(零成本离线)和 eval-live(手动 dispatch)jobs。 29 个 eval 模块单元测试,全量 462 静态测试通过。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
覆盖架构、命令参考、端到端工作流、CI 集成、数据格式、参数速查和故障排除。 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Test plan
bash dev-scripts/validate-all.sh全部通过(480 项静态测试 + 集成测试 + lint + hook 测试)🤖 Generated with Claude Code