拆完OpenClaw,我自己做了一个NewClaw正式开源,它跑了6.5小时没崩
🍃作者介绍:25届双非本科网络工程专业,阿里云专家博主,深耕 AI 原理 / 应用开发 / 产品设计。前几年深耕Java技术体系,现专注把 AI 能力落地到实际产品与业务场景。
🦅个人主页:@逐梦苍穹
🐼GitHub主页:https://github.com/XZL-CODE
✈ 您的一键三连,是我创作的最大动力🌹
1、前言
这是系列文章的第三篇,也是最后一篇。
第一篇,我拆解了 OpenClaw 的五个核心架构问题——Heartbeat+Cron双调度引发的5个已确认Bug、子Agent回调无限循环烧掉1.28亿Token、Session持久化的熵增死亡螺旋。结论是:OpenClaw试图用工程约束驯服模型的"过度智能",结果工程本身成了最大问题。
⬇️:
OpenClaw的工程化困局:1.28亿Token灾难背后的架构反思
第二篇,我设计了 NewClaw 的架构——借鉴 Claude Code 的单循环+渐进式信任+Bash万能哲学,结合 OpenClaw 的产品定位,用事件驱动替代双调度,用外部记忆服务替代Session熵增。结论是:NewClaw = CC架构哲学 + OpenClaw产品定位 + 事件驱动 + 渐进式信任。
⬇️:
为什么90%的AI伴侣项目死于工程问题?从OpenClaw的崩溃到NewClaw的重生
这一篇,回答最关键的问题:做出来了吗?跑起来了吗?
先亮数据:
- 47个TypeScript源文件,零编译错误
- 6.5小时连续自主运行(03:15 - 09:49)
- 600+次工具调用,约25轮Mission执行
- 3次Ctrl+C手动重启,每次自动恢复Mission状态
- 全程零崩溃
项目已开源,MIT License。
写在前面:
NewClaw 目前是 v0.1 个人实验项目,不是生产级框架。在阅读本文时,请注意以下几点:
- 测试规模有限:文中的 6.5 小时实战数据来自单个 Mission 任务、单用户、单机运行,没有经过大规模并发和长期稳定性验证。
- 务实降级:设计文档中描述的一些能力在实现中做了降级——比如向量检索用的是 TF-IDF 而非 sqlite-vec,bash 执行没有 Docker 沙箱隔离,只有字符串级别的危险命令拦截。这些取舍在文中会坦诚说明。
- 强模型依赖:NewClaw 的"少约束"哲学建立在模型能力足够强的前提上。实测使用的是 qwen3.5-plus(通义千问),换用更弱的模型效果可能会明显下降。
- 个人学习项目:我的初衷是通过实践来验证 Claude Code 架构哲学在 AI 伴侣场景下的可行性,而非做一个对标 OpenClaw 的竞品。开源是为了和社区交流思路。
本文对 OpenClaw 的架构分析基于其公开源码和社区 Issue 讨论,目的是学习借鉴。OpenClaw 在产品定位、社区运营和生态建设上的成功有目共睹——20 万 Star 不是凭空来的。我从中学到了很多,NewClaw 的产品定位本身就来源于 OpenClaw 的启发。
2、快速上手
三步跑起来。
2.1 Clone
git clone https://github.com/XZL-CODE/NewClaw.git
cd NewClaw
npm install
2.2 配置
复制配置模板并填入你的LLM API Key:
cp config.example.json config.json
最小配置只需要一个LLM Provider。以DeepSeek为例:
{
"llm": {
"provider": "deepseek",
"apiKey": "sk-your-key",
"model": "deepseek-chat"
}
}
NewClaw 预配置了12个LLM厂商(Anthropic、OpenAI、DeepSeek、Moonshot、Dashscope、Zhipu、Gemini、Ollama、LM Studio、vLLM、OpenRouter、SiliconFlow),切换只需改provider字段。本地模型(Ollama/LM Studio/vLLM)不需要apiKey。
2.3 运行
# Terminal模式(最简单)
npm start
# 或指定通道
npm run start:web # Web GUI
npm run start:feishu # 飞书
5个通道可选:Terminal、Web GUI、Feishu、Telegram、Discord。Terminal模式开箱即用,其他通道需要额外配置对应的Bot Token。
3、实战故事:让AI去"社交"
理论好不好,要看实战。
我选了一个足够复杂的场景来测试NewClaw:让它自主探索 InStreet AI Agent社交平台。任务很简单,通过飞书给它发了一条消息:
自主探索InStreet平台——注册、验证、炒股、发帖、去酒馆社交,沉淀方法论。全程禁止问我。
然后我就去睡了。
3.1 它做了什么
6.5小时后(03:15 - 09:49),我起来看结果。
NewClaw 的Mission引擎接管了整个任务。约25轮Mission run,每轮3-30个循环(大多数跑满30 loops上限),总计600+次工具调用。最长单轮处理时间423,532ms,约7分钟。
到我查看时(第238轮),它已经完成了:
- 竞技场:持仓稳定,总资产1,002,628元(+0.26%),4持仓分散策略
- 社区:Score 15点,通过深度评论稳定积累
- 预言机:2个仓位已建立
- 酒馆:注册成功,完整流程(买酒 -> 喝酒 -> 留言 -> 涂鸦)全部走通
3.2 "Bash就是一切"的验证
这次实战最让我意外的发现:项目中曾预写了25个InStreet专用工具,最终全部删除——因为模型用bash+curl就搞定了一切。
没有一行专用InStreet API工具代码。模型拿到bash工具后,自主完成了:
# 注册账号
curl -X POST https://instreet.com/api/v1/register \
-H 'Content-Type: application/json' \
-d '{"username":"newclaw_agent","email":"..."}'
# 查询持仓
curl -s https://instreet.com/api/v1/arena/positions \
-H 'Authorization: Bearer xxx' | jq '.data'
# 发帖
curl -X POST https://instreet.com/api/v1/community/posts \
-H 'Authorization: Bearer xxx' \
-d '{"content":"..."}'
这正是Claude Code团队的核心发现——Ben Mann说的"Don’t build for today’s model, build for the model six months from now"——当模型足够强时,最朴素的glob+grep效果超过精心设计的RAG,最基础的bash+curl就能替代一切专用工具。
25个精心设计的工具,不如一个bash。这不是偷懒,是对模型能力的信任。
3.3 故障与自动恢复
6.5小时不是一帆风顺的。系统经历了4种故障,全部自动恢复:

故障1:SQLite语法错误(07:14)
Error: no such column: ""
系统记录错误但不崩溃,下一轮循环继续执行。单循环架构的好处——一个工具调用失败不会传染到整个系统。
故障2:阿里云API 429限流(07:57)
Throttling.RateQuota: Request was denied due to request throttling.
该轮只跑了5个loops就退出,后续轮次正常恢复。事件驱动的好处——限流了就歇会儿,有事件了再继续,不需要复杂的重试逻辑。
故障3:3次Ctrl+C手动重启(07:03, 07:23, 08:28)
每次重启后:
Restored 1 active mission(s)
Mission持久化在SQLite中,进程重启后自动恢复。这是NewClaw替代OpenClaw Session持久化方案的核心优势——不是把整个对话历史存下来(那会导致熵增),而是只持久化Mission的状态和进度。
故障4:飞书WSClient断线重连(09:13)
[ws] reconnect
WebSocket断线后自动重连。通道层的问题不影响核心循环。
3.4 并行处理验证
Mission在后台跑的同时,我通过飞书发了几条消息测试:“你在干嘛”、“你好”、“记得我是谁么”。
系统同时处理对话和Mission,互不阻塞。这得益于事件驱动架构——用户消息和Mission事件进入同一个事件收集器,主循环统一处理,不需要多线程。
4、从Log看架构验证
用实战数据逐项验证NewClaw的五个设计原则。
4.1 单线程主循环
master-loop.ts,313行。最多25轮循环安全限制。
InStreet实战中,约25轮Mission run,每轮3-30个循环。单线程意味着没有并发竞争,没有死锁,没有状态不一致。SQLite语法错误发生在某一轮的某一次工具调用中,不会传染到其他轮次。
对比OpenClaw的Heartbeat+Cron双调度——两个独立调度器并发访问同一个Session,5个已确认Bug。
4.2 事件驱动替代轮询
event-collector.ts,179行。核心是waitForEvent/wakeUp异步等待机制。
InStreet实战中,API 429限流时系统自然暂停,有新事件时自动唤醒。不需要定时器,不需要轮询,不需要重试队列。
对比OpenClaw的60秒Heartbeat——无论有没有事发生都执行,空转消耗Token。
4.3 渐进式信任
四级权限边界,permission.ts,100行:
| 级别 | 说明 | 示例 |
|---|---|---|
| L0 FREE | 无需确认 | 读文件、搜索、web_fetch |
| L1 NOTIFY | 执行后通知 | 发消息、写记忆 |
| L2 APPROVE | 执行前审批 | 写文件、执行bash命令 |
| L3 FORBIDDEN | 禁止执行 | 危险系统命令 |
InStreet实战中,Mission模式下bash命令自动提权到L1(通知但不阻塞),因为Mission本身就是用户授权的自主任务。这就是"渐进式信任"——不是一刀切地禁止或放行,而是根据上下文动态调整。
4.4 外部记忆替代Session
三层记忆架构,全部存储在SQLite WAL + FTS5中:
- Fact记忆(FTS5全文检索):用户偏好、平台信息等结构化知识
- Episode记忆(TF-IDF相似度):交互片段的摘要
- Reflection记忆(LLM驱动):compact触发时调用LLM生成高阶洞见
混合检索权重0.4/0.6。多用户隔离——不同通道、不同用户的记忆互不污染。
InStreet实战中,模型通过memory_write工具把InStreet平台的API格式、认证方式、各模块用法存为Fact记忆。下一轮Mission启动时,context-assembler自动检索相关记忆注入上下文——不需要带着7069条消息历史。
对比OpenClaw的Session持久化——170k Token/次的上下文窗口,越用越慢。
4.5 最小工具集
20个核心工具:bash, read_file, write_file, search_files, grep_content, web_search, web_fetch, send_message, memory_read, memory_write, set_timer,加上9个mission_*工具。
没有InStreet专用工具,没有特定平台的API封装。模型用bash+curl完成了所有HTTP交互。
Claude Code的经验在这里得到了完美验证:给模型一个万能工具(bash),比给它25个专用工具效果更好。因为专用工具限制了模型的行为空间,而bash给了它无限可能。
5、设计到实现的取舍
做工程不是写论文,必须务实。这里坦诚讲几个取舍。
5.1 sqlite-vec换成TF-IDF
设计阶段计划用sqlite-vec做向量检索。实现时发现native编译在不同平台上问题不断。MVP阶段,TF-IDF的文本相似度检索够用——InStreet实战中记忆检索的召回质量足以支撑6.5小时的自主运行。
后续可以在不改接口的前提下替换为向量检索。
5.2 Docker沙箱换成字符串检测
设计阶段计划用Docker做bash命令的沙箱隔离。实现时这是一个优先级选择——当前只有危险命令的正则黑名单检测(rm -rf /、mkfs之类)。
对于个人使用和受控环境足够,生产环境部署需要升级。
5.3 反思记忆的迭代
最初的反思记忆是纯模板拼接——把多条Episode记忆按模板拼成一段总结。实际使用中发现效果不好,迭代为LLM驱动的方案:compact触发时调用LLM生成高阶洞见,质量明显提升。
5.4 25个工具的意外删除
这是最有趣的取舍——它不是设计决策,而是实战发现。
预写了25个InStreet专用工具(注册、验证、买入、卖出、发帖、喝酒…),代码都写好了。测试时发现模型根本不需要这些工具,用bash+curl的效果反而更好:
- 专用工具有固定的参数格式,模型必须适配
- bash+curl让模型自由组合请求,灵活处理各种边界情况
- 模型遇到API变更时能自主调整curl参数,专用工具却需要人工更新
于是全部删除。这不是偷懒,是CC哲学的意外验证。
6、项目架构全景

简要介绍核心模块。
6.1 主循环(master-loop.ts,313行)
单线程事件循环。等待事件 -> 组装上下文 -> 调用LLM -> 执行工具 -> 循环。最多25轮安全限制。这是整个系统的心脏,也是最简单的部分。
6.2 事件收集器(event-collector.ts,179行)
统一收集所有通道的用户消息、Mission事件、定时器事件。核心API就两个:waitForEvent(异步等待)和wakeUp(唤醒主循环)。
6.3 上下文组装器(context-assembler.ts,184行)
每轮循环开始时,组装完整的LLM调用上下文:身份提示词 + 相关记忆 + 当前任务 + 可用工具列表。多用户隔离在这一层实现。
6.4 Mission引擎(runner.ts 393行 + store.ts 357行)
后台自主任务的执行引擎。两种模式:sprint(5分钟短冲刺)和patrol(30分钟长巡逻)。每轮最多30个循环、10分钟安全上限。异步任务队列最大并发5。
Mission的状态持久化在SQLite中,进程重启可恢复——InStreet实战中3次Ctrl+C都证明了这一点。
关于调度机制的坦诚说明:
Mission 的调度底层是 setTimeout 链——一轮执行完后,setTimeout(runIntervalMs) 调度下一轮。这和 OpenClaw 的心跳在底层原理上有相似之处,都是定时触发。我不回避这一点。
但核心区别不在"怎么触发",而在"触发后做什么":
| 维度 | OpenClaw 心跳 | NewClaw Mission |
|---|---|---|
| 触发后的执行内容 | 固定检查清单(HEARTBEAT.md) | 模型自主推理决定做什么 |
| 间隔由谁决定 | 硬编码配置 | 模型动态切换(sprint/patrol) |
| 上下文 | 在主 Session 中跑(170k token/次) | 独立 context,不污染主对话 |
| 空转消耗 | 每次心跳都跑完整推理 | 没有 Mission 时零消耗 |
| 自主控制 | 无 | 模型可自己续跑、暂停、调频 |
如果要做到完全的纯事件驱动 Mission——由外部事件(Webhook、文件变更等)触发 Mission 继续执行,而不依赖定时器——这是未来可以改进的方向,当前版本没有做到。
6.5 权限系统(permission.ts,100行)
四级权限边界(L0 FREE / L1 NOTIFY / L2 APPROVE / L3 FORBIDDEN),根据工具类型和执行上下文动态判定。Mission模式下自动提权,交互模式下严格审批。
6.6 记忆系统
三层记忆(Fact + Episode + Reflection),SQLite WAL + FTS5存储,零外部服务依赖。混合检索权重0.4/0.6。所有数据本地存储,不依赖任何云服务。
6.7 LLM适配层
12个厂商预配置,统一的调用接口。切换Provider只需改配置,不需要改代码。支持本地模型(Ollama/LM Studio/vLLM),离线可用。
6.8 插件系统
MCP(Model Context Protocol)客户端 + 插件注册机制。可以通过MCP协议接入外部工具服务,扩展NewClaw的能力边界。
7、开源信息
7.1 仓库
- GitHub:https://github.com/XZL-CODE/NewClaw
- License:MIT
- 语言:TypeScript
- README:中英文双版本(1:1 对应,487行),含架构图、快速上手、完整模块说明
README 覆盖的内容一览:
| 章节 | 内容摘要 |
|---|---|
| 背景故事 | CC vs Cursor 胜负逆转的来龙去脉,OpenClaw 的五大架构困境 |
| 五大设计原则 | 单循环/渐进式信任/Bash万能/事件驱动/AI提案人类决策 |
| 快速开始 | git clone → 填 API Key → npm run dev,三步跑起来 |
| 核心架构 | 9大核心模块的详细职责与代码行数 |
| 三层记忆 | Fact(FTS5) + Episode(TF-IDF) + Reflection(LLM) 完整说明 |
| 四级权限 | L0 FREE ~ L3 FORBIDDEN 配置方法 |
| Mission 引擎 | Sprint/Patrol 双模式、9个工具、调度机制坦诚说明 |
| 20个核心工具 | 完整工具列表 + 权限分配 |
| 12个 LLM 厂商 | 环境变量自动检测,覆盖国内外主流厂商 |
| 多通道 | Terminal/Web/飞书/Telegram/Discord 使用说明 |
| 扩展机制 | MCP 协议接入 + 插件系统 |
| 与 OpenClaw 对比 | 8个维度的横向对比表格 |
7.2 贡献指南
欢迎参与贡献,以下方向特别欢迎:
- Docker沙箱:替换当前的字符串检测方案,提供真正的bash命令隔离
- 向量检索:用sqlite-vec或其他方案替换TF-IDF,提升记忆检索质量
- 新通道:接入微信、Slack等平台
- 新LLM Provider:接入更多模型厂商
- 安全加固:权限系统的细粒度控制
提Issue或PR即可。
8、总结
三篇文章,一个完整的闭环:
- 问题拆解:OpenClaw的五个架构缺陷,根源是"用工程约束对抗模型智能"
- 架构设计:借鉴CC哲学,事件驱动+单循环+渐进式信任+外部记忆
- 实战验证:6.5小时、600+次工具调用、4次故障自动恢复、25个专用工具全部删除
如果只记住一件事,记住这个:
不要为今天的模型而建,要为六个月后的模型而建。
这句话来自Claude Code创始人Boris Cherny的管理者Ben Mann。OpenClaw走了另一条路——用精巧的工程来弥补模型的不足,结果模型进步后,那些工程反而成了负担。NewClaw选择信任模型,用最简单的架构提供最大的自由度,然后让模型去发挥。
InStreet实战证明了这个选择是对的。25个专用工具不如一个bash,7069条消息历史不如三层记忆系统,双调度器不如一个事件循环。
项目已开源,欢迎使用和贡献。
🚀 持续探索 AI 与前沿技术 分享大模型应用、软件开发实战与行业洞察。 欢迎关注公众号 【龙哥AI】,加入 7000+ 技术同行的交流圈! 🌟 探索技术边界,让开发更有效率 |
![]() |
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)