
为什么开源AI Agent更安全Company Brain的MCP连接、QuickJS沙箱与Leasing安全机制详解【免费下载链接】company-brainOpen-sourcing our company brain - A teammate in your Slack that remembers everything your team says, and can go do the work.项目地址: https://gitcode.com/gh_mirrors/co/company-brainCompany Brain 是一个常驻 Slack 的开源 AI AgentAI 智能体它记住团队说的每一句话还能替你打开工单、读 PR、跑代码。很多新手担心一个什么都能干的 AI会不会泄露数据、乱执行代码、偷偷拿你的权限开源的最大优势就在这里——你可以逐行读它的安全设计。本文将用通俗的语言拆解 Company Brain 的三道防线MCP 连接权限边界、QuickJS 代码沙箱、以及 Leasing 临时授权机制。一、先搞清楚AI Agent 的不安全来自哪在评估 AI Agent 的安全性时新手最容易踩的三个坑风险通俗解释Company Brain 的对策 数据泄露AI 把 A 群的秘密说给 B 群听权限图谱permissions graph只能以提问者自己的权限读取️ 工具越权AI 用万能钥匙操作你的 GitHub/NotionMCP 连接写操作永远走你个人的连接 代码失控AI 写的脚本无限循环、偷发请求QuickJS 沙箱无网络、无定时器、限时限量 权限偷渡AI 悄悄借用同事的账号Leasing 机制必须真人点批准10 分钟过期下面逐一展开。二、MCP 连接工具权限跟着人走而不是跟着连接走MCPModel Context Protocol是让 AI 连接外部工具GitHub、Linear、Notion、Gmail 等的标准协议。Company Brain 的官方文档把这条规则总结得很干脆工具访问权跟着人走而不是跟着连接走docs/guide/permissions.md。1. 两种连接范围范围谁设置读取写入组织共享Org管理员设置一次全团队可读❌ 对所有人只读管理员也不行个人Personal每个人自己授权自己的账号能看什么就看什么✅ 只能用自己的个人连接这个设计带来两个重要安全效果没有万能钥匙AI 拿不到超出所连接账号权限的数据。你连的是自己的 Gmail它就只看得到你自己的邮件。写操作可追责AI 替你创建 Issue 时走的是你本人的连接动作永远归属一个真人而不是某个共享服务账号。源码中MCP 连接与授权逻辑位于 src/brain/tools/mcp/其中 catalog.ts 维护工具目录并决定哪些工具可以参与后续的借用Leasing流程。2. 敏感工具默认不可租借不是所有工具都能被临时借用。例如 Gmail 被标记为仅限个人personal-only任何人、任何 AI 都无法通过借用拿到你的邮件权限。判断逻辑见 catalog.ts 中的isMcpServerLeaseable函数。三、QuickJS 沙箱AI 写的代码为什么跑不飞AI Agent 的一个核心能力是Code Mode让大模型自己写一段脚本来串联工具调用比如批量查询 50 个工具的目录。危险点在于——这段代码是 AI 现写的你没法逐行审查。Company Brain 的解法是把这些脚本放进一个QuickJS 虚拟机里跑src/brain/codemode/quickjs-executor.ts。1. 一个没有出口的房间源码注释把沙箱的隔离原则写得非常直白沙箱里没有 fetch、没有定时器、没有任何系统绑定——唯一的出口是被授予的工具命名空间而且所有进出值都以 JSON 形式穿越边界。翻译成大白话无网络脚本不能fetch发不出一根请求无定时器、无系统绑定挂不起后台任务摸不到数据库✅唯一出口是工具调用想干活只能通过显式授予的工具每次调用还会经过权限检查。2. 三重硬性资源限制即使脚本想作妖也会被资源笼子按住限制数值防的是什么⏱️ 超时60 秒无限循环、故意拖延 内存上限64 MB内存撑爆攻击 栈上限1 MB无限递归同步代码还有独立的中断截止时间interrupt deadline兜底。完整的测试用例在 quickjs-executor.test.ts。开源的价值闭源产品宣称有沙箱你只能选择相信开源项目里这份限制是写在 wrangler.jsonc 和源码里的你可以亲手验证。另外AI 操作代码仓库、跑 Python 脚本的重活还会被进一步隔离到 src/brain/tools/sandbox/ 的独立容器沙箱Cloudflare 容器或 Daytona中30 分钟空闲即休眠——记忆、轻计算、重计算三层环境层层隔离。四、Leasing 机制借同事的权限必须真人点头场景你要 AI 查一个只有同事连接过的工具但你自己没连。最危险的做法是 AI 直接偷用同事的账号Company Brain 的做法是把借权限变成一次公开的、有人类参与的手续——这就是Leasing租约。1. 租约的完整生命周期核心类型定义在 src/brain/lease/types.ts发起请求AI 在 Slack 里向工具的所有者发一张批准/拒绝卡片并附明理由和能力范围查看并查询 X 中的数据只读——不做任何修改见 capabilities.ts真人决策所有者点批准或拒绝请求 15 分钟内无人响应则自动过期LEASE_REQUEST_EXPIRY_MStypes.ts短时授权批准后租约仅存活10 分钟LEASE_TTL_MS且范围锁定在触发它的那一次请求可撤销所有者随时可 revoke撤销状态机覆盖approved / active / expired / revoked / consumed等完整生命周期。2. 四道细节防线广播上限一张租约请求最多同时打扰 5 个人MAX_LEASE_OWNER_FANOUT 5防止群发骚扰️模式分级read_only只读与read_write读写是两种独立的租约模式卡片上会明文告诉所有者你要借的是哪种权限⏰每次操作前复检运行时通过revalidate对每张活跃租约做有效性复检types.ts过期即失效最后手段原则官方文档明确Leasing 是穷尽其他选项后的兜底——组织级还没连工具时才触发docs/guide/permissions.md。路由与决策逻辑分布在 routing.ts、decision.ts 与 store.ts 中整个模块只有 7 个文件非常适合新手通读。五、总结开源 AI Agent 的安全是可验证的回顾 Company Brain 的三道防线你会发现一个共同特点——没有任何一步是静默发生的防线一句话总结关键源码 MCP 连接边界写操作永远走你本人的连接src/brain/tools/mcp/ QuickJS 沙箱AI 代码关在无网络、60 秒、64MB的房间里src/brain/codemode/ Leasing 租约借权限 Slack 卡片 真人批准 10 分钟自动过期src/brain/lease/对新手来说这正回答了标题的问题为什么开源的 AI Agent 更安全因为安全承诺可以被读、被测、被验证而不是只能被相信。想深入的话建议按 docs/guide/permissions.md 和 docs/architecture.md 的顺序通读一遍——这也是你自己搭建 AI Agent 时最值得抄的作业。【免费下载链接】company-brainOpen-sourcing our company brain - A teammate in your Slack that remembers everything your team says, and can go do the work.项目地址: https://gitcode.com/gh_mirrors/co/company-brain创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考