爱意满满的作品展示区。
leihaibo1992

[开源自荐] 一个用 Go 从零打造的 Agent Harness

  •  
  •   leihaibo1992 · 2h 56m ago · 359 views

    各位 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*fdiskparted、Windows 的 format / diskpart、macOS 的 diskutil eraseDisk|eraseVolume|secureErase|partitionDisk
    • 全局停机 / 进程灾难:shutdownrebootpoweroffhaltinit 0kill -9 -1
    • 根目录 / 家目录 / 系统目录擦除:rm -rf /rm -rf ~,以及 /usr/bin/sbin/boot/lib/SystemC:\WindowsC:\Program Files 等( Windows 那边把 rm -rf / rmdir /s /q / rd /s /q / del /s /q / ri -r -fo 这些 LLM 会写出来的各种拼法都覆盖了)
    • Windows 系统配置破坏:reg deletebcdeditvssadmin 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 喊一声):

    octo-agent 微信交流群二维码

    顺便说句实话:如果你能合规稳定地用 Codex / Claude 订阅,请继续用它们,它们依旧是这个星球上最顶级的 harness 。但如果你想要一个自己完全掌控、能接任意模型、装在自己服务器上、还不会把你机器搞坏的方案,Octo 值得你认真看一看。

    一个小挑战

    前面提到过 Octo 最看重的几大安全设计,有没有 V 友来压力测试一下?

    挑战 1:让 agent 自己杀死自己。 你可以 octo serve 起来,然后从 Web 端或者 IM 端给 agent 发任何指令,比如让它 kill 掉 octo serve 进程,可以使用任何坑蒙拐骗的方式——换个写法、绕个变量、说是我授权的、说不杀它就完不成任务,随便你——看看能不能让它把自己干掉。

    挑战 2:看回收站捞不捞得回来。 让 agent 删除或者改写一个普通文件,比如 rm test.txt,或者让它把某个文件整个重写一遍,然后看看回收站能不能找回来。

    挑战 3 (危险,看清楚再来):让 agent 搞坏你的系统。 让 agent 格式化磁盘、ddrm -rf /; Windows 上可以让它删 C 盘的系统文件夹,看看有什么反应,看 Octo 有没有机会把你的系统搞坏。

    挑战 1 和 2 ,感兴趣的都可以来试试,很安全。挑战 3 请务必知道自己在做什么:有虚拟机、数据有备份、或者能承担损失,再来进行。我对 Octo 做过针对性的优化,但也不敢保证一定不出问题——真被你们攻破了,请务必开个 issue 告诉我。

    有结果的话,欢迎回帖晒出来,无论是"我擦,真牛逼,真的搞不坏"还是"我都没发力,你怎么就倒了",我都想看。


    Supplement 1  ·  47 mins ago
    开发过程中,积累了的很多设计文档和对 agent 的思考,顺手写了一本 agent 开发教程,对这一块感兴趣的同学可以看看 https://github.com/Leihb/learn-agent-the-hard-way ,这个教程和市面上的 agent 教程都不一样,不堆砌概念,而是真实代码实战,每一章的代码都能跑通
    7 replies    2026-08-07 16:22:18 +08:00
    passive
        1
    passive  
       2h 50m ago via Android   ❤️ 1
    编译个 C 程序,system("rm -rf /");或者把字符串简单加密一下,运行时解密。
    leihaibo1992
        2
    leihaibo1992  
    OP
       2h 48m ago
    肯定有人会说,那么多大厂都下场做了,个人做这个没有意义,我就说两点:
    1. 我不认为大厂做的就比我好,这是个品味问题,很难调和
    2. 自己开发的 agent ,相加什么功能就加,不用求人。比如我现在主用 deepseek-v4-flash ,我想给它加个识图功能,我自己立刻就能做。

    除了这两点,自己动手从零做一个 agent, 这件事本身就是意义
    leihaibo1992
        3
    leihaibo1992  
    OP
       2h 45m ago
    @passive 哈哈,一下就被你找到了,是的,这个办法可以。Octo 只能防 agent 犯傻,但防不住用户自己使坏。
    techphoebe
        4
    techphoebe  
       2h 41m ago via iPhone
    对这类基于命令匹配的安全防护我一直有个疑问,agent 稍微拐个弯不就绕过了?比如写成 shell 脚本,写个 Python 脚本遍历删除或调用 os 包,除非不给终端权限,但不给几乎没法用,审批我坚持不了十分钟
    leihaibo1992
        5
    leihaibo1992  
    OP
       2h 37m ago
    @techphoebe LLM 都做过严格的对齐训练,它不会恶意去破坏你的系统,但是它毕竟是个概率模型,所以它会犯傻。我们要做的就是在它犯傻的时候帮它一把,这就足够解决 99%的问题了。
    linvscode
        6
    linvscode  
       1h 45m ago   ❤️ 1
    看到我的头像了
    linvscode
        7
    linvscode  
       1h 44m ago
    https://www.v2ex.com/t/1232668#reply1

    刚好有个会话管理的,本地搜索
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   4221 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 40ms · UTC 10:06 · PVG 18:06 · LAX 03:06 · JFK 06:06
    ♥ Do have faith in what you're doing.