之前聊到了AI编程,虽然可以给出一定的结果,但是代码不够规范,无法编写大型任务,这次对于工程问题,我给AI定义了特定的规则,也就是最近炒的很热的 claude 的skills。
首先我来聊聊什么是mcp,如果说大语言模型是人的大脑,那么mcp相当于人的手和脚,也就是运用外部工具的能力。而skills是神经元,用于执行大脑发出的指令,打个不恰当的比方,就是手眼协调的能力。有了他人就可以按照既定音乐,跳出美妙的舞蹈。
定义 skills
对于工程问题,我们可以简单抽象为一个输入和输出的过程,输入是设计要求,输出是结构的安全系数。为此,我的开源项目 Baffalo中设计一个基类,包含了input、params、output、baseline和capacity,在calude code中定义说明,放入了.skill 文件。
在这个过程中,需要不断向AI解释说明,得到我想要的效果。
最终可以得到一份开发规范,在这份目录下AI都会遵循这份规范来编程。基类的UI拓展
在基类的设计中,我让AI生成了统一的UI,那么在这个目录下,所有生成的新的部件都可以快速生成可交互的界面。规范化需求文档
基于新的skills,可以让AI重新梳理需求文档,此时AI已经完全理解了我的意图,以表格的形式进一步规范化了需求文档。


规范化AI编程
接下来让AI按照梳理后的需求直接编程,可以发现AI完全按照了既定的模板和代码风进行了编程。
%% 测试用例1:发动机隔振器设计disp('--- 测试用例1:发动机隔振器设计 ---');% 输入参数input1.mass = 150;input1.working_freq = 40;input1.diameter = 50;input1.height = 30;% 参数设置params1.material_type = '天然橡胶';params1.elastic_modulus = 3.5;params1.loss_factor = 0.10;params1.hardness = 60;params1.temperature = 25;params1.frequency = 10;params1.calc_method = '损耗因子法';params1.Echo = true;% 基准值(根据结构重要性设定)baseline1.min_safety_factor = 1.2;baseline1.max_displacement = 10;baseline1.max_stress = 5;baseline1.min_natural_freq = 3;baseline1.max_resonance_amp = 10;% 创建组件实例obj1 = RubberMount(params1, input1, baseline1);% 显示初始状态disp('初始参数:');disp([' 质量: ' num2str(obj1.input.mass) ' kg']);disp([' 工作频率: ' num2str(obj1.input.working_freq) ' Hz']);disp([' 材料: ' obj1.params.material_type]);disp([' 弹性模量: ' num2str(obj1.params.elastic_modulus) ' MPa']);disp([' 损耗因子: ' num2str(obj1.params.loss_factor)]);disp([' 最小安全系数要求: ' num2str(obj1.baseline.min_safety_factor)]);disp(' ');% 执行计算obj1 = obj1.solve();% 安全校核obj1.checkSafety();
可以看到虽然全程没有亲自动手写程序,但是如果想要AI真正的写好程序,更多的需要考量自身的架构能力和经验,更加考验自身对项目的理解能力,其实对个人的要求会更高。