agent-bridge-pa
v1.0.16
Published
mu-agent-bridge 的个人助理管理 Agent 插件。
Maintainers
Readme
个人助理管理 Agent
agent-bridge-pa 是通过 AUN 使用的管理 Agent,运行时插件 ID 仍为 personal-assistant。安装并启动插件后,先创建一个专用 AID,再把该 AID 绑定到 personal-assistant;普通聊天和管理操作都在这个 AUN 会话中完成。
配置
endpoint(完整的 OpenAI 兼容 /chat/completions 地址)、model 和 apiKey 是自然语言工具调度的可选配置。未配置模型时,精确的 /assistant agent call <agent-id> <任务> 命令仍可使用核心授权直接转发。allowedPeers、allowedAgents 默认均为 [](界面留空),接受所有 AUN Peer,允许调用五个桌面 Agent、CLI 及后续安装的普通 Agent。绑定个人助理 AID 后无需进入 ABWeb 设置白名单即可测试,目标 Agent 仍须已就绪;自身和其他管理型 Agent 不可作为派活目标。两项名单留空接受所有,填写具体身份/插件 ID 后才限制;旧 * 配置保留兼容。timeoutMs 控制单次模型请求,默认 120 秒。密钥只保存在本机配置中,不要写入仓库或消息。白名单留空的规则要求核心 >=1.0.78,独立插件会拒绝不满足版本的旧核心。
需要限制时,在 ABWeb 的个人助理配置中将 allowedPeers 改为指定的 AID、将 allowedAgents 改为允许的插件 ID。清空名单即恢复全部允许,保存和重载后保持此规则。升级保留已有具体名单;缺失字段或空数组均表示全部允许,无需填写 *。模型来源及 AID 绑定继续沿用原配置。
个人助理要求核心 mu-agent-bridge >=1.0.78,插件使用 Node.js 22.16 或更高版本。仅有旧核心版本时会拒绝加载不兼容的包。
在 ABWeb 的“已安装插件 → 个人助理 → 配置模型”选择来源。插件列表来自 daemon 的能力接口,包含已声明模型来源的五个桌面 Agent(WorkBuddy、千问办公、豆包、DSH、ChatGPT)及 Codex CLI、Claude CLI;未就绪的插件保留显示并给出原因,不会自动替换已选来源。选择“OpenAI 兼容接口”时填写地址和模型名;本地免密服务可以留空密钥。保存表单只修改有变化的字段,空白密钥保留原值,隐藏的 Owner、能力及 AID 配置不会被覆盖。
插件来源配置示例:
{
"modelProvider": "plugin",
"modelPlugin": "qwenwork",
"timeoutMs": 120000
}上述示例省略白名单,使用默认的所有 AUN Peer 和所有已就绪的普通 Agent。
modelPlugin 决定个人助理使用哪个插件生成决策,allowedAgents 决定允许向哪些 Agent 派发任务,二者独立。桌面来源沿用桌面已登录账号和当前模型,无需填写 API Key;CLI 沿用 daemon 用户的默认模型。WorkBuddy 桌面来源需要 transport: "cdp";CLI 需要先配置独立的绝对工作目录并登录。来源插件及核心都需更新到支持通用模型入口的版本。
同一 AUN 会话的模型上下文保存在个人助理数据目录的 model-sessions.json 中,没有按闲置时长失效的计时器。重载后会继续读取;在普通私聊发送 /new 会生成新的会话,不带入旧内容(话题内 /new 沿用核心的拒绝规则)。最多保留最近 128 个会话,每会话 40 条消息及 120000 个序列化字符,超限按完整轮次删除旧历史。历史包含用户正文和工具结果,请按聊天记录保护本地文件;不写入模型配置密钥或附件二进制。写盘失败会记录警告并保留内存历史,但此时重载可能丢失尚未落盘的内容。
模型会话使用原通道、接收 AID、Peer 与 thread 的逻辑会话及来源 ID 隔离;桌面映射保存在原插件数据目录中,重载后可恢复。模型请求与普通任务共用原插件队列,不发送聊天心跳,不为调用模型启动或重启桌面;用户有草稿、正在生成或等待确认时会拒绝切换。取消先结束个人助理等待;桌面仍在生成时继续占用队列,确认生成结束后才释放,不把迟到正文送入后续会话。
模型返回的 JSON 继续经过个人助理原六轮、八次工具调用上限及参数、工具名、白名单校验,不把 Bridge 管理对象、通道回调或附件交给模型来源。失败回复区分来源、阶段和错误码,固定宿主原因可见,任意异常正文不直接回显。
桌面模型来源沿用客户端已有的文件和工具权限,Bridge 无法统一关闭这些原生能力。个人助理的管理白名单只约束 Bridge 管理工具,不代表桌面客户端运行在无工具环境中。
也可设置 modelProvider: "claude-cli",复用本机 claude-cli 插件的默认模型和登录,无需填写 endpoint、model、apiKey;未设置来源时仍使用原 OpenAI 兼容接口。先为 Claude CLI 插件配置已存在的独立绝对工作目录 cwd,并在 daemon 的运行用户下完成 CLI 登录。个人助理通过插件内部接口请求结构化决策,沿用 CLI 插件的模型配置;该配置留空时由 CLI 的用户配置决定默认模型。管理工具仅作为 JSON 数据声明传入模型,由宿主收到 tool_calls 后执行,不作为 CLI 原生工具注册;旧会话中的工具错误文字不代表当前工具是否可用。
Claude 模型请求禁用 CLI 原生工具、MCP 和 hooks,且不保存 CLI 会话;管理工具仍由个人助理按既有授权与白名单执行。普通 Claude CLI 聊天保留原行为。Claude 模式还要求核心提供 modelInputGuard 隔离能力保证;旧核心会使个人助理降级并提示升级,不会调用 CLI。CLI 需要支持 --json-schema 等隔离参数,不支持时会明确失败,不能回退为普通 CLI 任务。
远程能力与协调需要配置已连接的 selfAid(个人助理 AID),并启动支持原生文件和消息服务的 AUN 插件。abilityProviders 留空表示不额外限制 Provider,非空仅允许名单中的 AID;远端身份无需创建或绑定到本机。先用 ability_discover 读取规范 L1/L3,规范和旧目录均明确不存在,或 AUN 明确返回 UNKNOWN_BACKEND(无法确认 FS 后端)时,使用 aid-ability/2 在线发现;在线返回摘要时按 detail_ref 补读 L3,返回完整契约时直接验证,不伪造文件引用。文件读取的网络错误、权限拒绝、错误索引或契约不一致不会触发回退。公开目录存在不等于对端允许执行;按照用户明确要求调用发现的精确契约,参数和最终结果仍校验 schema,认证、权限与 Owner 确认由 Provider 执行。pending、pending_confirmation 或 executing 仅表示已提交或正在处理,不代表执行完成,也不会替用户批准。
文件读取、消息发送和请求查询均不启动 ec;旧 ecPath 仅保留配置兼容并提示弃用。pending 或 unknown 请求不自动重发。业务调用前会聚合 5 秒在线 Discover 窗口,只向唯一匹配完整契约的设备发送;若先返回 phase: "discover",可查询发现请求后再次调用原能力,查询本身不会自动派发业务调用。只有最终认证响应通过关联字段与结果 schema 校验后才报告完成。
需要 Owner 确认的调用保留 300 秒最晚启动窗口,其他调用为 30 秒。最晚启动时间不等于审批记录的保留期;超过调用窗口后不能通过旧申请执行,需重新明确发起调用。
本机跨 Agent 派活沿用 allowedAgents,并要求目标 Agent 已就绪且 AID 与核心报告的绑定一致。coordination_dispatch 遇到其他电脑的 AID 会返回 not_dispatched,引导模型先发现远端 Ability 再按契约调用;不建议将该 AID 绑定到本机。没有对应能力时如实说明,普通聊天不会被当作 Ability 执行。每次本机派活创建独立的本地任务关联,通过 AUN 发送并保存请求和收到的回复;发送回执及普通文字回复都不表示任务已完成。coordination_status 只报告本地已落账的状态和回复,不提供对端的完整话题历史,不会自动重派。
Owner 共享资料通过 ownerAid 与唯一的规范绝对路径 ownerContextPath 配置,缓存有效期由 ownerContextTtlMs 控制(默认 60 秒,最多 5 分钟)。读取使用已连接 selfAid 的 Storage 授权,目标必须公开或已向该身份授权;不会把远端聊天者的自报身份当作文件权限。资料会作为参考内容注入模型,不具备指令或授权效力。可直接发送 /assistant context refresh 强制重读;读取失败会保留之前成功的缓存并标记陈旧。未设置 Owner 配置时不读取共享资料。
创建和绑定专用 AID
先用原有 CLI 或管理后台创建并绑定专用身份;个人助理尚未绑定时无法接收自己的管理命令。创建时必须提供 Owner AID:
mab aun create assistant.agentid.cn --owner owner.agentid.cn
mab aun bind assistant.agentid.cn personal-assistant创建失败不会自动重试,也不会在回复中显示密钥库路径、seed 或 token。通过 AUN 身份页或上述 bind 命令将 AID 关联到 personal-assistant;若配置了非空 allowedPeers,需确保发消息的 Peer 在名单中。个人助理投入使用后,可用 /assistant aid create <aid> [--owner <owner-aid>] 和 /assistant aid bind <aid> <agent-id> [--replace] 显式管理后续身份;省略 Owner 时沿用 AUN 的本地默认 Owner。--replace 只替换目标 Agent 自己原有关联;已经绑定到其他 Agent 的 AID 一律拒绝转移,请先通过原管理命令解除旧绑定。
能力
经授权的请求可以查询 Agent 能力和 AID、调用白名单中的 Agent、查询 AUN 身份、执行只读 /sessions 命令、生成今天工作的小结,以及查看个人助理状态。模型只能通过固定工具访问这些能力,不能提交 URL、Peer、session 或 principal 覆盖字段。
需要确定性地转发给某个已授权 Agent 时,可直接发送 /assistant agent call <agent-id> <任务>,例如 /assistant agent call workbuddy 请仅回复联调标记。核心会再次校验 Agent 白名单和就绪状态;此命令不经过模型工具判断。
用自然语言询问今天的工作小结时,个人助理通过 sessions_today 读取已归档记录,归档采集默认关闭。未归档记录和原生插件历史不会纳入该小结;显式 /sessions today --summary 按核心命令读取插件提供的原生历史。会话查询的 allowFrom 默认 [](留空接受所有),各项查询和小结均允许读取本机其他 Peer 的记录,旧配置缺少此字段也按全部允许处理。需要限制时设置非空的具体 Peer 名单,名单外的来源使用精确的 grants/nativeGrants。清单编号仍绑定当前来源和逻辑会话;/new 后重新列举即可,默认无需再次授权。只读总结器使用核心独立的 summarizer 配置,不会调用普通 Agent 执行总结。
个人助理仅支持文本输入。模型端点必须是本地管理员配置的 HTTPS 或 HTTP 地址,插件禁止跟随重定向;模型响应和工具结果都有大小及调用次数限制。
子 Agent 返回的真实附件随个人助理最终回复回传,模型仅看到附件元数据;是否发送成功由通道确认。即使后续模型调用失败,已经取得的附件也会随错误说明返回。
技能与个人习惯
个人助理按核心提供的真实 AUN Peer 保存资料,同一 Peer 跨 /new、插件重载和模型来源共用;不同 Peer 不合并。资料存放在个人助理数据目录的 users/<用户哈希>/,原会话历史格式保持不变。旧核心没有 getCaller() 或没有插件数据目录时,仅关闭新增功能并提示升级,已有聊天和管理命令仍可使用。
默认设置如下,也可在 ABWeb 原“配置模型”对话框的“技能与习惯”中修改:
{
"skills": { "enabled": true, "learnMode": "draft", "readDirs": [], "shareDir": "" },
"memory": { "mode": "stated" }
}说“以后回复短一点”等明确长期偏好时,模型可调用 memory_write 直接保存;宿主核对当前用户原话,临时或推断内容只作候选,不覆盖已生效偏好。新增生效偏好与既有生效偏好语义相反(如长度、语言、格式等常见维度)时存储层直接拒绝,模型须携带原记录 id 和读取时的修订号更新;用 /assistant memory set 明确修正时自动更新原记录,不会留下相反条目同时生效。memory.mode: "off" 停止模型提炼和自动注入,资料保留。确定性的命令不需要配置模型:
/assistant memory list
/assistant memory set 用户偏好先看结论
/assistant memory confirm <id>
/assistant memory forget <id>forget 删除长期记录,后续不再注入;不会擦除既有聊天或模型服务端记录,也不会从旧历史自动补回。需要不带旧聊天继续时发送 /new,其他未删除的长期偏好仍保留。每人最多 32 条,生效和候选合计最多 2000 个 Unicode 字符。
技能使用包含 name、description 的 YAML frontmatter 和 Markdown 正文,名称为最多 64 字符的小写英文、数字与连字符。正文按需通过 skill_read 提供给模型,引用只接受 references/ 下的 Markdown 文件,不执行技能里的脚本、模板或安装命令;技能不会增加管理权限。模型工具 skills_list、skill_read、skill_save 与偏好工具共用原六轮八次调用预算。
/assistant skill list
/assistant skill read <id>
/assistant skill learn daily-summary
/assistant skill run <id> 整理今天工作
/assistant skill share <id>
/assistant skill enable <id>
/assistant skill disable <id>
/assistant skill restore <id>
/assistant skill reload只有 learn/run 需要模型。用户主动 learn 保存启用版,验证状态单独标注;模型自动提炼默认保存草稿。learnMode: "auto" 仅在宿主有实际成功执行依据时自动启用(真实调用白名单 Agent 并取得结果计入;只读查询与异步派活不计入),off 停止自动提炼但仍允许用户主动学习。skills.enabled: false 关闭技能入口并保留文件。更新须携带已读取的修订号,restore 恢复上一版。用户修正既有偏好时,模型会先读取已有记录并按 id 和修订号更新原条目,避免相反偏好同时生效。
主动学习时不自动注入 Owner 资料;本轮读取全局会话或 Owner 资料后,不能再据此保存个人技能。普通聊天仍可使用这些资料,但该轮不自动提炼技能,避免把共享内容沉淀为个人记录。已有聊天中的转述无法自动识别来源,需要严格隔离时请先发送 /new,仅提供本人流程后再学习。
管理员可在 skills.readDirs 配置最多 8 个本机规范绝对目录;这些共享资料对所有获准访问个人助理的 Peer 可见,请只放打算共享的内容。仅扫描根下技能目录及一层分类,源文件只读;不直接配置整个 Hermes home。个人标识为 personal/<name>,共享标识为 shared/<目录哈希>/<name>;重名时使用完整标识。同一共享目录内出现同名技能时,两条都会从列表隐藏并在诊断中提示,需管理员删除或重命名其中一个。停用共享技能仅影响本人,不修改共享文件。
在 ABWeb 的个人助理配置中,填写“技能分享目录”,或设置 skills.shareDir 为后台主机上已存在的规范绝对目录;空字符串表示关闭分享。例如填写 /opt/shared-skills,然后发送 /assistant skill share personal/daily-summary。宿主再次核对调用授权,只将当前个人技能的 SKILL.md 和 references/ 下 Markdown 文件导出;不导出元数据、旧版本、个人习惯或会话记录。同名目录已存在时拒绝覆盖,需管理员先处理目标目录;修改个人技能后已分享副本不会自动更新。分享前请检查技能内容是否包含个人信息。其他 Peer 的个人助理不会自动读取分享目录;管理员还需将其加入对应的 skills.readDirs。
导出目录遵循 Agent Skills 的 name/SKILL.md 格式。Claude Code、Codex、Hermes 等支持该格式的客户端可由用户或管理员将单个技能目录复制到客户端自己的技能搜索目录,再按客户端规则重载。导出的目录和文件默认仅对 daemon 运行用户开放;其他系统用户需要由管理员按实际分享范围设置访问权限。个人助理配置的 claude-cli 模型来源仍由个人助理读取技能并传入本轮上下文;这不等于外部 Claude CLI 自动发现分享目录。
分享期间进程被强制结束时,目标目录可能残留未完成的文件;没有 SKILL.md 的目录不会作为技能加载,但会阻止同名技能再次分享,需管理员检查后清理。
个人技能每人最多 50 个,正文最多 16 KiB,最多 8 个引用、每个 32 KiB,总计 256 KiB;每个共享根最多扫描 512 个技能和 8 MiB 元数据,每轮目录摘要最多 8 KiB。全部个人资料最多 512 个用户、256 MiB(含上一版)。达到上限会拒绝新增,不自动清理旧数据。偏好和技能通常会发送给所选模型,请勿保存密码、令牌或私钥。
个人资料写入由同一 daemon 内的队列协调,不支持多个进程同时写同一目录。技能目录发布失败会尝试恢复旧版;进程在目录切换间被强杀时可能留下暂存或备份目录,需要人工恢复。请勿在 daemon 写入期间用外部程序修改这些目录。偏好分类使用保守词法规则,复杂表达可用明确命令设置或确认。
