🎯 同一个模型放进不同Agent Harness,最终的稳定性、权限边界、记忆能力和运行成本可能完全不同。YC开源的QM把这层基础设施完整展示了出来。

YC QM多人Agent工作台界面

近期关于“Agent表现有多少来自模型、有多少来自Harness”的讨论再次升温。有人把Harness贡献估计为六成,这个数字属于从业者经验判断,缺少统一基准支持;背后的方向很清楚:模型只负责生成下一步,生产系统还要负责身份、状态、工具、审批、错误恢复和审计。

Y Combinator开源的QM项目 提供了一个可直接研究的样本。它采用MIT许可证,定位是面向企业和团队的多人Agent Harness,运行在Slack与Web中。YC表示,QM已经用于会计、法律、活动和工程等内部工作,但官方同时明确标注项目仍处于早期实验阶段。


📌 Agent、Harness和平台分别做什么

一个完整Agent系统可以拆成三层:

层级主要职责常见组件
模型与Agent Loop理解任务、选择动作、生成工具调用GPT、Claude、Gemini、开源模型
Agent Harness管理状态、工具、记忆、权限、重试和验证QM、Claude Code、Codex、OpenCode、Hermes
运行平台提供账号、消息入口、数据库、沙箱和部署环境Slack、Web、VPS、容器、云平台

Agent Harness核心架构示意图

模型能力决定推理和生成质量。Harness决定模型能看到什么、能调用什么、失败后如何恢复、执行结果是否可信。平台继续承担账号体系、数据持久化、网络和运行资源。

许多“模型突然变聪明”的体验,实际来自Harness升级:系统提示词更精确、工具返回更干净、上下文更短、错误会自动重试、关键步骤有测试和审批。反过来,强模型进入一个缺少状态管理和验证的Agent Loop,也容易反复执行、遗忘进度或错误修改文件。


🧩 YC QM的核心设计

QM与个人聊天机器人的差异集中在scope。每位员工、每个Slack房间和每个项目都有独立作用域,包括:

  • Memory:长期记忆和会话状态;
  • Files:该作用域可访问的文件;
  • Keychain View:当前可见的凭据;
  • Permissions:工具和数据权限;
  • Crons与Watches:后台定时任务和监控;
  • Web Apps:面向指定人员发布的内部应用;
  • Durable Sandbox:长期保留文件与已安装工具的隔离计算机。

官方架构使用一个Headless Core统一处理API、身份、策略和调度,Postgres保存会话、记忆、队列及其他持久状态。Agent通过固定工具面工作,其中execute会在当前Scope的独立沙箱里运行命令。

QM允许Pi、OpenCode、Codex和Claude Code驱动同一个Core。企业可以更换模型或Harness适配器,同时保留原来的身份、记忆、Slack入口、权限和业务数据。

这种结构解决了团队Agent最容易失控的三个问题:

  1. 每个人使用同一个机器人,记忆和凭据容易串线;
  2. 多个机器人各自维护数据库、权限和定时任务,管理成本持续增加;
  3. 工作流绑定某一家模型服务,迁移时需要重建整套系统。

⚙️ QM官方部署流程

QM默认部署在企业自己的云账号中,当前初始化目标为Fly.io或AWS。官方推荐创建组织自有的部署仓库,再通过npm包初始化:

npm exec --yes --package=@yc-software/qm@latest -- \
  qm init . --org <slug> --target <fly-or-aws>
npm install

在QM源码仓库内创建组织Layer时,对应命令是:

node cli/bin/qm.ts init deploy/layers/<org> \
  --org <slug> \
  --target <fly-or-aws>

qm init会生成部署目录、deployment.md以及供Agent读取的部署Skill。后续流程包含:

  1. 确认操作者控制云账号和账单;
  2. 配置Web登录与管理员邮箱;
  3. 设置Resend API Key或SMTP凭据;
  4. 添加模型、浏览器及数据连接器;
  5. 按需启用Slack;
  6. 部署服务并执行Live Check;
  7. 返回Web、管理端和运行服务地址。

默认身份服务通过邮件发送一次性登录链接。使用外部身份提供商时,需要从服务列表移除auth,并登记准确的回调地址:

<publicUrl>/auth/callback

QM初始化不会自动创建生产CI。部署目录里的云账号、机密、Provider配置和生命周期操作仍由团队负责。准备多模型上游时,可参考站内的9Router多模型网关指南 ;需要额外API线路时,可查看APIMart模型入口 ,生产环境应同时保留官方线路和故障回退。


🔐 三种安全姿态

QM要求组织选择一个全局Security Posture,具体Scope只能进一步收紧:

模式工具调用策略适用场景
Strict几乎每次工具调用都暂停并等待人工批准财务、法律、生产系统初期接入
Auto默认模式,使用分类器筛查带来源标签的外部数据和工具结果内部知识库、工程协作、常规自动化
Dangerous不做内容筛查,也不在工具调用间暂停完全隔离的实验环境

预声明Command Policy在三种模式中都会执行,包括审批规则和递归删除、破坏性SQL等硬拒绝项。Dangerous代表更少的人机暂停,并不会取消底层命令策略。

官方SECURITY.md同时列出多个生产风险:

  • Shell文本策略可以被编码、混淆或“写脚本再执行”绕过;
  • 浏览器Runner中的动作没有全部重新进入命令审批链;
  • 凭据注入沙箱后会以明文形式被进程使用;
  • Auto筛查属于启发式防御,无法保证抵御Prompt Injection;
  • 管理员能够读取大量敏感内容,读取行为会被审计;
  • 会话、记忆和模型请求可能长期保留;
  • 公开应用的Capability Link属于持有即授权;
  • 部分Provider路径仍未统一通过Model Gateway。

因此,QM当前更适合内部可信用户和单一组织。公开多租户SaaS需要补充独立身份边界、网络隔离、密钥代理、数据保留策略和安全评审。


📊 厚Harness与薄Harness怎么选

YC QM代表“厚控制层”:集中管理多人身份、Scope、权限、数据库、Slack、定时任务和沙箱。Vercel Labs开源的fx 代表“薄Harness”:使用Zig编写,强调小体积、原生运行、可嵌入和较低上下文占用。

需求更合适的方向
单人在终端完成编码任务薄Harness,减少提示词和工具开销
多人共享Agent与公司数据厚Harness,优先身份、Scope和权限
高频短任务与批处理小型原生Agent,降低启动和Token成本
跨部门长期自动化持久状态、审计、审批和后台任务
模型经常切换把模型接口与业务状态解耦

选型时应分别测试模型和Harness。固定模型后比较任务成功率、工具错误率、Token消耗和人工接管次数;固定Harness后再比较不同模型。把两部分一起更换,只能看到总结果,很难知道改进来自哪里。


⚠️ 落地时优先检查什么

  1. 权限是否按人和项目隔离:共享聊天入口也要有独立数据边界。
  2. 工具结果是否进入验证环:文件修改后运行测试,数据写入后执行回读。
  3. 失败是否有停止条件:限制重试次数、Token、时间和可产生的外部副作用。
  4. 凭据是否按需注入:短期Token、最小权限和独立服务账号优先。
  5. 记忆是否可审查和删除:长期记忆需要来源、更新时间和生命周期。
  6. 管理员读取是否透明:内部制度应明确哪些角色可以查看会话和请求数据。
  7. 外部内容是否带来源标签:网页、邮件和Webhook都是潜在Prompt Injection入口。
  8. 紧急停止是否真实可用:准备账户冻结、Token撤销、任务暂停和沙箱销毁流程。

Agent Harness的价值体现在可重复完成任务,同时让失败可以被发现、阻止和恢复。企业落地AI Agent时,模型排行榜只能解决选型的一部分,身份、状态、权限和验证才构成长期可维护的系统。