1本地服务指南
启动与监听
启动客户端后,本机自动监听 http://127.0.0.1:19527。仅监听回环地址,外网无法访问;Token 相当于本机管理权限,请勿外发。
获取 Token
Windows
%APPDATA%\@matrixflow\desktop\local-api-token.txtmacOS
~/Library/Application Support/@matrixflow/desktop/local-api-token.txt界面客户端「AI 助手 → 🔌 MCP 接入」可一键查看并复制地址 / Token
健康检查
curl -H "X-MatrixFlow-Token: <token>" http://127.0.0.1:19527/api/v1/matrixflow/local-api/info curl -H "X-MatrixFlow-Token: <token>" http://127.0.0.1:19527/api/v1/agent-board/snapshot
Swagger 交互文档
浏览器打开 http://127.0.0.1:19527/api-docs 即可在线调试全部接口。
2API 常见问题(先看)
| 现象 | 原因与处理 |
|---|---|
401 Unauthorized | Token 不对或客户端未启动:重新复制 Token,并确认 MatrixFlow 正在运行 |
| 连接被拒绝 | 客户端没开(本地端口只在客户端运行时存在) |
| 窗口打不开 | 代理不通 / 安全软件拦截:先在客户端手动点「启动」看具体报错 |
| 结果里没有预期数据 | 统一信封是 {success, data},先看 success 再看 data |
| 想直接点击/输入页面 | 页面级操作走「AI 助手」或「MCP 工具」,本地 HTTP 不提供裸页面操作端点(设计如此) |
3请求参数与响应格式
通用请求
除注明外均使用 JSON 请求体,鉴权头 X-MatrixFlow-Token 必带。
通用响应信封
{"success": true, "data": { ... }}
{"success": false, "error": { "code": "VALIDATION_ERROR", "message": "platform must be one of ..." }}
SDK 示例(Node 18+)
const BASE = "http://127.0.0.1:19527";
const TOKEN = "<从客户端复制>";
const api = (p, init) => fetch(BASE + p, {
...init,
headers: { "X-MatrixFlow-Token": TOKEN, "Content-Type": "application/json", ...(init?.headers || {}) }
}).then((r) => r.json());
const list = await api("/api/v1/profiles?page=1&pageSize=50");
await api(`/api/v1/profiles/${list.data[0].id}/open`, { method: "POST", body: "{}" });
await api("/api/v1/matrixflow/agent/chat", {
method: "POST",
body: JSON.stringify({ sessionId: "demo", messages: [{ role: "user", content: "打开 3 号窗口,读取页面标题" }] })
});
import requests
BASE = "http://127.0.0.1:19527"
H = {"X-MatrixFlow-Token": "<token>", "Content-Type": "application/json"}
print(requests.get(f"{BASE}/api/v1/profiles", headers=H, params={"page": 1, "pageSize": 50}).json()["data"])
print(requests.get(f"{BASE}/api/v1/ai-models", headers=H).json()["data"]["version"])
4浏览器窗口接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/profiles | 窗口列表(page / pageSize) |
| POST | /api/v1/profiles | 新建窗口(name / platform / startupUrl / groupId / proxyId / notes / fingerprint / cookies) |
| DELETE | /api/v1/profiles/:id | 删除窗口(先停止再删除,不可恢复) |
| POST | /api/v1/profiles/:id/open | 启动窗口并等内核就绪(建议超时 ≥60s) |
| POST | /api/v1/profiles/:id/close | 关闭窗口(快路径立即关,后台完成快照) |
| GET | /api/v1/profiles/running | 正在运行的窗口(含当前 URL / 出口 IP / 国家) |
POST /api/v1/profiles 参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
name | string | 是 | 窗口名称 |
platform | string | 否 | CUSTOM / TIKTOK / FACEBOOK / INSTAGRAM / AMAZON / YOUTUBE / TWITTER / GOOGLE 等 |
startupUrl | string | 否 | 自定义启动地址;永远作为第二个标签页,第一个标签页固定为产品导航页 |
groupId / proxyId | string | 否 | 所属分组 / 绑定代理 |
fingerprint | object | 否 | 自定义指纹(os / userAgent / timezone / language / screen / webRTC / canvas / webGL / fonts);不传则自动随机(默认中文) |
curl -X POST "http://127.0.0.1:19527/api/v1/profiles" \
-H "X-MatrixFlow-Token: <token>" -H "Content-Type: application/json" \
-d '{"name":"小红书9","platform":"CUSTOM","startupUrl":"https://www.xiaohongshu.com"}'
# {"success":true,"data":{"id":"cmu...","seqId":9,"fingerprint":{...}}}
curl -X POST "http://127.0.0.1:19527/api/v1/profiles/cmu.../open" \
-H "X-MatrixFlow-Token: <token>" -d '{}'
# {"success":true,"data":{"status":"RUNNING",...}};未就绪会如实返回失败原因
5浏览器分组接口
分组走云端接口(需要登录态 Bearer Token,客户端内部已托管):
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /profile-groups | 分组列表(含每个分组内窗口数) |
| POST | /profile-groups | 新建分组(name) |
| PATCH | /profile-groups/:id | 重命名分组 |
| DELETE | /profile-groups/:id | 删除分组(组内窗口变为未分组) |
| PATCH | /profiles/:id | 改窗口(groupId 移到目标分组,空串 = 移出分组) |
6会话快照接口(跨设备登录态)
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/window-sync/snapshots | 快照列表 |
| POST | /api/v1/window-sync/snapshots | 手动创建快照 |
| POST | /api/v1/window-sync/snapshots/:id/restore | 恢复某窗口的标签页 / Cookie / 登录态 |
| DELETE | /api/v1/window-sync/snapshots/:id | 删除快照 |
7工作流 / RPA 接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/matrixflow/workflows | 工作流列表 |
| POST | /api/v1/matrixflow/workflows/sync | 同步工作流到云端 |
| POST | /api/v1/matrixflow/workflows/init | 初始化工作流 |
| POST | /api/v1/matrixflow/workflows/hard-save | 强制保存工作流 JSON |
| POST | /api/v1/matrixflow/workflows/rename | 重命名工作流 |
| POST | /api/v1/matrixflow/automa/open | 在绑定窗口打开 Automa 设计器 |
| GET | /api/v1/automation/tasks | RPA 任务列表 |
| POST | /api/v1/automation/tasks/:id/run | 立即执行 RPA 任务 |
| GET | /api/v1/matrixflow/rpa/target-tabs | 绑定窗口的标签页列表 |
| POST | /api/v1/matrixflow/rpa/create-tab | 新建标签页 |
| POST | /api/v1/matrixflow/rpa/update-tab | 更新标签页 |
| POST | /api/v1/matrixflow/rpa/remove-tab | 关闭标签页 |
| POST | /api/v1/matrixflow/rpa/execute-script | 在窗口内执行脚本 |
| POST | /api/v1/matrixflow/rpa/send-message | 向窗口发送消息 |
8AI 助手接口
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/v1/matrixflow/agent/chat | 下一条自然语言任务(内部:计划 → 执行 → 核验) |
| POST | /api/v1/matrixflow/agent/chat/cancel | 取消当前会话任务 |
| GET | /api/v1/ai-models | 后台模型库 + 当前选择 + 推理强度 |
| POST | /api/v1/ai-models/sync | 立即拉取最新模型清单 |
| GET | /api/v1/agent-board/snapshot | 所有任务卡(状态 / 计划 / 每步结果 / 核验) |
| GET | /agent-board/events | SSE 实时事件流(带 token 参数) |
| POST | /api/v1/agent-board/cancel | 停止指定任务 |
| POST | /api/v1/agent-board/clear | 清理已结束任务卡 |
agent/chat 请求体
{
"sessionId": "my-job-1",
"messages": [
{ "role": "user", "content": "打开 3 号窗口,海外版小红书养号 10 分钟" }
]
}
多模态:content 支持 [{type:"text"},{type:"image_url",image_url:{url:"data:image/png;base64,..."}}],V4.1 Flash 会直接看图。
9微信远程接口
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/v1/wecom/status | 微信远程绑定状态 |
| GET | /api/v1/wecom/log | 最近消息日志 |
| POST | /api/v1/wecom/rotate | 轮换绑定 |
| POST | /api/v1/wecom/unbind | 解绑 |
| POST | /api/v1/wecom/open-media | 打开媒体文件 |
10MCP 接入(Claude Desktop / Cursor / Codex)
客户端「AI 助手 → 🔌 MCP 接入」一键复制下面的配置,粘到 Claude/Cursor/Codex 的 mcpServers 即可。
{
"mcpServers": {
"matrixflow": {
"command": "<本机 node 路径>",
"args": ["<安装目录>/resources/agent-skills/matrixflow-browser-control/scripts/matrixflow-mcp.mjs"],
"env": {
"MF_LOCAL_API": "http://127.0.0.1:19527",
"MF_LOCAL_API_TOKEN": "<从客户端复制的 Token>"
}
}
}
}
MCP 工具
mf_list_windows列出所有窗口(序号 / 名称 / ID / 平台 / 状态)
mf_open_window打开窗口并跳转到指定网址
mf_close_window关闭窗口
mf_agent_chat下一条自然语言任务(复用 AI 助手全部能力)
mf_agent_cancel取消进行中的任务
更细的页面操作(点击/输入/滚动/读文本/截图/发笔记/养号)直接通过 mf_agent_chat 用自然语言下发,或安装完整 Skill 后使用其内置脚本。
11附录
HTTP 状态码
| 状态码 | 含义 | 处理 |
|---|---|---|
200/201 | 成功 | 读取 data |
400 | 参数不合法 | 按 error.message 修正 |
401 | Token 缺失或错误 | 重新复制 Token |
404 | 资源不存在 | 用列表接口确认 ID / 序号 |
409 | 并发冲突 | 等当前任务结束或换窗口 |
500 | 服务内部错误 | 看 error.message;仍失败重启客户端 |
并发与限制
- 只监听
127.0.0.1,Token 等于本机权限,请勿外发。 - 同一窗口同一时间只跑一个任务;多窗口建议并发 2-4 个(6 个以上容易把内存压满)。
- 单条 AI 任务默认上限 8 分钟 / 300 步;发布、注册类脚本单次最长 7 分钟。
- 窗口启动 15-45 秒(取决于代理),接口超时建议 ≥60 秒。
页面级操作(点击 / 输入 / 滚动 / 读文本 / 截图 / 发笔记)不做裸 HTTP 端点——统一走「AI 助手」或「MCP 工具」,保证操作前读页面、操作后强制核验,不会出现“假成功”。