【飞凌嵌入式FCU1501试用】从“一问一答”到“技能分工”——RK3506 AI编程工作流进化实录

上一篇博客介绍了如何用TRAE IDE为RK3506构建AI编程环境。经过一段时间实践,我对AI编程有了新的认识——与其让AI在一个对话里包办所有事情,不如把工作拆解成编译、部署、运行三个独立Skill,各司其职、灵活组合。本文将分享这套新方法论及三个Skill的完整设计。

回顾:旧方法的痛点

上一篇博客中,我通过TRAE的Builder模式,用一段提示词让AI同时完成三件事:

  1. 生成C语言测试程序
  2. 创建VSCode编译任务(交叉编译)
  3. 创建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"

默认参数:

参数默认值
目标IP192.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"

默认参数:

参数默认值
目标IP192.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编程带来一些启发。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

神一样的老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值