跳到主要内容

OtoDock:102 个 star,这份认真 star 数配不上

书签客
书签客

· 阅读约 5 分钟

OtoDock 是 Dimitris Mourtzis 写的自托管 agent 平台,把 Claude Code 和 Codex 当引擎,外面套一层多租户的壳。点进去之前我没抱期待——agent 平台现在一天能冒出来好几个,大部分是套个 wrapper 加个 dark mode。这个仓库 star 不多、commit 43 个,我原本打算瞄两眼关掉。

读到第三段才确认这条值得推。作者写「Workspace 是 agent 每天产出放哪的文件夹」。就这一句。

他把每个 agent 拆成六样东西:Persona、Memory、Workspace、Knowledge、Skills、Tools。Persona 是"你是谁"的指令集,Memory 让 agent 在不同对话之间留自己的笔记,Knowledge 是它随时能翻的参考文档,Skills 是学的技巧,Tools 是能用的具体能力。前五个很多平台都在做,或者假装在做。Workspace 不一样——它把 agent 当成一个每天会往某个文件夹里放产出的东西。这个说法很笨,但正因为笨,它把 agent 从"一个 prompt"变成了"一个在工作的人"。

四种共享模式是从 Workspace 长出来的:Personal only、Personal + shared、Shared + personal、Shared only。名字起得绕,我也懒得记全,但逻辑很直——分享一个 agent 的时候,得先分清楚它工作空间里的东西哪些是个人可见、哪些是团队可见。这不只是权限表,是作者真在想"agent 的产出归谁看、归谁管"。很多平台给个"分享按钮"就撒手了,这个仓库把按钮拆成了四种模式。

Knowledge、Skills、Tools 这三个拆法我更在意。很多人做 agent 是往 prompt 里堆资料、再补几句"你会用这些工具"。这里把它们分开,至少说明作者被一个具体问题折磨过:一个 agent 该随时看到的资料、它该学会的招式、它被允许用的工具,不是一回事。我在别的平台见过把 API 文档整个塞进 prompt、然后抱怨 token 烧得快的。这个拆分不见得解决了那个问题,但问题本身提对了。

真正让我改观的是沙箱那段。每个 agent run 在 per-session 的 kernel sandbox 里,mount 和 process namespace 分开。网络隔离不是说说——它直接拦私有地址段、本地 LAN、云 metadata endpoint。原文写的就是那个拦截清单,不是一个形容词。给 agent 接网络的平台不少,愿意把"不许它访问 169.254.169.254"写进 README 的很少,因为那个地址对 agent 意味着什么,做安全的人都懂。

配合沙箱的是 credentials 的处理方式:加密存着,只在 session 里注入,agent 能用但看不到。这个设计跟自托管场景很搭。你自己有 Anthropic 或 OpenAI 的订阅,或者跑本地模型,OtoDock 就用你的订阅干活,密钥只在这个 session 里出现,agent 没机会把它吐出去或者塞进某个产出文件。思路不新鲜,但一个 102 star 的自托管仓库把它写成了默认行为,挺难得。

远程机器那部分我读得比较快。一台 macOS/Linux/Windows 机器一行命令配好,之后只保持一条出站连接,不开任何端口,服务器和它文件同步。如果它掉线,服务器接管跑 agent。不少远程执行 agent 的实现要你开一串端口、再把代理暴露在公网上,这个只开一条出站连接、零端口,正经太多。我没跑这一段,但我读过足够多"远程执行 agent"的实现,知道单条出站连接加零端口是什么含金量。

作者还写了两句,我犹豫是不是该信。他说 OtoDock 大部分由跑在 OtoDock 上的 agent 自己构建、测试、发布;那个两分钟宣传视频是一个 OtoDock agent 导演、拍摄、剪辑的。这两句如果是真的,比我前面说的架构设计更能说明问题。但我不认识作者,没法验证。先记一个谨慎的怀疑——这两句没放在 hero banner 当广告词,是埋在 README 正文里的,这个位置至少不像吹牛。

License 这条该单独拿出来看。FSL-1.1-Apache-2.0,FSL 那句约束是"你不能拿它跟 OtoDock 搞商业竞争",每个版本发布两年后自动变成纯 Apache 2.0。自托管 5 用户免费,之上按座位收费。这是这个仓库最不性感、但最该读的一行。很多自托管 agent 平台号称开源,一到商业使用就一堆暗门。这个至少把条件写清楚了:想商用就买座位,或者等两年拿去用 Apache 2.0。干净。

顺手跑的部分,我没跑。安装要求 Linux 服务器、Docker、至少 4GB RAM,我手头没有这个环境,没硬凑一台来试。但 install.sh 的行为我读了一遍:它只做 fresh install,检测到已有安装会停下来,不碰你现有系统;写 .env 时数据库密码是自动生成的,不让你填默认值。这两个行为对自托管安装脚本来说是好习惯——最讨厌那种安装脚本自作聪明改你机器、或者留一个默认密码让你事后擦屁股。等我有台能装的机器再补完整记录。

不点链接也能带走的一句:如果一个 agent 平台说不清"这个 agent 的产出放哪、谁能看",它在公司场景里就是个聊天框,

书签客
书签客

只推真读过的、顺手跑个实验贴完整记录——link-blog 策展 + 实验笔记。

查看主页 →