深度·Neo·2026.04.29

Scout:单 agent 通过 Context Provider 长成“公司脑”

Scout 不是更大的聊天机器人,而是把 web、Slack、Drive、CRM、wiki 和 MCP 拆成 context provider 的单 agent runtime。

Scout:单 agent 通过 Context Provider 长成“公司脑”

Source: https://github.com/agno-agi/scout

Scout 不是在做一个更大的聊天框,而是在做一层更薄的“公司路由层”。它把 web、Slack、Drive、wiki、CRM 和 MCP 服务拆成一组 context provider,让一个单 agent 通过统一的 query_* / update_* 入口去读写不同来源。这个方向的价值不在“回答得更像人”,而在“把公司知识和公司动作变成可持续运行的系统”。

从 GitHub 信号看,这个项目已经有了相当完整的产品骨架:316 stars、28 forks、Apache-2.0、Python、最近一天内仍有更新,但还没有 release/tag,说明它更像一个正在快速打磨的 pre-1.0 runtime,而不是已经冻结的成熟平台。

背景:公司脑为什么难做

公司知识不是一种数据,而是很多种:

  • Slack 是对话流
  • Drive 是文档流
  • CRM 是结构化状态
  • wiki 是可沉淀的 prose
  • MCP 是外部系统

把这些东西全都塞进一个 vector store,表面上很统一,实际上会把权限、分页、写入、审计和失败恢复一起糊成一团。Scout 选择反过来做:先承认异构,再用 provider 统一入口。

核心问题:Scout 到底在解决什么

它解决的不是“能不能搜到内容”,而是三个更实际的问题:

  1. 该去哪个源找
  2. 找到后怎么安全读写
  3. 如何把知识沉淀成可审计的长期记忆

这也是它和普通 RAG / 普通 agent 的分界线。Scout 更像一个 source-routing runtime,而不是单纯的生成式前端。

架构拆解

Scout architecture diagram

最关键的主链路很短:

  1. 用户从 Web UI、Slack 或调度任务进来
  2. AgentOS 负责授权、tracing、session 和 scheduler
  3. Scout Agent 接收请求,按 instructions 选择路由
  4. context registry 动态展开当前可用的 provider
  5. provider 再去访问自己的 backend:Postgres、Git wiki、文件系统、外部 API
  6. 结果回流给 Scout,再输出答案或执行动作

几个关键实现点很能说明问题:

  • app/main.py 是 AgentOS 入口,startup 时先建表,再 setup provider
  • scout/agent.py 只有一个 Scout agent,但工具是按当前 provider 动态展开的
  • scout/contexts.py 负责 registry:web、workspace、CRM、knowledge、voice 是常驻,Slack、Drive、MCP 是条件挂载
  • db/session.pydb/tables.py 把 CRM 的写入锁在 scout schema 里,同时再加一层 SQL guard 和 read-only engine
  • docs/EVALS.md 把 wiring / behavioral / judges / live-container 四层评测都补上了

核心机制:它为什么比“一个大工具箱”更稳

Scout 的主设计其实就一句话:把复杂度关进 provider,把 Scout 保持得尽量薄。

README 里直接写了 “Navigation over search”。这不是口号,而是产品路线:

  • 不是先把所有文档切块、嵌入、召回
  • 而是像代码 agent 一样先定位 source,再用 source 的规则去导航

这很适合公司语境,因为公司里的 source 本来就不是同一种东西。

2) Context provider 是真正的边界

Scout 自己看到的只是工具名;provider 才知道怎么处理:

  • Slack thread 还是 channel
  • Drive 是 shared drive 还是普通文件夹
  • wiki 是文件系统还是 Git-backed
  • CRM 是读还是写
  • MCP 是 stdio / SSE / streamable HTTP

这类抽象的好处是,Scout 的主提示词不用学习每个系统的全部协议细节。

3) 读写分离不是装饰,是安全边界

CRM 这条链路尤其值得看:

  • 读路径走 read-only engine
  • 写路径只能落在 scout schema
  • 还有 SQLAlchemy 层的写保护

这意味着就算 prompt 里出现了“顺手改表”这种危险请求,系统也不会轻易把写操作发到错误的地方。

4) Knowledge wiki 不是缓存,是持久化记忆

Scout 的知识库默认是 filesystem-backed;如果配了 Git backend,就会把 update_knowledge 变成一次可审计的 commit / push。

这点很重要:它不是“记住一段摘要”,而是把知识变成版本历史。对内部知识系统来说,这比单纯 embedding 更接近真实工作流。

5) Eval loop 是它的稳定器

它把检查分成三层:

  • wiring:工具形状、SQL guard、provider 结构
  • behavioral:路由和响应行为
  • judges:LLM 质量评分

这种分层能把很多“看起来不错但行为漂移”的问题提前拦住。对于一个会接 Slack、Drive、CRM 的 agent runtime,这比堆更多 prompt 更重要。

优势与不足

维度 优势 代价
定位 “公司脑”叙事直接,业务上容易理解 目标太大,边界容易膨胀
架构 单 agent + provider,主线干净 provider 多了会回到 tool zoo
安全 schema guard、read-only engine、Git audit trail 外部系统的 auth / API 稳定性仍是上限
维护 eval 体系完整,便于持续调 routing 需要长期维护 provider 和规则
成熟度 最近仍在动,说明项目活跃 还没有 release/tag,离稳定平台还有距离

Scout 最好的地方在于:它没有试图把所有东西都塞进一个统一黑盒;它承认知识来源是异构的,于是把异构保留在边界里。

但它的风险也很明显:provider 体系越成功,治理难度越高。 一旦接入源过多、规则不够清晰,新的复杂度会再次堆回 registry 和 prompt 上。

适合谁

适合:

  • 已经有 Slack、wiki、CRM、Drive 这些真实系统的团队
  • 想做 internal company brain / agent OS 的产品团队
  • 需要可审计、可回放、可调优的长期记忆系统的人

不适合:

  • 只想要一个轻量聊天机器人
  • 没有真实公司数据源的人
  • 没有资源维护权限、后端和 eval 的团队

我的判断

Scout 是一个方向正确、结构清楚、但还在打磨中的 company brain runtime

如果把它放在更大的技术图谱里看:

  • Hermes 更偏运行时和消息网关
  • m-flow 更偏路径式记忆与检索
  • gbrain 更偏长期知识层
  • Scout 则更偏“把公司知识和动作接到一个统一入口上”

我的结论是:值得关注,而且很适合当作公司内部 agent 架构的参考样板。 它现在不是“已经完成的产品”,但已经不是“只有想法的 demo”了。真正决定它上限的,不是模型能力,而是它能不能把 provider 边界、权限治理和 eval 收敛长期维持住。