下一阶段:Phase 7–9 验证驱动开发计划。
M7.0 新增外部仓库工作区、CMake/clangd 工具和候选/oracle 分离的容器评测;
命令、执行边界与验收见 M7.0 使用说明。
M7.1 新增可选结构化修复轨迹:记录源码身份、
操作和开发验证,为前移至 M8 的验证技能库准备证据;技能提炼与 SFT/RLVR 尚未实现。
M7.1 四组公平消融运行器支持独立能力策略、统一失败分类、
预算约束和真实 C++ scripted smoke;入口为 scripts/run_ablation.py。
2026-10-29 首轮真实模型四组结果:当前 deepseek-chat
别名实际返回 deepseek-flash;补齐校准阻断后四组均 8/8,总 token 为基础组的
1.00× / 1.21× / 2.11× / 2.56×。公开小题出现天花板效应,尚未证明专业能力的成功率增益。
后续 17 题适配与独立开发/保留输入已接入原生退出码证据、
双侧校准与固定版本依赖检查;使用 --suite professional --split independent,
离线与 smoke 验收状态见该文档,尚未运行这套新协议的真实模型实验。
An autonomous, simulation-in-the-loop software engineering agent for robotics. Built with LangGraph to debug and verify embodied AI algorithms.
设计哲学:把 LangGraph 显式状态机(可视、可中断、可恢复)与 Princeton SWE-agent 的 Agent-Computer Interface 思想(为 LLM 量身设计的工具集,而非裸 shell)结合起来,做一个能自主排障机器人物理算法仓库的 Agent。
┌──────────────────────┐
START → planner → │ should_continue? │
↑ │ - has tool_calls → "tools"
│ │ - else → END
│ │ - loop_step >= max → END (熔断)
│ └──────────────────────┘
│ │ "tools"
└─────── tools (ToolNode) ◀───────────┘
planner 是绑定了 5 个工具的 LLM 节点,每次输出可能含 tool_calls 的 AIMessage;
ToolNode 自动派发到对应工具、把返回写回 ToolMessage;
条件边 should_continue 根据"是否还有 tool_calls"和"loop_step 是否超额"决定继续还是结束。
| 工具 | 作用 |
|---|---|
list_dir(path, max_depth) |
浏览目录结构 |
read_file_chunk(path, offset, limit) |
分页读文件,返回带行号 |
grep_codebase(pattern, glob, max_results) |
正则搜索仓库 |
execute_python(code, timeout) |
subprocess 沙盒中跑 Python,复现 bug / 验证修复 |
write_patch(path, old_string, new_string) |
精确字符串替换(要求唯一匹配) |
✅ Phase 2.5 已支持双后端:
execute_python可通过EXECUTOR_BACKENDenv 切换local(subprocess)或e2b(E2B Code Interpreter 云沙盒,Firecracker microVM 真隔离)。
tests/fixtures/buggy_ik_template.py—— 含 4 个 bug 的 2-link IK 函数,永不修改(题面源头)。tests/fixtures/_buggy_ik_workspace.py—— 每次 demo / E2E 测试启动时从 template 复制出的副本,agent 在这上面动手。
支持 Claude 3.5 Sonnet / GPT-4o-mini / DeepSeek-Chat,通过 MODEL_PROVIDER 环境变量切换,零代码改动。
execute_python 工具支持两种 sandbox,由 EXECUTOR_BACKEND 切换:
| 维度 | local |
e2b |
|---|---|---|
| 隔离强度 | cwd + tempdir,LLM 仍可读本机其它文件 | Firecracker microVM,真隔离 |
| 启动开销 | ~0.5s | ~3-5s(云端冷启动) |
| 需要凭据 | 无 | E2B_API_KEY |
| 项目源码可用性 | PYTHONPATH 注入 | 自动上传 src/+tests/+benchmarks/ 文件 |
| 第三方依赖 | 复用当前 venv | 需 E2B 镜像预装或由执行代码安装 |
| 适合场景 | 学习/快速迭代 | 生产/不可信代码 |
- 安装 sandbox 依赖:
uv sync --extra dev --extra sandbox - 去 e2b.dev 注册账号、申请 API key(新用户有免费配额)
- 在
.env设置:EXECUTOR_BACKEND=e2b E2B_API_KEY=<your key> - 跑 demo 时切回 local 不需要改代码,只改 env:
EXECUTOR_BACKEND=local
需要 Python 3.11+ 和 uv。
uv venv
uv sync --extra dev
uv pip install -e .国内网络不畅可加
--index-url https://pypi.tuna.tsinghua.edu.cn/simple。
cp .env.example .env
# 编辑 .env, 填入对应 provider 的 API key
⚠️ 重要:.env必须是纯 ASCII。langgraph dev底层用的 python-dotenv 在 Windows 上默认按 GBK 编码读.env,遇到 UTF-8 中文/em-dash 会直接崩。所以注释也请用英文或 ASCII 符号。
# 默认任务: 修复 buggy_ik workspace (启动时自动从 template 重置)
uv run python scripts/run_demo.py
# --stream 模式: 逐节点 print, 实时看 agent 思考过程 (强烈推荐)
uv run python scripts/run_demo.py --stream
# 自定义任务
uv run python scripts/run_demo.py "请用 grep_codebase 找出所有 TODO 注释并列举"切换 provider:
# Windows PowerShell
$env:MODEL_PROVIDER="openai"; uv run python scripts/run_demo.py
# bash
MODEL_PROVIDER=openai uv run python scripts/run_demo.py# 离线验收:不消耗 LLM/E2B API 额度,也是 CI 默认执行项
uv run pytest -q -m "not e2e"
# 完整测试:配置好当前模型和 E2B 凭据后执行
uv run pytest -v带 e2e marker 的测试会真实调用 LLM 或 E2B;缺少对应 key/依赖时自动跳过。
# 查看首批案例,不调用 LLM
uv run python scripts/run_benchmark.py --list
# 确认所有原始 fixture 都会被验证器判为失败,不调用 LLM
uv run python scripts/run_benchmark.py --validate-fixtures
# M1.0 单次通用策略基线(便于与已有报告对比)
uv run python scripts/run_benchmark.py --case angle_units --strategy general --repair-attempts 0 --max-loops 12
# M1.1 聚焦策略:直读目标、强制官方验证,失败后反馈修复一次
uv run python scripts/run_benchmark.py --case quaternion_normalization --strategy focused --repair-attempts 1 --max-loops 6
# M1.2 可选覆盖工具预算;不传时按 easy=5、medium=7、hard=9 自动分配
uv run python scripts/run_benchmark.py --case angle_units --strategy focused --tool-budget 5 --max-loops 6
# 稳定性评估:每题从原始 fixture 独立运行 3 次
uv run python scripts/run_benchmark.py --repeats 3 --strategy focused --repair-attempts 1 --max-loops 8 --task-timeout 300每次运行都会从 benchmarks/fixtures/ 重置一次性 workspace,并把成功率、耗时、
循环数、工具调用数和模型 token 写入 benchmarks/results/<run-id>/report.json。
M1.1 报告还记录每次尝试的官方 validator 调用合规率、模型宣称成功但独立验证失败的
false positive、反馈修复次数,以及多次运行的逐题成功率和平均成本。
长任务会实时输出题目、尝试次数、耗时和结果。每完成一题都会立即写入
cases/repeat-<N>__<case-id>.json 并原子更新 checkpoint.json;即使按 Ctrl+C
中断,已完成结果仍会保留。--task-timeout 是每次 Agent 尝试的硬超时(默认 300 秒),
超时子进程会被终止并计入报告;传 --task-timeout 0 可关闭超时。
M1.2 在 graph 路由层加入官方 validator gate:Focused Agent 若准备结束但没有成功的
官方验证证据,框架会自动执行验证;失败则把确定性证据送回修复循环。Focused 模式只
暴露 read_file_chunk / write_patch / execute_python,并压缩旧工具轮次,减少无关探索
和重复上下文。schema v4 报告增加逐题 tool_budget、within_tool_budget 与总体预算合规率。
uv run langgraph dev浏览器会自动打开 Studio,可以单步观察 planner → reader → suggester 的状态流转,是学习状态机理念最直观的方式。
⚠️ Windows 中文环境必看:Python 在中文 Windows 上默认open()编码是 GBK,会导致很多第三方库读自带的资源文件(如 OpenAPI schema)时崩溃。一次性根治办法:把 Python UTF-8 模式设为系统默认。# 永久设置 (PowerShell 管理员或普通模式均可, 用户级) [System.Environment]::SetEnvironmentVariable('PYTHONUTF8', '1', 'User') # 关闭并重开 PowerShell 窗口后生效这个变量是 PEP 540 标准, 安全且向后兼容, 强烈建议所有中文 Windows 用户长期开启。
安装 ChromaDB,同时保留开发和 E2B extras:
uv sync --extra dev --extra sandbox --extra rag建立或增量刷新源码索引(默认只索引 src/,避免测试和故障 fixture 污染结果):
uv run python scripts/index_codebase.py
# 同步后立即检查一次检索
uv run python scripts/index_codebase.py \
--query "official validator gate benchmark completion" \
--top-k 5
# 需要时显式加入其它源码根
uv run python scripts/index_codebase.py --root src --root examplesPhase 3.0 使用 AST 按模块、函数、类和方法切块,保存路径、符号、行号和内容哈希;
重复执行只更新变化 chunk,并删除已消失 chunk。默认 hashing embedding 完全本地运行,
无需下载模型或配置额外 API Key,向量持久化在被 Git 忽略的 chroma_db/。
通用 Agent 新增 search_code_knowledge 工具:目标未知、自然语言概念匹配或跨文件定位时
使用语义检索;精确字符串仍优先 grep_codebase,已知文件直接 read_file_chunk。
M1.2 focused benchmark 不暴露 RAG 工具,因此原有成本基线不会被改变。
RAG 质量使用固定查询集 benchmarks/rag_cases.json 做确定性离线评测,不调用 LLM。
评测会自动增量同步索引,实时显示每条查询的首个相关结果排名,并将逐题结果和汇总报告
写入 benchmarks/rag_results/<run-id>/:
uv run python scripts/run_rag_eval.py
# 查看案例或只运行部分查询
uv run python scripts/run_rag_eval.py --list
uv run python scripts/run_rag_eval.py --case official_validator_gate --top-k 1 --top-k 5
# 用同一查询集比较向量与混合检索
uv run python scripts/run_rag_eval.py --strategy vector
uv run python scripts/run_rag_eval.py --strategy hybrid
# 已确认索引是最新时跳过同步
uv run python scripts/run_rag_eval.py --no-sync报告包含 Hit Rate@K、Recall@K、MRR@K、目标文件命中率、目标符号命中率和平均查询延迟。
这些指标将作为后续混合检索、Embedding 替换和 Semantic Cache 的回归基线。
当前 10 条固定查询的向量基线为 Hit@1 50%、Hit@3 80%、Hit@5 90%、MRR@5 0.670;
Phase 3.1b 混合检索将其提升到 Hit@1 80%、Hit@3/5 100%、MRR@5 0.883,并将此前
Top-5 漏召回的 semantic_search_tool 提升到第 3 位。当前索引规模下,混合检索平均约
41 ms(包含安全的 revision 核对),仍远低于一次 LLM 调用。
实际 Agent 的重复源码检索使用进程内 LRU Cache,默认最多保存 128 个结果。缓存键包含
标准化查询、top_k、路径前缀、检索策略和源码索引 revision。每次查询都会核对 Chroma
中的 chunk 内容哈希;本进程或其它进程刷新索引后,旧结果会自动清空,不会返回过期代码。
缓存记录 hit、miss、bypass、invalidation、eviction、命中率和估算节省延迟。可通过重复 查询检查行为:
uv run python scripts/index_codebase.py \
--query "official validator gate" \
--repeat-query 3RAG 质量评测始终显式绕过缓存,并在报告中写入 retrieval_cache_enabled: false,因此
Phase 3.1/3.1b 的召回率和延迟基线不会被缓存命中污染。此缓存只保存确定性的只读检索结果,
不缓存补丁、工具执行、validator 或 LLM 回答。
安装 SQLite Checkpointer,同时保留其它开发能力:
uv sync --extra dev --extra sandbox --extra rag --extra checkpoint启动带持久 checkpoint 的普通 Agent。--hitl 会在每个 write_patch 前暂停;读取、检索
和沙盒执行仍自动进行。命令会输出稳定的 thread_id:
uv run python scripts/run_agent.py \
"分析并修复 src/control.py 中的控制器问题" \
--thread-id control-fix-01 \
--hitl --stream暂停后,文件尚未修改。可以关闭当前进程,检查提议后再从 SQLite 恢复:
# 查看 checkpoint、下一节点和待审批 patch
uv run python scripts/run_agent.py --thread-id control-fix-01 --status
# 批准并继续执行 write_patch
uv run python scripts/run_agent.py --thread-id control-fix-01 --resume approve
# 或拒绝,并把反馈交回 Planner
uv run python scripts/run_agent.py --thread-id control-fix-01 \
--resume deny --feedback "不要改变公开函数签名"
# 从非 HITL 的普通待执行 checkpoint 继续
uv run python scripts/run_agent.py --thread-id control-fix-01 --continue默认数据库位于 .agent_state/checkpoints.sqlite,可用 --checkpoint-db 覆盖,但路径仍须
位于项目目录内。M1 Benchmark 明确绕过 HITL,避免无人值守评测被审批暂停。旧的
scripts/run_demo.py 继续作为无持久化教学 Demo,持久任务统一使用 scripts/run_agent.py。
Semantic Cache 只对显式只读会话开放。--read-only 会移除 execute_python 和
write_patch,只保留目录浏览、源码读取、grep 与 RAG;--semantic-cache 在此基础上缓存
最终纯文本回答。普通修复任务、Benchmark、工具调用、补丁和执行结果不会进入缓存。
# 首次运行:正常调用 LLM,最终回答写入缓存
uv run python scripts/run_agent.py \
"解释 official validator gate 如何阻止假阳性" \
--thread-id explain-gate-01 --read-only --semantic-cache
# 新会话中的相同或近重复问题可命中缓存
uv run python scripts/run_agent.py \
"解释 official validator gate 如何阻止假阳性?" \
--thread-id explain-gate-02 --read-only --semantic-cache默认缓存位于 .agent_state/semantic_cache.sqlite,相似度阈值 0.97、TTL 7 天、最多 512 条。
缓存分区同时包含工作区内容指纹、模型标识、System Prompt 和只读工具 schema。源码、配置、
Prompt、模型或工具契约变化后不会复用旧回答。工作区指纹忽略 .git、虚拟环境、Chroma、
benchmark 结果和 .agent_state 等生成内容,避免缓存自身导致无意义失效。
这是回答级缓存而不是 Agent 轨迹缓存:命中时只返回以前的最终文本,绝不重放工具调用。
当前默认使用完全离线的确定性 Hashing Embedding,并刻意采用高阈值,只复用相同或近重复
问题,不承诺命中大幅改写的同义问法。环境变量 SEMANTIC_CACHE_DB 可以覆盖数据库位置,
但仍限制在项目目录内。
安装无头 MuJoCo 仿真依赖:
uv sync --extra dev --extra checkpoint --extra simulation首个真实动力学任务是单关节 PD 跟踪。Validator 在两个不同初始状态下跟踪正、负目标, 同时检查最终误差、尾段 RMSE、最终速度、稳定时间、最大关节偏移、数值有限性,以及控制器 自身是否遵守 8 N·m 扭矩限制。MuJoCo 执行器的物理限幅不能替代控制器内部限幅。
不调用 LLM 即可查看原始故障轨迹:
uv run python scripts/run_simulation.py
# 确认所有仿真题面都按设计失败
uv run python scripts/run_benchmark.py \
--manifest benchmarks/sim_cases.json \
--validate-fixtures运行 Agent 修复闭环任务:
uv run python scripts/run_benchmark.py \
--manifest benchmarks/sim_cases.json \
--case sim_joint_pd_tracking \
--strategy focused --repair-attempts 1 \
--max-loops 10 --task-timeout 180Phase 5 当前只支持 EXECUTOR_BACKEND=local。E2B 公共镜像未保证包含 MuJoCo;在没有自定义
沙盒镜像前,不应把 E2B 结果与本地仿真基线混合统计。仿真完全无 GUI、固定 timestep,
相同控制器的指标可逐值复现。
第二个闭环任务扩展到平面 2-DOF 机械臂。目标不是只判断最终姿态,而是在两条平滑时变轨迹上 同时验证:
- 全程轨迹 RMSE、尾段 RMSE、最终最大关节误差和最终速度;
- 肩/肘关节分别为 10/8 N·m 的控制器内部扭矩限幅;
- MuJoCo 关节范围是否被突破;
- 连杆是否接触场景中的红色禁入区障碍物。
题面故意将两个关节的目标索引互换,并让原始控制量绕过 torque_limits。Agent 只修复
TwoJointTrajectoryController,官方仿真模型、轨迹和判分阈值保持不可修改。查看故障指标:
uv run python scripts/run_simulation.py --case two-joint单独运行 Phase 5.1 Agent 修复任务:
uv run python scripts/run_benchmark.py \
--manifest benchmarks/sim_cases.json \
--case sim_two_joint_trajectory \
--strategy focused --repair-attempts 1 \
--max-loops 10 --task-timeout 180benchmarks/sim_cases.json 包含单关节、双关节名义轨迹和鲁棒性任务;省略 --case 可连续评测。
鲁棒性评测不再只运行固定轨迹。默认的五个 seed 会分别生成安全的初始/目标关节状态,并对 以下条件进行有界扰动:
- 连杆质量与关节阻尼;
- 执行器输出衰减;
- 传感器高斯噪声与 0–3 timestep 控制延迟;
- 可复现的短时外力脉冲。
每个 seed 都创建新的控制器实例,避免有状态控制器在不同试验间泄漏状态。聚合报告包含通过率、 P50/P95 轨迹 RMSE、最坏最终误差、最坏尾段 RMSE、碰撞总数和 0–100 鲁棒性评分。碰撞、关节 越界、扭矩越界或非有限数值属于安全硬门禁,即使平均分较高也不能通过。
不调用 LLM 运行扰动矩阵:
uv run python scripts/run_robustness.py结果默认写入 benchmarks/results/robustness/<timestamp>/report.json,同时在相邻 seeds/
目录为每个 seed 写入独立 JSON,失败可通过对应 seed 精确复现。可以用多个 --seed 覆盖默认
矩阵,或用 --output 指定项目内报告路径。
运行 Agent 的 Phase 5.2 泛化修复任务:
uv run python scripts/run_benchmark.py \
--manifest benchmarks/sim_cases.json \
--case sim_two_joint_robustness \
--strategy focused --repair-attempts 1 \
--max-loops 10 --task-timeout 180run_robustness.py 现在默认采集下采样时序,并在原有聚合 JSON 之外生成可直接打开的
diagnostics.html。每条轨迹记录:
- 目标/实际关节位置、实际速度与逐关节误差;
- 控制器原始命令、延迟和执行器衰减后送入执行器的命令;
- 碰撞状态、外力扰动窗口和扰动参数;
- 首个扭矩越界、关节越界、碰撞或非有限数值事件及精确时刻。
诊断页按 seed 展示关节跟踪、原始控制量和跟踪误差三组时序图,并用红色竖线标记首个安全
事件。聚合 report.json 和每个 seeds/seed-xxxxx.json 都包含结构化 diagnosis,便于 Agent
或后续分析工具直接消费,而不需要解析 HTML。
# 默认每 10 个 MuJoCo timestep 记录一次,并保留事件切换点
uv run python scripts/run_robustness.py
# 提高采样密度,或只生成轻量汇总
uv run python scripts/run_robustness.py --trace-stride 5
uv run python scripts/run_robustness.py --no-trace时序采集是可选诊断能力:官方 Validator 默认关闭 trace,不改变 Phase 5.2 的判分结果和运行成本。
报告 schema 已升级到版本 2;相同源码、seed、扰动参数与 trace_stride 会生成确定性一致的轨迹。
领域能力不再硬编码到 Agent Loop。Core 现在通过严格的 pack.toml manifest 注册领域工具、Prompt、
Validator、能力要求和工件策略,并根据 Benchmark case 中的 domain_pack 字段按需绑定工具。
未启用 Pack 时,原有工具 schema 和工作流保持不变。
首个内置 Pack 是 cpp_reference,用于验证 Phase 6 基础契约,不依赖 CppADCodeGen:
inspect_cpp_toolchain:记录 OS、架构、CMake、编译器、Ninja 和稳定指纹;build_cpp_project:通过参数数组运行受限 CMake target,不使用 Shell;run_cpp_target:只运行.agent_state/domain_artifacts/内已构建的目标;cpp_reference.output_equivalence:从干净构建目录编译并验证 C++ 模板源模型。
查看已安装 Pack 和本地能力:
uv run python scripts/inspect_domain_packs.py
uv run python scripts/inspect_domain_packs.py --json运行 Phase 6.0 的 C++ 参考题需要本机同时存在 CMake 和 C++17 编译器:
uv run python scripts/run_benchmark.py --manifest benchmarks/cpp_cases.json --list
uv run python scripts/run_benchmark.py \
--manifest benchmarks/cpp_cases.json \
--case cpp_reference_output \
--strategy focused --repair-attempts 1 \
--max-loops 10 --task-timeout 240缺少能力时,清单和 Pack 检查仍可运行;正式 Benchmark 会在调用 LLM 前快速失败,避免浪费 Token。
GitHub CI 使用独立 cpp-domain-checks Job 安装 CMake、Ninja 和 G++,强制执行真实构建集成测试。
当前 Pack 只支持 local executor;固定 CppAD/CppADCodeGen 工具链将在 Phase 6.1 接入。
src/agent/
benchmark.py # M1 任务加载、运行、指标采集与报告
state.py # AgentState TypedDict (messages/current_file/loop_step + 预留)
graph.py # build_graph() + 顶层 graph
persistence.py # Phase 4 SQLite Checkpointer 生命周期
semantic_cache.py # Phase 4.1 工作区隔离的只读回答缓存
simulation/ # Phase 5 MuJoCo 闭环、鲁棒性、时序诊断与 HTML 报告
domain/ # Phase 6 Domain Pack 契约、注册、选择和受限 CMake 工具链
domain_packs/ # 内置领域能力包(Phase 6.0: cpp_reference)
config.py # get_chat_model() 模型工厂
nodes/ # planner / reader / suggester (状态→状态的纯函数)
tools/ # read_file (Phase 2 扩展为 chunk/search/execute_python)
rag/ # Phase 3 AST 切块、hash embedding、Chroma 增量索引
tests/
fixtures/buggy_ik.py # 故意带 bug 的 2-link IK 示例
test_graph_e2e.py # 端到端 + 单元测试
scripts/
run_demo.py # CLI 演示
run_benchmark.py # M1 benchmark CLI
index_codebase.py # Phase 3 源码索引与查询 CLI
run_rag_eval.py # Phase 3.1 RAG 检索质量评测 CLI
run_agent.py # Phase 4 持久会话、状态查看和 HITL 恢复 CLI
run_simulation.py # Phase 5 单独运行控制器闭环并输出指标
run_robustness.py # Phase 5.2/5.3 固定 seed 扰动、时序与诊断报告
inspect_domain_packs.py # Phase 6 Pack、工具、Validator 与能力检查
benchmarks/
cases.json # 评测任务清单
rag_cases.json # RAG 固定查询与相关路径/符号标注
sim_cases.json # MuJoCo 闭环修复任务清单
cpp_cases.json # Phase 6 C++/Domain Pack 修复任务清单
fixtures/ # 永不修改的带 bug 题面
validators.py # 独立确定性判分器
langgraph.json # Studio 入口
| Phase | 主题 | 状态 |
|---|---|---|
| 1 | 线性骨架 (planner → reader → suggester) | ✅ 完成 |
| 2 | ReAct + 5 工具集 (本地 sandbox) | ✅ 完成 |
| 2.5 | E2B Code Interpreter 真沙盒(与 local 并存,env 切换) | ✅ 完成 |
| M1 | 机器人代码任务评测、确定性验证门禁与成本预算 | ✅ 基础框架完成;更大规模修复效果验证待开展 |
| 3.0 | Agentic RAG — Chroma 源码索引与条件式检索 | ✅ 完成 |
| 3.1 | RAG 评测 — Recall@K、MRR、文件/符号命中率 | ✅ 完成 |
| 3.1b | 混合检索 — 语义 + 词法/符号召回与重排 | ✅ 完成 |
| 3.2 | 安全 Retrieval Cache — 索引版本感知、命中与失效指标 | ✅ 完成 |
| 4 | Checkpointer (SqliteSaver) + HITL interrupt | ✅ 完成 |
| 4.1 | LLM Semantic Cache — 工作区指纹隔离,仅限安全只读场景 | ✅ 完成 |
| 5.0 | 机器人闭环 — MuJoCo 单关节 PD 跟踪与安全指标 | ✅ 完成 |
| 5.1 | 多关节闭环 — 2-DOF 轨迹跟踪、碰撞与约束评测 | ✅ 完成 |
| 5.2 | 仿真评测扩展 — 固定种子矩阵、扰动鲁棒性与聚合评分 | ✅ 完成 |
| 5.3 | 仿真诊断 — 失败轨迹时序落盘、首个事件定位与可视化报告 | ✅ 完成 |
| 6.0 | Robotics Domain Pack — 可插拔领域工具、环境与 Validator 契约 | ✅ 完成 |
| 6.1 | Autodiff CodeGen MVP — AD 兼容检查、CppAD tape 与 Jacobian 验证 | ✅ 完成 |
| 6.2 | 数值正确性门禁 — Dense/Sparse FD/AD/CodeGen 等价性与固定 seed | ✅ 完成 |
| 6.3 | Pinocchio 集成 — RNEA CodeGen、解析导数与可复现控制循环 | ✅ 完成 |
| 6.4 | Crocoddyl/MPC — LQR、真实 MPC 与受控 ABA 导数替换 | ✅ 50 次采样原生链路跑通;正确性 3/3,性能门禁 2/3(单进程噪声),保持原生 |
| M2 | Robo-SWE 专业 Benchmark — 20–30 题与 Harness/RAG/Tools/Validator 消融 | 🚧 8 题首轮真实四组消融完成,各组 8/8;组合 17 题、重复轮次与隐藏评测待完成 |
| 7.0 | 外部仓库、CMake/clangd 与候选/oracle 分离评测 | ✅ 架构实现、首轮验收通过;最终容器复验受 WSL 只读文件系统阻塞,详见验收记录 |
CppADCodeGen 作为首个机器人优化专业能力包,而不是项目的全部。领域逻辑保持可插拔,建设顺序为 专业构建环境与工具 → 数值/性能 Validator → 专业文档 RAG。详细方案见 Robotics Autodiff & CodeGen 专业能力路线图。
M2.0 首批专业 C++ 修复评测:
# 无 LLM:验证 8 对错误/参考修复,不能解释为 Agent 成功率
uv run python scripts/check_cpp_robotics_fixtures.py
# 有 LLM:先单题确认,再扩为重复评测
uv run python scripts/run_benchmark.py --manifest benchmarks/cpp_robotics_cases.json --case cpp_scalar_adl --strategy focused --repair-attempts 1 --max-loops 8 --tool-budget 12 --task-timeout 300题目均为公开人工构造任务,尚不是保留集或真实仓库缺陷评测。 完整 17 题入口、指标和限制见 M2 专业 C++ 修复评测。