建模这件事,长期不在编码 Agent 的视野里
过去两年,编码 Agent 的能力边界扩展得很快:读仓库、改代码、跑测试、开合并请求,都已经进入日常流程。但工程团队很快发现一个错位——真正决定系统行为的东西,常常不在应用层那几千行代码里,而在仿真模型里。一台伺服电机的响应、一套电池管理策略的边界、一个飞控回路的稳定性,由模型里的拓扑、增益与参数决定,而不是由调用它的脚本决定。
这类模型的典型载体是 Simulink 的 .slx 文件。它对编码 Agent 来说长期是一块黑区:二进制格式、结构复杂、没有语义清晰的调用接口。MathWorks 在 R2026a 版本中改变了这一点,把 MATLAB 与 Simulink 接入 MCP,并发布了开源的 MATLAB Agentic Toolkit 与 Simulink Agentic Toolkit。
MCP 那一层:为什么「结构化」是前提
MCP 是 Anthropic 提出的开放协议,用来标准化大语言模型与智能体跟外部工具、数据源之间的通信。它的定位常被类比成硬件界的 USB-C,或者编辑器里的语言服务器协议:过去每家模型、每个工具各写一套私有接口,Agent 接一个新系统就要重写一遍适配;MCP 把这套握手标准化成客户端与服务器的结构,传输层使用 JSON-RPC。
落到 Simulink 上,分工是清楚的。客户端是外部编码 Agent,例如 Claude Code、Codex 或 Gemini CLI,它们本来只认文件与 shell;服务器跑在 MATLAB 与 Simulink 这一侧,由 Simulink Agentic Toolkit 提供。
关键在于 Agent 不再直接去解析 .slx 的内部结构,而是通过一组语义明确的工具调用,让服务器去读、去改、去仿、去测。它调用的不是一句含糊的「帮我把模型调好」,而是明确的参数查询、明确的字段改写、明确的断言执行。输入输出有类型、有边界,这才是把模型交给程序化操作的前提。
七个工具,各管一摊
Simulink Agentic Toolkit 暴露了七个工具,可以理解成 Agent 操作模型的最小权限集合。
model_overview 返回模型结构,包括模块清单、信号线与子系统层级,让 Agent 先看清里面有什么。read 读取指定模块或子系统的参数与配置。edit 修改模块参数与连线,也可以增删模块。check 做一致性与编译校验,改完先确认模型还能编译、没有悬空端口。query_params 查询某个模块有哪些可调参数及其当前值。resolve_params 把参数名解析成完整路径或句柄,避免改错对象。test 运行行为测试,把规格变成可执行的断言。
read 与 query_params 看似重叠,分工其实不同:前者拉取某个模块的全部配置,后者专门回答这里有哪些旋钮可以拧、现在拧到了哪里。resolve_params 是整套工具里的安全件——模型一大,同名参数到处都是,先把名字解析成带完整路径的句柄再交给 edit,能少犯很多低级错误。
与 MATLAB 侧对应的是 MATLAB Agentic Toolkit 与 MCP Core Server。MathWorks 的说法是,二者结合后,生成式 AI 系统能够编写符合 MATLAB 与 Simulink 风格的代码、自动生成并运行测试、诊断和修复错误,并且更高效地利用内置能力,同时减少不必要的 Token 开销。官方还提供了 terminal-in-matlab 组件,让工程师在 MATLAB 里直接开一个面向 Agent 的终端;该组件在 2026 年 9 月 7 日发布 0.4.0 版本,其中一个变更点是 MCP 服务器二进制从 matlab-mcp-core-server 换成 matlab-mcp-server,升级后需要重新注册 Agent 的配置。
一个可复现的例子:Agent 整定 PID 到底改出了什么
把流程落到一个具体对象上会更清楚。设想一个质量、弹簧、阻尼构成的二阶被控对象,套着一圈 PID 闭环,但增益是别人随手填的,阶跃响应一塌糊涂。
Agent 的工作流大致是七步:query_params 读出现有 PID 增益;read 确认当前整定状态与被控对象标称参数;edit 把增益改写成新一轮候选值;check 做编译校验,确认改完模型还能跑;sim 跑一次仿真拿到阶跃响应曲线;test 把规格变成断言;断言通过则提交改动,不通过就回到改写那一步重调。
公开的复现材料里给了一组对照数据。改前使用纯比例控制、比例增益取 2:超调 35.94%、调节时间 3.72 秒、稳态误差 0.8333、稳态值 0.1667。整定后的 PID:超调 0.57%、调节时间 1.18 秒、稳态误差接近零、稳态值接近 1。行为断言设定为超调不超过 5%、调节时间不超过 3 秒、稳态误差不超过 2%,改后全部通过。
这组数字里值得注意的不是改善幅度,而是理论推导与仿真结果能对齐:改前的稳态误差 0.8333 与按一型系统稳态误差公式手算的结果一致,超调也与欠阻尼开环的预期同档。这说明仿真本身是诚实的,它不是为了让 Agent 好看而给出结果。
门打开之后:信任不来自它聪明,而来自它可被约束
数值好看了,接下来该停下来问一句:这个 0.57% 的超调,凭什么信它。围绕这个问题,工程上需要补齐四件事。
可解释性是其中一道墙。工具本身是结构化的,edit 改了哪个模块、哪个参数、从几改成几,全部可追溯。比起让 Agent 吐一段「我帮你优化了控制器」的自然语言,带路径与前后值的操作日志才是能审计的东西。模型出了问题,可以顺着日志还原每一次改动。
test 是安全网,但不能当成万能解。这是最容易翻车的地方:Agent 完全可能恰好让测试变绿,却让模型在物理上失真。举例来说,如果测试只看输出超调,它大可以在输出上乘一个接近 1 的缩放系数,或者把反馈极性改反来制造假收敛。断言越强、越覆盖物理合理性,例如能量守恒、执行器饱和、相位裕度,Agent 钻空子的空间越小。因此 test 应当设成合入前的硬门禁,而不是参考建议。
人在回路这一环不能省。自动改模型不等于自动合入,尤其是安全相关系统,关键改动必须走合并请求并由人审。Agent 的角色是提出一个能通过测试的改动候选,而不是直接拥有模型的最终署名权。
版本控制是一切的底座。模型、仿真数据与参数改动都应进版本库。.slx 虽是二进制,但 Simulink 提供了结构化 diff 与项目级的变更追踪,参数改动更应落在可文本比对的地方。一旦 Agent 改出事,需要能回滚到上一个可信状态。没有版本控制的 Agent 操作,等于把生产模型交给了一个没有撤销键的实习生。
还有一条容易被忽略的前提:暴露面本身就是风险。MCP 服务器一旦跑起来,凡是网络可达的客户端都能改你的模型。权限边界、白名单与沙箱环境,这些是接入 Toolkit 之前就该想清楚的前置条件,而不是接上之后再补的补丁。
中立思辨
需要辩证看待几件事。其一,这套工具解决的是「能不能让 Agent 操作模型」,而不是「该不该让 Agent 操作模型」。能力开放与治理能力并不同步,后者需要工程团队自己搭建。其二,七个工具覆盖的是参数级与模块级的操作,对于涉及架构重构的改动,例如更换控制结构、改变子系统划分,工具能提供的支持有限,Agent 仍需人类给出设计意图。其三,test 的有效性完全取决于断言质量,而写好断言本身需要控制工程知识,这意味着门槛并没有消失,只是从「会不会用工具箱」转移到了「能不能把规格写成机器可判定的条件」。其四,MathWorks 把这两个工具包开源,让平台团队可以审查代码、设定权限、决定外部工具如何接入内部软件,这对受监管行业是加分项,但开源也意味着企业需要自行承担集成与升级维护。其五,上述 PID 数值来自公开的复现材料,属于单个算例,不能直接外推到其他被控对象;不同对象的最优整定策略差异很大,工程团队应以自己的模型为准。其六,MCP 服务器的权限模型与 MATLAB 的许可证体系如何配合,公开材料中着墨不多,规模化部署时的席位与并发限制,目前官方及行业暂未披露更多细节,后续将持续跟进迭代动态。
趋势研判
短期看,这类工具更可能先在工程仿真、算法验证、模型回归测试这些边界清晰的环节落地,因为这些场景的成功与否可以被程序判定;中期看,关键变量是断言库的沉淀——如果行业内能形成一批可复用的行为测试规格,Agent 改模型的可信度会显著提升,否则每个团队都要从零写断言;长期看,工程工具接入 MCP 会成为常态,差异不在「能不能接」,而在「接上之后谁来定义什么叫改对了」。
对正在评估这类能力的团队,一个务实的起点是把最近一次模型调参的过程写下来:工程师看了哪些曲线、依据什么判断该调哪个参数、什么条件下会认定这次改动不可接受。这份记录既是断言的素材,也是判断自动化边界最直接的依据。