mcpField
C
configuring-block-policy

configuring-block-policy

github.com/matlabAgent 工作流1.3k45 次安装1 周前更新
代码仓库

关于 configuring-block-policy

用于创建或更新 `.satk/block-policy.json` 的技能,以控制 Agent 可使用哪些 Simulink 模块以及可修改哪些参数。支持排除模块、保护参数、设置策略模式,并在保存前验证。

主要功能

  1. 01设置模块策略模式
  2. 02排除指定模块
  3. 03保护选定参数
  4. 04保存前验证策略

适用场景

  1. 01限制 Agent 仅使用获准模块
  2. 02阻止修改指定模块参数
  3. 03更新现有模块策略

安装

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

$npx skills add https://github.com/matlab/simulink-agentic-toolkit --skill configuring-block-policy

安装后在 Claude Code 中输入/configuring-block-policy确认已加载。

附带文件manifest.yaml

详细介绍

配置块策略

创建或更新 .satk/block-policy.json——用于控制 Agent 可以使用哪些块(库块或内置块)、排除哪些块,以及 Agent 不应修改哪些块参数的文件。

适用情形

  • 用户要求设置、创建或配置块策略
  • 用户要求限制或排除块
  • 用户希望阻止 Agent 修改某些块参数
  • building-simulink-models 通过策略门控将请求路由至此处

不适用情形

  • 正在构建模型 → building-simulink-models
  • 改进块描述或类别 → simulink-curating-library-kg
  • 声明有哪些库 → building-simulink-models 中的库设置门控

前提条件

  • 必须存在 .satk/reuse-libraries.json。

工作流

  1. 检查状态 — .satk/block-policy.json 是否存在?如果存在,则加载并概述;如果不存在,则从头开始。
  2. 策略模式 —(未指定库时跳过)询问:倾向于优先使用库,并在必要时回退到内置块,还是仅使用自定义库块(不回退)?
  3. 排除的块(可选)— 是否有任何不应放置在模型中的块(库块或内置块)?收集 referenceBlock + reason。
  4. 禁止修改的参数(可选)— 是否有不希望 Agent 修改的块参数?收集 referenceBlock + protectedParams[]。
  5. 保存 — 使用 library.BlockPolicy.save() 验证并写入。

API

policyData = struct();
policyData.policyMode = 'approved_blocks_only';
policyData.fallbackToBuiltins = false;
% Excluded — agent will never place these blocks
policyData.blockedBlocks = struct('referenceBlock', 'LegacyLib/OldCtrl', 'reason', 'Superseded');
% Protected params — agent won't modify these values
policyData.blockRules = struct('referenceBlock', 'Lib/SpeedCtrl', ...
    'protectedParams', {{'Kp', 'Ki', 'Kd'}});

library.BlockPolicy.save(projectRoot, policyData);

使用默认设置(无限制):

policyData = library.BlockPolicy.defaults();
library.BlockPolicy.save(projectRoot, policyData);

架构

{
  "schemaVersion": 1,
  "policyMode": "approved_blocks_only | prefer_customer_libraries",
  "fallbackToBuiltins": false,
  "blockedBlocks": [
    { "referenceBlock": "LegacyLib/OldController", "reason": "Superseded" }
  ],
  "blockRules": [
    { "referenceBlock": "Lib/SpeedController", "protectedParams": ["Kp", "Ki", "Kd", "SampleTime"] }
  ]
}

验证规则

  • policyMode:必须为 prefer_customer_libraries 或 approved_blocks_only
  • approved_blocks_only + fallbackToBuiltins: true → 拒绝(相互矛盾)
  • protectedParams 必须是非空字符串数组
  • 策略格式错误 → 报错(绝不静默忽略)

更新现有策略

如果 .satk/block-policy.json 已存在:

  1. 使用 library.BlockPolicy.loadRaw(projectRoot, libConfig) 加载
  2. 概述当前状态——不要重新运行完整向导
  3. 询问要更改的内容,应用到现有结构体并保存

常见更新:排除某个块、将参数标记为禁止修改、更改模式、移除条目。

防护措施

  • 未经用户确认,绝不写入 block-policy.json
  • 保存前始终进行验证(library.BlockPolicy.validate(policyData))
  • 如果用户提供的块名称不含完整库路径,则在 KG 中查找以解析 referenceBlock

版权所有 2026 The MathWorks, Inc.


评论

支持 Markdown