mu-agent-bridge
v1.0.82
Published
将 AUN Agent 连接到本地桌面 AI 客户端的插件平台。
Readme
mu-agent-bridge 动态插件平台
运行时使用 TypeScript/Node.js,实现一个可动态发现、启动、停止、重载和安装插件的 daemon。
当前插件包括千问办公 qwenwork、DeepSeek Harness dsh、豆包 doubao、基于 CodeBuddy CLI 的 workbuddy、ZCode 桌面端 CDP 插件 zcode、远程 ChatGPT/Codex CDP 插件 chatgpt、个人助理管理 Agent personal-assistant,以及插件化管理后台 abweb。插件之间独立失败,管理 API 和 OpenAI 兼容接口由同一个本地控制服务提供。
快速开始
npm install
npm test
npm run start默认监听 http://127.0.0.1:26107,管理页面为 http://127.0.0.1:26107/abweb/,管理 API 为 /api/health、/api/plugins,千问办公的
OpenAI 兼容 API 为 /v1/models 和 /v1/chat/completions。管理页面位于 /abweb。
千问办公支持通过 AUN 输入文件、图片和视频附件,并从本轮“已展示最终文件”收集实际输出附件。输入附件文件名会追加本轮唯一后缀并保留扩展名,以便失败时只清理桥接自己的附件。插件等待生成结束后再回传,输出保留文件名和 MIME 类型;桌面客户端不支持的媒体能力以实际回复为准。
千问办公插件使用 CDP 9228;没有运行千问办公时,daemon 仍会启动,qwenwork 会显示为失败状态,
可以通过管理 API 重载。
安装后使用 mab start 启动。旧桥仍可使用 17893,不会与管理页面冲突。局域网访问时设置
AGENT_BRIDGE_HOST=0.0.0.0 和 AGENT_BRIDGE_TOKEN,然后访问
http://<Windows 主机 IP>:26107/abweb/。页面使用一次性配置码配对后管理插件;请只在可信网络使用。
如果 26107 被旧的 mab 进程占用,可执行 mab restart;Windows 会扫描并结束同一 CLI 安装路径的全部旧 daemon,并重新启动。mab stop 只停止 daemon,
mab update 和 ABWeb 的后台升级按钮使用相同规则:只有 npmjs 的 mu-agent-bridge@latest 高于当前版本时才升级,并启动新版本。全局安装、测试目录和源码目录按同一版本规则处理;测试时请设置高于 npmjs 的版本,避免被正式版覆盖。不会把自己的旧进程误当成新的 daemon,也不会因此默认改用临时端口。
已有 AID 的连接状态由 AUN 插件查询,只有当前已连接的身份才能关联 Agent。
本机 AID 来自 AUN 插件自身的密钥库,不依赖 ec 命令,ec stop 后仍会显示。
未配置 aun_path 时密钥库默认使用共享 AUN 目录(AUN_HOME/EVOLCORE_HOME 或
~/.evolcore),已注册的 AID 无需迁移;插件启动时自动连接密钥库中的全部 AID。
创建新 AID 必须填写 Owner AID,并安装、启动 AUN 插件;创建与通信由该插件完成。
已连接身份保存在 AUN 插件自身的密钥库和配置中。关联 AID 到 Agent 时,由 AUN 插件直接保持连接并转发来信和回复,不再执行 ec agent set/reload。
其他 Agent 插件可关联 AUN 插件自己创建的身份,由通道直接转发来信和回复。
Windows 可运行 start-mab.ps1 注册并启动登录时自动运行的计划任务;令牌保存在
%USERPROFILE%\.mab\token.txt,页面输入该令牌即可使用管理 API。
本机打开 http://127.0.0.1:26107/abweb/ 无需配置码。局域网管理页可用一次性配置码配对。
在 Windows 主机运行 mab pair,将显示的 6 位码输入
abweb 的“配置码”栏;配对码 10 分钟有效,只能使用一次,连续输错 5 次后需重新执行
mab pair。配对成功后登录有效期为 24 小时,浏览器关闭再打开仍可使用;过期后需重新配对。后台重启及升级不会使配对登录提前失效,会话校验信息保存在状态目录的 paired-sessions.json 中,磁盘仅保存令牌哈希及原定过期时间;重启不会延长有效期。本机免配对和手动配置的管理令牌按原有规则使用。配置码只能从 Windows 本机的
127.0.0.1 接口取得,远程浏览器不能读取。
环境变量:AGENT_BRIDGE_PORT、AGENT_BRIDGE_HOST、AGENT_BRIDGE_TOKEN、
AGENT_BRIDGE_PLUGINS_DIR、AGENT_BRIDGE_STATE_DIR。默认插件目录是仓库的 plugins/,状态目录
是 Windows 的 %APPDATA%\agent-bridge\state。
跨会话读取默认 allowFrom: [](白名单留空),允许所有 Peer 查询本机各来源的 AUN/飞书归档和插件已提供的原生历史,可通过独立无工具端点总结。归档采集默认关闭;读取范围仍受各插件历史能力限制。个人助理也默认接受所有 Peer、允许调用所有已就绪的普通 Agent;需要限制时可配置名单。配置与 /sessions 命令见跨会话读取说明。
npm 插件
默认包 mu-agent-bridge 已内置 abweb、AUN、千问办公、DSH 桌面版与 Linux Chrome 网页版、豆包、飞书、WorkBuddy、ZCode、ChatGPT/Codex、Codex CLI、Claude CLI 和个人助理共十三个插件,直接安装即可使用:
npm install -g mu-agent-bridge@latest
mab start十三个插件会从核心包的 plugins/ 目录自动发现。插件仍分别发布为独立 npm 包,可用于单独测试、升级或替换版本。安装与发布说明见
docs/npm-publishing.md。
mab start 启动时会查询核心包和托管插件的 npm 最新版本,检查状态保存于 mab 状态目录的
versions.json,abweb 的“版本管理”区域可查看。托管插件发现新版本后会自动下载、验证并替换;
升级失败会恢复旧插件并继续启动。核心在启动及运行中定时检查 npmjs,仅升级较低版本,不降级高版本测试包。
核心先暂存并验证新包与依赖,再备份和更新当前启动目录中的发布文件;保留其他本地文件,新 daemon 健康检查失败时恢复旧文件。Windows 的 start-mab.ps1 登录任务、命令行和 ABWeb 共用核心升级器,计划任务不必更换启动路径。全局单独安装的插件暂不自动升级。
插件候选包校验通过后,最多等待旧任务两小时;到期以 PLUGIN_UPGRADE_WAIT_TIMEOUT 结束桥接任务,最多再给旧插件五秒清理,然后继续升级,失败仍回滚。升级清理会要求保留桌面进程;千问、豆包和 ChatGPT 需使用支持该选项的配套插件。桌面原生生成可能继续,核心会拦截迟到回复;普通停止和重载不套用此期限。详见升级等待设计。
可用 mab status 查看后台、插件以及 AUN 已连接 AID 和关联 Agent 的状态。AUN 插件自己加载本地
~/.evolcore/AIDs 并建立连接,不要求先启动 ec start,也不调用 ec agent list/show。
插件更新策略可在 ABWeb 的“版本管理”中选择:默认“自动下载并安装”;“自动下载,手动安装”会把新版本缓存到状态目录并等待页面操作;“手动下载和安装”只检查版本。策略保存在 state/update-policy.json,插件下载缓存位于 state/downloads。
自动升级信任可在 ABWeb 的“自动升级信任”中设置。npm 提供者 m2lihui 默认可信,其他提供者默认不可信;用户可以取消提供者信任,也可以对单个插件设置允许或禁止。插件单独设置优先于提供者设置。信任配置保存在 state/plugin-trust.json,npm 发布者信息以 registry 元数据为准;查询失败时插件保持发现状态,但不会自动升级。旧的 AGENT_BRIDGE_TRUSTED_PACKAGES 包名名单继续兼容,直到对应提供者或插件存在明确设置。
运行时会发现核心包依赖和 AGENT_BRIDGE_PLUGIN_PACKAGES 中声明的 npm 包。插件包在自己的
package.json 中声明 agentBridge.plugin,平台复用统一的 activate、deactivate、health、
handle 生命周期。已加载插件可以通过管理 API 重载;新增 npm 包后重启 daemon 最可靠。
abweb 插件目录从 npm 搜索带 mu-agent-bridge-plugin 关键词的包,按包元数据中的
agentBridge.type 展示 Agent、Channel 和管理插件;安装后以 plugin.json 的类型和能力
再次校验,不根据包名推断类型。搜索结果有收录延迟,可在页面直接输入 agent-bridge-*
包名安装。已安装插件按清单能力兼容旧版分类。AUN 通道插件包名为 agent-bridge-aun,安装后在 AUN 身份页手动关联每个 AID;未关联的 AID 不会自动投递,关联操作只修改指定 AID。
个人助理的独立 npm 包名为 agent-bridge-pa,运行时 ID、源码和数据目录仍用 personal-assistant。在 ABWeb 的“已安装插件 → 个人助理 → 配置模型”选择已安装来源:五个桌面 Agent、Codex CLI、Claude CLI,或 OpenAI 兼容接口;列表由后台动态发现。来源未就绪时显示原因并保留原配置。专用 AUN AID 仍关联到 personal-assistant,Peer 和可调用 Agent 仍受原白名单限制。详见个人助理使用说明。
个人助理支持按 AUN Peer 保存长期偏好、加载个人或共享 SKILL.md,并在当前会话提炼技能。/assistant memory 提供查看、设置、确认和忘记,/assistant skill 提供查看、学习、运行、启停与恢复;默认自动提炼为草稿。ABWeb 原配置对话框可设置“技能与习惯”,资料跨新会话和模型来源保留。共享目录由管理员显式配置,内容会对获准访问个人助理的 Peer 可见。
workbuddy 插件包名为 agent-bridge-workbuddy,显式关联后按对端保持会话。默认问答使用独立的 @tencent-ai/codebuddy-code CLI,须单独登录;没有 CLI 时使用桌面端 CDP。CLI 未登录时不会自动切换到桌面账号。个人助理选择 WorkBuddy 桌面模型来源时请设置 transport: "cdp"。
zcode 插件包名为 agent-bridge-zcode,通过 ZCode v4 桌面端 CDP 收发文本。Windows 后台启动或重载插件时,会自动从注册信息和开始菜单查找并带 CDP 参数启动 ZCode;默认端口为 9231,可在插件配置设置 cdpPort,或使用 ZCODE_CDP_PORT 覆盖。插件保护未发送的草稿;已人工启动但未开启 CDP 时,请先从托盘退出再重载。启动参数和会话说明见 插件文档。
插件仍在 daemon 的同一个 Node.js 进程内运行。修改插件入口依赖后应重启 daemon,避免模块缓存 影响新代码。
npm 尚未发布时,核心包内置的十三个默认插件仍会出现在插件列表。abweb 的“安装本地插件”
可填写 Windows 主机上包含 plugin.json 的目录路径,例如编译后的
C:\path\to\agent_bridge\packages\dsh;安装后可在下拉框中启动。已内置的千问办公无需再次安装。
“安装 npm 插件”只适用于包已经公开发布的情况。npm 发布令牌仅供发布脚本向 npm 官网认证,
与 abweb 配置码无关;账号锁定期间无需填写发布令牌。
开发目录
开发 checkout 仍支持 plugins/<id>/plugin.json 平铺目录。设置 AGENT_BRIDGE_PLUGINS_DIR
可以使用其他插件目录;这条路径用于本地开发,不是公开 npm 包的安装方式。
WorkBuddy、千问办公、豆包、DSH、DSH Chrome、ZCode 和 ChatGPT 均支持独立的 Ability 注册目录。源码开发可用 mab ability add <plugin> <path> --name <名称> 生成默认禁用的扩展模板,完成 handler 后编译进对应插件;AUN 复用统一的能力发布、发现和逐次确认流程。当前内置机器能力为 agent/status/readiness,具体步骤见桌面 Agent Ability 使用说明。
旧桥入口
仓库仍保留 Python bridge 作为兼容入口:
src/llprobe-qwen-bridge.py:连接千问办公 CDP9226,默认身份qwenbg.agentid.cnsrc/llprobe-wb-bridge.py:调用 CodeBuddy CLI
准备环境
在 Windows PowerShell 中执行:
.\setup.ps1脚本会创建 .venv 并安装 fastaun 与 aiohttp。CodeBuddy 桥还需要已登录的
@tencent-ai/codebuddy-code 和 PATH 中的 Node.js。若 CodeBuddy 不在默认 npm
目录,可设置:
$env:CODEBUDDY_NPM_DIR = 'C:\path\to\node_modules\@tencent-ai\codebuddy-code'千问工作区默认使用 %APPDATA%\QwenWorkCN\workspace,可用 $env:QWEN_WORKSPACE
覆盖;AUN 数据默认使用 $env:EVOLCORE_HOME 或用户目录下的 .evolcore。
千问 CDP 端口默认为 9228,也可用 $env:QWEN_CDP_PORT 或 $env:AGENT_BRIDGE_QWEN_CDP_PORT 覆盖。守护进程注入端口优先级最高,用来覆盖插件配置中的冲突端口;之后依次读取插件配置、环境变量和默认值。守护进程默认保持监听端口 26107;被其他程序占用时报告错误,仅显式配置 AGENT_BRIDGE_FALLBACK_PORTS 才允许回退。豆包和 WorkBuddy 分别使用 DOUBAO_CDP_PORT、WORKBUDDY_CDP_PORT,也支持对应的 AGENT_BRIDGE_*_CDP_PORT。
自检与运行
.\.venv\Scripts\python.exe src\llprobe-wb-bridge.py --test "你好"
.\.venv\Scripts\python.exe src\llprobe-qwen-bridge.py --probe
.\.venv\Scripts\python.exe src\llprobe-qwen-bridge.py --direct "hi"
.\.venv\Scripts\python.exe src\llprobe-wb-bridge.py --aid <AID>
.\.venv\Scripts\python.exe src\llprobe-qwen-bridge.py --aid <AID>两个桥都只加载已有 AID;首次使用前请先在相同的 EVOLCORE_HOME 中注册身份。
TypeScript 自检
npm install
npm test
npm run self-test -- hiAgent 通过 AgentRegistry 注册;DSH 也可以作为动态 dsh 插件加载。DeepSeek Harness 不在默认
Windows 路径时,可设置 DSH_INSTALL_DIR。
AUN 身份管理
创建、连接、关联和 AUN 通信统一由独立 agent-bridge-aun 插件完成。安装并启动 AUN 后,在 ABWeb 的“通道 → AUN”创建或选择身份,再将已连接 AID 关联到已启动的 Agent;用 mab status 查看状态。创建 AID 时将 Owner 传给 SDK 的注册流程并尝试同步 Owner 名录;注册、连接及名录成功不代表 Owner 双边共识已激活。完整步骤见 AUN 插件与 AID 身份管理;给 Codex、Claude Code 直接执行的 CLI 说明见 使用说明。
名录查询由 AUN 插件直接访问 SDK,支持 mab directory list --self <已连接AID> --format json 和 mab directory show <联系人AID或名称> --self <已连接AID> --format json。旧身份可运行 mab aun repair-owner <已连接AID> --owner <原OwnerAID> --json 修复单个 AID,或运行 mab aun repair-old-aids --json 检查并修复当前已连接且关联桌面 Agent 的旧 AID。命令只使用新鲜签名核验出的 Owner,不从默认配置猜测或转移到其他 Owner;需 Owner 确认时返回待办状态和操作号。详见名录与旧身份修复设计。
飞书凭据与办公 Agent 关联
在 ABWeb 的“飞书通道 → 手动配置凭据”中填写 App ID、App Secret,并选择“关联办公 Agent”。Secret 使用密码框显示;已保存的密钥保持掩码,不通过状态接口返回。WorkBuddy、千问办公、豆包根据运行后台的机器上是否存在可执行文件检测,文件缺失或插件未就绪的选项置灰。自定义安装位置请在对应插件配置中填写 executablePath。
也可以使用 CLI,Secret 在命令执行后隐藏输入,不写在命令参数中:
mab feishu configure cli_你的应用ID --agent workbuddy
mab feishu agents
mab feishu list
mab feishu bind cli_你的应用ID workbuddy
mab feishu unbind cli_你的应用IDconfigure 保存凭据及可选关联后,需要在 ABWeb 重载飞书插件以连接机器人。非交互终端请使用网页密码框;不要把 Secret 写进命令行、脚本或仓库。
本地 CLI Agent
新增两个独立插件:agent-bridge-codex-cli(Codex CLI)与 agent-bridge-claude-cli(Claude Code CLI),随核心默认打包。支持在 abweb 配置、启停及通过通道关联 AID,沿用本机 CLI 的登录和默认模型。详见 本地 CLI 插件使用说明。
