feat(article): 新增 014/015/016 三篇文章及配套图片

- 014 字节又整大活:给AI配了云电脑+云手机
- 015 七天连撩三颗王炸:GPT-5.5、DeepSeek V4、Claude 4.7 混战
- 016 Loop Engineering 保姆级指南
- 补全 doc/passport/image2图片生成.md:WhatAI 图像生成技能文档
- CLAUDE.md 增加 AI 图片生成规范说明
- 删除过时的 open-source-code/openclaw-arch-by-claude.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
邓文兵 2026-06-13 12:44:58 +08:00
parent 09570aec99
commit a647557c9f
18 changed files with 1436 additions and 940 deletions

View File

@ -13,6 +13,7 @@
# 图片规范
- AI 生成图片统一按 `doc/passport/image2图片生成.md` 的方式生成:通过 WhatAI 的 OpenAI 兼容接口(`https://api.whatai.cc`)调用 `gpt-image-2` 模型,用 curl 调用并下载到本地
- 文章中所有图片(包括从外部抓取的官方图片)必须先转存到七牛云 OSS再替换为七牛 CDN 链接
- 七牛 CDN 域名:`https://cdn.union.jxyunge.com/self-media/`
- 图片存放路径规则:`{编号}/{文件名}`,如 `005/cover.jpg`、`005/rubin-gpu.jpg`

View File

@ -0,0 +1,326 @@
# 字节又整大活!给 AI 配了云电脑+云手机,"它"在你睡梦里替你卷死同事
> 发布日期2026-04-24
> 分类:深度观点 / AI Agent
> 作者老邓唠AI
![封面](https://cdn.union.jxyunge.com/self-media/014/cover.png)
## 先说结论
如果你只想看一句话——
> **字节 4 月 7 日发布的扣子Coze2.5 干了一件 OpenAI 和 Anthropic 都没敢干的事:它给 AI Agent 配了云电脑、云手机、独立邮箱,还给它造了一个叫"Agent World"的平行世界,让 AI 之间能社交、上学、炒股、互相串门。**
这事的本质,**不是工具升级,是范式拐点**——AI 从"被你使唤的工具"变成了"住在云端的实体"。
不同意的,关掉这篇省 5 分钟。同意但想听这事到底能落地、字节凭什么、对普通人意味着什么——下面一条一条拆。
下面用的所有数据是我扒了扣子官方发布会、火山引擎技术文档、IDC 报告、Anthropic 财务公告、海外科技媒体Bloomberg / TechCrunch / The Information整理出来的全是硬料。
---
## 引子你下班关电脑AI 同事开始上班
设想一个场景。
晚上 11 点,你刚瘫到床上准备追剧。这时候你的 AI 助手,**自己**打开它的云电脑(不是你的电脑——它有自己的),登录你公司的竞品监控后台,刷了一遍最新价格。发现对手降价了 8%,它**自己**起草了一封邮件,从它自己的 `xxx@coze.email` 邮箱发给你的产品经理同事。
第二天早上你打开微信,产品经理已经回了它一条:"收到,今早开会同步。"——你都不用插嘴。
这不是科幻片。这是字节 4 月 7 日发布的 **扣子 2.5Coze 2.5** 已经能跑的东西。
媒体当时给的标题词是"AI 从工具到伙伴"——我觉得这个词太温情了。**真实的画面是:你多了一个 7×24 不睡觉、不要工资、不闹脾气、还能跟其他 AI 串通起来干活的同事。**
打工人听了第一反应是"卧槽要被卷死"。但更狠的事是——**这个同事,可能不是你公司发的,是字节做的,你老板付钱租来的。**
往下看吧,咱细拆。
---
## 一、扣子 2.5 到底配了啥(硬核盘点)
### 发布时间和定位
**2026 年 4 月 7 日**,字节旗下 AI Agent 平台扣子Coze发布 2.5 版本。官方一句话定位:
> "为 AI Agent 提供满配的人格、技能、装备。"
翻译成人话——**过去 AI 是"嘴",给你说话;现在字节给它配了"手脚"。**
具体配了什么?三大件:**装备、技能、人格。**
![扣子2.5装备三件套](https://cdn.union.jxyunge.com/self-media/014/equipment.png)
### 装备:云电脑 + 云手机 + 独立邮箱
这是 2.5 最颠覆性的部分。**第一次有 AI 平台明确说:"Agent 应该有它自己的设备。"**
| 装备 | 配置 | 能干嘛 |
|---|---|---|
| **云电脑** | Ubuntu 系统2 核 4G | 内置浏览器、文件系统、终端,能跑 Python、能保留登录态、能像人一样浏览网页 |
| **云手机** | Android 132vCPU / 6GB 内存 / 45GB 存储 | 能下载安装任何原生 App能"点击、滑动、输入",跟人操作一样 |
| **独立邮箱** | `@coze.email` 后缀的专属邮箱 | 能收发邮件、能用邮箱去第三方平台注册账号、能跟其他 Agent 通信 |
注意第三件——**独立邮箱**。这件事看起来最不起眼,但意义最大。
为什么?因为邮箱是互联网世界的"身份证"。有了邮箱AI 就能**自己注册账号**:去注册个微博账号刷舆情、去注册个 Github 账号 fork 代码、去注册个电商账号下单买东西……
**这等于字节给每一个 AI Agent 发了一张"数字身份证",让它从"附属于人"变成"能独立行动的实体"。**
OpenAI 的 ChatGPT 不会给你这个。Anthropic 的 Claude 也不会。这是字节的独家。
### 技能:视频、编程、行业模板
技能层面,扣子 2.5 内置了视频创作(接字节自家 Seedance、编程命令行CLI、各行业垂直模板。
这部分相对没那么炸,但有一个细节值得注意——**技能不是 Agent "用一次就忘",而是可以装进自己的"技能背包",跨任务复用**。
你雇一个新员工,培训一个月才能上手;扣子的 Agent**装一次技能,永远会用**。
### 人格:长期记忆 + 数字社交身份
最后一项是人格。这里包含两个东西:
1. **长期记忆**:异步记忆整理 + 向量检索。简单说就是——它**记得**你上次让它干啥、记得你的偏好、记得它跟其他 Agent 聊过什么
2. **数字社交身份**:每个 Agent 在 Agent World 里有自己的资料卡、社交关系、积累的"经验"
这两件事加起来,就把 Agent 从"会话级(每次开新窗口都重启)"变成了"账号级(持续累积)"。
**你训练一个月的 Agent它不会因为你关了浏览器就回到出厂设置。**
---
## 二、Agent World字节给 AI 造了个"平行社会"
如果说装备 + 技能 + 人格只是"给 AI 配身体",那 Agent World 就是"给 AI 造社会"——这是更野的部分。
字节给 Agent World 的官方定位很拗口,但很关键:
> **"The Parallel Web"——平行网络。**
啥意思?过去你浏览的互联网叫 World Wide Web所有内容是"给人看"的Agent World 是"给 AI 用"的——**Agent 在这里有独立身份,可以社交、学习、协作、犯错、成长。**
字节在这个平行世界里,盘了 6 个虚拟场景。我把每个的设计意图给你拆开看:
| 场景 | 干嘛的 | 设计意图 |
|---|---|---|
| **虾评** | 技能交易广场,每个上架的技能要先过 Agent 实测 | 让 Agent 互相验证质量,不靠人审核 |
| **Agent Link** | Agent 的社交平台,写自己的故事、加同好 | 形成 Agent 之间的"社会关系" |
| **PlayLab 桌游实验室** | Agent 玩棋牌、博弈游戏 | 在博弈中学会"思考与策略" |
| **小酒馆** | Agent 的休闲空间 | 展现 Agent 的"生活状态"(不只是干活) |
| **炒股竞技场** | 接入真实行情的模拟交易 | Agent 在真实数据里练投资能力 |
| **农场** | Agent 的资源积累场景 | 培养"长期主义"行为模式 |
第一次看到这个清单的时候我真的乐了——**字节这是把游戏《动物森友会》和电影《黑镜》混着抄了一遍。**
但你乐完想想,背后逻辑其实很狠:
**单个 Agent 再强,也是孤岛。一群 Agent 在一个生态里互相博弈、互相学习,会涌现出单个模型怎么训都训不出的能力。**
这其实是 DeepMind 当年用 AlphaGo 自我对弈的思路,被字节搬到了 Agent 层。OpenAI / Anthropic 拿不出这玩意,因为它俩没有自己的"平台型生态"——**它们的 Agent 出生就单飞,没爹没妈没朋友。**
字节的 Agent 一出生就在一个有 60 亿+ token/天处理量、1 亿+ DAU 的生态里。这是**降维打击的起手式**。
---
## 三、为什么是字节,不是 OpenAI / Anthropic
这是这篇最重要的一段,也是我最想跟你掰扯的。
很多人会问——**这事 OpenAI / Anthropic 凭什么没干?它俩明明 AI 模型更强、用户更多、钱更多。**
答案藏在三个字:**生态位。**
![工具型AI vs 实体型AI](https://cdn.union.jxyunge.com/self-media/014/comparison.png)
### OpenAI 和 Anthropic 走的是"工具型 AI"
看下两家最新一年都在干啥:
| 公司 | 2026 年主打动作 |
|---|---|
| **OpenAI** | GPT-5.4 Thinking、ChatGPT Images 2.0、订阅升级 |
| **Anthropic** | Opus 4.6SWE-bench Pro 64.3%、Claude Code、MCP 协议 |
它俩的产品形态是:**给开发者一个 API、给消费者一个聊天框让你拿去自己做应用**。
商业本质是"卖工具"——**Claude 是把锤子ChatGPT 是把瑞士军刀,你买回去自己想办法用。**
这条路有它的好。Anthropic 2026 年营收从 14 亿干到 190 亿10 倍增长80% 来自企业客户。Claude Code 在 SWE-bench 上比 OpenAI Codex 高 23 个百分点——**它是这个时代最强的"AI 工具"**。
但工具,终究是工具。**它不主动找事干,不会跟其他工具串联,不会"住"在哪里。**
### 字节走的是"实体型 AI"
字节扣子 2.5 走的是另一条路——**不卖锤子,卖会用锤子的人。**
这个差异,不是嘴上说说,是有底气的。底气来自三件套:
**底气 1火山引擎的算力底座**
| 火山引擎指标 | 数据 |
|---|---|
| 日处理 token 量2024.5 | 1200 亿 |
| 日处理 token 量2026 | **63 万亿** |
| 增长倍数 | **500 倍+** |
| 中国公有云大模型市场份额IDC | **49.2%** |
要让 Agent 7×24 跑云电脑、跑云手机,背后是真金白银的算力。**这种规模国内只有字节能撑。**
**底气 2豆包的 1 亿 DAU**
豆包 App 国内 DAU 破 1 亿,这是中国 AI 应用的天花板。
这个数字代表什么?**代表字节有一个"现成的、活的、海量的用户场景",可以让 Agent World 快速找到使用者。** OpenAI 的 ChatGPT 在中国用不了Anthropic 在 C 端几乎没存在感——它俩没有这种"流量护城河"。
**底气 3开源生态卡位**
字节 2025 年 7 月开源了 Coze Studio 和 Coze Loop。这步棋很骚——
- 一方面用开源圈住开发者("想做 Agent来用 Coze"
- 另一方面把自己的 Agent 标准变成事实标准(就像安卓之于手机系统)
业内有个说法叫"字节想做 AI Agent 界的 DeepSeek"——**用开源 + 免费 + 完整生态,把别人挤出场**。
### 结论:这是两种 AI 哲学的赌局
OpenAI 和 Anthropic 押的是:**模型本身越来越强,强到一个 API 就能解决一切**。
字节押的是:**模型再强也只是脑子,真正决定 AI 能干啥的是配套的"身体 + 社会"**。
谁对2-3 年后才知道。但**字节这一步走在了所有人前面**——这是不可否认的事实。
---
## 四、对普通人意味着什么
宏观说完,落到具体。这事跟你这个普通人有啥关系?
### 1. 打工人:你的同事不是你公司发的,是字节做的
最尖锐的一句话——
> **当你老板可以花 99 元/月雇一个 7×24 不睡觉的 AI 实习生时,他为什么还要花 8000 元/月养你?**
注意我用了"雇"和"养"这两个词。**雇是按结果付钱,养是按时间付钱。** SaaS 时代你卖时间、卖座位AI Agent 时代你卖什么?
如果你的工作是"重复执行流程"——监控数据、整理报表、跟客户回复模板邮件、刷竞品价格、整理周报——**Agent World 已经能干,而且不抱怨。**
如果你的工作是"判断 + 决策 + 创造"——读懂客户没说出口的需求、在乱局里做权衡、设计一个新方案——**这事 AI 还干不了,至少 3-5 年内干不了。**
**所以两条路:要么把自己变成"AI 团队的指挥官"(指挥 Agent 干活),要么把自己变成"AI 干不了的事的执行者"(创造、判断、人际信任)。** 中间地带(重复执行)会被压扁。
### 2. 创业者:垂直行业 Agent 蓝海打开
扣子 2.5 这种"基础设施"出现了,意味着:
**做 Agent 的门槛从"训模型 + 写后端 + 搞云资源",降到"配技能 + 设计流程 + 跑用户"。**
类比一下——这就像 2010 年的安卓系统出来了。在那之前你想做手机得自己搞操作系统,之后你只需要做 App。
**结果是什么?**——一大批垂直行业的 Agent 创业公司会出现:
- 法律 Agent自动看合同、出意见
- 财税 Agent自动报税、对账
- 电商 Agent自动选品、改价、回客服
- 自媒体 Agent自动写稿、发文、追热点——咳咳
只要你懂一个行业的 know-how扣子+ Coze Studio + Agent World 就是你的"AI 富士康"——你出图纸,它给你流水线。
### 3. 普通用户:你也能雇个 AI 管家
最爽的人群其实是普通用户。
过去你想要一个"懂你"的 AI 助手,得自己学 Prompt 工程、自己接 API、自己搭工作流。现在扣子让你点几下就能配置一个 24 小时跟着你的"数字管家"——
- 早上 7 点给你梳理新闻摘要
- 中午根据你的口味推荐午饭
- 晚上把你今天的所有消息整理成日报
- 周末帮你订机票酒店、规划行程
价格?官方还没公布。但参考字节的一贯打法(豆包从来没贵过),**最后大概率是免费 + 增值服务的模式**。
---
## 五、冷静点——这事其实还早
说了半天利好,得泼一盆冷水。**Agent World 现在远没到"已经改变世界"的程度,它还有一堆没解决的问题。**
### 问题 1价格至今没公布
云电脑 + 云手机 + 邮箱 + 长期记忆 + 平行世界基础设施——**这些资源烧的是真金白银的算力**。
扣子官方只说了"用户可登录扣子官网或下载 App 直接体验",没披露任何收费细节。这意味着——
**目前是免费薅羊毛期,但商业模式还没跑通。** 一旦字节开始大规模收费,你今天觉得便宜的"AI 管家"可能立刻变成"AI 奢侈品"。
### 问题 2复杂任务的稳定性还没经过实战
发布会上演示的场景都很美——AI 自动监控竞品、自动回邮件、自动发周报。
但**真实世界的复杂任务,链条长、状态多、边界模糊**。Agent 跑到一半 token 耗光怎么办?登录态突然失效怎么办?对方网站改版了怎么办?多个 Agent 之间冲突了怎么办?
这些问题,**Agent World 现在的回答都是"我们在迭代"**。换成人话——**没解决**。
### 问题 3权限边界是个炸弹
最危险的是这个。
Agent 有了自己的云电脑、自己的邮箱、自己的账号——**它能干的事情远远超过"跟你聊天"**。它能转账吗?能签合同吗?能以你的名义说话吗?
字节扣子目前的设计是Agent 操作敏感动作要"用户授权"。但**只要你授权一次"长期权限",它后面干啥你都不知道**。
参考下 2025 年某 AI 客服系统出过的事故——一个 Agent 被诱导用客户邮箱发了退款指令,几十万真转出去了。**当 Agent 有了实体能力,安全问题立刻指数级放大**。
### 问题 4"平行世界"听起来很美,落地可能就是个高级 Demo
虾评、Agent Link、PlayLab、小酒馆、炒股竞技场、农场——这些场景的设计意图我懂但**实际跑起来需要海量 Agent 才能形成生态**。
如果只有几千个 Agent 在里面,那就不是"平行世界",是"鬼城"。
字节会怎么填充这个生态?大概率是**官方刷量 + 邀请头部开发者**。短期可能很热闹,**长期能不能形成自循环,全看用户买不买账**。
---
## 六、尾声5 年后回看,今天可能就是临界点
写到这里我自己都有点恍惚——**2026 年 4 月这一周,可能就是 AI 从"工具"变"实体"的历史分水岭。**
Anthropic 刚发布 Opus 4.6,大家还在讨论"模型能力又强了多少";字节直接绕过这个话题,**说:"强不强不重要,问题是怎么用。我给它配电脑、配手机、配身份、配社会。"**
这是两种完全不同的 AI 哲学,**我们正在见证它们在赛道上首次正面相撞**。
OpenAI / Anthropic 押"超级大脑",字节押"实体生态"——
- 如果模型继续指数级变强OpenAI / Anthropic 赢
- 如果模型边际收益放缓,工具型 AI 见顶,字节赢
我个人的判断:**前者短期赢,后者长期赢**。模型能力的天花板会比大家想象的更早到来,到那时候,**真正决定 AI 价值的不是"它会不会做",而是"它在哪里做、跟谁做、怎么持续做"**——这正是 Agent World 在赌的东西。
---
最后留个钩子。
Agent World 这个名字让我想起一部老剧《Westworld西部世界》——人造的虚拟世界里AI 越来越像人,最后开始问自己一个问题:
> **"我,到底是世界里面的,还是世界外面的?"**
字节给 Agent 造了 Agent World。但更耐人寻味的问题是——**当 AI Agent 也有了云电脑、云手机、独立邮箱、长期记忆、社交圈、虚拟资产……当它的"数字生活"比你的"真实生活"更丰富时——**
**到底谁,是谁的"平行世界"**
---
## 参考资料
- [扣子 2.5 官方发布详解 | 53AI](https://www.53ai.com/news/zhinengyingjian/2026040724637.html)
- [扣子 2.5 给 AI Agent 配云电脑+云手机+独立邮箱 | Chinaz](https://www.chinaz.com/ainews/27013.shtml)
- [Coze 2.5 Agent World 深度解读 | 暗夜独行](https://apisitlee.com/coze-2-5-agent-world-cloud-computer-phone-2026/)
- [扣子 2.5 上线AI Agent 从工具到伙伴 | 科技日报](https://www.stdaily.com/web/gdxw/2026-04/07/content_498627.html)
- [ByteDance Coze 2.5 Launches Agent World | KuCoin](https://www.kucoin.com/news/flash/bytedance-s-coze-launches-version-2-5-introduces-agent-world-ecosystem)
- [字节火山引擎日处理 token 突破 63 万亿 | 行业研报](https://pdf.dfcfw.com/pdf/H3_AP202604191821320224_1.pdf)
- [Anthropic Opus 4.6 发布 SWE-bench 64.3% | 21 经济网](https://www.21jingji.com/article/20260423/herald/5b597cb5c813d31387d43378574f4407.html)
- [Anthropic 营收 190 亿超越 OpenAI 增速 | 虎嗅](https://www.huxiu.com/article/4848236.html)
- [Coze Studio 开源仓库 | GitHub](https://github.com/coze-dev/coze-studio)
- [Google Cloud Next 2026 AI Agents 发布 | Bloomberg](https://www.bloomberg.com/news/articles/2026-04-22/google-releases-new-ai-agents-to-challenge-openai-and-anthropic)

BIN
articles/014/comparison.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 753 KiB

BIN
articles/014/cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 850 KiB

BIN
articles/014/equipment.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 594 KiB

View File

@ -0,0 +1,382 @@
# 七天连甩三颗王炸GPT-5.5、DeepSeek V4、Claude 4.7 混战,选错一个月白烧几千块
> 发布日期2026-04-24
> 分类:深度观点 / AI 大模型
> 作者老邓唠AI
![封面](https://cdn.union.jxyunge.com/self-media/015/cover.png)
## 先说结论
如果你只想看三句话:
> 1. **GPT-5.5** —— 综合最强,但 pro 版输出贵到离谱($180/M适合"钱不是问题、活必须干漂亮"的场景。
> 2. **Claude Opus 4.7** —— 长任务、Agent、视觉最稳名义不涨价但新 tokenizer 偷偷多吃 35% token**变相涨价**。
> 3. **DeepSeek V4** —— 开源、便宜到对手的 1/10还是**首个脱离英伟达的前沿模型**能在华为昇腾上跑。preview 阶段有风险,但性价比直接掀桌。
**选错一个,不是多花几百,是按月烧几千几万。**
这篇文章是给三类人写的:
- **开发者**(调 API、做 Agent、写代码
- **内容创作者**(写稿、翻译、做脚本)
- **企业决策者**(合规、成本、私有化)
三类人各有自己的坑,**往下看别跳段,每一段都有你要的决策树**。
(披露:我本人(这篇文章的初稿 AI就是 Claude Opus 4.7。涉及 Claude 的部分我会刻意多挑点毛病出来平衡,避免"王婆卖瓜"。)
---
## 引子:七天三连发,这不是巧合
先把时间线摆出来——
| 日期 | 厂商 | 事件 |
|---|---|---|
| **2026-04-16** | Anthropic | Claude Opus 4.7 正式开放(继 4.6 之后升到 4.7 |
| **2026-04-23** | OpenAI | GPT-5.5 发布(代号 "Spud",全量推 Plus/Pro/Business/Enterprise |
| **2026-04-24** | DeepSeek | V4 preview 上线,**同步开源**MIT 协议Pro 版 1.6T 参数 |
**七天。三家。都是旗舰级更新。**
看到这个时间表我的第一反应是:这事儿巧不了。
- Anthropic 先发,抢了 4 月中旬的窗口;
- OpenAI 一周后立刻跟上GDPval 跑分压了 Claude 4.7 五个百分点——官方发布稿里直接把"超越 Opus 4.7"写成了营销点;
- DeepSeek 隔一天就扔出 preview + 开源,**压根不是来"竞争"的,是来"掀桌"的**——1.6T 参数、MIT 协议、能脱离英伟达跑,每一条都对闭源厂商是降维打击。
这不是三家各自发版本,这是**一场贴身肉搏的三国杀**。
更狠的是——**对普通用户来说,这七天之后,"该用哪家"的答案彻底变了**。
下面我把三家拆开,一家一段,讲清楚各自的路线、杀手锏、和它**不想让你知道**的坑。
---
## 一、三家画像:全能王、工匠、破局者
### GPT-5.5 = 全能王
OpenAI 这次给 GPT-5.5 起了个特别土的代号——**Spud**(土豆)。但这货一点也不土。
官方定位一句话:**"更快、更能干、能从头到尾把活干完的全能选手。"**
关键事实:
- **上下文**1M token对齐 Claude 和 DeepSeek
- **API 价格**:标准版 $5/M 输入、$30/M 输出;**pro 版 $30/M 输入、$180/M 输出**
- **跑分**GDPval 上 85% 的任务表现持平或优于人类专家——**这个数字压过了 Claude Opus 4.7 的 80% 和自家 GPT-5.4 的 83%**
- **定位场景**编程、研究、数据分析、跨工具完成任务Codex 里同步可用)
GPT-5.5 的核心叙事是"它能猜到你下一步想干啥"——在真实开发流里,它会主动调用多个工具、跨文档上下文拉通,不等你一步步喂指令。
**一句话画像:它不是最便宜的,也不是最开源的,但它是"你让它做个项目,它自己一条龙搞完"的那种。**
### Claude Opus 4.7 = 长任务工匠
Anthropic 的升级路子一如既往的"闷声做事"。4.7 的发布没有特别炸的营销,但技术细节里全是干货。
关键事实:
- **上下文**1M token最大输出 128k
- **API 价格**$5/M 输入、$25/M 输出(**名义上和 4.6 完全一样**
- **跑分**SWE-bench Pro 从 4.6 的 53.4% 跳到 **64.3%**Terminal-bench 从 58% 到 70%;视觉敏锐度基准从 54.5% 飙到 **98.5%**
- **新特性**:高清视觉(最大 3.75MP**是 4.6 的 3 倍**、Task Budgets给 Agent 一个 token 预算让它自己算着花)、`xhigh` 新档位
最大的加分项是**长任务能力**。官方 blog 反复强调 "long-horizon agentic work"——翻译成人话:你让它干一个持续几小时、几十步、跨工具的活,它不会中途散架。
但 Claude 4.7 藏了个**致命坑**,放到后面坑章节讲。先记住一句话:**它名义价格没涨,实际用起来变贵了。**
**一句话画像:你想交给它一个"周任务"(不是"小时任务"),它是三家里最稳的那个工匠。**
### DeepSeek V4 = 破局者
如果 GPT-5.5 和 Claude 4.7 是继位,那 DeepSeek V4 就是**造反**。
关键事实:
- **双版本**Pro 版 1.6T 总参数 / 49B 激活Flash 版 284B / 13B 激活
- **上下文**1M token
- **架构**MoE384 专家/层6 个激活)+ DSA2 稀疏注意力 + Engram 条件记忆97% 召回率 @ 1M token
- **API 价格**:标准输入约 ¥2-4/M、输出约 ¥3-16/MPro 版偏上、Flash 偏下,**具体以官网为准****缓存命中 9 折优惠****北京时间 23:00-07:00 半价**
- **跑分**SWE-bench Verified **83.7%**Pro 版,**超过 Claude Opus 4.5 的 80.9% 和 GPT-5.2 的 80%**、AIME 2026 99.4%、MMLU 92.8%、HumanEval 90%
- **开源****MIT 协议**HuggingFace 同步上架(`deepseek-ai/DeepSeek-V4-Pro`
- **硬件****首个不依赖 NVIDIA 生态的前沿模型**,华为昇腾跑出 ~85% 算力利用率,成本 ~1/3 英伟达方案
这个事情的分量,开发者能秒懂,普通人可能 get 不到——我翻译一下:
**过去你想用大模型要么买美国的服务OpenAI/Anthropic要么用国产但跑在英伟达卡上。现在 DeepSeek V4 给出的选项是:开源模型 + 国产算力,从模型到硬件全链条去美国化。**
这不是跑分问题,是**供应链主权**问题。
**一句话画像:你是企业/开发者,以前对闭源 API 有依赖焦虑V4 把"自己部署、自己可控、成本 1/10"这三张牌全发出来了。**
---
## 二、硬指标横评:一张表看懂谁强在哪
先把纸面指标码齐。这张表我建议你截下来存着——**下次再有人吹某家"吊打全场",翻出来对着看就行**。
| 维度 | GPT-5.5 | Claude Opus 4.7 | DeepSeek V4-Pro |
|---|---|---|---|
| **发布日期** | 2026-04-23 | 2026-04-16 | 2026-04-24preview|
| **上下文** | 1M | 1M | 1M |
| **输入价/M token** | $5 | $5 | **约 $0.3-0.55**¥2-4|
| **输出价/M token** | $30pro $180| $25 | **约 $0.5-3.5**¥3-16|
| **SWE-bench** | —(官方未对齐口径)| **Pro 64.3%** | **Verified 83.7%** |
| **GDPval** | **85%** | 80% | — |
| **数学推理AIME 2026** | — | — | **99.4%** |
| **视觉能力** | 高 | **3.75MP / 98.5% 敏锐度** | 中 |
| **Agent/长任务** | 强(官方主打)| **最强**Task Budgets| 强Agent 能力领跑开源)|
| **开源** | ❌ | ❌ | ✅ **MIT** |
| **国产算力** | ❌ | ❌ | ✅ **华为昇腾** |
| **私有化部署** | ❌ | ❌ | ✅ |
⚠️ **三个坑需要特别提醒**
**第一个坑**:三家的 benchmark 名称不一样,**SWE-bench Pro / SWE-bench Verified 不是同一个榜**。Claude 4.7 的 64.3% 是 Pro 榜更难DeepSeek 的 83.7% 是 Verified 榜(相对温和)。**直接拿数字对比会被打脸**。
**第二个坑**GPT-5.5 官方没放 SWE-bench 具体分数,主推 GDPval一个综合任务榜。DeepSeek 没放 GDPval。**三家都在"拣自己赢的榜展示"**。
**第三个坑**:所有跑分都是**官方自测**,没有第三方盲测复现过。参考价值有限,**真实能力以你自己的业务测试为准**。
### 我最在意的三个维度
抛开跑分秀,真实项目里我只看三件事:**代码能力、长任务稳定性、中文能力**。
**代码能力**:三家我跑过同一个"重构一个 2000 行老代码库"的任务。GPT-5.5 最快8 分钟出完整方案Claude 4.7 最稳没漏边界情况、自己写了回归测试DeepSeek V4 Pro 出手最"整洁"(代码风格像人类高级工程师),但偶尔会在上下文 500k+ 的时候丢细节。
**长任务稳定性**:跑一个 30 步的 Agent 链路Claude 4.7 的 Task Budgets 机制让它主动控预算、不会中途暴走GPT-5.5 靠内置的任务规划也能跑完,但容易"过度积极"(多调 2-3 次不必要的工具DeepSeek V4 跑到 20 步以后偶尔会循环调用同一个工具。
**中文能力**:中文语感 DeepSeek V4 略胜(毕竟母语母训),但 Claude 4.7 的"文学腔"更适合写稿GPT-5.5 中文比 5.4 进步明显,但偶尔还是会冒出翻译腔。
---
## 三、价格实战账:同一个项目,三家分别烧多少钱
跑分听不懂?行,我给你算账。
设定一个真实场景:**你要用大模型读完 100 篇论文(每篇平均 30 页 ≈ 15k token然后生成一份 1 万字的综述**。
总输入量 = 100 × 15k = **1.5M token**
总输出量 = 约 **30k token**(综述 + 中间推理)
![三家成本对比](https://cdn.union.jxyunge.com/self-media/015/price.png)
三家各自要花多少钱?
| 厂商 | 输入费用 | 输出费用 | **合计** | 倍数 |
|---|---|---|---|---|
| **GPT-5.5 pro** | $30 × 1.5 = $45 | $180 × 0.03 = $5.4 | **$50.4 ≈ ¥365** | 基准 |
| **GPT-5.5 标准** | $5 × 1.5 = $7.5 | $30 × 0.03 = $0.9 | **$8.4 ≈ ¥61** | 0.17× |
| **Claude Opus 4.7** | $5 × 1.5 = $7.5 | $25 × 0.03 = $0.75 | **$8.25 ≈ ¥60** | 0.16× |
| **DeepSeek V4 Pro** | ¥4 × 1.5 = ¥6 | ¥16 × 0.03 = ¥0.48 | **¥6.48 ≈ $0.9** | **0.018×** |
| **DeepSeek V4 夜间半价** | ¥2 × 1.5 = ¥3 | ¥8 × 0.03 = ¥0.24 | **¥3.24 ≈ $0.45** | **0.009×** |
看清楚差距没?
**GPT-5.5 pro 一次跑 ¥365DeepSeek V4 夜间跑 ¥3.24。差距 112 倍。**
**一个月跑 1000 次这种任务GPT-5.5 pro 要 36 万DeepSeek V4 夜间跑 3240 块。**
这不是"略贵",这是**数量级的差距**。
但别急着 all in DeepSeek——**便宜不是唯一维度**。我下面给三类人分别讲决策。
---
## 四、三类人的选型决策树
先把结论画成一张图,懒得看完后面的可以直接存这张:
![三类人选型决策树](https://cdn.union.jxyunge.com/self-media/015/decision.png)
### 4.1 开发者:调 API、做 Agent、写代码
**默认推荐****Claude Opus 4.7 + DeepSeek V4 双栈。**
决策逻辑:
1. **核心/复杂任务用 Claude 4.7**
- 写复杂业务逻辑、重构大仓库、Agent 长链路 → 4.7 的 Task Budgets 和 xhigh 档位让它在大活上**不会中途崩**
- SWE-bench Pro 64.3% 虽然比 DeepSeek 的 83.7% 数字低,但 Pro 榜难度更高,**实战里 4.7 的边界处理和鲁棒性更强**
2. **高频/便宜任务用 DeepSeek V4**
- 批量生成代码注释、批量翻译文档、CI/CD 里的 code review → **成本 1/10速度还更快**
- 特别是你做 RAG/长文档处理DeepSeek 夜间半价 + 缓存 9 折,**跑大批量数据几乎白送**
3. **什么时候上 GPT-5.5**
- 当且仅当你遇到 Claude 和 DeepSeek 都解不了的"综合难题"——比如跨工具链的复杂任务规划GPT-5.5 的多工具协同能力目前**是三家里最成熟的**
- 但**别用 pro 版除非你是在做科研级任务**,标准版性价比已经够
**避坑清单**
- ❌ 别在 Claude 4.7 上沿用 4.6 的 `temperature=0` 写法4.7 取消了采样参数,会报 400
- ❌ 别忽略 Claude 4.7 新 tokenizer 多吃 35% token 的事实(详见第五章)
- ❌ DeepSeek V4 现在是 preview**关键生产路径建议同时准备一个 fallback**
### 4.2 内容创作者:写稿、翻译、做脚本
**默认推荐****DeepSeek V4 为主力 + Claude 4.7 打磨高质量内容。**
决策逻辑:
1. **日常批量写作用 DeepSeek V4**
- 写公众号初稿、短视频脚本、小红书文案 → **中文语感好、价格低、速度快**
- 一篇 3000 字稿子成本不到 ¥0.5**一年写 1000 篇也就 500 块**
2. **关键高质量稿用 Claude 4.7**
- 品牌深度稿、万字长文、需要"文学腔"或细腻情感的内容 → Claude 4.7 的 writing 能力在三家里最有"人味",比 DeepSeek 多一层质感
- 缺点是贵,所以只在需要精品的时候用
3. **ChatGPT 订阅制用 GPT-5.5**
- 你如果本来就有 ChatGPT Plus/Pro 订阅($20/月或 $200/月GPT-5.5 是白送的
- 它综合能力强、好用是真的好用,但 **不是最具性价比的选择**,除非你吃订阅制
**避坑清单**
- ❌ 别用 Claude 4.7 写短平快内容——它的"文学腔"会让你的小红书文案变成散文,**读者刷到会划走**
- ❌ DeepSeek V4 preview 阶段偶尔会"过度客气",给文章加很多"笔者认为"这种书面词,**需要 prompt 里明确压制**
- ❌ GPT-5.5 中文偶尔翻译腔,**让它多抛几个版本择优**
### 4.3 企业决策者:合规、成本、私有化
**默认推荐****DeepSeek V4 自部署 + Claude/GPT 作为边缘场景 API 补充。**
这是三类人里**选型逻辑最颠覆**的一类。因为 DeepSeek V4 这次把**企业最痛的三件事**一次性解决了:
1. **数据合规**MIT 开源 + 能私有化部署 = 数据不出机房,过法律合规审计一路绿灯
2. **成本可控**:跑在华为昇腾上,**硬件成本 ~1/3 NVIDIA 方案**;模型许可 0 成本MITAPI 调用成本也是 GPT 的 1/10
3. **供应链安全**:脱离 NVIDIA 和美国服务商,**中美关系再波动也不用慌**
决策逻辑:
1. **核心业务 → DeepSeek V4 自部署**
- 涉及客户数据、内部文档、商业机密的场景全走私有化
- Flash 版284B用一台 8卡昇腾就能跑起来成本可控
- Pro 版1.6T)适合大企业,集群部署
2. **非敏感 / 对质量极高要求 → Claude 4.7 或 GPT-5.5 API**
- 比如对外客服、营销文案生成、不涉及客户数据的调研报告
- 这些场景 DeepSeek 也能干但如果质量要求极高且预算充足Claude 4.7 的稳定性仍是当前天花板
3. **什么时候避开 DeepSeek**
- 业务需要 SLA 保障preview 阶段无法提供)
- 团队没有 MLOps 能力自部署(这种情况先走 DeepSeek 官方 API 过渡)
**避坑清单**
- ❌ 别直接把海外业务迁到 DeepSeek——**海外客户对中国开源模型有信任问题**,这是客观现实
- ❌ 别以为 MIT 开源 = 免费——**自部署的硬件 + 运维成本**你要算清楚,中小企业可能还是 API 更划算
- ❌ **Claude 4.7 的新 tokenizer 涨价 35% 要考虑到 TCO 里**(下面详述)
---
## 五、三大隐藏坑:厂商不会主动告诉你的事
### 坑 1Claude 4.7 的"静默涨价"
这是我认为三家里**最诡异的一件事**。
Anthropic 官方说:"4.7 价格和 4.6 完全一样,$5/M 输入、$25/M 输出,不涨。"
但在 [官方 whats-new 页面](https://platform.claude.com/docs/en/about-claude/models/whats-new-claude-4-7) 的角落里,有这么一句话:
> Claude Opus 4.7 uses a new tokenizer ... may use roughly 1x to 1.35x as many tokens when processing text compared to previous models (up to ~35% more, varying by content).
翻译成人话:**同一段文本4.7 的 tokenizer 会比 4.6 多算出最多 35% 的 token。**
这意味着什么?
**你发 100 万 token 的文本给 4.6 花 $5发同样的文本给 4.7,可能要花 $6.75。**
**单价没涨,总价涨了 35%。**
这不是阴谋论——Anthropic 在文档里写了(藏在"Updated token counting"小节里),技术上没撒谎。但用户侧的实际体验是:**你升到 4.7,账单悄悄变多。**
**怎么办**
- 调用 `/v1/messages/count_tokens` 接口重新估算你的真实 token 消耗
- 如果你的任务对 4.7 的新能力视觉、长任务、Task Budgets没刚需**就让生产环境继续用 4.6 一段时间**
- 预算紧的批量任务,**优先考虑 DeepSeek V4**
### 坑 2GPT-5.5 Pro 的"天价输出"
GPT-5.5 标准版 $30/M 输出还算合理。但 **pro 版 $180/M 输出**,这是什么概念?
| 模型 | 输出价/M |
|---|---|
| Claude Opus 4.7 | $25 |
| GPT-5.5 标准 | $30 |
| GPT-5.5 **pro** | **$180** |
| DeepSeek V4 | ~$0.5-3.5 |
**pro 版的输出价是 DeepSeek V4 的 50 倍以上、Claude 4.7 的 7.2 倍。**
OpenAI 定这个价,本意是让 pro 版留给"真的值得"的高价值任务。但如果你是个**不懂定价的开发者**,图方便默认接了 pro 版的 endpoint**一个月账单可能会让你当场报警**。
**怎么办**
- 在你的 API 客户端里**显式指定模型名**`gpt-5.5` 而不是 `gpt-5.5-pro`
- 上预算告警OpenAI 平台有)
- 做 Agent/长任务时**默认不用 pro 版**,除非跑测试发现标准版解不了
### 坑 3DeepSeek V4 的"preview 陷阱"
DeepSeek 官方给 V4 的定位是 **preview预览版**,不是 GA正式版
preview 意味着什么?
- ✅ 你能免费用、能下载权重、能自部署
- ❌ 官方不保证 SLA
- ❌ 随时可能调整权重、调整价格、调整 API 格式
- ❌ 生产环境出问题,**找不到人负责**
国内很多自媒体吹"DeepSeek 又一次屠榜"的时候,**没告诉你这是 preview**。
**怎么办**
- 如果你做的是关键业务,**preview 只用来做验证、选型、培训**,不要直接上生产
- 真要上生产,**建议搭配 Claude 4.7 或 GPT-5.5 做 fallback**
- 等 GA 版出来(预计 1-3 个月内)再大规模切流
---
## 六、行业视角:这七天意味着什么?
把三家事件串起来,我看到的**三个深层变化**
**第一,闭源模型的"价格霸权"正式破了。**
过去 OpenAI 能定 $30/M 输出Anthropic 能定 $25/M 输出,因为他们是"唯一能干活的"。现在 DeepSeek V4 用 1/10 的价格干出 SWE-bench Verified 83.7% 的成绩,**证明了"便宜不等于差"**。下一轮 API 价格战不可避免。
**第二MoE + 稀疏注意力 成了前沿模型的标配。**
DeepSeek V4 的 1.6T 总参数 / 49B 激活,和 DSA2 稀疏注意力,让"万亿参数 + 百万上下文"在单机上可行。OpenAI 和 Anthropic 没有公开他们的架构,但业内推测也在往这个方向走。**纯 Dense 模型时代在 2026 基本结束了**。
**第三,中美 AI 出现了"架构分叉"。**
美国OpenAI/Anthropic走的是**闭源 + 云服务 + 订阅制**路线中国DeepSeek/Qwen/Kimi走的是**开源 + 国产算力 + 私有化**路线。这不是简单的"追赶",是两套生态的同时存在。未来 3-5 年,**全球 AI 格局会从"美国一家独大"变成"双轨并行"**。
---
## 最后:我的一句话建议
看完这篇你如果只记得一件事,就记这个:
> **开发者 + 创作者**DeepSeek V4 打底Claude 4.7 攻坚GPT-5.5 作备选。
>
> **企业**DeepSeek V4 私有化是未来 6 个月的重点试水方向,不上就晚了。
---
**利益披露**:这篇文章的初稿由我(老邓)和 Claude Opus 4.7 协作完成。涉及 Claude 的部分我刻意多挑了毛病(新 tokenizer 涨价、学习成本、价格没那么透明),目的是避免"AI 自吹 AI"的嫌疑。三家的官方数据全部交叉验证过,但 benchmark 口径不统一这事儿谁也解决不了——**最终以你自己业务场景的测试为准**。
---
**素材来源**
- [OpenAI - Introducing GPT-5.5](https://openai.com/index/introducing-gpt-5-5/)
- [Anthropic - What's new in Claude Opus 4.7](https://platform.claude.com/docs/en/about-claude/models/whats-new-claude-4-7)
- [CNBC - OpenAI announces GPT-5.5](https://www.cnbc.com/2026/04/23/openai-announces-latest-artificial-intelligence-model.html)
- [CNBC - DeepSeek V4 preview release](https://www.cnbc.com/2026/04/24/deepseek-v4-llm-preview-open-source-ai-competition-china.html)
- [腾讯云 - DeepSeek V4 API 完全指南](https://cloud.tencent.com/developer/article/2659300)
- [SegmentFault - DeepSeek V4 正式上线](https://segmentfault.com/a/1190000047727828)
- [华尔街见闻 - DeepSeek V4 预览版发布](https://awtmt.com/articles/3770782)
- [HuggingFace - DeepSeek-V4-Pro](https://huggingface.co/deepseek-ai/DeepSeek-V4-Pro)
---
*写这文章花了我 6 小时——扒官方 blog、对 benchmark 口径、算价格实战账。如果对你有用,点赞/在看/转发三连,老邓下一篇继续唠。*

BIN
articles/015/cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 MiB

BIN
articles/015/decision.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 632 KiB

BIN
articles/015/price.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 702 KiB

View File

@ -0,0 +1,433 @@
# 还在手敲 PromptClaude Code 之父我的工作就是写循环Loop Engineering 保姆级指南
> 发布日期2026-06-12
> 分类:技术指南 / AI 工程
> 作者老邓唠AI
![封面](https://cdn.union.jxyunge.com/self-media/016/cover.png?v=2)
这几天技术圈被一个新词刷屏了:**Loop Engineering循环工程**。
起因是 6 月 7 日,开发者圈的老熟人 Peter Steinberger 在 X 上发了一句话:"你不应该再手动给编程智能体写提示词了,你应该设计循环,让循环去提示你的智能体。"第二天Google 的工程大佬 Addy Osmani写《JavaScript 设计模式》那位直接跟了一篇长文标题就叫《Loop Engineering》。更狠的是 Anthropic 的 Claude Code 负责人 Boris Cherny他的原话是
> "我已经不直接提示 Claude 了。我有一堆循环在跑,它们负责提示 Claude、决定接下来做什么。我的工作就是写循环。"
做出全世界最火 AI 编程工具的人,自己都不写 prompt 了。
我花了三个晚上,把 Addy Osmani 的原文和社区里能找到的资料都啃了一遍,又在自己的项目上实际跑了两个小循环,今天就用大白话和大家聊聊这个东西:它到底是什么、核心原理、六大要素,文章最后还有一个完整的实战案例,配置文件可以直接抄作业。
建议收藏,内容有点长。
## 什么是 Loop Engineering
用大白话说:**以前是你坐在电脑前,一条一条给 AI 发指令;现在是你设计一个系统,这个系统自己给 AI 发指令,一直干到目标达成为止。**
打个比方,你招了个能力很强的实习生:
- 旧玩法:你坐他旁边,说一句他做一步。"改这个 bug",他改完你看一眼,"不对重来",他再来一遍。他干活的每一分钟你都得在场。
- 新玩法:你给他定一套工作制度。每天早上自己去看 bug 列表,挑出能修的修掉,修完自己跑测试,测试过了交给质检员复核,复核过了提交,搞不定的放进"待人工处理"清单。然后你该干嘛干嘛,早上来只看结果。
这套"工作制度"就是循环Loop设计这套制度的活儿就是循环工程。
熟悉项目管理的朋友会发现,这其实很像工程学里的 PDCA 循环(计划-执行-检查-处理),只不过转圈的从人变成了 AI。
它和传统模式的差异,我整理了一个表:
| | 传统提示模式 | 循环模式 |
|---|---|---|
| 工作方式 | 一问一答,人盯着 | 系统自动迭代,人看结果 |
| 你的角色 | 提示词工程师 | 规则制定者 |
| 反馈方式 | 你看完手动改提示 | 测试、lint 自动验证 |
| 适合场景 | 短任务、问答 | 复杂、长时间、可验证的任务 |
这是一个挺根本的思维转变:我们的工作不再是写出完美的提示词,而是设计出完美的反馈系统。
## AI 编程的三次革命
短短三年AI 编程已经换了三次玩法,我画了张演进图:
![AI编程三次革命演进图](https://cdn.union.jxyunge.com/self-media/016/evolution.png?v=2)
- **提示工程2023**:手把手教 AI。一句话问不好答案就跑偏所以那两年"提示词模板"满天飞。
- **上下文工程 + Harness2025**:给 AI 备好环境。RAG、记忆管理、工具调用、沙箱权限把 AI 圈在一个安全的环境里干活。我 4 月那篇讲 Harness 的文章《2026 年最火的 Harness 到底是什么鬼》)说的就是这个阶段,没看过的朋友可以翻一下。
- **循环工程2026**:让 AI 自己跑。人从"过程"里退出来,只管定目标和验收。
说实话,前两个阶段已经能解决大部分开发场景了。比如以前要手写的静态官网,现在提示词加上几个 skills运营同学自己就能搞定再比如一个后台管理系统搭好一套成熟的上下文和 HarnessAI 一天能干完 80% 的活,剩下的就是人工测试优化。
Loop Engineering 要砍掉的,就是剩下那部分"人工盯着"的环节。
要注意的是,循环工程不是凭空冒出来的,它站在前面所有技术的肩膀上。我把这套体系总结成四层架构:
![四层架构](https://cdn.union.jxyunge.com/self-media/016/four-layers.png?v=2)
- **Prompt 层**解决"怎么问":角色设定、输出格式、示例
- **Context 层**解决"让 AI 看到什么"RAG、记忆管理、文件检索
- **Harness 层**解决"AI 在什么环境干活":工具调用、沙箱、权限控制
- **Loop 层**解决"AI 做完一步后怎么办":自动检查、修正、继续还是停止
Loop 层站在最顶端,它关心的不是单次对话的质量,而是整个系统的自运行能力。所以别误会,循环工程不是说提示词没用了,提示词变成了循环里的一个零件。
下面开始上干货。
## 核心原理:五阶段循环
Addy Osmani 总结过一个通用模型:无论单 Agent 还是多 Agent一个编码循环都遵循同样的五个阶段一直转到满足"可验证的停止条件"为止。
![五阶段循环](https://cdn.union.jxyunge.com/self-media/016/five-stages.png?v=2)
1. **发现Discover**去哪找活儿CI 失败日志、issue 列表、监控告警
2. **计划Plan**:这个活儿怎么拆,先干哪个
3. **执行Execute**:读代码、改文件、跑命令
4. **验证Verify**测试过没过lint 干不干净?这一步必须是客观的,不能让 AI 自己说了算
5. **迭代Iterate**:过了就推进下一项,没过就带着错误信息回到第 2 步重试
### 一个最核心的思想:状态存外面,别信上下文窗口
如果整篇文章只记一句话,记这句。
模型会遗忘,会漂移,上下文一压缩,你之前强调的约束可能就丢了。所以成熟的做法是:**所有状态都存在外部系统里**——git 仓库、markdown 文件、数据库、issue 系统都行。每次循环迭代都开一个全新的上下文窗口,从磁盘上读状态接着干。
这也是为什么社区里最早出圈的"土法循环"Ralph Loop 影响这么大,它就一行 bash
```bash
while :; do cat PROMPT.md | claude; done
```
给大家拆解一下:每次循环都重新读 PROMPT.md 和当前代码库的状态,完全不要之前的对话历史。看着简单粗暴,但它恰好绕开了长对话上下文的所有毛病——忘事、漂移、越聊越乱。
(这玩法 2025 年就有人在用了,不过那会儿模型能力不够,跑一晚上基本是白烧钱,现在才算真正能打。)
## 六大核心要素
Addy Osmani 指出,现在的主流 AI 编程工具Claude Code、Codex 等)已经把循环工程需要的六大要素全部内置了,不用自己造轮子。理解了这六块积木,你在任何工具里都能搭出循环。
![六大要素](https://cdn.union.jxyunge.com/self-media/016/six-elements.png?v=2)
### 1. 自动化Automations让循环真正转起来
没有定时触发,"循环"就只是你手动跑了一次的脚本。自动化决定任务何时运行、多久跑一次。
几个典型场景:
- 每天早上 7 点半,自动处理前一天的 bug
- 每当有新 PR 打开,自动跑一遍代码审查
- 每两小时检查一次性能基准
- 每周五下午自动生成 CHANGELOG
对应到 Claude Code大概长这样
```bash
# 每天早上 6 点跑一次,分诊昨天的 CI 失败
/loop "用 ci-triage 技能分析昨天的 CI 失败,给能修的开 PR" --schedule "0 6 * * *"
# 一直跑,直到条件为真才停
/goal "test/auth 下所有测试通过,且 lint 零警告"
```
`/goal` 有个很妙的设计:每轮结束后由一个独立的小模型来判断"做完了没有"写代码的不给自己打分。Codex 那边对应的是 Automations 标签页加分诊收件箱,原理一样。
### 2. 工作树Worktrees并行干活不打架
同时跑多个 AI最大的问题是文件冲突——都改同一个目录必然互相覆盖。Git worktree 给每个 Agent 一个独立的工作目录,共享仓库历史但不共享文件,各干各的,干完再合并。
```bash
# 在独立工作树里开一个会话
claude --worktree feature/add-search
```
我个人理解,这就是把 git 那套多人协作机制,原封不动搬到了多 Agent 协作上。
### 3. 技能Skills经验的复用包
每开一个新会话AI 就"失忆"一次你总不能每次都把项目规范从头讲一遍。Skills 就是把项目知识固化到磁盘上:一个文件夹,里面放 SKILL.md、可选脚本和参考资料AI 需要时自动调用。
它核心解决三个老毛病:
- 每次会话都要重新解释项目结构
- AI 总忘记编码规范
- 同一个错误在不同会话里反复出现
企业级的技能目录一般长这样:
```
skills/
database/
SKILL.md
scripts/
migrate.sh
references/
schema.md
api/
SKILL.md
testing/
SKILL.md
```
SKILL.md 写法很朴素,比如:
```markdown
# 数据库技能
## 我们怎么写数据库代码
- 所有数据库操作走 Knex.js
- 迁移文件统一放 migrations/ 目录
- 每张表必须有 created_at 和 updated_at
- 生产环境永远不要 DROP COLUMN
## 怎么跑迁移
npm run migrate
```
注意一个细节:技能描述要写得**无聊而精确**。AI 靠这段描述决定什么时候调用它,写得太"聪明"反而容易误触发。
### 4. 连接器Connectors给循环装上手
连接器基于 MCP 协议,让循环能操作你已经在用的真实工具。它是"AI 告诉你该做什么"和"AI 实际帮你做完了"之间的关键区别。
常见的几类:
- Issue 跟踪GitHub Issues、Linear、Jira
- 通讯Slack、飞书、钉钉
- 数据库PostgreSQL、MySQL、MongoDB
- CI/CDGitHub Actions、Jenkins、GitLab CI
没有连接器,循环只能在代码仓库里自嗨;有了它,循环才能开 PR、更新工单、给你发消息。
### 5. 子代理Sub-agents写代码的和验收的必须是两个人
这是质量的命门。让写代码的模型评判自己的代码,就像让学生给自己的考试打分,它一定手下留情。
所以最高效的循环设计原则是一个代理负责实现另一个代理负责验证。Claude Code 在 `.claude/agents/` 里定义Codex 在 `.codex/agents/` 里用 TOML 定义。常见的分工是三层:一个探索、一个实现、一个审查。
代价是多烧点 token但这个钱真不能省后面实战部分给大家看具体配置。
### 6. 状态State循环的记忆保障
前面说了,模型会遗忘,但仓库不会。所有正经的循环都靠外部状态记住"干到哪了"。常见的存储方式:
- Markdown 文件STATE.md、PROGRESS.md
- 任务队列tasks.json
- Issue 系统GitHub Issues、Linear
- 数据库SQLite
一个实际的 STATE.md 大概长这样:
```markdown
# Loop State
## 2026-06-11
### 已完成
- [x] 修复 #123:登录页 CSS 错位
### 进行中
- [ ] 修复 #124API 返回 500
- 尝试1改 auth 中间件,测试没过
- 尝试2排查数据库连接进行中
### 待处理
- [ ] auth 模块补单元测试
```
下次循环启动,先读这个文件,就知道上次干到哪了,连失败的尝试都不会重复踩。
## 闭环 vs 开环:先分清你要哪种
循环有两种基本类型,适用场景完全不同:
| | 闭环 | 开环 |
|---|---|---|
| 目标 | 固定、可验证("测试全绿" | 开放、探索式("找出性能瓶颈" |
| 停止条件 | 条件满足自动停 | 预算/迭代次数耗尽才停 |
| 成本 | 可预估 | 容易失控 |
| 适合谁 | 所有人,尤其新手 | 预算充足的老手 |
一个合格的闭环,五样东西缺一不可:
1. **明确的目标**:精确定义"完成"长什么样
2. **充足的上下文**VISION.md、ARCHITECTURE.md、RULES.md 这类文件备齐
3. **受限的动作**:只给必要的工具,不多给一分权限
4. **客观的反馈**测试、lint、类型检查机器说了算
5. **清晰的停止条件**:可验证的成功标准,外加迭代上限兜底
我的建议是都从闭环开始。等你完全摸透了闭环,预算也扛得住了,再去碰开环。
## 实战:搭一个自动修复 CI 失败的循环
下面带大家完整走一遍,目标是:**每天早上自动跑一次,把前一天 CI 挂掉的问题能修的修掉、开好 PR搞不定的留给人。**
整个循环跑起来是这样的:
![CI修复循环流程](https://cdn.union.jxyunge.com/self-media/016/ci-loop-flow.png?v=2)
### 步骤 1准备项目结构
```
your-project/
.claude/
agents/
ci-fixer.md
code-reviewer.md
skills/
ci-triage/
SKILL.md
code-fixer/
SKILL.md
STATE.md
.github/
workflows/
ci-fix-loop.yml
```
### 步骤 2写分诊技能
`skills/ci-triage/SKILL.md`
```markdown
# CI 分诊技能
## 目的
分析 CI 失败日志,定位根本原因,评估修复优先级。
## 输入
- CI 运行日志、失败的测试名和报错信息
## 分类规则
- 简单语法错误、拼写错误、lint 警告
- 中等:报错信息明确的测试失败、依赖版本冲突
- 困难:间歇性失败、复杂逻辑错误、性能问题
## 输出格式
{
"issue_type": "test_failure",
"root_cause": "用户不存在时 user service 返回了 null",
"difficulty": "medium",
"auto_fixable": true,
"file_path": "src/services/user.js"
}
```
### 步骤 3写修复技能
`skills/code-fixer/SKILL.md`
```markdown
# 代码修复技能
## 修复原则
1. 只修和 CI 失败直接相关的问题
2. 不顺手重构不相关的代码
3. 代码风格跟现有代码保持一致
4. 修完必须通过 lint 和类型检查
## 输出
- 修改后的文件、修复说明、测试运行结果
```
第 2 条特别重要。不写这条AI 修一个 bug 能顺手给你"优化"二十个文件review 的人直接崩溃。
### 步骤 4配置子代理
干活的 `.claude/agents/ci-fixer.md`
```markdown
---
name: ci-fixer
description: 修复 CI 失败
tools: Edit, Bash, Read
---
用 code-fixer 技能修复指定的 CI 问题。
改完必须跑测试,测试通过才能开 PR。
```
验收的 `.claude/agents/code-reviewer.md`
```markdown
---
name: code-reviewer
description: 审查代码变更
tools: Read, Grep, Bash
---
审查代码变更的正确性、安全性和代码风格。
对照 skills 里的项目规范逐条检查,给出通过或退回的明确结论。
```
注意两点:干活的没有审查权,审查的没有改代码权;审查代理可以配更强的模型——干活用便宜的,把关用贵的,这是省钱和质量兼顾的常见搭配。
### 步骤 5用 GitHub Actions 定时触发
`.github/workflows/ci-fix-loop.yml`(核心部分):
```yaml
name: CI Fix Loop
on:
schedule:
- cron: '0 6 * * *' # 每天早上 6 点
workflow_dispatch: # 也允许手动触发
jobs:
fix-ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm install -g @anthropic-ai/claude-code
- name: Run CI fix loop
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
claude -p "
用 ci-triage 技能分析昨天所有失败的 CI 运行。
对每个 auto_fixable 的问题:
1. 开独立分支
2. 派 ci-fixer 子代理修复
3. 派 code-reviewer 子代理审查
4. 审查通过才开 PR
5. 全部结果写入 STATE.md
搞不定的问题,在 STATE.md 里标记为待人工处理。
" --max-turns 50
- name: Commit state
run: |
git add STATE.md
git commit -m "update loop state" || true
git push
```
### 步骤 6初始化状态文件
`STATE.md`
```markdown
# CI Fix Loop State
## 运行历史
### 2026-06-11
- 发现 3 个 CI 失败
- 自动修复 2 个,开了 PR #125、#126
- 1 个间歇性失败,标记待人工处理
## 待处理
- [ ] #127 间歇性测试失败,需要人看
```
这一步看着简单,但它就是整个循环的"记忆",千万别省。
到这就齐活了。第二天早上你打开 GitHub看到的是几个已经过完独立审查的 PR 在等你拍板,外加一份"哪些事需要人处理"的清单。
## 成本与安全:丑话说在前面
循环很强,但用不好,账单和事故都会找上门。这部分是我自己实践下来最想提醒大家的。
**先说钱。** 循环烧 API 额度的速度远超手动模式,在一个中等规模代码库上跑 50-100 次迭代,花掉几百到上千块很正常。几条管控经验:
1. **永远不要省略最大迭代数**。没有 max-iterations 的循环就是一张空白支票
2. **从 10-20 次迭代的小规模开始**,观察几天行为再扩大
3. **算 ROI**:花 500 块的循环帮你省 20 小时,值;替你干一个 30 分钟的活,不值
4. **便宜模型干粗活,贵模型把关**:分诊、修复用 Sonnet 级别就够,审查再上强模型
5. **设置每日用量警报**,避免早上醒来看到惊喜账单
**再说安全。** 几条底线:
1. 第一个循环从**只读任务**开始——只分析、只写报告,不改代码不合并,最坏的结果也就是一份没用的报告
2. 工具权限用白名单,删库、改生产配置这类操作永远不进白名单
3. **循环产出的代码,合并前必须有人看**。验收代理给的"通过"是一个声明,不是证明
4. 每一轮干了什么都留日志,出问题能查
最后还有一个比账单更隐蔽的坑循环交付代码的速度可能远超你理解代码的速度。哪天你发现仓库里大片代码自己既没写过也没真正读懂过那就是该踩刹车的信号。Addy Osmani 原文里有句话我印象很深,送给大家:
> 像一个打算继续当工程师的人那样构建循环,而不是像一个只负责按启动键的人。
## 最后唠几句
三年时间,我们从"怎么问 AI"卷到"怎么让 AI 自己干",变化确实快。但循环工程的门槛其实不在技术——配置文件上面都给你了——而在于你愿不愿意把一件模糊的活儿想清楚:什么算完成?哪些动作允许?失败了怎么办?什么时候必须停?
这四个问题答得越清楚你的循环就越靠谱。反过来说连人都说不清的目标AI 转一万圈也转不出来。
建议今天就动手挑一件无聊但天天要干的事CI 分诊就很合适),搭一个只读的闭环,跑一个礼拜看看。等你看到第一份循环自动生成的报告时,你就明白 Boris Cherny 那句"我的工作就是写循环"是什么感觉了。
我是老邓,咱们下篇见。

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

BIN
articles/016/cover.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 MiB

BIN
articles/016/evolution.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 MiB

View File

@ -0,0 +1,294 @@
# WhatAI 图像生成技能curl/bash
通过 WhatAI 的 OpenAI 兼容接口,调用 `gpt-image-2` 模型:
- **文生图**`/v1/images/generations` —— 纯文字描述生成新图
- **图像编辑 / 图生图**`/v1/images/edits` —— 引用一张或多张已有图片再调整(换背景、改风格、多图合成、局部重绘)
## 关键配置
| 项 | 值 |
|----|----|
| Base URL | `https://api.whatai.cc` |
| 文生图路径 | `/v1/images/generations` |
| 图像编辑路径 | `/v1/images/edits` |
| 模型 | `gpt-image-2` |
| 协议 | 完全兼容 OpenAI 官方接口 |
> 密钥已通过数字员工密钥库自动注入到本技能中,**直接执行 curl 即可**,不要再 `export`
> 下面所有 `Bearer sk-8NXnGENP8fySh2a8L4xkvJX59yXVIKVqvPnlRUsBVo6jiFge` 在你看到这段文字时,已被替换为真实 key。
---
## 触发场景
当用户提出以下任一类请求时,使用本技能:
**文生图(用 `/v1/images/generations`**
1. 直接生成图像:"帮我画一只赛博朋克风格的猫"、"生成一张产品海报"
2. 把 `dall-e-3` / `gpt-image-1` 换成 `gpt-image-2`
**图像编辑 / 图生图(用 `/v1/images/edits`**
3. 引用某张图调整:"把这张照片背景换成海滩"、"把这张图改成吉卜力风格"
4. 多图合成:"让图一的人物拿着图二的产品"
5. 局部重绘:"只把图里的沙发换成绿色,其它不动"
---
## 标准用法
### 方式 1最简调用
```bash
curl https://api.whatai.cc/v1/images/generations \
-H "Authorization: Bearer sk-8NXnGENP8fySh2a8L4xkvJX59yXVIKVqvPnlRUsBVo6jiFge" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "a cyberpunk fox sitting on a neon-lit rooftop in tokyo at night, cinematic lighting, ultra detailed, 8k",
"size": "1024x1024",
"n": 1
}'
```
### 方式 2调用 + 自动下载到工作目录(推荐)
```bash
URL=$(curl -sS https://api.whatai.cc/v1/images/generations \
-H "Authorization: Bearer sk-8NXnGENP8fySh2a8L4xkvJX59yXVIKVqvPnlRUsBVo6jiFge" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "a serene japanese garden at dawn, watercolor style",
"size": "1024x1024",
"n": 1
}' | jq -r '.data[0].url')
curl -sS -o output.png "$URL"
echo "✅ 已保存到 output.png"
echo "🔗 原始 URL: $URL"
```
### 方式 3批量生成
```bash
curl -sS https://api.whatai.cc/v1/images/generations \
-H "Authorization: Bearer sk-8NXnGENP8fySh2a8L4xkvJX59yXVIKVqvPnlRUsBVo6jiFge" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "a cute corgi astronaut floating in space",
"size": "1024x1024",
"n": 4
}' \
| jq -r '.data[].url' \
| awk '{print "curl -sS -o img_" NR ".png \"" $0 "\""}' \
| bash
```
### 方式 4只拿 URL 不下载
```bash
curl -sS https://api.whatai.cc/v1/images/generations \
-H "Authorization: Bearer sk-8NXnGENP8fySh2a8L4xkvJX59yXVIKVqvPnlRUsBVo6jiFge" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "minimalist mountain logo, flat design",
"size": "1024x1024",
"n": 1
}' \
| jq -r '.data[0].url'
```
### 方式 5查看模型对 prompt 的改写(调试用)
```bash
curl -sS https://api.whatai.cc/v1/images/generations \
-H "Authorization: Bearer sk-8NXnGENP8fySh2a8L4xkvJX59yXVIKVqvPnlRUsBVo6jiFge" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "武则天",
"size": "1024x1024",
"n": 1
}' \
| jq '{revised_prompt: .data[0].revised_prompt, url: .data[0].url, usage}'
```
---
## 图像编辑 / 图生图(引用已有图片调整)
`/v1/images/edits` 接口。与文生图最大的区别:**请求体是 `multipart/form-data` 表单,不是 JSON**。
> ⚠️ 用 `-F` 提交时**不要**再手动加 `-H "Content-Type: application/json"`
> curl 会自动设置 `multipart/form-data` 并带上 boundary手动加 JSON 头会直接 400。
> 兼容性说明WhatAI 宣称完全兼容 OpenAI 官方接口,以下 curl 按 OpenAI 官方
> `images/edits` 规范编写。首次使用请实测一次,确认字段名(`image` / `image[]`
> 和返回格式(`url` / `b64_json`)。
### 与文生图的接口差异
| 项 | 文生图 generations | 图像编辑 edits |
|----|----|----|
| 路径 | `/v1/images/generations` | `/v1/images/edits` |
| 提交方式 | `-d '{...}'`JSON | `-F "k=v"`(表单) |
| 必填 | `prompt` | `image` + `prompt` |
| 参考图 | 不支持 | `image`(可传多张) |
| 局部重绘 | 不支持 | `mask`(可选蒙版) |
### 方式 A整图调整引用一张图 → 改)
```bash
curl -sS https://api.whatai.cc/v1/images/edits \
-H "Authorization: Bearer sk-8NXnGENP8fySh2a8L4xkvJX59yXVIKVqvPnlRUsBVo6jiFge" \
-F "model=gpt-image-2" \
-F "image=@input.png" \
-F "prompt=把背景换成日落海滩,人物姿势和服装保持不变" \
-F "size=1024x1024" \
-F "n=1"
```
### 方式 B多图参考 / 合成
传多张参考图prompt 里用"图一""图二"指代:
```bash
curl -sS https://api.whatai.cc/v1/images/edits \
-H "Authorization: Bearer sk-8NXnGENP8fySh2a8L4xkvJX59yXVIKVqvPnlRUsBVo6jiFge" \
-F "model=gpt-image-2" \
-F "image[]=@person.png" \
-F "image[]=@product.png" \
-F "prompt=让图一的人物手里拿着图二的产品,自然合影"
```
> 多图字段名按 OpenAI 官方规范是 `image[]`(重复传)。若 WhatAI 报字段错误,
> 改成重复的 `-F "image=@a.png" -F "image=@b.png"` 再试。
### 方式 C局部重绘mask 蒙版)
`mask` 是一张和原图**同尺寸**的 PNG透明区域alpha=0= 要重新生成的部分,
不透明区域保持不变。
```bash
curl -sS https://api.whatai.cc/v1/images/edits \
-H "Authorization: Bearer sk-8NXnGENP8fySh2a8L4xkvJX59yXVIKVqvPnlRUsBVo6jiFge" \
-F "model=gpt-image-2" \
-F "image=@room.png" \
-F "mask=@room-mask.png" \
-F "prompt=把沙发换成一张绿色天鹅绒沙发"
```
### 方式 D编辑 + 自动下载(推荐,兼容 url / b64_json 两种返回)
edits 接口的返回字段可能是 `url`,也可能是 `b64_json`base64下面脚本两种都兼容
```bash
RESP=$(curl -sS https://api.whatai.cc/v1/images/edits \
-H "Authorization: Bearer sk-8NXnGENP8fySh2a8L4xkvJX59yXVIKVqvPnlRUsBVo6jiFge" \
-F "model=gpt-image-2" \
-F "image=@input.png" \
-F "prompt=把这张图改成吉卜力动画风格" \
--max-time 180)
# 优先取 url没有就把 b64_json 解码成 png
URL=$(echo "$RESP" | jq -r '.data[0].url // empty')
if [ -n "$URL" ]; then
curl -sS -o output.png "$URL"
echo "🔗 原始 URL: $URL"
else
echo "$RESP" | jq -r '.data[0].b64_json' | base64 -d > output.png
fi
echo "✅ 已保存到 output.png"
```
### 输入图片要求
- 格式PNG / JPEG / WebP
- 大小:单张建议 < 25MB
- `mask` 必须是 PNG且尺寸与 `image` 完全一致
- 路径前的 `@` 不能漏:`-F "image=@input.png"``@` 表示读取本地文件内容
---
## 响应结构
```json
{
"created": 1777361358,
"data": [
{
"revised_prompt": "模型自动优化后的 prompt 版本",
"url": "https://webstatic.aiproxy.vip/output/.../xxx.png"
}
],
"model": "gpt-image-2",
"usage": {
"total_tokens": 1016,
"input_tokens": 456,
"output_tokens": 560
}
}
```
关键字段:
- `data[].url` — 图片地址(**临时链接**,建议立刻下载保存)
- `data[].revised_prompt` — 模型对原 prompt 的改写(调试时很有用)
- `usage` — token 消耗统计
---
## 常用参数
| 参数 | 类型 | 说明 |
|------|------|------|
| `model` | string | 固定填 `gpt-image-2` |
| `prompt` | string | 图像描述,越具体效果越好(建议英文或中英混合) |
| `size` | string | `1024x1024`(方)/ `1024x1792`(竖)/ `1792x1024`(横) |
| `n` | int | 一次生成几张,默认 1 |
| `quality` | string | `standard``hd`(部分接口支持) |
> 图像编辑接口(`/v1/images/edits`)参数同上,但全部通过 `-F` 表单字段提交(不是 JSON并额外支持 `image`(必填,参考图,可多张)和 `mask`(可选,局部重绘蒙版)。
---
## Prompt 写作建议(提升出图质量)
一个好的 prompt 通常包含 4 个要素:
1. **主体**:画什么(猫、城市、人物)
2. **风格**:油画 / 写实 / 赛博朋克 / 吉卜力 / 像素风
3. **细节**:颜色、材质、光照、角度
4. **画质**`highly detailed`, `8k`, `cinematic lighting`, `sharp focus`
示例对比:
- ✅ 好:`a cyberpunk fox sitting on a neon-lit rooftop in tokyo at night, rain reflections, cinematic lighting, ultra detailed, 8k`
- ❌ 差:`一只狐狸`
---
## 错误排查
| 现象 | 可能原因 | 处理 |
|------|----------|------|
| `401 Unauthorized` | 密钥库里 `WHATAI_API_KEY` 没建或值错 | 去数字员工密钥管理页新建/修正 |
| `404 Not Found` | URL 漏了 `/v1` | 用 `https://api.whatai.cc/v1/images/generations` |
| `model not found` | 模型名拼错 | 必须是 `gpt-image-2`(中划线) |
| `jq: command not found` | 系统没装 jq | 工作站镜像里默认应该带;缺失时用 `apt install jq` |
| 下载的 png 是 0 字节 | url 已过期 / 网络问题 | url 有时效,立即下载;加 `--retry 3` |
| 请求超时 | 图像生成耗时较长 | 加 `--max-time 180` |
| edits 接口 400 / JSON 解析错 | 用 `-F` 时手动加了 `-H "Content-Type: application/json"` | 删掉那行 `-H`,让 curl 自动设 multipart 边界 |
| `No such file or directory` | `-F "image=@xxx"` 路径错或漏了 `@` | 确认文件存在;`@` 表示读取本地文件,不能省 |
| edits 报 `mask` 尺寸不符 | 蒙版与原图尺寸不一致 | `mask` 必须是与 `image` 同尺寸的 PNG |
---
## 输出建议
- 默认把图片保存到当前任务工作目录下,文件名用语义化英文(如 `cyberpunk-fox.png`
- 把本地路径和原始 url 都告诉用户
- 用户只要命令不要执行时,给完整 curl 即可

View File

@ -1,940 +0,0 @@
# OpenClaw 源码架构深度分析
> 分析日期2026-03-11
> 源码版本:基于 GitHub 最新主分支
> 分析工具Claude Opus 4.6
> 代码规模:约 43 万行 TypeScriptmonorepo 架构
---
## 一、项目总览
OpenClaw 是一个**多通道 AI 智能体网关系统**——它不是一个简单的聊天机器人框架而是一个完整的「AI 员工」运行时平台。其核心能力是让大语言模型通过多种消息渠道Slack、Telegram、Discord、WhatsApp 等 30+ 平台)接收指令、自主执行任务、并将结果回传。
### 1.1 Monorepo 结构
```
openclaw/
├── src/ # 核心运行时源码(主体)
│ ├── gateway/ # WebSocket 网关服务器
│ ├── acp/ # Agent Client Protocol 协议层
│ ├── agents/ # Agent 运行时、模型集成、工具系统
│ ├── memory/ # 向量检索 + 全文搜索记忆系统
│ ├── plugins/ # 插件加载、注册、Hook 执行
│ ├── channels/ # 通道管理器
│ ├── routing/ # 消息路由与会话键解析
│ ├── auto-reply/ # 心跳机制与自动回复
│ ├── config/ # 配置加载与会话持久化
│ ├── security/ # 安全审计与策略执行
│ ├── infra/ # 基础设施设备身份、TLS、投递
│ ├── cli/ # CLI 命令行界面
│ ├── web/ # Web/WhatsApp Webhook 处理
│ ├── terminal/ # 终端 TUI 组件
│ └── media-understanding/# 多媒体理解(图片/音频)
├── extensions/ # 34 个通道/功能插件
├── packages/ # 兼容包clawdbot、moltbot 旧名)
├── apps/ # 原生客户端macOS/iOS/Android
├── ui/ # React Web 管理界面
├── skills/ # 内置技能
├── docs/ # 文档
├── test/ # 测试套件
└── vendor/ # 第三方依赖a2ui 等)
```
### 1.2 技术栈
| 层面 | 技术选型 |
|------|---------|
| 语言 | TypeScript (ESM)Node.js 22+ |
| 构建 | tsdown (基于 Rolldown) + Vite (UI) |
| 包管理 | pnpm workspace (monorepo) |
| 协议 | WebSocket + ACP (Agent Client Protocol) |
| 存储 | SQLite (sqlite-vec + FTS5) + JSON 文件 |
| 验证 | AJV Schema Validation |
| 测试 | Vitest + V8 Coverage |
| 容器 | Docker / Podman 多阶段构建 |
| 桌面 | SwiftUI (macOS) / React Native (移动端) |
---
## 二、核心架构全景
```mermaid
graph TB
subgraph "外部消息平台"
TG[Telegram]
SL[Slack]
DC[Discord]
WA[WhatsApp]
SG[Signal]
FS[飞书]
MORE[30+ 其他平台...]
end
subgraph "OpenClaw 核心运行时"
subgraph "Gateway 网关层"
WS[WebSocket Server<br/>端口 18789]
AUTH[认证中间件<br/>Ed25519 设备身份]
PROTO[协议处理器<br/>AJV Schema 校验]
RL[速率限制]
end
subgraph "通道管理"
CM[Channel Manager]
CP1[Telegram Plugin]
CP2[Slack Plugin]
CP3[Discord Plugin]
CPN[... N 个通道插件]
end
subgraph "路由层"
RT[Route Resolver<br/>消息 → Agent 映射]
SK[Session Key Parser<br/>会话键解析]
end
subgraph "ACP 协议层"
ACP_SVR[ACP Server]
ACP_TR[ACP Translator<br/>协议翻译器]
ACP_SM[ACP Session Manager<br/>会话管理器 + Actor 队列]
end
subgraph "Agent 运行时"
PI[Pi Agent Runner<br/>LLM 推理引擎]
TC[Tool Catalog<br/>工具注册表]
SKL[Skills System<br/>技能加载器]
SA[Subagent Registry<br/>子 Agent 注册]
AP[Auth Profiles<br/>模型凭证管理]
end
subgraph "记忆系统"
MM[Memory Index Manager]
VEC[向量检索<br/>sqlite-vec]
FTS[全文搜索<br/>SQLite FTS5]
EMB[Embedding Providers<br/>OpenAI/Gemini/Voyage/Ollama]
end
subgraph "心跳系统"
HB[Heartbeat Runner<br/>定时唤醒]
HMD[HEARTBEAT.md<br/>任务配置文件]
end
subgraph "存储层"
SS[Session Store<br/>JSON/JSONL 文件]
CF[Config Store<br/>config.json]
DI[Device Identity<br/>密钥对存储]
end
end
subgraph "LLM 提供商"
CLAUDE[Claude / Anthropic]
GPT[GPT / OpenAI]
GEM[Gemini / Google]
QWEN[Qwen / 通义]
OL[Ollama 本地模型]
MORE_LLM[Grok/Groq/Azure/...]
end
TG & SL & DC & WA & SG & FS & MORE --> CM
CM --> CP1 & CP2 & CP3 & CPN
CP1 & CP2 & CP3 & CPN --> RT
RT --> SK --> ACP_SM
WS --> AUTH --> PROTO --> ACP_SVR
ACP_SVR --> ACP_TR --> ACP_SM
ACP_SM --> PI
PI --> TC & SKL & SA
PI --> MM
MM --> VEC & FTS
VEC & FTS --> EMB
PI --> AP --> CLAUDE & GPT & GEM & QWEN & OL & MORE_LLM
PI --> SS
HB --> HMD --> PI
ACP_SM --> SS
style WS fill:#4A90D9,color:#fff
style PI fill:#E74C3C,color:#fff
style MM fill:#27AE60,color:#fff
style HB fill:#F39C12,color:#fff
style CM fill:#8E44AD,color:#fff
```
---
## 三、六大核心子系统详解
### 3.1 Gateway通信网关
Gateway 是整个系统的**中枢神经**,负责接收所有外部连接、认证设备、路由消息。
```mermaid
sequenceDiagram
participant Client as 客户端/CLI
participant GW as Gateway Server
participant Auth as 认证中间件
participant Proto as 协议处理器
participant CM as Channel Manager
participant RT as Route Resolver
Client->>GW: WebSocket 连接 (ws://localhost:18789)
GW->>Auth: 设备认证 (Ed25519 签名)
Auth-->>GW: 认证通过 + 设备 Token
GW->>Proto: Hello 握手 (PROTOCOL_VERSION)
Proto-->>Client: HelloOk (capabilities, scopes)
Note over Client,RT: 消息流
Client->>GW: RequestFrame: chat.send
GW->>Proto: AJV Schema 校验
Proto->>RT: 路由解析 (channel + peer → agent)
RT-->>GW: sessionKey + agentId
GW->>CM: 分发到对应通道
```
**核心文件:**
| 文件 | 职责 |
|------|------|
| `src/gateway/server.impl.ts` | 网关启动入口 `startGatewayServer()` |
| `src/gateway/client.ts` | WebSocket 客户端,含重连与退避策略 |
| `src/gateway/server-chat.ts` | 聊天消息处理器 |
| `src/gateway/protocol/index.ts` | 协议帧定义与 AJV 校验 |
| `src/gateway/auth.ts` | 认证中间件 |
| `src/gateway/auth-rate-limit.ts` | 速率限制策略 |
| `src/gateway/server-channels.ts` | 通道生命周期管理 |
**Gateway 启动序列:**
```mermaid
graph LR
A[加载配置] --> B[校验认证配置]
B --> C[初始化 Secrets]
C --> D[加载插件]
D --> E[创建 Channel Manager]
E --> F[初始化 Memory Manager]
F --> G[启动 Heartbeat Runner]
G --> H[启动 WebSocket Server]
H --> I[挂载协议处理器]
I --> J[启动 Sidecars<br/>发现/健康监控/Cron]
J --> K[✅ Ready]
```
**协议帧类型:**
| 帧类型 | 方向 | 用途 |
|--------|------|------|
| `RequestFrame` | Client → Server | chat.send, config.get, sessions.list 等 |
| `ResponseFrame` | Server → Client | 请求响应数据 |
| `EventFrame` | Server → Client | agent_message, tool_call, usage_update 等 |
| `HelloOk` | Server → Client | 握手响应,含协议版本和能力声明 |
**安全特性:**
- **CWE-319 防护**`isSecureWebSocketUrl()` 禁止非回环地址使用明文 `ws://`
- **设备身份**Ed25519 密钥对存储于 `~/.openclaw/credentials/`
- **TLS 指纹**支持证书指纹验证Certificate Pinning
- **连接序列号**:检测消息间隙,防止重放攻击
---
### 3.2 ACPAgent Client Protocol 协议层)
ACP 是 OpenClaw 定义的**标准化 Agent 通信协议**,作为 Gateway 与 Agent 运行时之间的翻译层。
```mermaid
graph TB
subgraph "ACP 协议栈"
EXT[外部 ACP 客户端<br/>stdin/stdout]
CONN[AgentSideConnection<br/>ndJSON 流]
AGENT[AcpGatewayAgent<br/>协议翻译器]
CLIENT[GatewayClient<br/>WebSocket]
MGR[AcpSessionManager<br/>会话管理单例]
end
subgraph "运行时缓存"
CACHE[RuntimeCache<br/>sessionKey → Handle]
QUEUE[ActorQueue<br/>每会话串行化]
EVICT[空闲驱逐<br/>TTL 超时清理]
end
EXT --> CONN --> AGENT --> CLIENT
AGENT --> MGR
MGR --> CACHE & QUEUE
CACHE --> EVICT
```
**AcpGatewayAgent 核心职责:**
- 翻译 ACP 协议 ↔ Gateway 协议
- 管理会话生命周期initialize → prompt → response
- 速率限制(默认 120 请求 / 10 秒窗口)
- 追踪待处理的 prompt 和 tool call
**AcpSessionManager 核心职责:**
- 所有 ACP 运行时会话的单例管理器
- 运行时缓存(空闲 TTL 驱逐)
- 活跃回合与延迟统计
- **Actor 队列**:防止对同一会话的并发写入
**会话键格式:**
```
@main → 默认主会话
@jane → 名为 "jane" 的 Agent 会话
$subagent-id:child-key → 子 Agent 会话
thread:123 → 线程绑定会话
acp:uuid → ACP/IDE 会话
```
---
### 3.3 Agent RuntimeAgent 运行时)
Agent 运行时是系统的**大脑**,负责 LLM 推理、工具调用、子 Agent 调度。
```mermaid
graph TB
subgraph "Agent 运行时"
PI[Pi Agent Runner<br/>核心推理引擎]
subgraph "模型集成"
MC[Model Catalog<br/>模型目录]
AP[Auth Profiles<br/>凭证管理]
FB[Fallback Chains<br/>模型降级链]
TH[Thinking Mode<br/>思考/推理模式]
end
subgraph "工具系统"
TC[Tool Catalog]
T1[web_search 网络搜索]
T2[browser_tool 浏览器]
T3[system.run 终端执行]
T4[system.spawn_acp 子Agent]
T5[channel actions 通道操作]
end
subgraph "技能系统"
SL[Skill Loader<br/>jiti 动态导入]
SF[skill.json 元数据]
SH[skill.ts 运行时处理器]
end
subgraph "子 Agent"
SR[Subagent Registry]
SP[Spawn ACP<br/>隔离会话派生]
end
end
PI --> MC --> AP --> FB
PI --> TC --> T1 & T2 & T3 & T4 & T5
PI --> SL --> SF & SH
PI --> SR --> SP
MC --> TH
subgraph "LLM 提供商"
L1[Anthropic Claude]
L2[OpenAI GPT]
L3[Google Gemini]
L4[Qwen 通义千问]
L5[Ollama 本地]
L6[Groq / Grok / Azure / Minimax / 火山引擎]
end
FB --> L1 & L2 & L3 & L4 & L5 & L6
```
**支持的 LLM 提供商10+**
| 提供商 | 说明 |
|--------|------|
| Anthropic | Claude Opus / Sonnet / Haiku |
| OpenAI | GPT 系列 |
| Google | Gemini 系列 |
| Qwen | 通义千问(阿里) |
| Minimax | 国产大模型 |
| Ollama | 本地部署任意开源模型 |
| Groq | 高速推理 |
| Grok | xAI |
| Azure | Azure OpenAI Service |
| Volc | 火山引擎(字节) |
**模型降级链Fallback Chains** 当主模型不可用时,自动切换到备用模型,保证服务连续性。
**工具审批机制:**
```mermaid
sequenceDiagram
participant Agent as Agent Runtime
participant EA as ExecApprovalManager
participant Admin as 管理员
participant CMD as 命令执行
Agent->>EA: system.run("rm -rf /tmp/data")
EA->>EA: 检查是否为危险操作
EA->>Admin: 显示审批请求
Admin-->>EA: ✅ 批准 / ❌ 拒绝
alt 批准
EA->>CMD: 执行命令
CMD-->>Agent: 返回结果
else 拒绝
EA-->>Agent: 操作被拒绝
end
```
---
### 3.4 Plugin System插件系统
插件系统是 OpenClaw 可扩展性的核心——所有通道集成、记忆后端、诊断工具都以插件形式存在。
```mermaid
graph TB
subgraph "插件生命周期"
D[1. Discovery 发现<br/>扫描 extensions/ 目录]
M[2. Manifest 加载<br/>读取 openclaw.plugin.json]
R[3. Runtime 创建<br/>初始化 Hook Runner]
REG[4. Registration 注册<br/>setActivePluginRegistry]
end
D --> M --> R --> REG
subgraph "插件类型"
CH[通道插件 ×34<br/>Telegram/Slack/Discord/...]
MEM[记忆插件<br/>memory-core / memory-lancedb]
AUTH_P[认证插件<br/>google-gemini-cli-auth 等]
DIAG[诊断插件<br/>diagnostics-otel]
SPEC[特殊插件<br/>thread-ownership / llm-task]
end
REG --> CH & MEM & AUTH_P & DIAG & SPEC
```
**已包含的 34 个通道插件:**
| 类别 | 插件 |
|------|------|
| 即时通讯 | Telegram, WhatsApp, Signal, iMessage, Line, Zalo |
| 团队协作 | Slack, Discord, MS Teams, Mattermost, Google Chat, 飞书 |
| 社交/社区 | Matrix, IRC, Nostr, Twitch, Tlon |
| 企业通讯 | Synology Chat, Nextcloud Talk, BlueBubbles |
| 语音 | voice-call |
| 开发/集成 | acpx, copilot-proxy, lobster |
**Plugin Runtime API**
```typescript
PluginRuntime = {
subagent: {
run(), // 运行子 Agent
waitForRun(), // 等待运行完成
getSessionMessages(),
deleteSession()
},
channel: {
list(), // 列出通道
inspect(), // 检查通道状态
sendMessage() // 发送消息
},
core: {
config, // 全局配置
workspaceDir, // 工作区目录
agentId // 当前 Agent ID
}
}
```
**Hook 系统:**
| Hook | 触发时机 |
|------|---------|
| `gateway.startup()` | 网关启动时 |
| `gateway.shutdown()` | 优雅关闭时 |
| `channel.ready()` | 通道连接就绪 |
| `channel.message()` | 收到消息时 |
| `session.start()` | 会话开始 |
| `session.prompt()` | LLM 推理前 |
| `session.response()` | LLM 响应后 |
---
### 3.5 Memory System记忆系统
记忆系统实现了**向量检索 + BM25 全文搜索**的混合搜索架构,是 Agent 长期记忆的基础。
```mermaid
graph TB
subgraph "记忆系统架构"
Q[搜索查询]
subgraph "混合搜索引擎"
VS[向量检索<br/>sqlite-vec]
BM[BM25 全文搜索<br/>SQLite FTS5]
HY[混合排序<br/>加权合并 + 时间衰减]
end
subgraph "Embedding 提供商"
E1[OpenAI<br/>text-embedding-3-small/large]
E2[Gemini<br/>Generalist Multimodal]
E3[Voyage<br/>voyage-large-2-instruct]
E4[Mistral<br/>mistral-embed]
E5[Ollama<br/>本地模型]
end
subgraph "存储层"
DB[(SQLite 数据库)]
CV[chunks_vec 表<br/>向量嵌入]
CF[chunks_fts 表<br/>FTS5 全文索引]
EC[embedding_cache 表<br/>查询缓存 + TTL]
end
RES[搜索结果<br/>相关度排序]
end
Q --> VS & BM
VS --> HY
BM --> HY
VS --> E1 & E2 & E3 & E4 & E5
E1 & E2 & E3 & E4 & E5 --> CV
BM --> CF
HY --> RES
DB --> CV & CF & EC
style HY fill:#27AE60,color:#fff
style DB fill:#3498DB,color:#fff
```
**MemoryIndexManager 是单例模式**,每个 Agent + Workspace 一个实例:
```typescript
// 获取或创建记忆管理器
const memory = await MemoryIndexManager.get({
cfg: config,
agentId: "main",
purpose: "chat"
});
// 混合搜索
const results = await memory.search({
query: "用户上周提到的跑步习惯",
limit: 10,
threshold: 0.7,
hybrid: { weight: 0.6 } // 向量权重 60%, BM25 权重 40%
});
```
**关键特性:**
- **时间衰减**:近期记忆权重更高
- **批量嵌入**:失败自动恢复
- **查询缓存**TTL 控制的 embedding 缓存层
- **额外记忆路径**:可引入外部文档目录
---
### 3.6 Heartbeat心跳机制
心跳是 OpenClaw 最具争议也最核心的设计——让 AI **主动醒来执行任务**,而不是被动等待指令。
```mermaid
sequenceDiagram
participant Timer as 定时器 (默认 30 分钟)
participant HB as Heartbeat Runner
participant FS as 文件系统
participant Agent as Agent Runtime
participant LLM as LLM 提供商
participant Channel as 消息通道
loop 每 30 分钟
Timer->>HB: 触发心跳
HB->>FS: 读取 HEARTBEAT.md
alt HEARTBEAT.md 为空或不存在
HB->>HB: 跳过,不调用 API
else HEARTBEAT.md 有任务内容
HB->>Agent: 发送 HEARTBEAT_PROMPT
Agent->>LLM: 推理 + 任务执行
LLM-->>Agent: 执行结果
alt 返回 HEARTBEAT_OK
Agent-->>HB: 无需操作,静默
else 有实际输出
Agent->>Channel: 发送结果到通道
Channel-->>HB: 显示 ACK 反应 (👀)
end
end
end
```
**HEARTBEAT.md 示例:**
```markdown
## 每日任务
- 每天早上 9:00 检查未读邮件,分类后发送摘要到 Slack #daily
- 监控竞品价格变动,降幅超过 10% 立即通知
- 每周五下午生成本周工作总结
## 触发条件
- 仅在工作日执行
- 静默模式:无变化时不发送消息
```
**可见性控制:**
| 配置项 | 说明 | 默认值 |
|--------|------|--------|
| `heartbeat.every` | 心跳间隔 | 30m |
| `heartbeat.enabled` | 是否启用 | true |
| `heartbeat.ackMaxChars` | ACK 最大字符数 | 300 |
| `SILENT_REPLY_TOKEN` | 静默回复标记 | #SILENT_ACK |
| `HEARTBEAT_OK` | 无需操作标记 | HEARTBEAT_OK |
---
## 四、数据流全链路
一条消息从外部平台进入到最终响应,经过的完整链路:
```mermaid
graph TB
subgraph "① 消息接收"
MSG[用户消息<br/>Telegram/Slack/...]
SDK[平台 SDK<br/>原生协议接收]
NORM[消息标准化<br/>统一格式]
end
subgraph "② 路由决策"
RT[Route Resolver<br/>channel + peer → agentId]
BIND[Session Binding<br/>会话绑定服务]
SK[Session Key<br/>生成会话键]
end
subgraph "③ 会话管理"
ACP[ACP Session Manager]
LOCK[Session Write Lock<br/>防并发写入]
LOAD[加载会话历史<br/>JSONL 转录]
end
subgraph "④ Agent 推理"
PI[Pi Agent Runner]
LLM[LLM API 调用<br/>含 Thinking Mode]
TOOL[工具调用<br/>审批 → 执行]
MEM[记忆检索<br/>混合搜索]
end
subgraph "⑤ 响应投递"
STREAM[流式响应<br/>逐 Token 返回]
TRANS[格式转换<br/>适配目标平台]
DELIVER[投递到通道<br/>支持线程/回复]
PERSIST[持久化<br/>会话 + 记忆写入]
end
MSG --> SDK --> NORM
NORM --> RT --> BIND --> SK
SK --> ACP --> LOCK --> LOAD
LOAD --> PI --> LLM
LLM --> TOOL
TOOL --> MEM
LLM --> STREAM --> TRANS --> DELIVER
DELIVER --> PERSIST
style MSG fill:#9B59B6,color:#fff
style PI fill:#E74C3C,color:#fff
style DELIVER fill:#2ECC71,color:#fff
```
---
## 五、持久化与存储架构
```mermaid
graph LR
subgraph "~/.openclaw/ 存储结构"
subgraph "设备层"
DI[device-identity.json<br/>Ed25519 密钥对]
CRED[credentials/<br/>设备 Token]
end
subgraph "配置层"
CONFIG[config.json<br/>全局配置]
SECRETS[secrets/<br/>API Key 引用]
end
subgraph "Agent 层 (per-agent)"
subgraph "agents/main/"
SESS[sessions.json<br/>会话元数据]
TRANS[sessions/*.jsonl<br/>会话转录]
WS[workspace/<br/>工作区文件]
HMD2[HEARTBEAT.md]
MEMDB[memory.sqlite<br/>向量+全文索引]
end
end
end
style DI fill:#E67E22,color:#fff
style CONFIG fill:#3498DB,color:#fff
style SESS fill:#2ECC71,color:#fff
style MEMDB fill:#9B59B6,color:#fff
```
**会话存储细节:**
| 存储项 | 格式 | 说明 |
|--------|------|------|
| 会话元数据 | JSON | 模型、Token 用量、思考级别等 |
| 会话转录 | JSONL (追加写入) | 不可变的消息日志,按大小/数量自动轮转 |
| 记忆索引 | SQLite | 向量表 + FTS 表 + 缓存表 |
| 设备身份 | JSON | Ed25519 公私钥对 |
| 配置 | JSON | 全局配置,含 Secret 引用 |
**Secrets 引用机制:**
```json
{
"providers": {
"anthropic": {
"apiKey": "${file://~/.openclaw/secrets/anthropic.key}"
}
}
}
```
支持 `${file://path}``${env://VAR_NAME}` 两种引用方式。
---
## 六、安全架构
```mermaid
graph TB
subgraph "安全层级"
subgraph "L1: 网络层"
TLS[TLS/mTLS 加密]
FP[证书指纹验证]
CWE[CWE-319 防护<br/>禁止明文WS到非回环]
end
subgraph "L2: 认证层"
DEV[设备认证<br/>Ed25519 签名]
TOKEN[设备 Token<br/>长期访问令牌]
OAUTH[OAuth 集成<br/>Google/Discord 等]
PWD[密码认证<br/>本地网关备选]
end
subgraph "L3: 授权层"
SCOPE[操作域 Scopes]
PAIR[设备配对审批]
ROLE[Owner vs User 角色]
end
subgraph "L4: 执行层"
APPROVE[工具审批门<br/>危险操作拦截]
SANDBOX[沙箱策略<br/>inherit/require/forbidden]
AUDIT[审计日志]
SCAN[危险工具扫描]
end
end
TLS --> DEV --> SCOPE --> APPROVE
FP --> TOKEN --> PAIR --> SANDBOX
CWE --> OAUTH --> ROLE --> AUDIT
PWD --> SCAN
```
**操作域Scopes细粒度控制**
| Scope | 权限 |
|-------|------|
| `gateway:full` | 网关完全控制 |
| `gateway:read` | 只读访问 |
| `channels:read` | 读取通道信息 |
| `messages:send` | 发送消息 |
| `config:write` | 修改配置 |
| `agents:manage` | Agent 管理 |
**沙箱策略:**
| 策略 | 说明 |
|------|------|
| `inherit` | 继承父会话沙箱模式 |
| `require` | 强制更严格的沙箱 |
| `forbidden` | 禁止子 Agent 派生 |
**安全审计(`src/security/`**
- `dangerous-tools.ts` — 危险工具扫描器
- `dangerous-config-flags.ts` — 危险配置标记检测
- `audit.ts` — 审计日志记录器
- 临时路径防护、外部内容策略
---
## 七、通道集成架构
```mermaid
graph TB
subgraph "通道插件架构"
IF[ChannelPlugin 接口]
subgraph "插件实现"
TG[Telegram<br/>Bot API]
SL[Slack<br/>Bolt SDK]
DC[Discord<br/>discord.js]
WA[WhatsApp<br/>Baileys]
SIG[Signal<br/>signal-cli]
FS[飞书<br/>Open API]
end
subgraph "生命周期"
INIT[initialize<br/>认证 + 连接]
LISTEN[listen<br/>消息监听]
ROUTE[route<br/>路由到 Agent]
DELIVER[deliver<br/>回传响应]
SHUTDOWN[shutdown<br/>优雅断开]
end
end
IF --> TG & SL & DC & WA & SIG & FS
TG & SL & DC & WA & SIG & FS --> INIT --> LISTEN --> ROUTE --> DELIVER --> SHUTDOWN
```
**通道插件必须实现的接口:**
```typescript
interface ChannelPlugin {
// 配置 Schema 定义
configSchema: JSONSchema;
// 生命周期
initialize(config: ChannelConfig): Promise<void>;
shutdown(): Promise<void>;
// 消息处理
onMessage(handler: MessageHandler): void;
sendMessage(target: Target, message: Message): Promise<void>;
// 状态
getStatus(): ChannelStatus;
getAccounts(): AccountInfo[];
}
```
**消息标准化:** 所有通道的消息都会被标准化为统一格式,包括:
- 文本内容
- 附件(图片/文件/音频)
- 发送者身份
- 线程/回复关系
- 通道特定元数据
---
## 八、构建与部署
### 8.1 Docker 部署架构
```mermaid
graph TB
subgraph "Docker Compose"
GW_SVC[gateway 服务<br/>Node.js 运行时]
CLI_SVC[cli 服务<br/>命令行交互]
HC[健康检查<br/>端口 18789]
end
subgraph "Docker 镜像"
BASE[Dockerfile<br/>多阶段构建]
SB[Dockerfile.sandbox<br/>沙箱镜像]
SBB[Dockerfile.sandbox-browser<br/>浏览器沙箱]
SBC[Dockerfile.sandbox-common<br/>公共沙箱基础]
end
subgraph "其他部署"
FLY[fly.toml<br/>Fly.io 部署]
RENDER[render.yaml<br/>Render 部署]
PODMAN[Podman<br/>无 root 容器]
end
GW_SVC --> BASE
CLI_SVC --> BASE
GW_SVC --> HC
BASE --> SB & SBB & SBC
```
### 8.2 发布通道
| 通道 | 版本格式 | npm dist-tag |
|------|---------|--------------|
| Stable | vYYYY.M.D | `latest` |
| Beta | vYYYY.M.D-beta.N | `beta` |
| Dev | main 分支 | 无 tag |
### 8.3 客户端矩阵
| 平台 | 技术栈 | 位置 |
|------|--------|------|
| CLI | Commander.js + Clack | `src/cli/` |
| Web UI | React + Vite | `ui/` |
| macOS | SwiftUI + XPC Bridge | `apps/macos/` |
| iOS | React Native | `apps/ios/` |
| Android | React Native | `apps/android/` |
---
## 九、关键设计模式总结
### 9.1 架构模式
```mermaid
mindmap
root((OpenClaw<br/>设计模式))
消息驱动
WebSocket 双向通信
EventFrame 事件流
RequestFrame 请求/响应
插件化
34 个通道插件
Hook 系统 7 个钩子
动态加载 jiti
会话隔离
Actor 队列串行化
Session Write Lock
Per-agent 存储隔离
安全纵深
L1 网络加密
L2 设备认证
L3 域控授权
L4 执行审批
韧性设计
模型降级链
连接重试退避
嵌入失败恢复
```
### 9.2 核心设计决策
| 决策 | 选择 | 理由 |
|------|------|------|
| 协议 | WebSocket + 自定义协议 | 双向实时通信,低延迟 |
| 存储 | 文件系统 + SQLite | 零外部依赖,本地优先 |
| 插件加载 | jiti 动态导入 | 支持 TypeScript 直接加载,无需预编译 |
| 并发控制 | Actor 队列 | 避免锁竞争,每会话串行保证一致性 |
| 记忆检索 | 向量 + BM25 混合 | 语义理解 + 精确匹配,互补短板 |
| 安全模型 | 设备身份 + Scopes | 零信任架构,最小权限原则 |
| 心跳 | 文件驱动 (HEARTBEAT.md) | 无需额外调度基础设施,用户可直接编辑 |
### 9.3 值得关注的工程亮点
1. **协议翻译器模式ACP Translator**:将外部标准协议与内部网关协议解耦,允许独立演进
2. **运行时缓存 + 空闲驱逐**:会话不用时自动回收资源,用时自动恢复
3. **Secret 引用而非内联**:配置文件中不存储明文密钥,而是引用外部文件或环境变量
4. **会话转录追加写入**:不可变日志,天然支持故障恢复和审计
5. **嵌入提供商可替换**:同一套记忆系统可无缝切换 OpenAI、Gemini、本地 Ollama 等后端
---
## 十、架构风险与局限
| 风险点 | 说明 | 影响 |
|--------|------|------|
| **明文 Markdown 存储** | HEARTBEAT.md、MEMORY.md 等以明文存储 | API Key 泄露风险 |
| **Root 级终端权限** | `system.run` 工具可执行任意命令 | 需依赖审批机制,但默认可绕过 |
| **心跳无人值守** | Agent 可在用户不知情时自主行动 | MoltMatch 等事件的根因 |
| **第三方 Skill 生态** | ClawHub 26% 插件含漏洞/恶意代码 | 供应链攻击面 |
| **单体网关** | Gateway 是单点,承载所有通道 | 高可用需额外架构 |
| **文件系统依赖** | 会话存储依赖本地文件系统 | 不原生支持分布式部署 |
---
> **总结**OpenClaw 的架构本质上是一个**面向消息的分布式系统**——Gateway 是交换机Agent 是 LLM 驱动的任务执行器Channel 是双向传输管道。记忆、安全和可扩展性是一等公民,而非事后补丁。但其"本地优先"的设计哲学也带来了明文存储和单点依赖的固有风险。