当前位置:首页 > 人工智能 > 正文

支撑Octop的四大核心组件,现已全部开源!

自 Octop 开源以来,我们收到了不少开发者的关注和反馈。其中,一个问题被反复问起:这套自托管、多用户、多 Agent 的 AI 助手,底层究竟是怎么搭起来的?

如果把 Octop 看作一位能够真正上手干活的数字员工,那么真正让它把事情做起来的,并不只是一个足够聪明的模型。

它需要一个头脑,负责想清楚任务怎么做、工具怎么调度;需要记忆,把过去聊过的事和积累的经验留下来;需要能够上网看、动手做,真正进入网页完成操作;还需要一套沟通能力,在飞书、钉钉、QQ 等不同渠道里接收和回复消息。

今天,我们把支撑 Octop 的这四项核心本领正式开源:

  • Octop Harness —— 头脑:生产级 Agent 运行时,负责模型调用、任务执行、工具使用以及多 Agent 协作;
  • Octop Memory —— 记忆:长期记忆系统,负责记忆的存储、提炼、检索与迁移;
  • Octop Browser —— 眼睛和手:Agent 浏览器,负责网页访问、感知、交互与自动化操作;
  • Octop Gateway —— 沟通能力:IM 通信网关,负责连接飞书、钉钉、QQ 等不同消息平台。

Harness 负责想清楚怎么做,Memory 负责记住发生过什么,Browser 负责去网页上看和操作,Gateway 负责在不同渠道里听和说。


四者组合起来,构成了 Octop 的核心能力底座;拆开之后,每一个组件也都可以独立运行、按需取用。这也是我们过去一段时间在 Harness Engineering 上持续实践的一件事:


一个真正面向生产环境的 Agent 系统,不应该把模型、记忆、工具、浏览器、消息渠道全部揉进一个庞大的单体,而应该把稳定、可复用的能力沉淀成边界清晰的组件。


Octop 是这些能力组合之后的完整形态;而 Harness、Memory、Browser、Gateway,则是从这个完整系统中拆出来、可以被独立复用的核心能力。



支撑Octop的四大核心组件,现已全部开源!  第1张


图1: Octop 数字员工的能力底座



为什么把“四项本领”拆出来?



Agent 正在快速变复杂。


模型供应商持续更新,IM 平台协议不断变化,浏览器自动化方案持续迭代,长期记忆的存储与检索策略也在不断演进。


当这些能力全部堆在同一个工程里,一个很现实的问题很快就会出现:本来只是想让它多学一项本领,最后却可能牵动整个系统。


接入一个新的 IM 平台,可能碰到 Agent 内部状态;增加一个模型供应商,可能需要修改原本与模型无关的业务逻辑;浏览器能力升级,又可能影响上层工具调用。功能越来越多之后,“顺手改一下”会逐渐变成技术债。



支撑Octop的四大核心组件,现已全部开源!  第2张


图2: 单体耦合与组件化对比


所以,我们选择把其中相对稳定、彼此正交的能力继续向下拆分,沉淀成:独立仓库 + 独立 PyPI 包 + 清晰接口契约。


这相当于不再要求一个“数字员工”把所有本领都长在一起,而是把头脑、记忆、浏览器、通信分别沉淀成独立能力。这样一来,边界不再只是代码里的约定,而成为真正的工程边界。


每个组件可以独立测试、独立发版、独立评审;一个组件的变化,也尽可能被限制在自己的职责范围内。


对 Octop 来说,这是把复杂系统拆清楚;对其他开发者来说,则意味着这些能力终于可以单独拿来用了。


你不需要为了其中一种能力,把整个 Octop 搬进自己的项目:

  • 只需要长期记忆,就接 Octop Memory;
  • 只需要浏览器能力,就用 Octop Browser;
  • 想搭建自己的 Agent Runtime,可以直接从 Octop Harness 开始;
  • 想让自己的 Agent 接入多个 IM,则可以单独使用 Octop Gateway。

把一个完整系统拆开,不是为了“拆而拆”。而是希望这些经过真实场景打磨的本领,可以离开 Octop,进入更多 Agent 工程。




四项核心本领





头脑:Octop Harness




一个 Agent 真正开始工作之后,首先需要解决的,是“怎么把事情组织起来”。


  • 模型怎么切换?

  • 记忆怎么持久化?

  • 工具怎么接入?

  • 多个 Agent 怎么隔离?

  • 工作区放在哪里?

  • Agent 之间又怎么协作?


这些事情,最终都需要一个“头脑”来统筹。


Octop Harness,就是 Octop 的这个运行中枢。从工程角度看,它是一套构建于deepagents之上的生产级 Agent Runtime。


deepagents 提供智能体运行的核心能力,而 Harness 在此基础上进一步补齐了 Agent 从 Demo 走向真实应用时需要的模型路由、持久化、工具、多 Agent、工作区等能力。


换句话说,它关注的不是“让模型回答一次问题”,而是:怎么让一个 Agent 真正被组织起来,并持续运行。


技术看点

  • 基于 deepagents 构建生产级封装
  • 模型路由预设主流模型提供商
  • 对话支持 L0 → L3 四级分层蒸馏
  • 原生支持多 Agent 与团队协作
  • 同一进程可托管多个隔离 Agent
  • 工作区支持本地 / S3 / COS / PostgreSQL


具体来看:

  • 模型路由:内置混元、Kimi、GLM、DeepSeek、MiniMax、Moonshot 等可编辑的供应商预设。切换模型时,不需要跟着修改业务代码。对于 Harness 来说,模型是可以被调度和替换的能力,而不是与业务逻辑绑死的一部分。

  • 持久化记忆:原生接入 Octop Memory,对话可以按层级进行蒸馏,记忆也可以跟随工作区迁移。

  • 工具开箱即用:浏览器自动化、网页搜索、文件操作、子 Agent 与 MCP 工具等能力已经集成在运行时中。“头脑”不只是负责思考,也需要知道什么时候该调用什么工具,把任务真正往下推进。

  • 多 Agent 与团队模式:同一进程可以托管多个彼此隔离的 Agent,同时支持 Agent 之间的协同编排与团队协作。

  • 后端可插拔:本地目录、S3、COS、PostgreSQL 都可以作为 Agent 工作区,根据部署环境选择即可。

  • ACP 与 Teams:通过标准协议,让 IDE、终端 AI 等入口能够直接驱动 Agent,同时支持 Agent 之间的消息协作。

所以,Octop Harness 想解决的并不是“怎么调用一次大模型”。而是:当一个 Agent 真正进入生产环境之后,怎么把模型、记忆、工具、工作区和多 Agent 协作组织起来,并且长期稳定地运行。



支撑Octop的四大核心组件,现已全部开源!  第3张


图3: Octop Harness 能力全景





记忆:Octop Memory




有了头脑之后,还要解决另一件事:Agent 怎么记住过去?


如果每一次对话、每一次任务结束后都重新从零开始,那么它依然只是一个“用完即走”的工具。Octop Memory,就是 Octop 用来把经历留下来的长期记忆系统。


它围绕“记忆树(root → branch → leaf)”构建,将原始信息逐层整理、提炼,再在真正需要的时候检索出来。这里的“记住”,并不是简单地把所有聊天记录保存下来。


随着交互越来越多,原始信息会越来越庞杂。真正有用的长期记忆,需要从这些信息中逐层提炼出事实、实体和关系,再在需要的时候找到它们。


所以,Octop Memory 更像是一本会自己整理重点的长期笔记。而且,这本“笔记”并不属于某一个 Agent。


Octop Memory 本身不直接调用大模型,而是一个独立的存储 + 检索层,因此可以被不同 Agent 接入。其中,我们尤其关注一个能力:


记忆的可迁移性。存储后端通过统一协议抽象,记忆也可以打包成标准格式。这意味着,即使未来更换 Agent 框架,已经积累的记忆也不一定要推倒重来。


Agent 可以换,过去积累下来的记忆可以继续带着走。


技术看点

  • 核心零依赖,仅使用标准库 + sqlite3
  • M4 检索管线
  • 默认 SQLite + FTS5
  • 可切换 PostgreSQL / Chroma / Qdrant
  • 支持 .hmpkg打包,实现跨框架迁移

核心能力包括:

  • 记忆树与分层蒸馏:将原始事件逐层提炼为原子事实与实体页,让长期信息越来越精炼。

  • 完整检索管线:覆盖解析、路由、采集、重排、多样性、噪声抑制、token 预算与最终渲染。

  • 可插拔存储:默认即可使用轻量本地方案,也可以根据需求切换 PostgreSQL 或向量数据库。

  • 跨 Agent 迁移:记忆可以打包导出,再导入新的宿主环境。


    支撑Octop的四大核心组件,现已全部开源!  第4张

图4: Octop Memory 记忆树





浏览器:Octop Browser




有了头脑和记忆,Agent 已经能想、能记。但要真正把任务完成,它还需要看见网页,并对网页进行操作。


这就是 Octop Browser 负责的部分。它相当于 Octop 接触 Web 世界的“眼睛和手”:读取页面是“看”,点击、输入、滚动、截图等动作则是“做”。


从工程角度看,Octop Browser 是一套面向 Agent 的轻量浏览器能力。与在 Playwright 上继续封装的常见方案不同,它直接通过 Chrome DevTools Protocol(CDP) 连接真实 Chromium。


减少中间层之后,Agent 可以基于实时 DOM 的稳定引用进行元素定位。


技术看点

  • 直连 CDP
  • 无 Playwright 中间层
  • 基于稳定 ref 定位
  • 多级轻量 DOM,减少 token 消耗
  • 约 20 个无状态动作
  • Profile 持久化登录态
  • 支持录制、回放与 MCP

核心能力包括:

  • 直连 CDP:直接与 Chromium 通信,减少额外中间层。

  • 轻量 DOM:通过多级 DOM 表示减少传入 Agent 的无效页面信息,控制上下文与 token 消耗。对于 Agent 来说,网页不是“看得越多越好”。真正需要的是把与当前任务有关的页面结构准确地交给它。

  • 登录态持久化:登录状态可以基于 Profile 在不同会话之间保持。登录一次之后,后续任务可以继续复用。

  • 约 20 个无状态动作:导航、点击、输入、截图、滚动等常用操作均可以独立调用,每个动作同时也是一条命令行。

  • 录制与回放:可以记录真实操作,再让 Agent 按操作意图进行复现,而不是依赖容易失效的固定坐标。

  • MCP 服务:浏览器能力还可以通过 MCP 暴露给其他支持 MCP 的 Agent。

所以,Browser 让 Agent 完成了一步很重要的跨越:从“知道应该怎么做”,走向“真正进入网页,把事情做完”。



支撑Octop的四大核心组件,现已全部开源!  第5张


图5: Octop Browser 直连 CDP





沟通:Octop Gateway




Agent 会想、会记、也能动手之后,还差最后一件事:它怎么和用户说上话?


现实中的用户并不会都守在同一个 AI 页面里。有人在飞书,有人在钉钉,有人在 QQ、企业微信;不同平台又有不同的协议、消息格式和交互方式。


如果让 Agent 自己逐个适配,就相当于每换一个聊天软件,都要重新学一套“语言”。Octop Gateway 做的,就是把这些不同的“语言”统一起来。


从工程角度看,它是一套 IM 通信网关:把不同 IM 平台的协议差异,收敛成统一的事件模型。飞书、钉钉、QQ、企业微信、微信 iLink、元宝、小艺、MQTT 等渠道的入站消息,都可以进入同一条处理管线。


开发者只需要面向统一事件编写处理器。新增一个 IM 平台时,主要处理平台接入层,而不需要重新修改上层业务逻辑。可以把它理解成:外面说的是不同“语言”,进入 Gateway 之后,交给 Agent 的都是同一种标准表达。


技术看点

  • 统一事件抽象
  • 多 IM 平台接入
  • 原生流式输出
  • 可插拔媒体处理
  • 主动消息推送
  • 多租户、多实例隔离

核心能力包括:

  • 一个处理器,多平台运行:同一套业务处理逻辑,可以服务多个消息平台。

  • 统一事件抽象:平台差异被收敛在 Gateway 内部,上层只需要处理通用消息与事件模型。

  • 流式事件:原生支持逐字流式输出。

  • 媒体与主动推送:支持通道限流、超时、“正在输入”等状态,同时提供可插拔媒体存储与主动消息推送能力。

  • 多租户:多个同类型通道可以同时运行,并保持相互隔离。

当 Gateway 与 Octop Harness 组合之后,一个负责“思考和执行”,一个负责“接收和传递”。


于是,同一个 Agent 可以拥有一个运行中枢,同时从多个消息入口与用户交互。



支撑Octop的四大核心组件,现已全部开源!  第6张


图6: Octop Gateway 统一多 IM 入口



四项本领,如何拼成 Octop?


支撑Octop的四大核心组件,现已全部开源!  第7张


图7: Octop 整体架构与四大组件

那么,现在,再回到开头的问题:Octop 到底是怎么搭起来的?


我想,答案已经比较清楚了。

  • Harness 是头脑,负责 Agent 的运行与调度
  • Memory 是记忆,负责长期信息的沉淀与检索
  • Browser 是眼睛和手,负责与网页世界交互
  • Gateway 是沟通能力,负责连接不同的消息入口

再加上 Web 控制台、命令行、专家库、知识库与插件体系,它们共同组成了今天的 Octop。Octop 不依赖外部消息队列或中间件。Web、IM、定时任务等入口,都会经过进程内的统一处理器进行路由。


因此,Octop 本身也可以看作这四个组件在真实场景中的一次完整集成:


四项本领组合在一起,让 Octop 成为一个完整的 Agent 系统;拆开之后,它们又可以各自进入其他 Agent 工程。你可以使用完整 Octop,也可以只选择其中一个组件。


这也是组件化真正有价值的地方:拆得开,才能按需取用;边界足够清楚,才能自由组合。

  • 需要一个运行中枢,就拿 Harness
  • 需要长期记忆,就接 Memory
  • 需要网页操作,就加 Browser
  • 需要连接 IM,就接 Gateway

从这个角度看,它们更像是四块已经打磨好的 Agent 基础积木。而 Octop 只是其中一种拼法。



现在即可使用



目前,这四个组件均基于 MIT 协议开源,并已发布至 PyPI。


可以直接安装:

  • 头脑 · Octop Harness:pip install octop-harness[cli]
  • 记忆 · Octop Memory:pip install octop-memory[cli]
  • 眼睛和手 · Octop Browser:pip install octop-browser
  • 沟通能力 · Octop Gateway:pip install octop-gateway

欢迎在 GitHub 上关注 TencentCloud 组织,或直接访问各仓库:

  • Octop Harness:https://github.com/TencentCloud/octop-harness
  • Octop Memory:https://github.com/TencentCloud/octop-memory
  • Octop Browser:https://github.com/TencentCloud/octop-browser
  • Octop Gateway:https://github.com/TencentCloud/octop-gateway


支撑Octop的四大核心组件,现已全部开源!  第8张


图8: Octop 四大核心组件开源仓库

从 Octop,到今天进一步开放 Harness、Memory、Browser 与 Gateway,我们希望开源的不只是一套完整产品。


更希望把构建它过程中沉淀下来的核心能力,一项项拆出来。让这些经过真实场景打磨的“本领”,成为其他开发者构建 Agent 时可以直接取用的基础设施。


你可以完整使用 Octop,也可以只拿走其中一块,接进自己的 Agent。如果这些组件恰好解决了你正在重复解决的问题,欢迎在 GitHub 上 Star、提交 Issue 或 PR。


拆开,是为了更自由地组合。


也期待这四项本领在更多开发者手里,长出 Octop 之外的新东西。


相关文章:

文章已关闭评论!