mcpField
M
matlab-export-session-script

matlab-export-session-script

github.com/matlab开发1.2k74 次安装1 天前更新
代码仓库

关于 matlab-export-session-script

该 MATLAB 技能将对话中执行的 MATLAB 代码整理为带注释、可运行的 .m 脚本,并保存到工作目录的 Results 文件夹。适用于希望留存或交付 MATLAB 工作流程脚本的用户。

主要功能

  1. 01提取对话中执行的 MATLAB 代码
  2. 02保留重复代码的最终成功版本
  3. 03按工作流程排序并添加分节
  4. 04集中参数并保存为 .m 文件

适用场景

  1. 01将一次 MATLAB 分析整理成脚本
  2. 02保存设计与可视化工作流程
  3. 03为 MATLAB 会话生成可运行交付物

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/matlab/matlab-agentic-toolkit --skill matlab-export-session-script

安装后在 Claude Code 中输入/matlab-export-session-script确认已加载。

附带文件manifest.yaml

详细介绍

将会话导出为 MATLAB 脚本

提取当前对话中执行的所有 MATLAB 代码,将其整理成文档完善、可运行的 .m 脚本,并保存到工作目录。

快速参考

步骤操作
1. 扫描按时间顺序遍历助手消息;提取每个已执行的 MATLAB 代码块
2. 去重对重复代码块仅保留最终成功的版本
3. 排序按逻辑工作流顺序排列(设置、模型、配置、分析、可视化)
4. 格式化添加 %% 分节标题,并将参数集中到顶部
5. 保存将脚本写入工作目录下的 Results/<descriptive_name>.m

适用场景

  • 用户说“将本次会话导出为脚本”
  • 用户说“根据我们刚才的操作创建脚本”
  • 用户说“保存本次对话中的 MATLAB 代码”
  • 在任何需要交付成果的 MATLAB 工作流会话结束时

不适用场景

  • 从零编写新的 MATLAB 代码——直接编写代码即可
  • 导出非 MATLAB 内容(Python、Shell 脚本等)
  • 创建 Live Scripts(.mlx)——此技能只生成普通 .m 文件

提取规则

包含
  • 所有产生有意义结果的 MATLAB 代码(分析、设计、可视化)
  • 变量赋值、函数调用、绘图命令
  • 会话中使用的实用函数所需的 addpath 调用
排除
  • Shell 命令:PowerShell、Bash、操作系统命令、sbm 封装程序
  • MCP 工具调用元数据和框架样板代码
  • 用于排查问题的探索性单行代码
  • 仅供 Agent 向用户反馈信息而使用的 fprintf 语句(保留面向用户的语句)
  • 图窗中的 'Visible','off' ——导出的脚本供交互使用
去重

当同一代码块运行多次时(例如,为修复错误而重复运行),仅保留最终成功的版本。不要包含中间的失败尝试或参数修正,而应使用成功运行的值。

脚本整理

1. 扫描对话

按时间顺序遍历所有助手消息。对于每个已执行的 MATLAB 代码块(通过 MCP、-batch 或类似方式),提取 MATLAB 部分并记录:

  • 该代码的用途(作为分节注释)
  • 是否执行成功,或是否被后续版本取代
  • 在工作流中的逻辑位置
2. 按逻辑排序

将提取的代码按自然工作流顺序排列,顺序可能不同于执行顺序:

  1. 设置(路径、参数、导入)
  2. 数据加载 / 模型创建
  3. 配置
  4. 分析 / 计算
  5. 可视化 / 结果
3. 按分节格式整理
%% <Title> -- <One-line summary>
% <Multi-line description of what this script does.>
% <Key context: what design, what board, what analysis, etc.>
%
% Required toolboxes: <list only what was actually used>

%% Step 1: <Description>
% <Why this step matters>
<code>

%% Step 2: <Description>
<code>
格式约定
  • 使用 %% 分节符划分每个逻辑步骤(在 MATLAB Editor 中创建可折叠分节)
  • 在每个分节前添加一行注释,说明其用途
  • 将参数集中到设置分节,不要散布在整个脚本中
  • 完全保留变量名,与会话中使用的名称一致
  • 在 title() / xlabel() 的 TeX 字符串中转义下划线:使用 \_ 而非 _

输出

文件命名

根据会话的主要任务确定文件名。使用小写字母和下划线:

  • openrex_core_rail_dc_analysis.m
  • hairpin_filter_design_2p4ghz.m
  • via_crosstalk_sweep.m
文件位置

将文件保存到工作目录下的 Results/。如果该文件夹不存在,则创建它。

保存后

告知用户:

  • 文件名和路径
  • 脚本包含的分节数 / 行数
  • 脚本已准备就绪,可在安装所需工具箱的 MATLAB 中运行

常见模式

  • 每个会话使用一个脚本 —— 将所有相关工作整合到单个脚本中,即使涉及多次设计迭代也是如此。只有在同一会话中处理互不相关的工作流时,才有必要使用多个脚本。
  • 将参数放在顶部 —— 将所有可由用户配置的值(freq、substrate、尺寸)集中放在设置部分,方便用户修改,无需在脚本中四处查找。
  • 批处理时隐藏图窗 —— 如果脚本可能以非交互方式运行,请使用 if ~exist('BATCH_MODE', 'var') 条件包裹绘图代码。不过,交互使用时默认显示图窗。
  • 路径管理 —— 如果脚本使用文件(Touchstone、板卡文件),请将文件路径放在设置部分顶部的变量中。使用 fullfile() 以适配不同平台。切勿硬编码绝对路径。
  • 批处理模式标头 —— 对于可能通过 matlab -batch 运行的脚本,请在顶部添加:
    %% Configuration
    BATCH_MODE = exist('BATCH_MODE', 'var') || ~usejava('desktop');
    if ~BATCH_MODE, close all; clc; end
    
  • 结果目录 —— 将输出保存到 Results/ 子文件夹:
    resultsDir = fullfile(pwd, 'Results');
    if ~exist(resultsDir, 'dir'), mkdir(resultsDir); end
    

注意事项

  1. 不要包含 shell 命令。 导出的脚本中只能包含 MATLAB 代码。必须删除 PowerShell、Bash 和 sbm 封装器调用。如果 shell 步骤必不可少(例如下载文件),请用注释说明前置条件。

  2. 不要保留失败的迭代版本。 如果修复错误后重新运行了代码块,只应保留最终成功的版本。包含中间失败版本会导致脚本无法运行。

  3. 不要将参数分散放置。 深藏在分析或绘图部分的硬编码值难以查找和修改。请始终将可由用户配置的参数(freq、substrate、尺寸、文件路径)提到顶部的设置部分。

  4. 不要硬编码绝对路径。 C:\Users\viyer\... 之类的路径在其他计算机上会失效。请使用 fullfile() 和相对路径,或将路径变量放在设置部分。

  5. 不要在图窗中保留 'Visible','off'。 Agent 会话会在非交互式执行时隐藏图窗,但导出的脚本是供交互式使用的。请从 figure() 调用中删除 'Visible','off' 参数。

  6. 转义 TeX 字符串中的下划线。 MATLAB 默认会将 title()、xlabel()、ylabel() 和 legend() 调用中的 _ 解释为下标。请使用 \_ 或设置 'Interpreter','none'。


版权所有 2026 The MathWorks, Inc.

评论

支持 Markdown