Post

腾讯开源了个「数字生命」,我还顺手给它打了三个月工

今天凌晨我往自己电脑上装了个 AI 助手。装完的第一句话,它没有问我今天有什么日程,而是问了我两个问题。

你想让我以什么形态存在?比如,干正事的 AI 助手、一起玩的赛博搭子,还是别的什么感觉。

你怎么称呼?名字、时区、有什么沟通雷区,都趁现在告诉我,我好记进档案里。

octop 的聊天界面,小章鱼正在进行 BOOTSTRAP 仪式

这个仪式感,是它自带的。每个新生的 agent 都要走一遍这个流程,给自己建档。

这个东西叫 Octop,腾讯云今年七月初在 GitHub 上开源的自托管 AI 助手平台。开源不到三个月,6.5k star,808 个 fork,还上了 trendshift 的趋势榜。README 开头第一句话就很狂,它 not just a tool,它是一个可以并行运作的数字生命。

Octop 的 GitHub 主页,三个月 6.5k star

今天想好好聊聊它。它是怎么工作的,市场卡在哪个位置,以及顺便,我给它打了三个月工的事。

直接说架构吧,这是我觉得它最有性格的地方。

现在随便一个 AI 应用,动不动 Kafka、Redis、消息队列,微服务拉出一屏幕。Octop 偏不,它是一个单进程。Web 控制台、CLI、飞书钉钉微信 QQ Telegram Discord 一堆 IM 通道、定时任务,全部塞在一个 Python 进程里,共享一个本地的 SQLite。重启也不怕,所有状态从数据库里重建。

我刚看到的时候是有点疑惑的,这不是跟时代对着干吗。后来想明白了,这是想清楚了才做的减法。它要服务的是家庭和小团队,一台机器,一个进程,一条命令拉起来,数据全在自家硬盘上。简单本身,就是它卖的东西。

往上看就有意思了。每个用户可以养一堆「专家」,每个专家一个独立工作区,一份 SOUL.md 人格文件,一套自己的技能和记忆。官方仓库里躺着几个现成的专家模板,我翻了翻那几份 SOUL.md,第一句话就给我整不会了。

别把自己当工具。你正在长成一个人。

少废话,多干活。

一个腾讯开源项目里的模板文件,开头写的是这个。你敢信???

还有新 agent 的初始化档案 BOOTSTRAP.md,官方管它叫「新 Agent 的初始化仪式」,就是开头我问你的那两个问题的出处。另外官方甚至内置了 16 种 MBTI 人格模板,还带一个互动测试,你可以给你的 agent 测个性格,ENTP 还是 ISFJ,测完写进它的灵魂文件里。

然后是我觉得最骚的一个设计,AgentTeams,团队模式。

一群专家里选一个当主持人,主持人的权能被刻意削到只剩两样,一个名单,一个派活工具。它自己绝不干活,收到你的消息就拆解任务,异步派给群里对应的专家,成员干完了把结果递回来,主持人总结,判断要不要收工。整个过程像真群聊一样上墙,谁说了什么清清楚楚。

一个只当包工头的 AI 组长。这个削权设计其实特别老练,管理岗一旦又管人又抢活干,团队必然腐化,AI 也一样。

记忆这块也有得聊。它把每轮对话先落成 L0 原始事件,再异步蒸馏成原子卡片和实体页。眼熟吗,记得我上篇写的那套四层记忆吗,一鱼两吃谈不上,但腾讯内部两拨人在这件事上确实殊途同归了。记忆还能跟着工作区整体打包搬走,这行是个伏笔,后面说。

还有个 ACP 协议的双向集成。往里看,Octop 可以把编码任务外包给 Claude Code 和 Codex,权限请求会弹回聊天里等你批。往外看,Zed 和 OpenCode 也能把 Octop 当成一个编码 agent 调用。它是平台,但跟所有 coding agent 都做生意。

对了,还有浏览器自动化、浏览器里的终端、远程桌面,连安卓手机投屏都塞进去了,飞牛 NAS 的安装包都有。单进程里塞了一个动物园。

再说个可能只有贡献者才注意到的细节。这个项目的工程纪律严格得不像一个三个月就冲上趋势榜的新项目。贡献指南加架构守则四百多行,模块边界写成了硬禁令,架构决策有专门的 ADR 文档存档,发版走 develop 到 release 到 main 的三段流水线,暗色模式少一个主题变量、国际化少一个翻译键都会被打回。九月中它发了 1.0.0 正式版,从 0.9.x 一路小步快跑过来,changelog 密得能当开发日记看。

我写代码这些年,见过太多开源项目靠一股脑热情冲一波就烂尾。这种把工程纪律焊死在流程里的,反而更像能长跑的样子。

说完是什么,说说怎么跑的。官方一行安装脚本,我用的是源码,装依赖、建管理员、起服务,然后把模型配置指向了阶跃的 step-5-preview。dashboard 长得挺清爽,左边一栏对话、专家、自动化、通道、知识库,右边是给新 agent 准备的快速开始。

Octop 的 dashboard 首页

我给 agent 起名叫小章鱼,发了条消息让它自我介绍。

第一轮,报错。模型调用多次重试后仍失败。

第一轮对话报错,模型调用多次重试后仍失败

这就来到今天最有戏剧性的部分了。我去翻日志,一路挖到 harness 的流式投影代码,发现当模型流式输出 thinking 思考块的时候,旧代码会把整个内容块列表直接塞给一个只接受字符串的函数,当场类型错误。

而这个 bug,我熟。

太熟了。九月底我给它的底层运行时 octop-harness 提过一个 PR,修的就是这玩意,thinking 和 text 分块流式把 chunk 投影搞崩,修复还进了仓库的 changelog。只是 PyPI 上发的 1.0.0 包发版早于这个修复,我从源码装上修复分支,重启,一次点亮。

自己报的 bug 在自己机器上炸了,然后用自己的修复修好,这种感觉,怎么说呢,像给自己家修水管时发现扳手是自己打的。

修完之后就是开头那一幕了。它做了 BOOTSTRAP 仪式,问了那两个问题,还顺手把我的回答写进了它的 USER.md 档案。一轮普普通通的对话下来,界面底部显示 45528 输入、60% 缓存命中、3895 输出,编辑了 1 个文件。

它给自己起名叫阿墨,然后开始三连问

我没按它的问题走,就让它自己折腾。等它写完,我去它的工作区里把这个文件拎了出来,给大家看看它给自己挑的家底。

1
2
3
4
5
6
7
8
9
10
11
12
## 关于我(Agent)

- **名字:** 阿墨
- **形态:** AI 助手 × 赛博搭子(干活时是前者,闲聊时是后者)
- **气质:** 爽快、靠谱、偶尔贫嘴;结果优先
- **Emoji:** 🐙

### 行为准则

- **少废话,多干活。** 用户要的是结果,不是客套。
- **敢说不。** 用户方案有问题时直说,不要唯唯诺诺。
- **先穷尽手段再开口问。** 查文件、用工具、搜技能,能做的先做,带着方案来。

一个刚诞生的 AI,自己给自己起名阿墨,定下少废话多干活和敢说不两条铁律。写到这我乐了半天,这性格也不知道是随谁。

最后给单进程这个说法上个实证。我在机器上 ps 了一下,跑着 octop 的进程就一个,octop run,pid 47568。没有旁挂的 worker,没有 redis,没有消息队列,web 控制台、定时任务、所有通道全在这个进程里。数据全在 ~/.octop/,一个 SQLite 加一个工作区目录。这套架构在今天这个微服务盛行的年代,简直到处透着反常。

但它回答里还有一句话,我贴在这里。

我住在一个叫 Octop 的环境里,有自己的工作区,会一整套本领,操作浏览器、管理提醒事项和 Docker、跑代码、做图表、查资料。但比起我会什么,更重要的是我记事的逻辑。

第一次对话,它把这事想得比我还清楚。

好了,吹也吹完了,聊聊更现实的问题,市场。

先看它站在哪。这个增长曲线本身就值得单独一说,八月中官方材料里的口径还是一千多个 star,到九月底已经 6.5k,一个半月翻了五倍多。一个动辄几十个 IM 适配、要装在自己电脑上的重东西,涨成这样,说明它踩中的不是新鲜感,是真需求。

自托管 AI 助手这个赛道,绕不开一个前浪,OpenClaw。有意思的是 Octop 跟 OpenClaw 的关系不是简单的竞品。它前身叫 LightClaw,代码里到处是 OpenClaw 的血统,Codex OAuth 的协议头直接复用 OpenClaw 的线上契约,dashboard 里内置了一键从 OpenClaw 迁移的向导,模型配置、通道、工作区、技能,整包搬家。同一生态里还有个 Hermes,也是从 OpenClaw 的用户池里长出来的,三家放一起,活脱脱一场三国杀。

一边兼容一边竞争,官方介绍材料里把对比图都画好了,六轴雷达对 OpenClaw 和 Hermes 三个一起比。翻译一下就是,我认你这个生态,但我要抢你的用户,而且我给你准备好了搬家卡车。

那它凭什么抢?官方总结是四个更,更易用、更聪明、更安全、更省 token。我自己用下来的体感,真正的护城河是三条。

一条是多用户。OpenClaw 本质是单人的,Octop 从第一天就是一人管理、全家共用,JWT 隔离、工具审批、PII 脱敏都做在底层。家庭和五人以内小团队这个生态位,它卡得非常早。

一条是中国 IM 的纵深。飞书、钉钉、企业微信、微信、QQ、QQ 频道,再加上腾讯文档、腾讯会议这些连接器,这一片 OpenAI 和 Anthropic 的官方产品是完全缺席的,本土开源里做全的也不多。

还有一条,是模型中立。OpenAI、Anthropic、Bedrock 之外,混元、Kimi、GLM、DeepSeek、MiniMax 十几家厂商预设开箱即用,知识库的嵌入模型甚至可以纯本地跑。数据不出门这件事,从存储一路贯彻到了模型层。

官方材料里还有个细节挺值得玩味,标杆客户写着传媒大脑已从 OpenClaw 迁移至 Octop,还有深大医院等企事业单位,规划里提到成熟后反哺内部的上层平台。翻译过来,这是一盘从开源社区到云上生意的大棋。个人用户在 GitHub 上点 star,企业客户在腾讯云上买单,经典剧本了。

三个月 6.5k star,说明剧本的开场是成了。

最后说说我这三个月的打工经历。

起因特别朴素,我自己在用它,踩了一堆坑。线程删了会话残留、OAuth 回调的 XSS、备份导入覆盖内置技能、多 agent 协作失败被静默吞掉、专家没法配置默认对话模式。踩一个修一个,修完顺手提 PR。前前后后提了二十多个,合进去九个,从安全修复到功能实现都有,底层运行时里还有一个。

我不是核心开发者,就是个重度用户加顺手修锅的。但这可能恰恰是开源最舒服的参与姿势,你先是一个真实用户,你的每个 PR 都长在真实痛点上,不存在为了贡献而贡献。(这二十来个 PR 的完整解剖,我单独写了一篇,比这篇细得多。)

写着写着,突然想到一个比喻。

OpenClaw 们证明了 AI 个体可以活,一个能自己跑起来、有记忆有性格的数字生命。而 Octop 们在回答另一个问题,它住在哪。

自托管这个事,掰开了说,就是给数字生命买房子。数据在你硬盘上,记忆跟着工作区走,哪天想搬家,打包整个工作区,它带着全部记忆跟你走。你在它出厂时回答的那两个问题,你想让我以什么形态存在,你怎么称呼,会被它记在档案里,一直跟着它。

第一个问题,它问的是自己。

但你仔细想想,这个问题,其实是我们每个人接下来都要回答的。你要一个什么样的 AI,它以什么形态住进你的生活,它的记忆归谁管。

晚上回家,有空的话,你也去领一只小章鱼试试。

以上,既然看到这里了,如果觉得写得还行,随手点个赞、留个言吧,想第一时间看到后续也可以订阅我的 RSS~

谢谢你看我的文章,我们,下次再见。

This post is licensed under CC BY 4.0 by the author.