返回首页

Mac mini 上的数学 AI 代理

描述了使用 Wolfram Engine、Qwen Code CLI 和 Delta Chat 在 Mac mini 上创建自主数学实验室。该系统从信使接收任务,本地生成并执行 Wolfram 代码,返回带有图表的結果,并保存完整的会话历史。

Mac mini 上的数学实验室:AI + Wolfram
Advertisement 728x90

用于数学研究的AI代理:Mac mini上的Wolfram Engine + Qwen Code CLI

一个完全自主的数学研究实验室已诞生,可通过消息应用程序访问——无需云API、外部服务器,也无需担心代码与数据的失控。该系统在Mac mini本地运行,从Delta Chat接收任务,使用Qwen Code CLI以Wolfram语言生成算法,通过Wolfram Engine执行,并将带图表的结果直接返回聊天。这并非预构建解决方案的界面,而是一个能完整记录从问题提出到验证整个思考过程的研究环境。

无中间服务的架构

整个消息处理流水线都以本地工作流实现,不依赖任何第三方API或SaaS平台。其关键优势在于对输入提示、执行代码及数据生命周期的完全掌控。没有隐藏的云端调用,不会自动将代码发送至LLM服务,也不会在用户机器之外收集任何指标。

来自Delta Chat的消息(通过IMAP/SMTP)进入Python机器人math_bot.py,它会:

Google AdInline article slot
  • 根据WHITELIST_EMAIL验证发件人;
  • 启动新会话或恢复已有会话;
  • 构建原子级提示,包含来自QWEN_PREAMBLE的系统前缀以及先前步骤的上下文;
  • 以无头模式运行qwen并添加--yolo --continue标志;
  • 将标准输出以JSON格式捕获;
  • 按扩展名.png.jpg.svg.pdf解析/tmp/mrl_graphics/中的图形文件;
  • 将结果发回聊天,同时将历史保存在sessions/中。

值得注意的是,Qwen Code CLI并未被当作“黑箱”使用。它作为本地子进程启动,所有wolframscript命令都在严格限定的目录下执行,并明确指定路径。图形仅导出至专用临时文件夹——不会向主目录或~/Downloads写入任何副作用。

环境要求与执行安全

该系统专为macOS 14+设计,但也可通过跨平台组件兼容Linux和Windows。关键依赖包括:

  • Wolfram Engine 14.1+——个人使用的免费版引擎。通过pkg安装,将wolframscript二进制文件加入PATH。所有计算均在本地完成,不会将任何表达式发送至Wolfram Cloud。
  • Qwen Code CLI v3.5 Plus——在Node.js上运行的无头模型版本。无需API密钥。模型本地加载,约2.1GB(量化为GGUF),并通过qwenCLI以--model qwen3.5-plus.Q4_K_M.gguf启动。
  • Delta Chat RPC服务器——原生二进制程序(deltachat-rpc-server)负责管理邮箱连接。仅在本地使用时启用--no-verify-ssl模式;建议采用QR码进行PGP加密以实现端到端保护。

安全配置分三个层面实施:

Google AdInline article slot
  • 网络:Delta Chat使用标准IMAP/SMTP端口,不进行端口转发、VPN或白名单IP设置。流量采用TLS 1.3加密。
  • 进程:Qwen启动时设置QWEN_TIMEOUT=600超时限制,以约束复杂任务的执行。若超出时限,则通过subprocess.run(..., timeout=...)强制终止进程。
  • 文件:所有图形仅保存在/tmp/mrl_graphics/,会话则存于PROJECT_DIR/sessions/GRAPHICS_DIR路径在使用前会通过is_dir()检查是否绝对有效且存在。

会话生命周期实现

该机器人支持七种会话管理命令,每条命令都会修改SESSIONS_DIR中的状态:

  • /start——创建带有唯一UUID的新会话,初始化session_YYYYMMDD_HHMMSS.md_assets/
  • /continue——恢复上次活跃的会话。
  • /resume <id>——按ID打开特定会话。
  • /peek——显示当前日志的最后PEEK_LINES=40行。
  • /archive——将会话移至archived/,从索引中删除。
  • /close——结束会话:将solution.wl复制到algorithms/,生成summary.md,并清空_assets/
  • /help——输出帮助信息,但不访问内部路径。

每个会话都是一个Markdown文件,按时间顺序记录对话内容,每一步都包含四个必填区块:

  • 口头算法(编号步骤);
  • Wolfram语言代码(可直接执行的精确文本);
  • wolframscript的实际输出(stdout/stderr);
  • 结果解读(1–2句话)。

这确保了可重复性:任何一步均可通过wolframscript -code "..."手动重演,所有图形也可从Export[...]重新生成。

Google AdInline article slot

工作交互示例

用户向聊天发送如下消息:

求y = x^2与y = 2x + 3的交点,并绘制图形。

机器人将请求转发给Qwen Code CLI,并附上前缀:

仅使用wolframscript(而非Python)。图形保存在/tmp/mrl_graphics/。图形标签应使用拉丁字符。

求y = x^2与y = 2x + 3的交点,并绘制图形。

Qwen返回结构化响应:

  • 口头算法

1. 将两函数设为相等:x^2 == 2x + 3

2. 转换为标准形式:x^2 - 2x - 3 == 0

3. 解二次方程

4. 在同一张图上绘制两函数

  • Wolfram代码

---wl---

eq = x^2 == 2 x + 3;

solutions = Solve[eq, x];

Plot[{x^2, 2 x + 3}, {x, -3, 5},

Epilog -> {Red, PointSize[Large],

Point[{x, x^2} /. solutions]},

PlotLabel -> "y=x^2与y=2x+3的交点",

AxesLabel -> {"x", "y"}]

Export["/tmp/mrl_graphics/intersection.png", %]

---wl---

  • Wolframscript结果

{{x -> -1}, {x -> 3}}

$Graphics$

  • 结果解读

交点:(-1, 1)和(3, 9)。图形已保存为intersection.png。

机器人从/tmp/mrl_graphics/提取PNG,将其发送至聊天,并将此部分添加到会话日志中。

重要事项

  • 本地执行保障隐私:任何数学对象、公式或图形都不会离开用户机器。
  • Wolfram Engine并非Python的替代品——它是专用计算器:提供精确的符号代数、可视化及数值方法,无需编写自定义求解器。
  • Qwen Code CLI充当代码生成器,而非求解器:模型从不输出“最终答案”,只生成可执行代码,并等待wolframscript的实际输出。
  • Delta Chat实现端到端加密,无需服务器:PGP密钥通过QR码交换,消息在设备上加密。
  • algorithms/结构打造可重复解决方案的仓库:每个算法都包含description.mdreasoning.mdsolution.wl——可直接集成到CI/CD管道或文档中。

设置与部署

要部署,需:

  • 从官网安装Wolfram Engine,并运行wolframscript --install
  • 安装Node.js 20+,执行npm install -g qwen-cli
  • 创建conda环境:conda create -n mathbot python=3.12 && conda activate mathbot
  • 安装依赖:pip install -r requirements.txt
  • 配置config.py:指定WHITELIST_EMAILPROJECT_DIRQWEN_CMD
  • 运行初始化脚本:bash init.sh——这将创建sessions/algorithms/_index.md
  • 启动机器人:python math_bot.py

启动后,机器人每30秒轮询一次邮箱。测试时只需从授权邮箱发送/start即可。会话实时记录,错误则保存在math_bot.log中。

— Editorial Team

Advertisement 728x90

继续阅读