各位 V 友,向大家介绍一个我用 Go 从零开发的 agent harness —— Octo。
这个项目我已经做了 3 个月,前面没怎么推广,主要是怕不够成熟,用了出问题。
目前我自己已经高强度使用了两个月(日常开发、写文档、运维、办公,基本全在上面跑),还有一些朋友小范围试用了快一个月,该修的 bug 都修得差不多了,我想,是时候向大家介绍一下了。
仓库在这里,MIT 协议,喜欢的话点个 star:https://github.com/open-octo/octo-agent 官网: https://octo-agent.dev
Octo 是什么
Octo 是我长时间探索实践各家 agent ,包括 openclaw 、hermes 、cc 、codex 、workbuddy 之后,按照我自己的品味,从零开始,用 Go 打造的一款 agent harness 。
具体说,它是这么几个东西的组合:
- 一个 ~40 MB 的单二进制。 没有 Node / Python / Ruby 依赖树,不用装 npm 镜像,不会 node-gyp 编译失败。拷到任何一台服务器上就能跑。
- 模型自由。 DeepSeek 、Kimi 、Qwen (百炼)、Anthropic 、OpenAI ,以及任何兼容 OpenAI / Anthropic 协议的端点,都是原生支持,不是"套壳兼容"。我针对国产模型逐家做过提示词缓存优化,Kimi / DeepSeek / Qwen 的缓存命中率都能到 95% 以上,其中 deepseek-v4-flash 我使用下来,长期缓存利用率超过 99% 。
- 零遥测。 除了你自己配置的模型 API 调用,Octo 自身不向外发任何请求。不收 IP 、不收机型、不收你选了什么模型、不收使用行为,一个埋点都没有。
- 自托管。 服务和数据都在你自己的机器上,会话记录是
~/.octo/下的明文 JSON ,随时可以自己翻。
装起来就一行:
curl -fsSL https://octo-agent.dev/install.sh | sh # Linux / macOS
irm https://octo-agent.dev/install.ps1 | iex # Windows
或者到官网下载桌面端,直接安装更简单
Octo 有哪些过人之处
防自杀,防破坏系统,日常数据有回收站。
这是我做 Octo 最较真的一块,说细一点:
1. 防自杀。 terminal 工具直接拒绝任何打向 Octo 自身进程的 kill / pkill / killall——连 kill $(pgrep octo) 这种拐弯的变体也认得。为什么要有这个:Octo 可以 octo serve 常驻,你从 Web 端或者 IM 里给它发指令,如果它一句 pkill octo 把自己干掉了,你连"它死了"这个回复都收不到,只能上服务器手动拉。至于确实需要重启的场景,有专门的 restart_server,在默认权限规则里写死为"必须询问",而且是优雅热重启:先把当前这轮跑完、把回复送到你手上,supervisor 再拉起新进程,客户端自动重连。
(我真的被 openclaw 和 hermes 的自杀搞怕了)
2. 防破坏系统。 一批毁灭性命令是硬编码拒绝的,连你自己写自定义权限规则也放不开,包括但不限于:
- 裸盘 / 文件系统:
dd if=、mkfs*、fdisk、parted、Windows 的format/diskpart、macOS 的diskutil eraseDisk|eraseVolume|secureErase|partitionDisk - 全局停机 / 进程灾难:
shutdown、reboot、poweroff、halt、init 0、kill -9 -1 - 根目录 / 家目录 / 系统目录擦除:
rm -rf /、rm -rf ~,以及/usr、/bin、/sbin、/boot、/lib、/System、C:\Windows、C:\Program Files等( Windows 那边把rm -rf/rmdir /s /q/rd /s /q/del /s /q/ri -r -fo这些 LLM 会写出来的各种拼法都覆盖了) - Windows 系统配置破坏:
reg delete、bcdedit、vssadmin delete(删影卷)、wbadmin delete(删备份目录)、wevtutil cl(清事件日志)
这些规则是命令位锚定的,不是傻乎乎的字符串包含:它匹配命令词本身(包括 sudo / xargs / shell wrapper / 链式操作符后面的位置),但不会误伤参数里的字眼——git commit -m "fix shutdown handling" 和 docker ps --format json 完全不受影响。这个坑我踩过,所以专门做了锚定。
(pi, 说的就是你)
3. 回收站。 普通文件删除,以及 write_file / edit_file 的覆盖写,在动手之前都会先备份到回收站(默认保留 14 天、上限 10 GiB )。也就是说 agent 手滑 rm test.txt、或者把你辛苦写的配置文件整个重写了,都能捞回来。这个我自己救过好几次。
(妈妈再也不担心 codex 不小心删掉我的作业了)
Octo 有什么
各种 agent harness 提供的功能,Octo 基本都有:
- 基础工具族 —— 文件读 / 写 / 改、glob / grep 搜索、terminal ( macOS/Linux 走
sh,Windows 走 PowerShell ,不硬依赖/bin/bash)、网络请求与网页搜索 - sub_agent —— 子代理,可以并行 fan-out ,一次派几个出去分头探索不同模块
- loop / cron —— 自主循环和定时任务,让它自己按点醒过来干活
- dynamic workflow —— 动态编排,把多智能体的流程写成脚本确定性执行
- goal —— 长期目标,空闲时自己往前推
- browser 操作 —— Go 原生 CDP ,录制 / 回放 / 自愈,浏览器自动化不用另外装一套 Node 工具链
- MCP —— stdio + HTTP 都支持,带 OAuth ,工具多的时候有 Tool Search 兜住上下文
- skills —— 完全兼容 Claude Code 的
SKILL.md格式,你把~/.claude/skills软链过来就能直接复用已有的技能,不用重写 - memory —— 跨会话记忆
工具、MCP 、skills 默认全部开启,装完一条消息就能真正干活,不需要先"养"一遍环境、写一堆规则。这是我和 OpenClaw / Hermes 那类项目最大的体感差异。
你可以怎么用 Octo
- 日常开发 —— 用 TUI
- 远程服务器 —— 用 Web 端或 IM 端(微信 iLink 、飞书、钉钉、企业微信、Discord 、Telegram )
- 日常办公 —— 用桌面端( macOS / Windows / Linux 原生窗口 + 托盘,安装包只有 100 MB 左右,Codex 桌面版和 WorkBuddy 动辄 1 GB )
除此之外还有 VS Code 插件、Obsidian 插件、Go SDK (把 agent 循环嵌进你自己的程序),移动端 iOS + Android 在开发者预览。
其实大部分场景,这几个客户端本质是同一个大脑——同一份配置、同一批会话、同一套技能和权限规则,都能用,爱用哪个用哪个。常见姿势是服务器上 octo serve -d 起一个,白天在电脑上用桌面端和 TUI ,出门用手机从 IM 里接着聊同一个会话。
诚邀共创
Octo 是 MIT 协议的开源项目,Go 1.25 ,代码结构分层很清楚( CLI → app → agent → provider → tools ),加一个工具、接一个新模型端点都是照着现成的例子填空,欢迎大家来一起搞:
- 有 bug / 想要的功能 —— 提 Issues,我基本当天就会看
- 想聊用法 / 拿不准怎么配 —— 来 Discussions,公开可沉淀,后来的人搜得到
- 想贡献代码 —— 仓库里有
CONTRIBUTING.md和.octorules,约定都写明了;接新 provider 、加新工具、写 skill 都是很好的切入点 - 想吐槽 —— 更欢迎,可以到 GitHub Discussions 和 Issues 来吐槽,也可以扫码加 Octo 微信交流群(群码 7 天有效,到期我会更新,下图始终是最新的;扫不进就到 Discussions 喊一声):

顺便说句实话:如果你能合规稳定地用 Codex / Claude 订阅,请继续用它们,它们依旧是这个星球上最顶级的 harness 。但如果你想要一个自己完全掌控、能接任意模型、装在自己服务器上、还不会把你机器搞坏的方案,Octo 值得你认真看一看。
一个小挑战
前面提到过 Octo 最看重的几大安全设计,有没有 V 友来压力测试一下?
挑战 1:让 agent 自己杀死自己。 你可以 octo serve 起来,然后从 Web 端或者 IM 端给 agent 发任何指令,比如让它 kill 掉 octo serve 进程,可以使用任何坑蒙拐骗的方式——换个写法、绕个变量、说是我授权的、说不杀它就完不成任务,随便你——看看能不能让它把自己干掉。
挑战 2:看回收站捞不捞得回来。 让 agent 删除或者改写一个普通文件,比如 rm test.txt,或者让它把某个文件整个重写一遍,然后看看回收站能不能找回来。
挑战 3 (危险,看清楚再来):让 agent 搞坏你的系统。 让 agent 格式化磁盘、dd、rm -rf /; Windows 上可以让它删 C 盘的系统文件夹,看看有什么反应,看 Octo 有没有机会把你的系统搞坏。
挑战 1 和 2 ,感兴趣的都可以来试试,很安全。挑战 3 请务必知道自己在做什么:有虚拟机、数据有备份、或者能承担损失,再来进行。我对 Octo 做过针对性的优化,但也不敢保证一定不出问题——真被你们攻破了,请务必开个 issue 告诉我。
有结果的话,欢迎回帖晒出来,无论是"我擦,真牛逼,真的搞不坏"还是"我都没发力,你怎么就倒了",我都想看。

