embedded-project-loop
embedded-project-loop 是一个用于 Arduino 和嵌入式硬件工作的技能。当请求涉及物理硬件、跨多个会话、有待完成的测量、现场测试或恢复工作时,它应作为较早加载的入口。该技能管理持久目标、下一步待办、证据边界、回滚路径和物理门禁。
用途
它适用于跨越文件与物理硬件边界的工作。智能体可以准备和验证主机侧产物,但不得臆造焊接、烧录、测量或现场证据。它应在 arduino-workflow-router 之前加载;由路由器选择板卡、接线、代码、工具链、测试和部署方面的专门能力,而不会代替本技能关闭循环。
状态文件
在项目中使用 .arduino/ 目录,或用户选择的外部证据目录:
.arduino/goal.md
.arduino/next-todo.md
.arduino/board-profile.md
.arduino/evidence/{build,upload,hardware,system,deployment}/
.arduino/experiment-log.jsonl
.arduino/resume-token.md
这些产物中不得包含密钥、令牌、私有网络凭据和未脱敏的个人数据。goal.md 记录确切目标、成功标准、非目标、安全约束、停止条件和回滚路径。next-todo 文件包含一个动作、负责人、前置条件、预期证据、门禁和状态。
有界迭代
- 读取目标、下一步待办、板卡配置和最后一条台账记录。
- 选择一项因果性的固件、接线、电源、测量或诊断变更。
- 运行可用的最窄安全主机/构建检查。
- 如果下一步动作需要用户,则在物理门禁处停下。
- 将提供的观察结果与预期结果和独立安全门禁进行比对。
- 追加动作、证据路径、决策、回滚和下一步待办。
- 只保留经过验证的候选;否则记录阻塞项或恢复当前实验面。
一次迭代不得同时组合多个接线变更、固件镜像、电源或测量。单一变更使失败可归因。
物理门禁
使用具体问题并等待观察结果:
Physical gate: On <exact board/revision>, perform <one action> with power
<state>. Capture <measurement/log/photo> at <location>. Expected:
<observable result>. Reply with the observation or `blocked: <reason>`; do not
reply with an unverified yes.
对于上传失败,要求提供确切的端口/设备标识、镜像/哈希以及脱敏后的上传日志。对于电源问题,要求提供万用表位置、单位和观测到的最小/最大值。对于接线,要求在启用负载前进行连续性/极性检查或提供带标签的照片。
证据边界
- 构建证据仅证明源代码/配置和依赖编译。
- 上传证据仅证明某个镜像被指定目标路径接受。
- 硬件证据要求目标标识加上测量、串口输出、连续性、示波器数据或带上下文的照片。
- 系统证据要求集成场景和代表性负载。
- 部署证据要求健康检查、分阶段更新、回滚、恢复和维护记录。
如果证据缺失,应说明 unverified 或 blocked,并保持下一步待办开放。在执行擦除、引导加载程序修复或重新烧录之前,请阅读路由器恢复参考。
反合理化
| 捷径 | 回应 |
|---|---|
| “复选框已完成。” | 要求提供产物和证明阶段。 |
| “编译通过了。” | 不要将其提升为上传、硬件或系统证明。 |
| “用户大概已经接好线了。” | 提出具体的门禁问题并等待。 |
| “把三个修复一起试。” | 将它们拆分为单变更迭代。 |
| “先擦除。” | 确认目标、最后已知良好镜像、恢复路径和数据丢失影响。 |
| “没有新输出意味着成功。” | 记录一次无操作观察;它不会关闭目标。 |
验证
- 状态文件存在,且下一步待办只指定一个确定性动作。
- 每个已完成的物理步骤都链接到带有证明阶段标签的证据。
- 台账以仅追加方式记录决策、回滚和下一候选。
- 停止条件和修复上限是明确的。
- 在本仓库中,运行
python3 scripts/run_arduino_evals.py;loop-engine-evidence-contract用例检查有效和无效的持久循环产物,并在所需状态或台账字段缺失时失败关闭。
共享输出契约
使用共享 Arduino 技能契约:说明假设、所需工具和版本、实现步骤、按证明阶段划分的测试/证据、已知限制以及恢复/安全注意事项。