openclaw源码解读——入门与破局:2 OpenClaw项目定位与设计哲学:为什么它值得读

作者:袖梨 2026-08-15

openclaw源码解读——入门与破局:2 OpenClaw项目定位与设计哲学:为什么它值得读的重点在于把前置条件、操作顺序和容易误判的地方分清楚。

{"type":"doc","content":[{"type":"paragraph","attrs":{"id":"b02fad02-cc4e-45af-bc70-6d0a4dd64fa5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"第一阶段 导航层 | 第 2/100 篇"}]},{"type":"paragraph","attrs":{"id":"1fdc8a16-5f1a-46f1-a1e0-47c5b61ea935","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在逐行拆解代码之前,我们必须先回答一个问题:OpenClaw到底想解决什么问题?它为什么选择这样的架构? 理解设计哲学,是读懂源码的「第一把钥匙」。"}]},{"type":"paragraph","attrs":{"id":"869ef06a-19c0-48f3-b411-a21ba6a646e3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"一、先问一个问题:你读源码,到底在读什么?"}]},{"type":"paragraph","attrs":{"id":"cef1f110-e4f9-452d-9ccf-e508004efb20","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"很多开发者读源码的方式是:打开IDE,找到一个入口函数,逐行往下跟。跟了三天,记住了几十个类名,但合上电脑后,脑子里只剩一团浆糊。"}]},{"type":"paragraph","attrs":{"id":"ac26ca73-06a1-4bf6-852e-82801a012572","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"问题出在哪?"}]},{"type":"paragraph","attrs":{"id":"87638ce4-7e04-40dc-9925-dbfcc8843fa5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"你读的是「代码」,不是「决策」。"}]},{"type":"paragraph","attrs":{"id":"1cdbef43-3aa8-4721-b7ac-5f26beb10903","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"每一行代码背后,都有一个被放弃的方案和一个被选中的方案。真正有价值的源码阅读,不是记住server.impl.ts里第几行调用了什么函数,而是理解:为什么选择Promise而不是串行执行?为什么用Markdown文件驱动配置而不是JSON?为什么把Harness和Workflow严格区分?"}]},{"type":"paragraph","attrs":{"id":"70dc01c4-241f-4cc6-bea2-cf1f4165782a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClaw的源码之所以值得读,不是因为它的代码量小(虽然确实不大),而是因为它的每一个设计决策都经过深思熟虑,并且在代码中留下了清晰的痕迹。你读它的源码,本质上是在读一份「AI Agent架构设计的决策日志」。"}]},{"type":"paragraph","attrs":{"id":"6985b0e8-dbdc-4fe9-85b3-b56d0bab1a95","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"二、OpenClaw是什么?一句话定位"}]},{"type":"paragraph","attrs":{"id":"5f9a048a-5b4c-457b-9a1d-a204f25676e2","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"如果你用一句话向CTO介绍OpenClaw,可以说:"}]},{"type":"paragraph","attrs":{"id":"8f53a0b1-7d5f-422a-84bb-21accb132bf9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClaw 是一个「本地优先的Agent运行时操作系统」——它不是框架,不是库,而是一个常驻后台的Gateway,负责接收消息、调度Agent、管理技能、维护记忆,并把一切约束在安全的沙箱之内。"}]},{"type":"paragraph","attrs":{"id":"ca17e820-3331-4a36-8aee-a3faaf019346","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"这个定位里有三个关键词,也是理解OpenClaw的钥匙:"}]},{"type":"paragraph","attrs":{"id":"b8a82b15-08ee-4869-a6cc-2686e70a0912","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"关键词t含义t源码层面的体现"}]},{"type":"paragraph","attrs":{"id":"b3b78ea0-3055-4860-9ae1-d49bdc6e3e30","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"本地优先t所有数据本地处理,零云端依赖,代码和配置都在你的机器上t配置外化为Markdown文件、向量检索本地运行、无外部API强制依赖"}]},{"type":"paragraph","attrs":{"id":"b68b1fe0-ea4a-4bad-a648-938b6c711ad6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Agent运行时t不是静态工具集,而是长期驻留的进程,持续接收事件、调度任务tGateway常驻进程、WebSocket长连接、Heartbeat定时任务"}]},{"type":"paragraph","attrs":{"id":"232fa462-c932-409f-ba06-f9f2d8577f30","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"操作系统t提供底层机制(进程调度、内存管理、安全沙箱),不预设上层应用t微内核设计、Skill按需加载、Hook机制允许任意扩展"}]},{"type":"paragraph","attrs":{"id":"8fcd4f0e-d8a9-4d27-a373-e03cd5f3f938","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"2026年的AI Agent框架已经超过120个,但绝大多数框架在做的是「给开发者一套乐高积木」,而OpenClaw做的是「给Agent一个操作系统」。这个定位差异,决定了它的源码阅读价值——你读的不是「怎么拼积木」,而是「怎么设计操作系统」。"}]},{"type":"paragraph","attrs":{"id":"85a0293c-7f99-4a5e-8be5-9b5cf3611606","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"三、三维设计哲学:Prompt × Context × Harness"}]},{"type":"paragraph","attrs":{"id":"f8d96f11-99bb-4069-bfac-f9953c9aad51","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClaw的核心设计哲学可以概括为三个正交维度:Prompt Engineering(如何组织提示词)、Context Engineering(如何管理上下文窗口)、Harness Engineering(如何约束Agent行为)。这三个维度不是独立的功能模块,而是构成了一套完整的「Agent控制体系」。"}]},{"type":"paragraph","attrs":{"id":"5bb002fd-3557-4dba-91ee-67222e75f5a6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"理解这三个维度,你就掌握了阅读OpenClaw源码的「主脉络」。"}]},{"type":"paragraph","attrs":{"id":"c213a56d-1dc0-426f-92c9-c2242fe7c1d1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"维度一:Prompt Engineering —— 文件驱动的动态组装"}]},{"type":"paragraph","attrs":{"id":"050fe9b6-43f6-493e-98f3-b18b88d4dd8c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"传统Agent框架的Prompt是怎么管理的?写死在代码里,或者塞进一个巨大的JSON配置文件。OpenClaw的做法完全不同:它把Agent的「人格」外化为Markdown文件,让配置与代码彻底解耦。"}]},{"type":"paragraph","attrs":{"id":"25d92333-0314-4e2d-84e0-a429d049811d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"1. Markdown文件驱动体系"}]},{"type":"paragraph","attrs":{"id":"1b703346-62ea-4434-8e69-93f6d3c4a553","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClaw将Agent配置拆分为多个Markdown文件,每个文件负责一个独立的语义维度:"}]},{"type":"paragraph","attrs":{"id":"6a69df34-3658-47ac-88ac-da5d7fb8cb74","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"文件t作用t更新策略t源码对应"}]},{"type":"paragraph","attrs":{"id":"ab51594b-602c-4aea-bb88-39c997991341","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"link","attrs":{"href":"http://SOUL.md","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"SOUL.md"},{"type":"text","text":"t人格设定、语言风格、价值观t更新需用户确认tbuildAgentSystemPrompt() 中动态加载"}]},{"type":"paragraph","attrs":{"id":"b3a8a71c-f454-49c4-be58-04e07ca6861d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"link","attrs":{"href":"http://IDENTITY.md","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"IDENTITY.md"},{"type":"text","text":"t名称、头像、身份标识t手动维护t注入到System Prompt的Identity模块"}]},{"type":"paragraph","attrs":{"id":"c33b4b4f-05a4-430c-bf8a-f63f0bea76f3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"link","attrs":{"href":"http://USER.md","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"USER.md"},{"type":"text","text":"t用户偏好、习惯、历史约定tAgent自动学习更新t从Memory系统提取后注入"}]},{"type":"paragraph","attrs":{"id":"b51c1526-15fa-478f-80c5-21deb0937e3f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"link","attrs":{"href":"http://TOOLS.md","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"TOOLS.md"},{"type":"text","text":"t当前可用工具清单t按Skill加载动态更新tbuild_tool_list() 动态生成"}]},{"type":"paragraph","attrs":{"id":"2cec00de-541f-4c22-a517-92e4165e8c43","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"link","attrs":{"href":"http://MEMORY.md","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"MEMORY.md"},{"type":"text","text":"t长期高价值记忆tAgent对话中自动写入t截断至200行后注入"}]},{"type":"paragraph","attrs":{"id":"687fa6ac-68ab-4472-852c-adbad287de9f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"link","attrs":{"href":"http://HEARTBEAT.md","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"HEARTBEAT.md"},{"type":"text","text":"t定时任务逻辑t手动配置t独立调度器读取"}]},{"type":"paragraph","attrs":{"id":"43fb6e0c-42a9-45fd-aa24-446ffa549fad","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"link","attrs":{"href":"http://AGENT.md","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"AGENT.md"},{"type":"text","text":"t核心目标与运行逻辑t手动维护t作为System Prompt的Base层"}]},{"type":"paragraph","attrs":{"id":"18d83d1f-38d7-4382-8ef6-7ec8abd75048","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"这种设计在源码中体现为buildAgentSystemPrompt()函数,它按优先级动态组装23个模块的流水线。根据promptMode 参数(full | minimal | none),函数会选择加载不同的模块组合,实现「同一套代码,多种人格」的灵活配置。"}]},{"type":"paragraph","attrs":{"id":"100e3f04-ae3d-4b07-96cf-6566b8a50ff9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"2. Token效率的极致追求"}]},{"type":"paragraph","attrs":{"id":"35618039-f82b-4881-8fe6-b1d1919c3fe3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClaw的Prompt设计有一个铁律:用最少Token传达最准确的约束。"}]},{"type":"paragraph","attrs":{"id":"adcb99ca-6a39-4053-860c-ce98ae884ff0","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"❌ 传统写法(高Token消耗):"}]},{"type":"paragraph","attrs":{"id":"41cc420b-355b-41cf-aaa0-70bfbe8338b3","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":""请你记住,在回答用户问题时,始终保持友好和专业的态度,"}]},{"type":"paragraph","attrs":{"id":"43d86f3e-1dc2-4a2c-af8e-6beb97b211bd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"并且要确保你的回答是准确的,不要提供虚假信息...""}]},{"type":"paragraph","attrs":{"id":"58e67009-6c43-43b2-9d23-947c74cd761a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"id":"8dc8cba3-66f3-4605-b0f9-53b018e9e3c0","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"✅ OpenClaw写法(低Token高密度):"}]},{"type":"paragraph","attrs":{"id":"e520bf5a-dbd3-4072-ae87-deb853bb816f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":""Quality > quantity. Be honest. Read files before answering.""}]},{"type":"paragraph","attrs":{"id":"5dde97de-80ea-4edc-8922-3014a9240ea4","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Lobster AI"}]},{"type":"paragraph","attrs":{"id":"b15d9bea-cac4-4363-b596-d9ad0ca2bbed","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"这种极简风格使主Agent System Prompt控制在3-5K Token,而非行业常见的10-20K。在源码层面,这意味着:"}]},{"type":"paragraph","attrs":{"id":"4a0dd8ac-c34f-4840-baa7-44e5f421af28","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","marks":[{"type":"link","attrs":{"href":"http://SOUL.md","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"SOUL.md"},{"type":"text","text":"等文件被严格限制行数"}]},{"type":"paragraph","attrs":{"id":"71a5561f-00bc-44d1-8fc1-c885328dcdd5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"每个模块都有明确的「截断策略」和「优先级权重」"}]},{"type":"paragraph","attrs":{"id":"b00fb513-5e5e-4f1b-8bab-e46bde7fab42","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"源码阅读线索:当你读到server.impl.ts中配置加载相关的代码时,注意看它是如何按优先级组装。"}]},{"type":"paragraph","attrs":{"id":"6a5bd7a1-8ad4-4f78-ab63-61d2109d6b87","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"维度二:Context Engineering —— 分层压缩与渐进式披露"}]},{"type":"paragraph","attrs":{"id":"c4914f3c-6b20-4432-907c-4cc72378960e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"如果说Prompt Engineering解决的是「Agent看到了什么」,Context Engineering解决的就是「Agent能看到什么」。OpenClaw的上下文管理有三个核心策略,每一个都在源码中有精确的实现。"}]},{"type":"paragraph","attrs":{"id":"686bab0d-b6a5-45f4-8ac3-9e885c177f8e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"策略1:Skills渐进式披露(按需加载)"}]},{"type":"paragraph","attrs":{"id":"ec639fd4-24ab-4ec1-bb4f-67c4d430d46c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"传统框架在启动时就把所有Skill的描述全塞进System Prompt——如果你有100个Skill,每个Skill描述100 Token,那就是10K Token的固定开销。OpenClaw的做法是:初始只加载核心工具(约500 Token),当用户请求特定功能时,动态加载对应的Skill描述。"}]},{"type":"paragraph","attrs":{"id":"08667f0d-b30b-4327-be2f-6201ba3f3796","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"初始状态:仅加载核心工具(约500 Token)"}]},{"type":"paragraph","attrs":{"id":"17a6e081-834a-4555-8aa3-09a055073fdb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"↓"}]},{"type":"paragraph","attrs":{"id":"edf3a104-170b-4f80-a9fc-9e65dde1d654","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"用户请求:"帮我生成一个柱状图""}]},{"type":"paragraph","attrs":{"id":"280245b1-a47b-41fd-a484-a52ca93de936","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"↓"}]},{"type":"paragraph","attrs":{"id":"36e7831a-e214-429d-91b1-e03b0d940444","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"动态加载 "data-visualization" Skill描述(约300 Token)"}]},{"type":"paragraph","attrs":{"id":"ad837bee-f632-4a45-a3cf-85ab8ebf2a1f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"↓"}]},{"type":"paragraph","attrs":{"id":"90b7e4ef-893a-4f38-9fb8-7e30332c3831","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"任务完成后,可选择卸载"}]},{"type":"paragraph","attrs":{"id":"ff261289-8c5b-4c9f-ac6e-eebdf86e172e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Lobster AI"}]},{"type":"paragraph","attrs":{"id":"395336c1-c8ae-4059-92f3-d9ed03fce3f2","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"这种「按需注入」机制将上下文用量降低约85%。在源码中,这对应着Skill注册的动态加载逻辑和AgentContext的临时扩展机制。"}]},{"type":"paragraph","attrs":{"id":"0a1e800f-aeb2-4c83-95e6-16fb59c375d6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"策略2:分层摘要压缩"}]},{"type":"paragraph","attrs":{"id":"65ef2496-df0d-4f1e-b35d-f98424cf40da","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"当对话Token接近上下文窗口上限(比如触及18万/20万),OpenClaw会触发分层压缩流程:"}]},{"type":"paragraph","attrs":{"id":"3f8f1930-3ae7-4585-b0ab-1c4d27339109","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"触发压缩"}]},{"type":"paragraph","attrs":{"id":"0c3f0333-0a16-490b-94bf-4955b1a7aafe","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"↓"}]},{"type":"paragraph","attrs":{"id":"2ed0aba0-0a8f-4d76-a6c3-cdc4cc55f1df","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Step 1: 将对话历史按时间分块(每块约5000 Token)"}]},{"type":"paragraph","attrs":{"id":"abff6520-998a-430e-b415-255ce2516517","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"↓"}]},{"type":"paragraph","attrs":{"id":"ee643325-ac16-4955-a1a5-34aa4fa66599","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Step 2: 对每块独立生成摘要(压缩比约10:1)"}]},{"type":"paragraph","attrs":{"id":"72c84e47-81e8-4752-9b3d-d9e75348e6e9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"↓"}]},{"type":"paragraph","attrs":{"id":"d6c434df-db05-420e-8f65-faef6b12efb1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Step 3: 多轮提炼摘要(summarizeInStages)"}]},{"type":"paragraph","attrs":{"id":"0270a1ec-d623-4bba-b655-e4bbe241ce7b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"↓"}]},{"type":"paragraph","attrs":{"id":"21a99464-9689-4c00-af35-431e333c654c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Step 4: 强制保留:任务状态、TODO、关键UUID、用户承诺"}]},{"type":"paragraph","attrs":{"id":"86f81e17-81e0-4783-8117-241f0ba29166","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"↓"}]},{"type":"paragraph","attrs":{"id":"1bb9b51f-d5dd-46cf-bc35-5031ad1330e1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"结果:200K上下文压缩为约20K,保留约95%关键信息"}]},{"type":"paragraph","attrs":{"id":"8ecddb7d-a512-4b41-a96c-7af80fdfabfc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Lobster AI"}]},{"type":"paragraph","attrs":{"id":"ce10fcb1-aaac-4d69-a1bf-cba0bf7a0422","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"注意Step 4的「强制保留」机制,这是带有业务语义的关键信息保护。在源码中,这对应着上下文压缩和活动内存的协作逻辑。"}]},{"type":"paragraph","attrs":{"id":"6345a55b-fc7a-4059-9ae7-39a59f781582","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"策略3:双层记忆系统"}]},{"type":"paragraph","attrs":{"id":"ad1e9aa9-cacb-4b3c-a07d-04bba764f530","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClaw的记忆系统分为两层,每层有不同的存储策略和检索机制:"}]},{"type":"paragraph","attrs":{"id":"f1c1923e-10bf-4b8e-9620-af2fa337ac17","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"┌────────────────────────────────────────┐"}]},{"type":"paragraph","attrs":{"id":"b2f11e7d-d361-4b39-b18c-5e789037bc53","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"│ 长期记忆("},{"type":"text","marks":[{"type":"link","attrs":{"href":"http://MEMORY.md","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"MEMORY.md"},{"type":"text","text":")│"}]},{"type":"paragraph","attrs":{"id":"1e1ebab9-20f2-46a5-87c0-179b203cf7dd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"│高价值事实、用户偏好、项目约定 │"}]},{"type":"paragraph","attrs":{"id":"f3b42c3d-ea3c-49ee-bb79-a6db898b5543","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"│每次对话自动注入System Prompt │"}]},{"type":"paragraph","attrs":{"id":"b311fa6c-f1a5-4458-968e-7de1030ff775","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"│最大200行(超出则最新优先截断) │"}]},{"type":"paragraph","attrs":{"id":"0bb545bf-ea51-4f55-9ffe-b085f7c0b2de","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"└─────────────────┬──────────────────────┘"}]},{"type":"paragraph","attrs":{"id":"9808ccca-95a1-47f2-b1b1-e403a6296960","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"│ 检索(全量注入)"}]},{"type":"paragraph","attrs":{"id":"1c736064-9d44-4829-a21b-647cbedeb357","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"┌─────────────────▼──────────────────────┐"}]},{"type":"paragraph","attrs":{"id":"20f14591-17a1-4d1b-99b0-2093064bc62e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"│ 每日记忆(memory/"},{"type":"text","marks":[{"type":"link","attrs":{"href":"http://日期.md","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"日期.md"},{"type":"text","text":")│"}]},{"type":"paragraph","attrs":{"id":"783bd2cc-2d23-4de1-8475-a0290ad49cb6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"│日常细节、任务记录、临时偏好 │"}]},{"type":"paragraph","attrs":{"id":"3c213686-200a-4f80-9ae3-ecb7c667a817","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"│BM25 向量双路召回(按需) │"}]},{"type":"paragraph","attrs":{"id":"bb18b6b9-5d88-493b-bb9a-647aaaecf553","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"│时间衰减权重(旧记忆重要性降低)│"}]},{"type":"paragraph","attrs":{"id":"40387315-c66c-4091-9282-fb009daa8cee","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"└────────────────────────────────────────┘"}]},{"type":"paragraph","attrs":{"id":"ac3d92c4-0d2b-439e-aa7c-21bdbde69ed6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Lobster AI"}]},{"type":"paragraph","attrs":{"id":"638b0ed9-e087-4cac-88df-ea7bf1a7e828","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"长期记忆是「必读」的,每次对话都会注入;每日记忆是「按需检索」的,只有触发相关关键词时才会召回。这种设计在源码中体现为Memory Manager的双路检索逻辑和Token Budget的动态分配策略。"}]},{"type":"paragraph","attrs":{"id":"9166ac6b-6448-45e2-ac2d-983c05f0ee0f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"源码阅读线索:当你读到agent-run-handler.ts和run-orchestrator.ts时,注意看它们是如何在每次LLM调用前「组装上下文」的——这不是简单的数据传递,而是一套「信息论最优」的上下文工程。"}]},{"type":"paragraph","attrs":{"id":"4f8bfe8e-7251-401a-be9a-721e87105b67","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"维度三:Harness Engineering —— 约束与控制框架"}]},{"type":"paragraph","attrs":{"id":"e003f4a6-f5bd-463c-a021-18574de1ec2b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"这是OpenClaw最具独创性的设计,也是很多开发者最容易误解的地方。"}]},{"type":"paragraph","attrs":{"id":"3c83f9fc-1b12-4e9d-a9c9-99e8dd00e988","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Harness ≠ Workflow"}]},{"type":"paragraph","attrs":{"id":"48b17fc1-2b8a-4d03-a001-cf89b3aafef5","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"传统Workflow(如LangGraph)的思路是:用DAG图定义固定的执行路径,每个节点做什么、走哪条边,都在代码里写死。这种方式适合确定性业务流程,但Agent的核心价值恰恰在于处理开放性任务——你不可能为一个「帮我研究量子计算并写一份报告」的任务预先画出DAG图。"}]},{"type":"paragraph","attrs":{"id":"bebd871f-6d17-4e88-b32d-5efca13337a9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClaw的Harness机制完全不同:"}]},{"type":"paragraph","attrs":{"id":"c9035670-3ae8-4592-999e-e5784dd4e531","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"特性t传统WorkflowtOpenClaw Harness"}]},{"type":"paragraph","attrs":{"id":"17ed451c-1979-4551-a11d-03114283d7fb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"执行路径t固定(DAG图)t动态(Agent自主决策)"}]},{"type":"paragraph","attrs":{"id":"5758c9c0-402f-4e4c-b618-da3f3aeb9094","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"约束方式t程序逻辑限制t钩子插入约束点"}]},{"type":"paragraph","attrs":{"id":"83c7f7b7-0bd1-4ae6-bcde-a8d539d0d38f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"灵活性t低(需修改代码)t高(配置即可调整)"}]},{"type":"paragraph","attrs":{"id":"abd8c6cc-1504-45c0-a791-f2304136e52d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"适合场景t确定性业务流程t开放性任务执行"}]},{"type":"paragraph","attrs":{"id":"d3519eaa-7ec9-410b-a666-c93f78890a1b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Harness不是限制Agent「做什么」,而是给Agent划定「边界」——在这个边界内,Agent可以自由决策;一旦触及边界,Hook机制会介入处理。"}]},{"type":"paragraph","attrs":{"id":"ef266012-b571-45a7-bb8b-78a69bb335e6","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Hook钩子机制:源码中的「安全网」"}]},{"type":"paragraph","attrs":{"id":"6d072d9d-93d7-427c-9856-8827470253f8","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClaw的Hook系统允许你在Agent生命周期的关键节点插入自定义逻辑:"}]},{"type":"paragraph","attrs":{"id":"33970323-cb5a-4201-9341-efe9c228b5b9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"// 伪代码示意,对应源码中的 HookRegistry"}]},{"type":"paragraph","attrs":{"id":"340edc9f-800f-4259-bf33-6843bfbe7c25","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"const hooks = new HookRegistry();"}]},{"type":"paragraph","attrs":{"id":"28d344ee-3425-4e2a-8b60-13577be852fc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"id":"6d69ea1d-9ade-4d88-bd0a-bd4bd62673a1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"// 工具调用前:参数校验"}]},{"type":"paragraph","attrs":{"id":"9bcac472-2a50-4a05-bb6a-134042f717eb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"hooks.register("before_tool_call", (toolName, params) => {"}]},{"type":"paragraph","attrs":{"id":"25963b85-3b31-45c3-9cfd-47c3e0e7b38b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"if (toolName === "execute_command") {"}]},{"type":"paragraph","attrs":{"id":"b5690d37-63f7-41f3-ac8f-0c2b8771b34c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"// 命令白名单校验"}]},{"type":"paragraph","attrs":{"id":"fafc6c0f-f5c7-4ef2-b7c9-c1d4d1ed74bf","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"if (!isAllowedCommand(params.command)) {"}]},{"type":"paragraph","attrs":{"id":"5f129b13-2e20-4ec1-9f4f-913d78520ef7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"throw new SecurityException("},{"type":"text","marks":[{"type":"code"}],"text":"命令被拒绝: ${params.command}"},{"type":"text","text":");"}]},{"type":"paragraph","attrs":{"id":"b717762e-ce0d-4ddb-a87d-6afd51f1a9f1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"}"}]},{"type":"paragraph","attrs":{"id":"91d5c881-f4aa-4ec1-8130-8a898bd500b8","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"}"}]},{"type":"paragraph","attrs":{"id":"f3844d90-e123-4504-befa-37867f1a213a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"return params; // 可修改参数或拦截"}]},{"type":"paragraph","attrs":{"id":"9715d8bf-4e29-436e-8ab6-187af0170039","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"});"}]},{"type":"paragraph","attrs":{"id":"c210ae82-3afc-45aa-8174-149601ecaa05","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"id":"32dad668-e7cf-46ad-8eaa-9cb13f64324b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"// 工具调用后:自动测试"}]},{"type":"paragraph","attrs":{"id":"1f1f268d-b4fa-47af-bf40-5d459f503563","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"hooks.register("after_tool_call", (toolName, result) => {"}]},{"type":"paragraph","attrs":{"id":"4090ef23-4b29-4647-bb82-ace4947c1ab7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"if (toolName === "write_file" && result.path.endsWith(".py")) {"}]},{"type":"paragraph","attrs":{"id":"dfa21013-af36-41fe-acf6-fa5a4f7a5fcd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"const testResult = runPytest(result.path);"}]},{"type":"paragraph","attrs":{"id":"1b9617c5-bbea-42bd-a596-941122e13e14","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"if (!testResult.passed) {"}]},{"type":"paragraph","attrs":{"id":"2b9e93cc-a94f-4fee-b1bb-7f3681bcadef","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"// 要求Agent修复"}]},{"type":"paragraph","attrs":{"id":"8bc72bf0-21be-41d2-8480-9313c8f4e9eb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"throw new RequireFixException("},{"type":"text","marks":[{"type":"code"}],"text":"测试失败:n${testResult.errors}"},{"type":"text","text":");"}]},{"type":"paragraph","attrs":{"id":"46ab5606-b6b6-452a-b2a5-e157869530eb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"}"}]},{"type":"paragraph","attrs":{"id":"12e2a2c8-e7ea-447a-846a-dfffbd6c7365","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"}"}]},{"type":"paragraph","attrs":{"id":"0fe3bc6d-9102-4feb-8afd-08ab7a8472cf","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"return result;"}]},{"type":"paragraph","attrs":{"id":"a87ad7a2-4044-44d2-8e39-4688fd6e62d0","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"});"}]},{"type":"paragraph","attrs":{"id":"e48745aa-80f3-4705-affc-dfd7009321eb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"id":"45e0a71c-d38e-4f70-94a4-c2c9fd2a8936","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"// 上下文压缩前:监控"}]},{"type":"paragraph","attrs":{"id":"4997cc7c-f371-4ef3-9f0c-7adbd63da46c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"hooks.register("before_compaction", (stats) => {"}]},{"type":"paragraph","attrs":{"id":"03e619be-e60d-4247-9f68-c910e084a139","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":""},{"type":"text","marks":[{"type":"link","attrs":{"href":"http://log.info","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"log.info"},{"type":"text","text":"("},{"type":"text","marks":[{"type":"code"}],"text":"触发压缩:当前${stats.currentTokens}T,"},{"type":"text","text":" "}]},{"type":"paragraph","attrs":{"id":"0603eba7-4ad8-44e7-88bc-52f0e6a63ccb","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":" "},{"type":"text","marks":[{"type":"code"}],"text":"保留${stats.preservedItems}项关键信息"},{"type":"text","text":");"}]},{"type":"paragraph","attrs":{"id":"cde1ffb7-cc1d-442c-8b9e-ec05dbaf346b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"});"}]},{"type":"paragraph","attrs":{"id":"a99474c5-98fb-4440-aea6-ddf72f2f1db1","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Lobster AI"}]},{"type":"paragraph","attrs":{"id":"285da443-98e4-4faf-8fea-c77959c99aef","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"这种机制在源码中体现为HookRegistry类和AgentRuntime中的钩子调用点。它的精妙之处在于:Agent的核心决策逻辑保持简洁和通用,而具体的业务约束通过配置化的Hook注入。这意味着你可以在不修改核心源码的情况下,为企业场景定制安全策略、合规检查、自动化测试等高级功能。"}]},{"type":"paragraph","attrs":{"id":"86d7f515-74e6-4ed4-89af-182bbb2fb017","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"四、与四大框架对比:OpenClaw站在什么位置?"}]},{"type":"paragraph","attrs":{"id":"ae1c7686-621d-4e90-9550-33c276bf1c77","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"理解OpenClaw的设计哲学,最好的方式是把它放在2026年的Agent框架全景中对比。当前四大主流框架的定位各不相同:"}]},{"type":"paragraph","attrs":{"id":"c82dc394-5f63-4bc0-a642-1ee975e5fd31","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"框架t核心定位t与OpenClaw的关键差异t源码阅读价值"}]},{"type":"paragraph","attrs":{"id":"8f206e3c-8468-451e-bbb0-a7bc3e8b26a2","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"LangChaintAI应用生态瑞士军刀(92k Stars)t生态最全但过度抽象,「什么都封装」导致源码难以追踪t适合学习「如何构建生态」,但不适合学习「如何设计运行时」"}]},{"type":"paragraph","attrs":{"id":"d99d2e50-5013-4999-a873-151647e2136f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"AutoGent多Agent对话标准(38k Stars,微软)t强调Agent间自由对话,缺乏明确的控制平面t适合学习「多Agent协商机制」,但缺乏Harness的约束设计"}]},{"type":"paragraph","attrs":{"id":"a995ddf5-0203-4225-acab-152a189b248a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"CrewAIt角色驱动多Agent(25k Stars)t通过backstory让Agent「代入角色」,但底层控制力弱t适合学习「角色工程」,但难以深入运行时内核"}]},{"type":"paragraph","attrs":{"id":"f06a7ee0-9e8b-472a-917a-2e8f4c54a5b2","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"LangGrapht有状态工作流图(18k Stars)t用图论管理状态转移,适合确定性流程,但牺牲了Agent的自主性t适合学习「状态机设计」,但与OpenClaw的Harness哲学相反"}]},{"type":"paragraph","attrs":{"id":"be487eb7-20d4-4475-99a5-a1da0b9e874e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClawt桌面Agent操作系统(61k Stars)t微内核 控制平面,强调「管控」与「执行」解耦t适合学习「如何设计一个可扩展、可约束、可审计的Agent运行时」"}]},{"type":"paragraph","attrs":{"id":"b572fe25-8637-449b-bdc8-88c8c976291b","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"这个对比不是为了「踩一捧一」,而是为了明确:OpenClaw的源码阅读价值在于它的「运行时设计」。如果你想知道「怎么快速搭一个Agent」,LangChain和CrewAI可能更快;但如果你想知道「一个生产级的Agent系统应该如何管理Prompt、上下文、安全约束」,OpenClaw是目前最好的开源教材。"}]},{"type":"paragraph","attrs":{"id":"d7e2ef70-8535-4378-9bcf-ffab7deaef65","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"五、为什么OpenClaw的源码值得逐行读?"}]},{"type":"paragraph","attrs":{"id":"cd2487cb-eeff-4aa2-af57-6ee8207e22dc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"理解了设计哲学,我们可以回答最初的问题:为什么值得读?"}]},{"type":"paragraph","attrs":{"id":"93f45613-df9b-4167-ac4d-8f5cf5446806","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"理由1:它展示了「极简核心」与「无限扩展」的平衡艺术"}]},{"type":"paragraph","attrs":{"id":"8d7eb458-3d77-4291-ab1d-823d29b7c468","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClaw的核心代码量不大,但每一个扩展点都经过精心设计。Skill系统、Channel系统、Memory系统、Hook系统——他们是与核心运行时同构的「一等公民」。读它的源码,你会学到:如何把20%的核心代码设计得足够通用,让80%的功能通过扩展实现。"}]},{"type":"paragraph","attrs":{"id":"8cc22e6c-1685-4fb0-b309-9e7344334d08","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"理由2:它把「设计决策」写进了代码注释和函数名里"}]},{"type":"paragraph","attrs":{"id":"6b5016ca-6638-4405-b5bf-4eb065d2d9d2","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"很多开源项目的源码像「考古现场」——你猜不出作者为什么这么写。OpenClaw的源码(尤其是TypeScript的类型定义和接口命名)保留了清晰的设计意图。比如Harness不是Workflow,Compaction不是Truncation,Orchestrator不是Scheduler——这些命名差异本身就是设计哲学的体现。"}]},{"type":"paragraph","attrs":{"id":"8ef54c1d-9b75-48ea-ae40-0ac92573699f","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"理由3:它是「本地优先」架构的最佳实践"}]},{"type":"paragraph","attrs":{"id":"d939bedb-a1be-4f64-8f19-4c91f2f71394","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在2026年,数据隐私和合规性越来越重要。OpenClaw的「本地优先」不是营销口号,而是贯穿源码的架构原则:向量检索本地运行、配置外化为Markdown文件、无强制云端依赖、完整的RBAC和审计日志。读它的源码,你会理解如何在零信任环境下设计一个安全的Agent系统。"}]},{"type":"paragraph","attrs":{"id":"c4114eee-661e-4d0d-bb9c-de7d670531ff","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"理由4:它的Hook机制是「可配置安全」的教科书"}]},{"type":"paragraph","attrs":{"id":"58f2d8c5-2d19-499e-9587-16b18b839b31","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Harness Hook的设计,为Agent系统的安全约束提供了一个优雅的范式。这不是简单的「输入过滤」或「输出审查」,而是在Agent自主决策的每一个关键节点插入「可编程的约束」。这种设计思想可以直接迁移到你自己的Agent项目中。"}]},{"type":"paragraph","attrs":{"id":"20b10d47-af2c-4d55-a034-c4561ddab6ff","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"六、阅读本篇后,你应该带走什么?"}]},{"type":"paragraph","attrs":{"id":"62abed53-f2e4-4ab2-af3a-89991134255e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"在继续阅读阶段二的源码解析之前,请确保你已经理解以下概念:"}]},{"type":"paragraph","attrs":{"id":"6182fdd3-ac47-47ad-9336-2d85205b59b7","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"概念t一句话解释t在源码中的对应"}]},{"type":"paragraph","attrs":{"id":"ab6df0f4-9c3a-4588-b077-a8e720aa91bc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"本地优先t数据不出本机,配置即文件t.md配置文件、本地向量库"}]},{"type":"paragraph","attrs":{"id":"97555722-03f5-46ee-a33a-e19fab3320b9","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"微内核t核心只负责调度,功能通过扩展注入tGateway SkillRegistry HookRegistry"}]},{"type":"paragraph","attrs":{"id":"656e0750-6f8a-41db-a52d-4eb1453c5fed","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Prompt Engineeringt动态组装、Token最优、文件驱动tbuildAgentSystemPrompt()"}]},{"type":"paragraph","attrs":{"id":"cf943991-c5bd-4e17-927b-f7e3af267027","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Context Engineeringt按需加载、分层压缩、双路记忆tSkillRegistry.lazyLoad()、CompactionService、MemoryManager"}]},{"type":"paragraph","attrs":{"id":"83d9f7c2-22d6-49fb-9cbc-f5082b3ee0dc","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Harness Engineeringt不限制做什么,只划定边界tHookRegistry、生命周期钩子"}]},{"type":"paragraph","attrs":{"id":"1921c039-1a1e-4437-902f-339cdaeb7f57","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"Gatewayt常驻进程,接收消息,调度Agenttgateway/server.ts、entry.ts"}]},{"type":"paragraph","attrs":{"id":"96b71efd-9edb-411e-930d-ff0a6a2fbd8d","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"如果你对这些概念还有模糊的地方,建议重读本篇的对应章节。因为下一篇(第3篇:《仓库目录结构全景图》),我们将正式进入源码世界,而这些概念就是你手中的地图。"}]},{"type":"paragraph","attrs":{"id":"0e9d2ed0-50b8-41ed-a701-a7ca028c84ec","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"七、写在最后"}]},{"type":"paragraph","attrs":{"id":"d0c4ec78-ab50-4b49-9f7a-7931047f2c6e","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":""好的架构不是让事情变简单,而是让「复杂」变得「清晰」。”"}]},{"type":"paragraph","attrs":{"id":"a1b0aef9-787d-43e0-81bd-7a213a7f9531","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"OpenClaw的源码并不简单——它要处理消息路由、Agent调度、Skill加载、记忆管理、安全约束、多平台接入……但好的架构设计让这种复杂变得「清晰可追踪」。每一个模块都有明确的边界,每一个决策都有可追溯的理由。"}]},{"type":"paragraph","attrs":{"id":"f9635d40-5e72-497e-a4d5-35185e97a8fd","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"我们读源码,不是为了成为「OpenClaw的贡献者」(虽然那也很好),而是为了理解:当面对一个复杂的AI Agent系统时,应该如何思考、如何权衡、如何设计。"}]},{"type":"paragraph","attrs":{"id":"048e50a1-d1e4-4fdd-b529-eeac1cc20d30","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"100篇之后,你不仅能读懂OpenClaw,还能设计一个比它更好的系统——或者至少,知道它哪里好、哪里还可以更好。"}]},{"type":"paragraph","attrs":{"id":"fa3bb1c2-f2ad-4480-af56-526211b3a36c","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"下一篇预告:第2篇《仓库目录结构全景图:src、packages、skills、extensions 各自负责什么》——我们将打开OpenClaw的仓库,用一张图看清它的源码地图。"}]},{"type":"paragraph","attrs":{"id":"bde9bd57-deea-4baf-ac56-7555969118be","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"关于作者"}]},{"type":"paragraph","attrs":{"id":"74662ce7-ab90-4202-8107-cddba348c6ad","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"一个相信"源码面前没有秘密"的开发者。正在用100篇深度解析,带你看清OpenClaw的每一行代码。"}]},{"type":"paragraph","attrs":{"id":"06596792-3198-4860-9c98-f5f068130a97","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"本文是《OpenClaw源码解析:100篇阅读路线图与专家养成指南》系列第2篇。 系列总纲:"},{"type":"text","marks":[{"type":"link","attrs":{"href":"https://cloud.tencent.com/developer/article/2725126","target":"_blank","rel":"noopener noreferrer nofollow","class":null}}],"text":"openclaw源码解读——入门与破局:1. 100篇死磕OpenClaw源码:一份写给技术人的“苦修”路线图与专家养成指南"}]},{"type":"paragraph","attrs":{"id":"410204ec-264f-4342-ae06-6744eb7a975a","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"下一篇:openclaw源码解读——入门与破局:3 仓库目录结构全景图:src、packages、skills、extensions 各自负责什么"}]},{"type":"paragraph","attrs":{"id":"d9e9b938-cdb8-4472-af33-e98bf460b975","textAlign":"inherit","indent":0,"color":null,"background":null,"isHoverDragHandle":false},"content":[{"type":"text","text":"正在规划《OpenClaw源码解读》书籍,欢迎出版社编辑交流"}]}]}","createTime":1786530980,"ext":{"closeTextLink":0,"comment_ban":0,"description":"","focusRead":0},"favNum":0,"html":"","isOriginal":0,"likeNum":0,

img_6a805bfb5f99f30.webp

相关文章

精彩推荐