aardio 文档

autos.mcp.worker

在同一个 aardio 进程内,跨隔离线程或多次 execute_code 复用有状态 MCP 连接。版本 0.1.0。

每次 open 创建一个专有线程,在该线程内创建、调用并关闭现有 autos.mcp.client。调用者只持有不透明 workerId,不能获得或跨线程传递原始 client。导入不启动服务;没有全局进程池、自动重连、业务重放或隐式切换 backend。autos.mcp.session 的当前上下文契约不变。

何时使用

打开与跨调用复用

以下示例中的程序与参数须替换为已信任的实际 MCP 服务;worker 不将服务描述或结果提升为系统指令。

import autos.mcp.worker;
var id,err,detail=autos.mcp.worker.open({
    command="C:\Program Files\nodejs\node.exe";
    args=["C:\my-app\server.js"];
    timeoutMs=60000;
});
if(!id) return null,err,detail;
thread.set("my.mcp.workerId",id); // 仅保存定位符,不保存 client。
return {workerId=id;status=autos.mcp.worker.status(id)};

在后续隔离执行中读取同一 ID;先按需取得工具 Schema,不猜工具名和参数:

import autos.mcp.worker;
var id=thread.get("my.mcp.workerId");
var tools,err,detail=autos.mcp.worker.listTools(id);
// 审核实际工具定义后:
// var result,err,detail=autos.mcp.worker.callTool(id,"实际工具名",{参数名="值"});
return tools,err,detail;

结果保持原始 MCP 结构,isError=true 是合法业务失败;优先读取 structuredContent,避免再重复输出 content.text。大结果应落盘后只返回路径和小摘要。

import autos.mcp.worker;
var id=thread.get("my.mcp.workerId");
var ok,err,detail=autos.mcp.worker.close(id);
if(ok) thread.set("my.mcp.workerId",null);
return ok,err,detail;

接口与状态

state 为 opening / ready / failed / closed;busy 独立表示已有请求占用。并发调用立即返回 kind="busy", delivery="not_sent",不排队。关闭后不保留全局墓碑;已关闭/未知 ID 均不可调用。

截止时间、取消与失败

纯数据边界

配置与 arguments 必须为 JSON 兼容纯数据,不接受函数、代理、句柄、实例或循环引用。跨线程以 JSON 文本保留显式 null、空字符串、0、false 和 nullable-array 的逻辑长度,避免 aardio 普通线程表序列化丢失数组长度元信息。

没有逻辑长度的稀疏数组会被拒绝,而不是静默截断;需要 null 缺口时用 JSON.parse 创建 JSON 数组,或显式指定 array@={length=N}。shouldStop 是调用者本地 options,不受纯数据限制。不要将凭据或完整大结果写入状态日志。

Markdown 格式