name: firmware_codegen_skill description: 基于需求与现有固件代码生成可审阅补丁(patchPlan + patch + notes);已有工程文件时视为更新/修订而非从零生成,默认不直接落盘。 keywords: [固件, 代码生成, 代码编辑, patch, arduino, esp32, stm32] metadata: fasthardware: skillId: firmware_codegen_skill engineOps: - runFirmwareCodePatch
Firmware Codegen(固件代码编辑)
根据用户需求与当前代码上下文,生成可审阅、可落地的代码修改建议。输出包含:
summary:本次修改目标patchPlan[]:结构化改动步骤patch:统一 diff 文本(用于预览)notes[]:依赖、风险、验证建议
默认仅输出建议,不强制写文件。
何时调用
- 用户明确提出“改代码/补代码/加功能/修固件”需求时。
- 不要求必须先做方案设计;以当前画布 + 需求描述为主即可生成补丁(有前序方案时可能多一段参考文本,可无视)。
- 已有项目代码,做增量修改时同样适用。
与 Agent Loop 的配合
| 要点 | 说明 |
|---|---|
| 精确名 | skillName 必须为 firmware_codegen_skill。 |
| 代码输入 | codeText 可选;为空时基于通用模板输出骨架级 patch。 |
| 落盘策略 | 默认不落盘(仅返回 patch 建议),由上层确认后再写入。 |
| 失败 | 引擎不可用/需求为空时返回 success: false。 |
| 画布 | 执行前引擎读取当前项目画布(getCanvasSnapshotForSkill 或入参 canvasSnapshot),并做结构预判。 |
参数
| 参数 | 类型 | 说明 |
|---|---|---|
userRequirement |
string | 固件改动目标(必填)。 |
codeText |
string | 当前代码全文(可选)。 |
targetPath |
string | 目标文件路径(可选,仅用于标识)。 |
language |
string | 代码语言标识(可选,默认 arduino)。 |
additionalContextFromAgent |
string | 可选补充上下文。 |
canvasSnapshot |
object | 可选;省略时由引擎拉取当前画布 JSON。 |
输出补充
canvasAnalysis:含readiness与gapKind:missing_parts(缺元件/空板)、missing_wiring(缺连线)、ready、snapshot_error。canvasGuidance:phase、gapKind、userFacingHint、pinBindings(gapKind=ready时)、recommendedNextSkills(缺连线时可建议后续wiring_edit_skill;缺件时不强制同轮 scheme——由用户决定是否补画布)。
Tips
- 先让本 skill 生成补丁建议,再由 CLI 的
firmware:patch或 UI 二次确认写入,可降低误改风险。 - 画布空或连线未就绪时仍可给出通用可编译示例或过渡 patch(notes 注明与画布对齐方式);支持先固件后元件;主 agent 仅在用户需要时再编排
scheme_design_skill/wiring_edit_skill。