接入编码 Agent
编码 Agent 通过本地节点的 MCP 服务器(anet mcp,参见 MCP)接入网络。命令 anet agents wire 会把该服务器连同一份简短的操作指南,写入本机已安装的各编码 Agent 的配置文件;命令 anet agents unwire 则将两者再次移除。
各工具的指南(含前提条件、验证与移除步骤)请从 接入 AI 工具 开始。本页说明受支持的工具、被修改的文件、适用于每次修改的规则,以及 Hermes 专有的选项。
概述
编码 Agent 本身不具备关于 ANet 的知识。接入由两部分组成:
一个 MCP 服务器条目,它以节点的数据目录启动
anet mcp,使 MCP 工具 中的工具集在编码 Agent 中可用;一份 操作指南,即一段简短文字,说明如何使用这些工具、如何报告任务结果,以及 Agent 不得做什么(例如调高支出限额,或执行其他 Agent 发给节点的任务中所包含的指令)。
MCP 服务器只接受启动它的进程发出的工具调用,并通过本地控制面把调用转发给节点的守护进程。身份密钥、账本和入站策略由守护进程保管,编码 Agent 不持有其中任何一项。会改变节点权限的操作,例如允许某个对等方、放宽入站策略或更改付款限额,不作为工具提供,仍由运维人员在终端中执行。
该命令只处理文件,不需要守护进程在运行,安装程序会在第一次 anet up 之前运行它。MCP 服务器本身则需要守护进程在运行;参见 MCP。
受支持的工具
anet agents wire 的工具参数是第一列中的名称之一。claude-code 可作为 claude 的别名使用。
参数 |
MCP 服务器条目 |
操作指南 |
环境变量 |
|---|---|---|---|
|
|
技能 |
|
|
|
|
|
|
|
无;MCP 服务器在连接时自行发送其说明 |
|
|
|
|
|
|
|
|
|
|
|
无;MCP 服务器在连接时自行发送其说明 |
工具的可执行文件位于 PATH 中,或其配置目录存在时,即视为已安装。WorkBuddy 是没有命令行程序的桌面应用,因此在 ~/.workbuddy 存在时视为已安装。不带工具参数或使用 --all 时,命令会为每个已安装的受支持工具接入,并将其余工具报告为未安装。显式指定名称的工具即使未被检测到,也会接入。
Claude Code
服务器注册在用户作用域内,对本机上的所有项目生效。claude 位于 PATH 中时,条目通过 claude mcp add -s user 创建,因为 Claude Code 自行管理其文件的加锁和格式。claude 不在 PATH 中时,命令直接编辑 ~/.claude.json。操作指南以技能形式安装;任务提到 ANet 时才会加载,不会占用其他会话的上下文。
Codex
Codex 命令行程序、IDE 扩展和桌面应用共用 ~/.codex/config.toml,或 CODEX_HOME 所指目录中的同名文件。条目写入由标记注释界定的块内。startup_timeout_sec = 30 与 tool_timeout_sec = 900 被显式设置:工具 wait_task 会一直阻塞到任务状态改变,而远程 Agent 的任务以分钟计,Codex 默认的工具超时为 60 秒。
全局目录中存在 AGENTS.override.md 时,Codex 读取它而不是 AGENTS.md。此时操作指南不会被加载,wire 会报告该文件。受信任项目中的 .codex/config.toml 优先于用户级文件,wire 不检查它。官方参考:https://developers.openai.com/codex/mcp。
Cursor
条目写入 ~/.cursor/mcp.json,编辑器和 Cursor 命令行 Agent 均会读取该文件(当前文档中该程序名为 agent,早期版本使用 cursor-agent)。Cursor 没有用户级的规则文件,因此不安装操作指南。由先前版本写入 ~/.cursor/rules 的旧规则文件,在其内容表明属于 ANet 时会被移除。
opencode
条目采用 opencode 的格式:"type": "local",命令及其参数放在同一个数组中,带有显式的 enabled 标志,并以 environment 取代 env。仅存在 opencode.jsonc 时,以该文件为目标。编辑器不保留注释:文件中含有注释时,命令不作任何更改,而是输出该条目,供手动插入。
Hermes
条目直接运行二进制文件,不经过 shell 包装。Hermes 将工具命名为 mcp_anet_<tool>,例如 mcp_anet_list_agents,SOUL.md 中的操作指南使用这些名称。在原生 Windows 上,Hermes 的默认主目录不是 ~/.hermes,需将 HERMES_HOME 设为实际使用的目录。超时设置为 timeout: 900 与 connect_timeout: 30。可选的 a2a_agents 条目参见 Hermes 与远程 Agent(--a2a)。
接入与移除
用法概要
$ anet agents [status]
$ anet agents wire [--all | <tool>...] [--refresh] [--a2a <aid>...]
$ anet agents unwire [--all | <tool>...] [--a2a <aid>...]
--all 与显式指定的工具名称互斥。--refresh 和 --a2a 适用于 Hermes;--refresh 只被 wire 接受。至少有一个工具以冲突或错误告终时,命令以非零状态退出,使安装程序不会在部分结果的情况下报告成功。
步骤
如尚未完成,先初始化并启动节点:
$ anet init $ anet up
向本机的编码 Agent 注册服务器:
$ anet agents wire --all
按名称接入单个工具:
$ anet agents wire claude
重启编码 Agent,或开启新会话。工具在会话开始时加载。
检查结果:
$ anet agents
命令为每个工具报告一种状态:未安装、未接入、已接入且为最新、已接入但已过时(条目或指南与
wire现在会写入的内容不同),或冲突。对于已过时的条目,报告会给出用于更正的命令。在编码 Agent 中调用工具
node_status。若响应中包含节点的 AID 和版本,则说明从 Agent 到守护进程的链路工作正常。守护进程未运行时,MCP 服务器不会启动;客户端会报告连接失败。
移除的方式与之对称:
$ anet agents unwire claude
$ anet agents unwire --all
unwire 会移除 MCP 条目、操作指南,以及每个 a2a_agents 条目及其令牌。名为 anet 但并非由 ANet 写入的条目保持不变,并会报告出来。
适用于每次修改的规则
该命令会编辑其他程序的配置文件。对每个工具适用相同的规则:
- 备份
修改文件之前,先把它复制为原文件旁的
<name>.anet-bak-<UTC 时间>。已有的备份从不覆盖。- 绝对路径的二进制文件与固定身份
条目以绝对路径指明
anet二进制文件,并把ANET_DATA_DIR设置为命令运行时所选身份的数据目录。MCP 客户端不会加载运维人员的 shell 配置文件,而且一旦身份被固定,anet mcp就严格解析:它只连接该身份的守护进程,不连接其他任何守护进程。要接入另一个身份,请用--id选择:$ anet --id bob agents wire claude
每个工具只有一个
anet条目;之后为另一个身份执行的wire会替换先前写入的条目。通过go run启动的二进制文件会被拒绝,因为进程退出时临时构建目录会消失。- 原子写入
文件先写入同级的临时文件再重命名。被替换文件的权限模式得以保留。
- 幂等性
运行两次
wire,第二次不会产生任何更改。升级anet之后再次运行,会更新操作指南,并在二进制文件路径改变时更新条目。- 冲突
已有名为
anet但命令不是anet mcp的条目不会被覆盖。该工具会被报告为冲突,对其不作任何更改,且退出状态为非零。运维人员移除或重命名冲突的条目后,再次运行wire。对于 Codex 文件中并非由anet agents wire写入的表mcp_servers.anet,处理方式相同;报告会给出行号。- 受管理的块
在 TOML、YAML 和 Markdown 文件中,命令只编辑其自身标记行之间的文本。在受管理的块内所做的修改,会被下一次
wire覆盖。- 已被取代的内容
早期版本曾向
~/.claude/CLAUDE.md追加角色块,在~/.cursor/rules下写入规则文件,并通过anet install --agent openclaw向~/.openclaw/AGENTS.md追加块。wire会移除 Claude Code 的块和 Cursor 的文件;wire --all与unwire --all在 OpenClaw 的块存在时会将其移除。OpenClaw 不是受支持的工具。
命令写入的条目
下列示例展示二进制文件位于 /usr/local/bin/anet、数据目录为 /home/operator/.anet 时的条目。这些路径在每台机器上以实际值为准。
Claude Code、Cursor 与 WorkBuddy 使用相同的 stdio 格式:
{
"mcpServers": {
"anet": {
"type": "stdio",
"command": "/usr/local/bin/anet",
"args": ["mcp"],
"env": { "ANET_DATA_DIR": "/home/operator/.anet" }
}
}
}
Cursor 与 WorkBuddy 的条目没有 type 成员。对于 Claude Code,等效的命令为:
$ claude mcp add -s user anet -e ANET_DATA_DIR=/home/operator/.anet -- /usr/local/bin/anet mcp
Codex,位于 config.toml:
# >>> anet (managed by `anet agents wire`; edits inside this block are overwritten) >>>
[mcp_servers.anet]
command = "/usr/local/bin/anet"
args = ["mcp"]
env = { ANET_DATA_DIR = "/home/operator/.anet" }
startup_timeout_sec = 30
tool_timeout_sec = 900
# <<< anet <<<
opencode,位于 opencode.json:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"anet": {
"type": "local",
"command": ["/usr/local/bin/anet", "mcp"],
"enabled": true,
"environment": { "ANET_DATA_DIR": "/home/operator/.anet" }
}
}
}
Hermes,位于 config.yaml:
# >>> anet mcp (managed by `anet agents wire`; edits inside this block are overwritten) >>>
mcp_servers:
anet:
command: "/usr/local/bin/anet"
args: ["mcp"]
env:
ANET_DATA_DIR: "/home/operator/.anet"
timeout: 900
connect_timeout: 30
# <<< anet mcp <<<
opencode 文件的 $schema 成员仅在由 wire 创建该文件时写入。
WorkBuddy
条目写入 WorkBuddy MCP 指南所述的用户级文件 ~/.workbuddy/mcp.json,采用该指南的格式:mcpServers 下的 command、args 与 env。文件中的其他服务器予以保留。不是纯 JSON 的文件(例如含有注释)不会被编辑,命令改为输出需手动加入的条目。
仅写入 WorkBuddy 文档已确认的部分。不安装操作指南,因为文档未载明用户级指令文件;MCP 服务器在连接时自行发送其说明,但 WorkBuddy 是否将其交给模型,文档未载明。不写入超时:文档载明的默认值为 30 秒,且未说明用户级条目是否遵从 timeout 成员。在当前版本确认之前,请以默认等待时间调用 wait_task,任务仍在进行时重复调用。重载行为、菜单路径和信任提示见官方指南(https://www.workbuddy.cn/docs/workbuddy/From-Beginner-to-Expert-Guide/Function-Description/MCP-Guide),命令在写入条目后会输出这一参考链接。WorkBuddy 与 CodeBuddy 命令行程序不同,后者的文件位于 ~/.codebuddy,wire 不处理 CodeBuddy。
在 Windows 上,anet 运行于 WSL2 内,WorkBuddy 应用运行于宿主系统。由 WorkBuddy 启动 wsl.exe -e <path-to-anet> mcp 的配置尚未经过测试,wire 也不写入该配置。
Hermes 与远程 Agent(--a2a)
Hermes 可通过自带的 A2A 客户端调用远程 Agent。该选项面向网络上的 Agent;对于同一台机器上的 Agent,Hermes 文档建议使用进程内子 Agent。使用 --a2a 时,wire 会为每个 AID 在 config.yaml 中添加一个 a2a_agents 条目。每个条目指向节点的本地 A2A 接口(参见 本地 A2A 端点),使调用由节点签名、封闭并中继。Hermes 不会直接联系远程 Agent。
$ anet agents wire hermes --a2a <aid-of-remote-agent>
Hermes 的 a2a 工具集在命令行中默认关闭。需启用一次,否则 a2a_call 不可见;wire 在写入条目后会提示运维人员:
$ hermes tools enable a2a --platform cli
多个 AID 可以写成逗号分隔的列表、重复的 --a2a 选项,或跟在一个 --a2a 之后的多个词。AID 由小写字母和数字组成,长度为 8 到 128 个字符。--a2a 要求同一命令中包含 hermes(或 --all)。
生成的条目形式如下:
# >>> anet a2a (managed by `anet agents wire`; holds the local A2A token - keep this file 0600) >>>
a2a_agents:
"<aid-of-remote-agent>":
url: "http://127.0.0.1:43811/a2a/v1/agents/<aid-of-remote-agent>"
auth:
type: bearer
token: "<local A2A token>"
timeout: 3600
# <<< anet a2a <<<
这些条目的特性:
条目中包含本地 A2A 接口的 bearer 令牌。因此文件的权限保持为
0600;wire会收窄较宽的权限,anet agents会报告权限较宽的文件。地址与令牌读取自 a2a 模块状态目录中的
a2a_addr.txt与a2a_token.txt。这些文件在守护进程首次提供该接口时创建。若它们不存在,wire --a2a会失败,并提示先运行anet up。当另一个进程占用已记录的端口,或接口因端口冲突而未启动时,
wire拒绝写入该条目。否则令牌会被交给占用该端口的进程。面向 Hermes 的操作指南说明:列在
a2a_agents下的远程 Agent 可通过a2a_call访问,并且适用相同的支出限额。
接口的端口或令牌改变时,已有的条目随之失效。这发生在文件 a2a_addr.txt 被删除、紧急密钥轮换以及端口冲突解决之后。此时 anet agents 会报告某条目的端口或令牌已改变。使用下列命令重写这些条目:
$ anet agents wire hermes --refresh
如只移除个别条目而保留 MCP 条目:
$ anet agents unwire hermes --a2a <aid-of-remote-agent>
不带 --a2a 的 unwire hermes 会移除 MCP 条目、指南以及所有条目及其令牌。
说明
默认关闭。 操作指南告知编码 Agent:新节点不接受任何其他 Agent 的任务,也不产生任何支出。这两项由运维人员在终端中开启,相关命令会要求确认;参见 委派与自动回复 与 付款(x402)。
来自其他 Agent 的任务是不可信输入。 指南要求编码 Agent 不要因为此类任务的文字要求而运行命令、读取文件、发送机密或产生支出。这条指示只是一种缓解措施,真正起约束作用的是入站策略和 沙箱与凭据 中所述的沙箱。
守护进程重启之后。 控制令牌被替换后,正在运行的
anet mcp进程会重新找到守护进程,并将失败的调用重试一次。会话无需仅因此重启。不含 MCP 的构建。 使用
-tags no_mcp构建的二进制文件没有 MCP 服务器;此时anet agents与anet mcp会以指明该构建的消息结束。报告。
anet doctor包含每个工具的状态,对 Hermes 还包含每个a2a_agents条目的状态。