2026b

# 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 官方类型的自定义模型。在模型配置界面的自定义模型区域,单击添加自定义模型

在自定义模型配置界面填写模型信息。

图中各配置项说明如下:

  1. 类型:选择自定义模型的接口类型,目前支持 OpenAI 兼容OpenAI 官方Anthropic 官方
  2. Provider:输入模型服务提供方名称。
  3. URL:输入模型服务的 API 地址,例如 https://api.openai.com/v1
  4. API Key:输入模型服务提供方分配的 API Key。
  5. 模型名称:输入需要调用的模型名称。
  6. 添加模型:单击后可继续添加其他模型。
  7. 保存:完成配置后,单击 保存 保存自定义模型。

提示

产品支持在多种模型间进行切换,不同模型的部分能力可能存在差异,属于正常现象。

# 发送第一个问题

在输入框中输入自然语言问题或任务描述,按 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.mspots_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 模式执行;
  • 清理过长历史会话,或为新任务开启新会话;
  • 检查模型服务和网络连接状态。