# MWORKS AI
# 产品简介
MWORKS AI 是 Syslab 内置的 AI 助手。它可以结合当前工程、文件、终端输出、运行环境和 Syslab 本地能力,帮助用户完成问答、错误诊断、脚本运行、性能优化、代码迁移和代码生成等任务。
与通用聊天工具不同,MWORKS AI 的重点是让 AI 在 Syslab 内理解上下文、调用工具并协助完成工程任务。
# 适用场景
- 解释 Syslab、Julia、M 代码和工程结构;
- 根据自然语言生成或修改脚本;
- 分析报错、终端输出和运行结果;
- 调用 Syslab MCP Server 查询帮助、执行代码或获取环境信息;
- 使用 Syslab Skills 完成性能优化、内存优化、M 转 Julia、Julia 代码生成等专项任务。
# 快速入门
本节介绍首次使用 MWORKS AI 的基本配置流程,包括运行环境确认、功能入口打开、账号登录、在线模型选择以及本地模型切换。
# 前置条件
使用 MWORKS AI 前,请确认当前环境满足以下要求。
- 当前系统为 Windows 10/11 64 位或 Linux(Ubuntu 20.04+、CentOS 8+);
- 已安装 Syslab 2026a V26.3 及以上版本;
- 当前网络可以正常访问同元官网。
# 启动 MWORKS AI
在 Syslab 中打开 MWORKS AI 功能入口。
首次启动 MWORKS AI 时,将进入模型配置界面。
# 配置同元模型
MWORKS AI 支持登录苏州同元软控技术股份有限公司 (opens new window)(以下简称同元)账号并调用同元模型。如果尚未注册账号,请先完成注册,再登录使用。
账号注册入口如下:
完成注册并登录账号后,可在模型配置界面选择同元模型。登录账号后,系统会提供一定的免费额度,可用于调用 DeepSeek 的相关模型进行建模。
| 模型名 | 模型功能 | 额度耗费对比 |
|---|---|---|
| tongyuan/deepseek-v4-flash | DeepSeek-V4-Flash 模型,支持思考与非思考模式,具备长上下文、JSON 输出、工具调用等能力,适用于常规问答、代码生成和建模辅助场景 | 基础计费倍率,免费额度消耗较慢,可支持更多轮次对话 |
| tongyuan/deepseek-v4-pro | DeepSeek-V4-Pro 模型,支持思考与非思考模式,具备长上下文、JSON 输出、工具调用等能力,适用于复杂推理、长文本分析和高难度建模优化场景 | 计费倍率较高,免费额度消耗更快,相同使用量下可用轮次较少 |
# 配置自定义模型
除同元模型外,MWORKS AI 还支持添加 OpenAI 兼容、OpenAI 官方和 Anthropic 官方类型的自定义模型。在模型配置界面的自定义模型区域,单击添加自定义模型。
在自定义模型配置界面填写模型信息。
图中各配置项说明如下:
- 类型:选择自定义模型的接口类型,目前支持 OpenAI 兼容、OpenAI 官方和 Anthropic 官方。
- Provider:输入模型服务提供方名称。
- URL:输入模型服务的 API 地址,例如
https://api.openai.com/v1。 - API Key:输入模型服务提供方分配的 API Key。
- 模型名称:输入需要调用的模型名称。
- 添加模型:单击后可继续添加其他模型。
- 保存:完成配置后,单击 保存 保存自定义模型。
提示
产品支持在多种模型间进行切换,不同模型的部分能力可能存在差异,属于正常现象。
# 发送第一个问题
在输入框中输入自然语言问题或任务描述,按 Enter 发送。常用输入方式包括:
- 直接提问,例如:如何生成稀疏矩阵?
- 描述任务,例如:读取 data.csv,生成一个非线性指数拟合脚本,并保存到当前目录。
建议尽量把目标、输入文件、期望输出和限制条件写清楚。任务越具体,AI 助手越容易给出可执行结果。
AI 返回结果后,可根据结果继续追问、要求生成脚本、运行验证或修改文件。
如果 AI 正在回复或执行任务,发送按钮会切换为停止按钮。需要中断当前任务时,可单击停止按钮,再补充新的约束或重新发送任务。
# 带上下文提问
上下文用于告诉 AI 当前问题所依赖的材料。对于代码开发、错误诊断和工程分析,添加上下文通常比单纯描述问题更有效。
常见上下文添加方式
- 在编辑器中选中代码或文本后,通过右键菜单添加到 AI 上下文;
- 将文件或文件夹拖入 AI 面板;
- 在输入框中使用
@选择文件;
上下文不宜一次加入过多。复杂工程任务建议先加入关键文件或报错信息,再根据 AI 的分析逐步补充材料。
# 核心功能
# 功能总览
AI 助手主要包含以下功能:
| 区域 | 功能 |
|---|---|
| 新建会话 | 开启一个新的对话上下文,用于处理新的独立任务。 |
| 历史会话 | 打开历史对话,回看或继续之前的任务。 |
| 设置 | 配置模型服务、工具、MCP 与诊断。 |
| 常用命令 | 提供常见任务的快捷入口,单击后可将示例问题填入聊天框。 |
| 聊天框 | 输入问题、任务描述、/ 命令或 @ 上下文。 |
| 切换模型 | 选择本次会话使用的大模型。 |
| 切换模式 | 选择当前工作模式,例如 Build 模式或 Plan 模式。 |
| 发送/停止 | 发送当前提示词;AI 正在生成或执行时,可用于停止当前响应。 |
# 会话
一次会话保存一组连续对话和上下文。新建会话可以隔离不同任务,避免旧上下文影响当前结果。历史会话可用于回看和继续之前的工作。
当一个任务已经结束,建议为新任务开启新会话;当任务需要连续迭代,例如“分析错误 -> 修改代码 -> 运行验证 -> 继续修复”,建议保留在同一会话中。
会话相关入口通常位于 AI 面板顶部:
- 单击新建会话,创建独立对话上下文并开始新任务;
- 单击历史会话,查看历史任务并选择需要继续的会话;
- 在继续历史会话前,先确认旧上下文是否仍然适用于当前工程状态。
# 模式与模型
MWORKS AI 支持不同模式和模型组合。它们的职责不同:
- 模式:控制工作方式,例如规划优先或直接执行;
- 模型:负责理解、推理和生成的底层大模型能力。
常见模式包括:
- Build:规划、搜索、开发等一站式完成任务、工作目录内操作无需用户确认;
- Plan:为完成任务制定详细的执行方案,仅生成步骤与建议,不执行任何实际操作。
对于可能改动大量文件、运行外部命令或影响工程状态的任务,建议先使用 Plan 模式明确方案。
模型和模式可在 AI 面板中切换:
- 通过聊天框左下角的模式入口切换工作模式;
- 通过模型下拉框切换当前使用的大模型。
切换模型或模式后,建议在当前输入中明确任务目标,避免旧会话上下文影响新设置下的结果。
# MCP 服务
MCP 通常指 Model Context Protocol,即模型上下文协议。它用于让 AI 助手以标准方式连接外部工具、数据源和本地服务。提供工具能力,解决 AI 能调用什么。
MWORKS AI 可通过 Syslab MCP Server 获取 Syslab 环境信息、查询函数和帮助文档、执行 Julia 代码等。常见用途包括:
- 查询 Syslab 已安装工具箱和运行环境;
- 搜索 Syslab 函数、帮助和示例;
- 运行或验证 Julia 代码;
- 将本地能力提供给智能体调用。
如果 MCP 服务不可用,AI 仍可回答一般问题,但与 Syslab 本地环境相关的能力会受限。
# Skills
Skills 是面向专项任务的工作流说明,提供任务流程规范,可让 AI 按既定规范完成复杂任务。例如:
- 性能优化;
- M 代码迁移到 Julia;
使用 Skills 时,建议在任务描述中明确说明要使用哪个 Skill,以及输入文件、输出目录和验收标准。
# 文件版本控制与回滚
# 为什么要进行版本控制
在使用 AI 辅助编写、修改或批量优化帮助文档时,AI 可能会一次性调整多个段落、标题、示例代码或配置内容。虽然这可以提升编辑效率,但也可能出现误删内容、覆盖原文、修改范围过大、格式不符合规范等情况。
Git 是常用的版本控制工具,适合记录文本类文件的修改过程。它可以保存每次修改前后的文件状态,清晰展示新增、删除和调整的内容,并在发现问题时将文件恢复到指定历史版本。对于帮助文档、案例文件、配置文件等经常需要反复修改的内容,Git 能够提供轻量、可靠、可追溯的本地保护机制。
因此,在使用 AI 修改文件前,建议先通过 Git 提交一次本地版本快照。这样可以在修改完成后对比差异、查看历史记录,并在内容异常时快速回退到修改前的稳定版本,降低 AI 批量编辑带来的文件风险。
本章节仅介绍本地 Git 的基础使用流程,适用于个人在本机对帮助文档、案例文件或配置文件进行版本快照、差异查看和回滚。远程仓库创建、代码推送与拉取、账号权限、分支协作等远程 Git 管理内容不在本部分介绍。
# 使用版本控制的好处
使用版本控制可以让文档修改过程更加可控,尤其适合与 AI 辅助编辑配合使用。主要好处包括:
- 保留修改记录:每次提交都会形成一个清晰的历史节点,便于追踪文件在不同阶段的变化;
- 便于对比差异:修改后可以查看具体新增、删除或调整的内容,快速判断 AI 或人工修改是否符合预期;
- 支持快速回滚:如果发现内容被误删、误改或不符合规范,可以恢复到之前的稳定版本,减少重新整理的工作量;
- 降低批量修改风险:在大范围调整文档、示例或配置前先提交快照,可以为后续检查和修复保留安全基线;
- 方便说明和交接:版本记录可以说明每次修改的原因和内容,便于后续查看、问题定位和文件交接。
# 版本控制操作
用户可通过自然语言指令让 MWORKS AI 执行版本控制操作,也可在终端中手动输入 Git 命令。以下为各操作的自然语言提示词与对应命令。
# 1. 初始化版本控制
首次对某个目录启用版本管理时,需先初始化 Git 仓库。
| 操作 | 自然语言提示词 | 命令行(可选) |
|---|---|---|
| 初始化仓库 | "帮我在这个目录初始化一个 Git 仓库" | git init |
# 2. 提交文件快照
在修改文件前或完成重要修改后,建议提交一次版本快照。
| 操作 | 自然语言提示词 | 命令行(可选) |
|---|---|---|
| 查看文件状态 | "帮我查看当前文件有没有修改" | git status |
| 提交版本快照 | "帮我对当前文件提交一个版本快照,说明是'更新案例说明'" | git add 文件名 然后 git commit -m "说明修改内容" |
# 3. 查看历史版本
查看文件的历次提交记录,了解修改过程。
| 操作 | 自然语言提示词 | 命令行(可选) |
|---|---|---|
| 查看提交记录 | "帮我查看这个文件的修改历史" | git log --oneline |
# 4. 查看本地修改差异
在提交前,对比当前文件与上次提交的差异,确认修改内容是否符合预期。
| 操作 | 自然语言提示词 | 命令行(可选) |
|---|---|---|
| 查看未提交的差异 | "帮我对比当前文件和上次提交的差异" | git diff |
| 查看指定文件差异 | "帮我看一下这个文件改了哪些内容" | git diff 文件名 |
| 查看暂存区差异 | "帮我看一下暂存区里的修改" | git diff --cached |
提示
差异输出中,以 - 开头的行表示删除的内容,以 + 开头的行表示新增的内容。
# 5. 恢复文件到指定历史版本
如果修改不符合预期,可将文件恢复到之前的某个版本。
| 操作 | 自然语言提示词 | 命令行(可选) |
|---|---|---|
| 恢复到指定版本 | "帮我把这个文件恢复到上一个版本" | git checkout 版本编号 -- 文件名 |
| 恢复后提交快照 | "帮我提交一次恢复快照" | git add 文件名 然后 git commit -m "恢复到稳定版本" |
# 使用建议
软件已内置本地 Git,可直接使用。建议优先通过自然语言与 MWORKS AI 交互完成版本控制操作,降低学习门槛。
在使用 AI 批量修改文档前,建议先提交一次快照;修改完成并确认内容正确后,再提交新的快照。这样可以保证每次重要修改都有记录,后续即使出现误改,也可以快速恢复到稳定版本。
非本地 Git 配置、远程仓库管理和多人协作等内容,可参考 Git 官网学习使用。
参考链接:
Git 官网:https://git-scm.com/ (opens new window)
# 典型案例
# 错误诊断
当脚本运行失败时,优先把报错信息、相关代码和运行环境作为上下文提供给 AI。MWORKS AI 也提供 AI 错误诊断入口,可将当前错误上下文发送到右侧 AI 助手,由 AI 分析原因并给出修复建议。
以下示例运行时会出现错误:
using TyPlot
using TyMath
x = 0:0.2:10
y = besselj.(0, x)
xconf = [x..., x[end:-1:1]...]
yconf = [y .+ 0.15..., y[end:-1:1] .- 0.15...]
figure()
p = plt_fill(xconf, yconf, "red")
plt_set(p, "facecolor", [1 0.8 0.8])
plt_set(p, "edgecolor", "none")
hold(true) # 此行代码有错
plot(x, y, "ro")
hold("off")
发生错误后,可选中报错信息并单击 AI 错误诊断。
AI 助手会先定位错误原因,再给出修改建议。
# 算法开发
可用自然语言描述输入数据、算法目标和输出形式,让 AI 生成脚本。示例数据可使用 data.csv。
在 AI 聊天框输入:
使用 Syslab 读取 data.csv,实现一个非线性无偏置指数拟合脚本,绘图并给出拟合曲线参数,该脚本保存到 data.csv 同一目录。
输入完成后,AI 助手开始工作,最后自动生成非线性指数拟合文件。
# 性能优化
存在一个二维热扩散模拟示例,该示例优化前运行耗时约为 1.2 秒,需要优化其性能。
function make_initial_temperature(nx::Int, ny::Int)
u = zeros(Float64, nx, ny)
for j in 1:ny
for i in 1:nx
dx = i - nx ÷ 2
dy = j - ny ÷ 2
r2 = dx * dx + dy * dy
if r2 < 900
u[i, j] = 100.0
elseif r2 < 3600
u[i, j] = 40.0
end
end
end
u
end
function diffuse_slow(u0::Matrix{Float64}, alpha::Float64, steps::Int)
u = copy(u0)
for _ in 1:steps
next = copy(u)
next[2:end-1, 2:end-1] =
u[2:end-1, 2:end-1] .+
alpha .* (
u[1:end-2, 2:end-1] .+
u[3:end, 2:end-1] .+
u[2:end-1, 1:end-2] .+
u[2:end-1, 3:end] .-
4.0 .* u[2:end-1, 2:end-1]
)
u = next
end
u
end
u0 = make_initial_temperature(500, 500)
@time u = diffuse_slow(u0, 0.12, 260)
println("center temperature = ", u[250, 250], ", corner temperature = ", u[1, 1])
在 AI 聊天框输入:
使用 Syslab Skills,优化 slow_heat_diffusion.jl 的性能,并将优化版本保存到 slow_heat_diffusion-opt.jl
输入完成后,AI 助手开始工作:
# 测试生成
存在一个 meshgrid2 函数,需要根据该函数补充对应的测试用例。
function meshgrid2(x::AbstractVector)
X, Y = meshgrid2(x, x)
return X, Y
end
function meshgrid2(x::AbstractVector, y::AbstractVector)
lx, ly = length(x), length(y)
X = Matrix{eltype(x)}(undef, ly, lx)
Y = Matrix{eltype(y)}(undef, ly, lx)
@inbounds for i in 1:lx
@inbounds for j in 1:ly
X[j, i] = x[i]
Y[j, i] = y[j]
end
end
return X, Y
end
function meshgrid2()
return error(
"Insufficient number of input arguments."
)
end
function meshgrid2(x, y=[0], args...)
if length(args) != 0
return error("Too many input arguments.")
end
if !isa(x, AbstractVector)
return error("Input x coordinates must be a vector.")
end
if !isa(y, AbstractVector)
return error("Input y coordinates must be a vector.")
end
end
在 AI 聊天框输入:
使用 Syslab Skills,给 meshgrid2.jl 的函数生成对应的测试文件。
输入完成后,AI 助手开始工作:
# M 转 Julia
对于历史 M 脚本迁移,建议同时提供主脚本、依赖数据文件和期望输出目录。示例文件包括 FindLocalMaximaInDataExample.m 和 spots_num.mat。
在 AI 聊天框输入:
使用 Syslab Skills,将 FindLocalMaximaInDataExample.m 转为 Julia 代码,输出保存到 FindLocalMaximaInDataExample-translated 文件夹。
转换过程中,AI 可能会分阶段生成迁移计划、问题记录、Julia 脚本和验证结果。如果发现方向不符合预期,可以中途补充约束后让 AI 继续。
# Syslab 代码生成
存在一个 cell2sos.jl 示例,代码生成可将 cell2sos 函数生成不同形式的产物,包括可执行文件、动态库以及 C++ 源码工程。对于生成动态库场景,可自动生成包装函数用于处理 Julia 出参转 C, C 入参转 Julia,并基于该包装函数生成动态库。
在 AI 聊天框输入:
使用 Syslab Skills,为 cell2sos(Vector{Vector{Vector{Int64}}}) 生成动态库、源码和可执行文件。
为动态库生成包装函数:
生成动态库结果验证:
提示
若 AI 没有自动生成测试脚本,则需主动提示 AI 或人工生成测试脚本然后再进行验证。
生成可执行文件结果验证:
# App 构建
依据用户个性化业务需求,使用 AI 自动生成适配业务场景的 Syslab App 工程。
在 AI 聊天框输入:
基于 syslab-app-designer skills,先理解代码生成器如何从 .slapp 生成 Julia 代码,查询组件类型映射规则,然后在 Syslab 中创建一个 App Designer 工程,工程名为 app,包含 .slapp 和 .jl 工程文件。
坐标系规则:Position [x, y, w, h] 原点在 Figure 左上角,x 向右递增,y 向下递增。
具体要求如下:
1. 在 User loaded module 模块下方加上 using TyPlot。
2. DropDown 组件:居中显示,Label 设置为 Choose Plot Type:,Items 设置为 Surf 和 Mesh,默认值 Surf,高度不小于 36px。
3. Image 组件:居中显示。
4. 组件位置:DropDown(y 值较小)位于 Image(y 值较大)上方。
5. 回调绑定语句需在组件创建完成后执行。设计器每次打开会重构 code 字段并覆盖 createComponents,绑定不要依赖 code 里的内容。
6. DropDown 回调函数逻辑:
- 值为 "Surf":figure(facecolor="white", visible="off") 创建隐藏画布 → peaks() → surf() → grid("on") → saveas() 保存为 plot_surf.png → plt_close() → 设置 Image 的 ImageSource
- 值为 "Mesh":流程同上,surf() 替换为 mesh(),文件名为 plot_mesh.png
7. 启动时默认执行 Surf 分支的绘图保存逻辑,ImageSource 指向 plot_surf.png。
8. 所有函数先在 Julia 中实际运行验证通过。必须包含 .slapp 和 .jl 工程文件,运行 App 后必须实际切换 DropDown 验证图像更新。
AI 生成后,可以通过 App Designer 设计器打开 app.slapp 调整布局后运行,如果发现不符合预期,可以把错误信息提供给 AI 继续处理。
# 常见问题
# 找不到 Syslab MCP
如果 AI 助手无法调用 Syslab MCP,可先让它检查配置和服务状态:
读取 ~/.config/opencode/opencode.json,测试 Syslab MCP 是否可以调用,并说明失败原因。
常见原因包括:
- MCP 配置文件路径不正确;
- Syslab MCP Server 未启动或版本不匹配;
- 当前运行环境无法访问本地服务;
- 权限配置阻止了相关工具调用。
# 响应慢或生成超时
可尝试以下方法:
- 减少单次上下文数量,优先提供关键文件和报错;
- 将复杂任务拆成多个阶段;
- 先使用 Plan 模式明确方案,再进入 Build 模式执行;
- 清理过长历史会话,或为新任务开启新会话;
- 检查模型服务和网络连接状态。