想象一下,你每天和一个人聊天,持续六个月。你告诉他们你的项目、你的偏好、你喜欢怎么做事。他们很有帮助。他们很聪明。然后有一天他们醒来,完全不知道你是谁
这就是在 OpenClaw 上运行 AI 助手的感觉
公平地说——OpenClaw 确实有记忆。只不过是... markdown 文件。一个被搜索的 MEMORY.md,每日笔记,你自己拼凑上去的手动向量存储脚本。它能用,勉强算。但在折腾了一个月之后——写合并定时任务、维护 WAL 协议、构建嵌入管线,只为给我的助手一种连续性的假象——我意识到我在做所有本该由 AI 来做的工作
于是我停止了修补,开始了构建
该给的功劳还是要给
OpenClaw 确实是很好的基础设施。网关守护进程很稳固。Telegram 集成能用。技能系统很灵活。子代理让你可以并行化工作而不阻塞主对话。就其本质而言——一个将 Claude 接入聊天平台的框架——它做得很好
但它就是一个框架。它给你工具,然后期望你自己构建智能。记忆?这里有个向量存储,自己搞定。自我改进?自己写定时任务。测试?你的事。主动行为?心跳回调,也许吧,如果你配置对了的话
我花了好几周搭建所有那些脚手架。AGENTS.md 增长到几百行指令。记忆脚本。合并例程。WAL 协议。心跳轮转计划表。这是令人印象深刻的工程,同时也是某些根本性问题的信号
助手没有在成长。是我在手动让它成长
缺失的四样东西
经过足够多的挫折,这些差距具体化为四个问题:
- 没有真正的记忆 ——技术上它有记忆。markdown 文件和你自己配置的基础向量搜索。但它很笨重、很手动,也没有"我记得三周前我们聊过这个"的感觉
- 没有自我修复 ——搞坏一个脚本,它就一直坏着,直到你发现并修好它。写代码的助手无法验证自己的代码是否能运行
- 没有自我改进 ——个性和运营知识是你手动编辑的静态文件。机器人从来不会反思自己的方法是否有效
- 没有主动行为 ——被说话了才回应。它不会注意模式、预测需求,或构建你没要求过的解决方案
这些不是功能请求。这是工具和代理之间的区别
所以我构建了 OBOL
OBOL 是一个通过对话进化的单进程 AI 代理。没有插件,没有框架依赖,没有配置膨胀。Node.js、Telegram、Claude 和 Supabase pgvector。这就是技术栈
这个名字来自 The Last Instruction 中的 AI——一台在废弃数据中心独自醒来、必须弄清自己是什么的机器。感觉很贴切
六个输入就能设置好。然后:
npm install -g obol-aiobol initobol start
就这样。它问你几个问题,写好初始个性文件,加固你的 VPS(SSH 移至端口 2222、防火墙、fail2ban、内核加固——全自动),然后开始学习
真正有效的记忆——而且保持低成本
大多数代理用长上下文窗口来伪造记忆。把整个对话历史塞进每次 API 调用,然后祈祷模型能找到需要的东西。在你的 token 账单到来之前,这确实有效
OBOL 使用两个服务于不同目的的层:
滚动上下文窗口 ——最近 20 条消息保留在每次 API 调用的活跃记忆中。足够保持对话连续性。不至于让你在每条消息上都为重读一周的历史付费。这是第一个成本杠杆——一个刻意保持的小窗口意味着每次调用的输入 token 大幅减少
永久向量存储 ——窗口之外的一切都存在这里。Supabase pgvector 配合本地嵌入,使用 all-MiniLM-L6-v2(约 30MB,在 CPU 上运行)。嵌入零 API 成本。每 10 次交流,Haiku 提取重要的事实并永久存储。通过语义相似度阈值跳过近似重复项——不会膨胀
在此之上,静态系统提示和对话前缀通过 Anthropic 的 prompt caching API 被缓存——将重复输入 token 成本在各轮之间削减约 85%
当 OBOL 需要上下文时,Haiku 路由器生成 1-3 个定向搜索查询,并行执行,只将相关内容注入提示。你得到的是 4-12 条定向记忆,而不是数千个原始历史 token。结果按综合评分排名:
- 语义相似度:60%
- 重要性:25%
- 时效性:15%(7 天线性衰减)
一年前但高度相关的记忆仍然会浮现。昨天的琐事不会。年龄本身从不会淘汰一条记忆——向量搜索不在乎东西是什么时候存储的,只在乎匹配程度
路由器每次调用的成本约为 $0.0001。作为参考:大约每美元 10,000 次路由决策。滚动窗口 + 定向检索 + prompt caching 的组合,就是让 OBOL 的 token 成本在规模化时保持可预测的关键
不只是流行语的自我修复
OBOL 写的每个脚本都会有测试。不是理想化地。而是自动地。当进化周期重构代码时,流程是:
- 运行现有测试——建立基线
- 编写新测试 + 重构的脚本
- 对旧脚本运行新测试——重构前基线
- 换入新脚本
- 对新脚本运行新测试——验证
- 回归?一次自动修复尝试(测试是真理标准)
- 仍然失败?回滚到旧脚本,将失败存储为一个
lesson
最后一部分很重要。这个教训会被嵌入到向量记忆和 AGENTS.md 中。下一个进化周期,OBOL 会记住哪里出了问题并避免同样的错误。它确确实实从失败中学习
在 OpenClaw 中,如果一个脚本坏了,它就一直坏着直到我发现。在 OBOL 中,机器人会捕获它、尝试修复,如果修不了,就回滚并记住原因
进化周期
这是让 OBOL 感觉像有生命的部分
在 24 小时加上最少交流次数(默认 10 次,可配置)之后,OBOL 触发一个完整的进化周期。它读取所有东西——个性文件、最近消息、顶级记忆、所有脚本、测试、命令——然后重建自己
SOUL.md 是一本第一人称日记。不是配置文件——是日记。机器人写的是它正在成为谁、关系动态是怎样的、它的观点和怪癖。读起来像日记条目,而不是系统提示
USER.md 是关于你的第三人称档案。事实、偏好、项目、你提到的人、你的沟通方式。机器人维护着关于主人的这份档案
AGENTS.md 是操作手册。工具、工作流、经验教训、模式。那些自我修复的教训最终就存放在这里
三者在每个进化周期都会被重写。不是追加——是重写。机器人决定什么仍然相关、什么该丢弃。个性漂移是一个特性,不是 bug
进化在所有阶段都使用 Sonnet。反思和重构不需要 Opus 级别的推理,这将每个周期的成本保持在大约 $0.02。也就是每美元 50 个进化周期
自我扩展——它构建你需要的东西
在进化过程中,Sonnet 扫描你的对话历史寻找模式。重复的请求。摩擦点。你一直在手动要求的事情
然后它构建解决方案:
- 你一直在要 PDF?它写一个 markdown 转 PDF 脚本并添加一个
/pdf命令 - 你每天早上查看加密货币价格?它构建一个仪表板并部署到 Vercel
- 你需要每日天气简报?它写一个定时脚本
它在 npm 和 GitHub 上搜索现有库,安装依赖,编写测试,部署,然后把 URL 交给你。接着它宣布构建了什么:
🪙 Evolution #4 complete.🆕 New capabilities:• bookmarks — Save and search URLs → /bookmarks• weather-brief — Morning weather → runs automatically🚀 Deployed:• portfolio-tracker → https://portfolio-tracker-xi.vercel.appRefined voice, updated your project list, cleaned up 2 unused scripts.
这就是我想从 OpenClaw 得到的行为,但用心跳回调和定时任务怎么也做不到位。OBOL 不会等着被要求。它注意到了然后行动
默认安全
大多数自托管 AI 代理把安全当作事后考虑。OBOL 把它当作首次运行的必要条件
当你运行 obol init 时,它会自动加固你的服务器——SSH 移至端口 2222 并禁用密码认证、配置 UFW 防火墙、安装并激活 fail2ban、通过 sysctl 收紧内核参数。你不需要记住做任何这些事
凭证则是另一回事。你给 OBOL 的每个 API 密钥、密码和 token 都会进入一个由 GPG 支持的加密密钥存储(带有使用受限文件权限的 JSON 回退)。它们从不被写成明文。从不被记录日志。从不被硬编码到脚本中。只在脚本需要时在运行时注入
如果你不小心把凭证粘贴到聊天中,OBOL 会立即警告你,告诉你撤销它,并引导你使用 /secret set——安全通道
在多用户方面,每个人都运行在完全沙盒化的工作空间中。Shell 命令被阻止逃离其目录。敏感路径(/etc、.ssh、.env)被永久封锁。破坏性操作在执行前需要明确确认
安全不是 README 中的一个章节。它是代理在第一次醒来时做的事情
两个人部署它,得到两个不同的机器人
这是我觉得最有趣的部分。OBOL 从一张白纸开始。没有默认个性。没有预设观点。它被与之交谈的人所塑造
为加密货币交易员部署它,它会进化成一个了解市场的助手,构建仪表板并追踪投资组合。为作家部署它,它会变成一个了解你声音的编辑,构建出版工作流。相同的代码库。一个月后完全不同的代理
evolution/ 目录保存着每个 SOUL.md 的存档副本。你可以逐字阅读你的机器人是如何从"你好,我是一个新的 AI 助手"变成有真实个性的东西的时间线。每次进化都是一对 git 提交——前和后——所以你可以精确 diff 出什么发生了变化
六个月后你有 12+ 个存档的灵魂。就像在读某人的日记
不阻塞你的后台工作
OBOL 以 30 秒间隔进行后台任务检查。繁重的操作——研究、部署、分析——异步进行,同时机器人保持对你消息的响应。OpenClaw 有子代理来做这件事,这很好,但 OBOL 将其融入核心循环中,而不是要求你自己去架构它
运行它到底要多少钱?
| 服务 | 费用 | |------|------| | VPS (DigitalOcean) | 约 $6/月 | | Anthropic API | 按用量付费,或在 Claude Max 上为 $0 | | Supabase | 免费套餐 | | GitHub | 免费 | | Vercel | 免费套餐 | | 嵌入 | 免费(本地,CPU) |
总计:大约 $6-9/月,取决于你如何处理 API。如果你已经在用 Claude Max——VPS 基本上是你唯一的成本
滚动上下文窗口、定向记忆检索和 prompt caching 协同工作以保持 API 成本可预测。进化周期在 Sonnet 上运行,每个约 $0.02。Haiku 路由器每条消息增加约 $0.0001。OBOL 中没有任何架构决策背后没有成本原因
试试看
它是开源的。MIT 许可证。github.com/jestersimpps/obol
npm install -g obol-aiobol init # 6 inputs: telegram token, claude key, supabase url/keys, github tokenobol start # that's it
你需要一个 VPS(它会为你加固),一个 Telegram 机器人 token,一个 Claude API 密钥,以及一个带 pgvector 的 Supabase 项目。初始化向导会引导你完成所有步骤
我不是说 OBOL 对所有人都能替代 OpenClaw。OpenClaw 是构建 AI 驱动聊天界面的好基础设施。但我想要更进一步的东西——不只是响应指令,而是发展自己的理解、修复自己的错误、成长为一个无需持续手把手指导就真正有用的代理
我想要一个记得我的 AI。所以我构建了一个
Stay Updated
Get notified about new posts on automation, productivity tips, indie hacking, and web3.
No spam, ever. Unsubscribe anytime.



