【飞凌嵌入式FCU1501试用】从“一问一答”到“技能分工”——RK3506 AI编程工作流进化实录
文章目录
上一篇博客介绍了如何用TRAE IDE为RK3506构建AI编程环境。经过一段时间实践,我对AI编程有了新的认识——与其让AI在一个对话里包办所有事情,不如把工作拆解成编译、部署、运行三个独立Skill,各司其职、灵活组合。本文将分享这套新方法论及三个Skill的完整设计。
回顾:旧方法的痛点
上一篇博客中,我通过TRAE的Builder模式,用一段提示词让AI同时完成三件事:
- 生成C语言测试程序
- 创建VSCode编译任务(交叉编译)
- 创建SSH部署和运行任务
这种方法虽然“一步到位”,但实践中暴露了几个问题:
提示词臃肿。 所有需求挤在一段话里,AI容易遗漏细节——比如我忘了说用户名和密码,生成的task.json就有问题。
调试困难。 部署时chmod命令失败,需要把错误信息喂给AI让它重新分析修正。每一次修改都要重新生成整个任务配置。
复用性差。 换一个项目、换一块开发板,所有配置要重新让AI生成一遍。
新思路:Skill化分工
受AI Agent设计模式的启发,我把RK3506开发工作流拆解为三个职责单一的Skill:
| Skill | 职责 | 触发场景 |
|---|---|---|
| rk3506-compile | 交叉编译程序 | 用户要求编译代码 |
| rk3506-deploy | 部署可执行文件到开发板 | 用户要求部署/拷贝文件 |
| rk3506-run | 在开发板上运行程序 | 用户要求执行程序并查看输出 |
每个Skill只做一件事,但彼此可以自由组合——“编译+部署”、“部署+运行”、“编译+部署+运行”,按需拼接。
Skill 1:rk3506-compile
name: "rk3506-compile"
description: "Compiles programs for RK3506 using arm-buildroot-linux-gnueabihf toolchain"
核心逻辑:
- 检查
CROSS_COMPILE环境变量 - 若为空,自动执行
~/3506-toolchain/host/environment-setup加载编译环境 - 若不为空,给出警告提示编译器可能不一致
- 使用
$CC等环境变量指定的编译器进行编译
设计考量: 编译环境配置是最容易出错的一步。把环境检测和加载逻辑封装在Skill里,用户只需说“帮我编译这个程序”,无需手动source脚本。
Skill 2:rk3506-deploy
name: "rk3506-deploy"
description: "Deploys compiled programs to RK3506 development board via SSH"
默认参数:
| 参数 | 默认值 |
|---|---|
| 目标IP | 192.168.1.232 |
| 用户名 | root |
| 密码 | 无 |
| 目标路径 | /root/ |
核心逻辑:
- 通过
scp将可执行文件拷贝到开发板 - 自动
chmod +x添加可执行权限
设计考量: 部署是编译和运行之间的桥梁。把IP、路径等参数设置成可覆写的默认值,既开箱即用,又保留了灵活性。
Skill 3:rk3506-run
name: "rk3506-run"
description: "Runs deployed programs on RK3506 development board via SSH"
默认参数:
| 参数 | 默认值 |
|---|---|
| 目标IP | 192.168.1.232 |
| 用户名 | root |
| 程序路径 | /root/ |
核心逻辑:
- 通过
ssh连接到开发板执行程序 - 返回程序输出结果
- 支持传递命令行参数
设计考量: 运行是与开发板交互的最终环节。支持带参数执行,覆盖更多测试场景。
对比:新旧方法优劣
| 维度 | 旧方法(All-in-One提示词) | 新方法(三个Skill) |
|---|---|---|
| 提示词复杂度 | 高,所有需求挤在一起 | 低,每次只描述一个动作 |
| 调试效率 | 改一处要重新生成全部 | 只调试出问题的Skill |
| 复用性 | 差,每项目重新生成 | 好,Skill可跨项目复用 |
| 灵活性 | 低,编译部署运行强绑定 | 高,可按需组合 |
| 学习成本 | 低,一次提示搞定 | 中等,需理解Skill机制 |
| 错误恢复 | 从头再来 | 局部修正 |
使用示例
场景一:完整流程(编译+部署+运行)
用户只需依次说:
“用rk3506-compile编译当前目录的main.c”
“用rk3506-deploy部署到开发板”
“用rk3506-run运行看看结果”
场景二:仅重新编译
代码修改后,只需:
“用rk3506-compile重新编译”
部署和运行沿用之前的结果,无需重复操作。
场景三:自定义部署目标
如需部署到不同IP:
“用rk3506-deploy把program部署到192.168.1.100的/opt/目录”
Skill会使用自定义参数覆盖默认值。
为什么这样设计更好?
符合Unix哲学。 每个Skill做好一件事,通过组合产生复杂行为。这比一个庞杂的“超级Skill”更可控、更可预测。
适配AI的思维方式。 AI在处理单一、明确的任务时表现最佳。把复杂工作流拆解后,每个环节AI都能精准执行,出错时也只需局部修正。
便于持续迭代。 哪天换了新的交叉编译工具链,只需更新compile Skill;换了新的开发板IP,只需调整deploy和run的默认参数。互不影响。
总结
从“一段提示词包办一切”到“三个Skill各司其职”,本质上是把AI当作可编程的工具链而非一次性问答引擎。这种方法不仅适用于RK3506开发,也适用于任何需要“编译→部署→运行”三步曲的嵌入式开发场景。


Skill化的核心思想是:让AI记住流程,让人只关心意图。希望这套方法能给你的嵌入式AI编程带来一些启发。
更多推荐




所有评论(0)