处理 MiMo Code 多 Agent 环境下的协作权限安全与审计,核心在于把“谁调用谁”“能访问什么数据”“做了什么操作”这三件事,在终端原生、命令行驱动的架构里真正落地,而不是照搬 Web 服务那套 RBAC 或 OAuth 流程。我们先明确一个问题:多 Agent 协作发生在本地终端,不经过中心化网关,传统基于 HTTP Header 或 JWT 的鉴权方案,在这里基本行不通。

权限控制必须嵌入 Agent 生命周期与工具链
MiMo Code 里的多 Agent 协作(比如 Recon、Plan、Edit、Test 这些子智能体),整个流程都在本地跑。实际做法是这样的:
- 每个子 Agent 启动时,系统会给它绑定一个明确的角色标签,比如 recon:read-only 或 edit:git-write。这个标签写入运行上下文,并在工具调用前参与策略检查;
- 所有对 Git、FS、Lint、测试命令等敏感工具的调用,都绕不开统一的 ToolGate 中间层。它会读取当前 Agent 的角色标签,再结合当前工作目录下的项目策略文件(
.mimo-policy.yaml),动态判断是否允许执行; - 一旦 Agent 尝试跨目录访问,或者想写入非本任务沙箱的路径,ToolGate 会直接拒绝并记录为「越权尝试」。这步操作不会抛出底层系统错误,也就避免了敏感信息泄露。
审计不是事后查日志,而是链路级事件快照
MiMo Code 的审计难点在于:操作分散在终端进程、Git 提交、SQLite 记忆库、临时文件等多个载体里,而且没有统一的请求 ID。它采取的方式是构建轻量但完整的事件锚点:
- 每次用户发起
mimo plan或mimo run,系统自动生成一个 UUID,作为本次任务的 TraceID,并注入到所有子 Agent 的进程环境变量中; - 每个 Agent 执行关键动作时——比如读取
src/、调用git add、写入.mimo-checkpoint——都会向本地 SQLite 审计表插入一条记录,包含 TraceID、时间戳、操作类型、作用路径、调用者 Agent 名称; - 审计输出支持按 TraceID 导出为结构化 JSON,也可以通过
mimo audit --trace命令还原完整的操作链。你能清晰看到哪一步触发了哪条 Lint 规则、哪个子 Agent 修改了哪行代码、是否绕过了某次人工确认。
信任边界靠内存隔离 + 显式授权流来维持
这和云端多 Agent 系统依赖 TLS 和服务网格不同,MiMo Code 的信任模型更贴近操作系统级别的约束:
- 各子 Agent 运行在独立的 Python subprocess 中。共享的内存仅限于显式传递的 checkpoint 数据块,而且这个数据块在传入前会经过 SHA256 校验签名,防止中间被篡改;
- 敏感操作(比如
git push、curl -X POST)默认是禁用的。必须由用户在交互式确认环节输入yes --force-auth才能解锁,而且这个授权只对当前 TraceID 有效; - 项目根目录下的
.mimo-trust文件定义了白名单。比如只允许test-agent调用pytest,任何未列明的 Agent-工具组合都会被 ToolGate 拦截并告警。
这套机制不依赖外部认证服务,也不增加网络调用开销,完全适配终端场景的离线性、低延迟和开发者可控性要求。安全不是加锁,而是让每一次协作意图都可声明,每一次数据流动都可追溯,每一次越界行为都可拦截。
