跳到主内容
精选80meng shao产品发布/更新

YC 开源内部多人 Agent Harness:QM

YC 开源了团队内部在用的多人 Agent Harness:QM

原文
推荐理由

做 Agent 基础设施的同学必看,YC 开源的 QM 把权限和上下文边界按作用域划分,架构清晰,值得研究其设计思路。

YC 开源了团队内部在用的多人 Agent Harness:QM

QM 已经在 YC 内部跑真实业务的系统:会计记账、法务、活动运营、工程协作,工具注册表从最初的约 20 个工具积累到了 350 多个。 https://github.com/yc-software/qm

QM 最重要的抽象是 scope(作用域) 每个人、每个 Slack 频道、每个项目房间,都有自己独立作用域的记忆、文件、密钥视图、权限、定时任务、Web 应用和持久沙箱。这种设计带来两个关键性质: · 个人隔离:员工各自定制"属于自己的" agent,互不干扰; · 协作共享:在频道和项目里,大家又能和同一个 agent 协同,共享上下文。

同一套身份和配置在 Slack 和 Web 之间无缝携带。这本质上是在回答"agent 时代的权限与上下文边界应该怎么划"——按人和按空间划,而不是按会话划。

QM 的架构非常克制,可以拆成四层 1. Headless Core(无头核心) 所有请求都经过一个中央核心:API、身份、策略、调度器,加上 agent 循环。核心用 TypeScript 直接跑在 Node 上,HTTP 层用 Fastify。关键在于核心是通用的——harness、会话存储、沙箱、记忆等每个底层组件都藏在接口后面,生产实现通过一个 wiring 文件注入。 2. 可替换的 harness 与模型 Pi、OpenCode、Codex、Claude Code 驱动的是同一个核心,可以随时切换。这是一个明确的反锁定立场:部署不绑定任何单一模型厂商。考虑到 YC 自己被各家模型公司"包围",这个中立设计既是技术选择也是立场声明。 3. Postgres 持久层 + 每作用域沙箱 会话历史、用户数据、队列等持久状态存在 Postgres。Agent 的工具面刻意做得很小,其中核心是一个 execute 工具——在该作用域自己的隔离沙箱里执行命令。沙箱是"持久的电脑":装过的工具一直装在那里。这个设计很符合 Koomen 的哲学——好的 AI 软件应该尽可能小,只写最少量的代码,剩下的交给模型。 4. 插件化的前端 Web UI(Vite + Lit)、管理面板、公开门户都是核心 HTTP API 之上的可选插件;Slack(Bolt 框架)是核心直接启动和监督的进程内插件。接入面是可以换的,核心才是本体。

QM 的安全思路直接沿袭本地 coding agent 的范式 agent 以它服务之人的身份、凭据和权限行事,一切行为可审计。组织选定一个安全水位,更窄的作用域只能收紧、不能放宽: · Strict:除两个无副作用的回合结束工具外,每次工具调用都需人工批准; · Auto(默认):一个分类器在外部数据和工具结果送达模型前做来源标注和筛查,且部署方可以把筛查指向自己的代理; · Dangerous:不做内容筛查、不在工具调用间暂停。

更进一步:量化金融体系

看懂新闻只是起点——沿量化金融路径,把它变成能交付的工程能力

进入量化体系 →

相似阅读

另一事件,读法相近