脚本与自动化
Lua 5.4、JSON 操作按钮、MCP 服务器和 AI 聊天都驱动同一个项目模型。脚本存放在工作区内,因此会随项目一起移动。
Lua 脚本
打开 Tools → Lua Scripts。脚本存放在:
<workspace>/scripts/*.lua—— 共享脚本;<project>/scripts/*.lua—— 项目脚本,优先级更高。
Run 在沙箱化的 Lua 状态中执行脚本;print 和 bm.log 写入 Scripts 输出和应用日志。错误会停止脚本,并同时显示在两处。实时操作仍然需要自动化权限和确认。
lua
-- Read one DID and print the decoded value
local ecu = 0x100 -- txid; a unit string such as "ENGINE" also works
local p = bm.ecu.read_did(ecu, 0xF190)
print(string.format("%04X", 0xF190), p.value or p.hex)| 分组 | 示例 |
|---|---|
| 项目与 ECU 信息 | bm.ecu.list、bm.ecu.list_parameters、bm.ecu.list_dtcs |
| 参数 | bm.ecu.read_did、bm.ecu.read_all、bm.ecu.write_did |
| 故障 | bm.ecu.read_dtcs |
| 实时操作 | bm.ecu.routine_start、bm.ecu.routine_stop、bm.ecu.io_control |
| 原始 UDS | bm.ecu.raw_uds、bm.ecu.uds |
| 内存 | bm.ecu.read_memory、bm.ecu.write_memory |
| 认证 | bm.ecu.auth_levels、bm.ecu.authenticate、bm.ecu.auth_seed、bm.ecu.auth_key |
| 固件 | bm.firmware.load、bm.firmware.save、bm.firmware.info、bm.firmware.recipe |
| 刷写 | bm.ecu.flash、bm.ecu.download、bm.ecu.flash_begin、bm.ecu.flash_end |
完整参考随应用文档一起发布。

操作按钮
操作按钮通过 File → Load Actions 从 JSON 加载:
json
{
"tab_name": "Actions",
"action_buttons": [
{ "name": "Session 03", "comment": "Extended session", "group": "Session", "data": "10 03" },
{ "name": "Read VIN", "comment": "Lua action", "group": "Scripts", "script": "read_vin.lua" }
]
}data是十六进制的原始 UDS 请求;发送它需要确认。script是项目或工作区scripts/文件夹中的.lua文件。group是按钮组(默认Default);comment是工具提示。
同名脚本中,项目脚本优先于工作区脚本。
AI 助手与 MCP
- 聊天后端可以是 HTTP(OpenAI 兼容端点)或 OpenCode ACP。
- API 密钥存储在 Windows 凭据管理器中;聊天设置存放在
%LOCALAPPDATA%\BlackMagic\chat.json,项目历史存放在chat_history.json。 - 项目更改和实时 ECU 写入在 Settings → Automation 中分别启用。危险操作会请求确认。
- 聊天和 MCP 客户端调用相同的工具:ECU 列表、DID/DTC 读取、DID 扫描、写入、例程、IO 控制、内存和报告。
- HTTP 往返和工具调用都会写入日志;停滞的请求会超时。

