OpenClaw 架构演进问答

Agent|字数 8,846|阅读时长 ≈ 23 分钟

版本:2026-07-04

定位:这是一篇基于 openclaw-architecture-learning-guide.md 改写的问答式学习文档。它用“遇到问题 -> 做出设计 -> 又遇到新问题 -> 继续迭代”的方式,帮助你理解 OpenClaw 为什么会长成现在这个样子。

说明:本文是架构学习推演,不是 OpenClaw 官方真实历史时间线。它更像一次架构复盘剧本:把现在的组件倒推成一连串自然的问题和回答。

0. 先给一个结论

问:OpenClaw 到底是什么?

答:OpenClaw 是一个自托管个人 AI 助手平台。它不是“给模型套个聊天框”,而是把消息渠道、Gateway、Agent Runtime、Context、Memory、Tools、Plugins、Nodes、安全策略和多 Agent 路由拼成一套能长期运行的系统。

如果用一句更工程味的话说:

OpenClaw 解决的是:一个 AI 助手如何长期在线、安全接入真实渠道、调用真实工具,并且别在第二天早上忘了昨天晚上说过什么。

1. 最开始的问题:我只是想随时找 AI 助手

问:为什么要做 OpenClaw?直接打开一个网页聊天不就行了吗?

答:网页聊天适合“我现在主动去问它”。但个人助手更像“我在哪里,它就在哪里”。你可能在 Telegram、Slack、WhatsApp、iMessage、WebChat、CLI 里发消息,希望同一个助手能接住。

于是第一个问题出现了:

用户入口太多,模型入口只有一个,中间缺一个能长期在线的中枢。

问:所以最早的版本会是什么样?

答:最自然的第一版就是:

Code
Channel -> LLM -> Reply

某个聊天渠道收到消息,调用模型,回一段文本。看起来很美,跑起来也快,演示时掌声不错。

问:这版有什么问题?

答:问题来得非常快:

  • 每接一个渠道,都要重新写一套消息处理。
  • 渠道字段不一样,Telegram 有 bot token,WhatsApp 有 QR pairing,Slack 有 workspace/thread。
  • 模型响应可能很长,但渠道有长度限制。
  • 用户连续发三句话,系统可能触发三次模型调用。
  • 重连或重投可能导致同一条消息被处理两遍。

一句话:第一版不是坏,而是“每个渠道都在认真表达自己的个性”。系统一多,个性就变成维护成本。

2. 第一次迭代:引入 Gateway

问:怎么解决多渠道混乱?

答:需要一个 Gateway。它专门负责接入真实世界:

  • 连接不同消息渠道。
  • 统一 inbound message。
  • 处理认证、状态、健康检查。
  • 暴露 WebSocket / HTTP 控制面。
  • 把消息路由到正确 session 和 Agent。

架构变成:

Code
Channels -> Gateway -> Agent Runtime -> Gateway -> Channels

问:Gateway 为什么这么重要?

答:因为它是控制平面。控制平面负责回答几个硬问题:

  • 谁能连接?
  • 消息从哪里来?
  • 该发给哪个 Agent?
  • 这个 session 正在运行吗?
  • 工具和插件是否可用?
  • 系统是否健康?

没有 Gateway,每个渠道都要自己理解这些问题。那就不是架构,是复制粘贴比赛。

启发

AI 助手不是只有“模型调用”。只要它接入真实用户,第一核心问题就变成:

输入从哪里来,状态归谁管,输出怎么安全回去。

这也是 OpenClaw 选择 Gateway-first 的原因。

3. 第二个问题:一条消息不是一条字符串

问:有了 Gateway,是不是就稳了?

答:还早。真实消息不是一句干净的字符串,而是一团带着渠道脾气的数据。

它可能包含:

  • channel id。
  • account id。
  • sender。
  • group / thread。
  • reply 引用。
  • 附件。
  • message id。
  • 平台状态。
  • 是否是重发。

问:怎么处理?

答:Channel Adapter 负责归一化。它把不同渠道的输入转换成 OpenClaw 内部能理解的消息,再把输出转换回渠道格式。

Code
Telegram messageSlack eventWhatsApp inboundWebChat frame      |      vNormalized OpenClaw message

问:这一步有什么价值?

答:Runtime 不需要知道 Telegram 和 Slack 的细节。它只处理统一后的消息、上下文、工具和输出。

这叫边界清楚。边界不清楚时,最容易出现“改一个 Slack thread,顺手弄坏 WhatsApp 回复”的小型惊喜。

4. 第三个问题:消息要归到哪里?

问:消息统一了以后,下一步是什么?

答:要知道它属于哪个 session。

同一个用户可能在多个渠道说话。同一个渠道可能有 DM、group、thread。同一个 Gateway 可能托管多个 Agent。如果没有 session key,系统就会把上下文搅在一起。

问:怎么解决?

答:Gateway 通过 channel、account、peer、group、thread、binding 等信息生成或查找 session key。

Code
Inbound message  -> routing  -> session key  -> session transcript  -> agent run

问:为什么 session store 很关键?

答:模型本身是无状态的。让它像“记得刚才聊过什么”,靠的是 session transcript、context assembly 和 memory。

换句话说:

不是模型记性好,是系统帮它把该看的东西拿回来了。

5. 第四个问题:用户不是按回车节拍器发消息的

问:用户连续发三条消息怎么办?

答:如果每条都立刻触发一次 agent run,会出现几个问题:

  • 成本上升。
  • 回复可能乱序。
  • 第二条消息还没被看到,第一轮模型已经开始回答。
  • 用户其实只是把一句话分成三段发。

问:OpenClaw 怎么处理?

答:引入 dedupe、debounce 和 active-run queue。

机制解决什么
dedupe防止同一条消息因重连或重投被处理两次
debounce把短时间连续消息合并成一个 turn
active-run queuesession 正在运行时,后续消息可以排队、追加、转向或打断
chunking模型长输出按渠道限制分块发送

问:这算并发问题吗?

答:算,而且是非常现实的并发问题。不是那种只出现在论文图里的并发,而是用户真的会在你还没答完时补一句“等等,我刚才说错了”。

系统需要决定:

  • 新消息是 follow-up 还是 interrupt?
  • 当前 run 要继续还是转向?
  • 多个输出如何避免交错?
  • 同一 session 能否同时跑多个 agent run?

启发

聊天系统的并发不是简单的线程数问题,而是“用户意图流”的一致性问题。

OpenClaw 把这个问题放在 Gateway 和 session 层处理,而不是丢给模型现场发挥。模型已经够忙了,不必让它兼职交通调度。

6. 第五个问题:调用模型和跑 Agent 不是一回事

问:Gateway 收到消息后,直接调用模型不行吗?

答:可以,但很快不够用。

因为一次 Agent run 不只是:

Code
prompt -> model -> text

而是:

Code
intake  -> context assembly  -> model inference  -> tool execution  -> streaming replies  -> persistence

问:所以需要 Agent Runtime?

答:对。Runtime 负责组织一次完整的 Agent loop:

  • 选模型。
  • 组装 system prompt。
  • 注入 workspace 文件。
  • 裁剪或压缩历史。
  • 暴露可用工具。
  • 处理 tool call。
  • 接收 provider stream。
  • 写回 transcript。
  • 把事件交还 Gateway。

问:Provider 和 Runtime 有什么区别?

答:Provider 负责“怎么调用某个模型服务”。Runtime 负责“怎么完成一次 Agent 任务”。

组件关注点
ProviderAPI、认证、流式协议、模型能力
Runtimeprompt、context、tools、session、重试、compaction、事件

把这俩混在一起,系统会变成“换个模型像动手术”。分开以后,模型供应商可以换,Agent 执行逻辑还能稳定。

7. 第六个问题:模型到底该看到什么?

问:直接把全部聊天记录塞给模型,不好吗?

答:一开始很好,直到上下文窗口不够、成本上升、速度下降,然后你发现“全部塞进去”是架构界的临时甜点。

问:OpenClaw 怎么处理上下文?

答:引入 Context Engine。它负责四件事:

阶段做什么
Ingest新消息进入时存储或索引
Assemble模型运行前组装合适上下文
Compact过长时把旧历史总结成 compact entry
After turn运行结束后持久化或维护索引

问:Compaction 是删除历史吗?

答:不是。历史仍然保存在 session transcript。Compaction 改变的是“下一次模型能看到什么”。

可以理解为:

Code
完整历史保存在磁盘模型上下文里放摘要 + 最近消息 + 必要工具结果

问:这里有什么性能收益?

答:三个方向:

  • 减少 token 输入,降低成本。
  • 缩短模型处理上下文的时间。
  • 避免 provider context overflow。

但也有代价:摘要可能丢细节。所以 OpenClaw 要尽量保留最近消息,工具调用和 tool result 也尽量成对保留。

启发

长期对话不是“无限上下文”,而是“可恢复的叙事”。系统要知道哪些细节该保留原文,哪些可以变成摘要。

8. 第七个问题:长期记忆怎么做才不像玄学?

问:Agent 说它记得我,是真的记得吗?

答:在 OpenClaw 里,记忆不是神秘状态,而是写在磁盘上的 Markdown 文件和相关索引。

主要有三层:

文件适合内容
长期 curated memoryMEMORY.md稳定事实、偏好、长期决策
每日工作记忆memory/YYYY-MM-DD.md当天细节、session summary
Dreaming reviewDREAMS.md后台整理、复盘、人类复核

问:为什么不用一个巨大的 memory 文件?

答:因为记忆不是仓库清仓。长期记忆要短、准、可维护;当天细节可以多一点;复盘材料可以等人类确认后再进入长期记忆。

问:Memory Search 解决什么?

答:解决“历史太多,不能每次全塞进 prompt”的问题。它用关键词、embedding 或混合检索,把相关记忆片段召回到上下文。

问:Memory 能当安全机制吗?

答:不能。Memory 可以提醒“用户偏好 TypeScript”,但不能当权限系统。

硬约束必须放在:

  • Tool policy。
  • Sandbox。
  • Exec approvals。
  • Channel allowlist。
  • Gateway auth。
  • 独立 host / OS user。

记忆是便签,不是门锁。

9. 第八个问题:助手不能只会说,还要能做

问:只聊天有什么不够?

答:真实助手要能查文件、发消息、跑命令、搜资料、操作设备、调用 API。于是需要 Tools。

问:Tool 是什么?

答:Tool 是模型可调用的结构化动作。它有名称、描述、输入 schema 和返回结果。

好工具应该让模型一看就知道:

  • 它能做什么。
  • 需要哪些参数。
  • 返回什么信息。
  • 失败时怎么解释。

问:工具越多越好吗?

答:不。工具越多,选择难度越大,风险也越大。

OpenClaw 要根据 active profile、allow/deny policy、provider 限制、sandbox、channel 权限、plugin 加载状态来决定哪些工具对模型可见。

问:这里的稳定性问题是什么?

答:工具调用会失败,会超时,会返回奇怪数据,也可能带来副作用。

所以工具层要关注:

  • schema 清晰。
  • 错误可恢复。
  • 结果内容和诊断 metadata 分离。
  • 高风险动作需要审批。
  • 写操作和读操作分开。

这不是形式主义。工具结果一乱,模型就会一本正经地沿着错误方向继续努力,努力得让人有点心疼。

10. 第九个问题:能力不能都写进核心

问:如果每个工具、渠道、模型 provider 都写进核心,会怎样?

答:核心会越来越胖,最后没人敢动。新增一个渠道可能影响启动,新增一个工具可能影响安全面,新增一个 provider 可能影响 runtime。

问:怎么解决?

答:引入 Plugin 架构。

插件系统分四层:

职责
Manifest + discovery发现插件,读取声明
Enablement + validation判断启用、禁用、阻止、配置是否有效
Runtime loading加载运行时代码,注册工具、hook、provider、channel
Capability registry让核心通过 typed contracts 使用能力

问:为什么 manifest 重要?

答:因为它让系统在执行插件代码前,先知道插件声称自己提供什么能力、需要什么配置。

这一步很像“先看身份证,再请进屋”。虽然不能保证对方一定完美,但至少不是闭眼开门。

问:插件带来的新风险是什么?

答:原生插件通常和 Gateway 同进程运行,不是沙箱代码。

所以:

  • 插件 bug 可能拖垮 Gateway。
  • 恶意插件等价于执行任意代码。
  • plugins.allow 信任的是插件 id,不是魔法护盾。
  • workspace 插件适合开发,不适合生产随便开。

启发

扩展性和供应链风险总是一起出现。系统越容易长能力,越要认真管理能力边界。

11. 第十个问题:外部生态怎么接?

问:有 Plugin 了,为什么还要 MCP?

答:Plugin 是 OpenClaw 内部扩展机制。MCP 是更通用的 AI 工具/资源/提示协议。

可以简单区分:

概念本质
PluginOpenClaw 的安装式扩展
MCP Server外部系统按 MCP 协议暴露 tools/resources/prompts

问:怎么理解 MCP?

答:可以把 MCP 看成外部能力的标准接口。OpenClaw 可以消费 MCP server,把外部工具纳入 Agent 能力系统。

启发

能力接入要标准化,但执行边界要分清。能连上,不等于应该无条件信任。

12. 第十一个问题:动作到底在哪台机器执行?

问:如果用户说“帮我跑个命令”,命令跑在哪里?

答:这就是 Node 要解决的问题。

Gateway 主机可以负责消息、路由和模型运行;Node 可以是另一台设备或主机,提供执行能力或设备能力。

问:Node 让系统多了什么问题?

答:位置问题和权限问题。

  • 命令在哪台机器执行?
  • 审批文件在哪个 host 生效?
  • Node 如何 pairing?
  • 远程 Gateway 是通过 SSH tunnel、Tailscale 还是别的网络方式连接?
  • 移动设备的 foreground-only 能力是否可用?

启发

一旦系统能跨设备执行动作,“在哪里执行”就和“执行什么”一样重要。

远程执行不是把工具搬远一点,而是把信任边界也搬了出去。

13. 第十二个问题:我想要多个助手

问:一个 Gateway 能不能托管多个 Agent?

答:可以。OpenClaw 支持 multi-agent routing。

一个 Agent 不只是一个 prompt,而是一整个 per-persona scope:

  • Workspace。
  • AGENTS.mdSOUL.mdUSER.md
  • agentDir
  • auth profiles。
  • model registry。
  • session store。
  • skill allowlist。
  • channel bindings。

问:为什么不只用一个 Agent,然后 prompt 里写“你现在是 coding 助手”?

答:因为 prompt 不是隔离边界。

不同 Agent 可能需要不同工具、不同凭据、不同记忆、不同渠道绑定和不同权限。如果只换一句 prompt,状态和权限仍然混在一起。

问:多 Agent 带来什么新问题?

答:隔离问题。

  • 不要复用 agentDir
  • 不要共享高权限凭据。
  • 每个 Agent 要有独立 session store。
  • tool policy 要按 Agent 配。
  • binding 顺序要可审计。

问:Delegate 又是什么?

答:Delegate 是有独立身份、权限和审计轨迹的代理人。它不是假装成人类账号,而是在限定范围内代表某人或组织行动。

能力可以分层:

层级能力风险
Tier 1Read-only + Draft读数据并起草,人类发送
Tier 2Send on behalf用 delegate 身份发送和创建事件
Tier 3Proactive按 standing orders 自主执行

从 Tier 1 开始,比直接奔向 Tier 3 更像工程,少一点冒险文学。

14. 第十三个问题:安全不是写一句“请你安全”就完事

问:OpenClaw 的安全模型核心是什么?

答:一个 Gateway 对应一个受信任操作边界。OpenClaw 不是让多个互不信任用户共享同一个 tool-enabled Agent 的强隔离多租户系统。

问:为什么要这么强调?

答:因为只要多个不可信用户能给同一个 Agent 发消息,他们就在共享这个 Agent 的工具授权风险。

如果 Agent 能读文件、跑命令、发消息,那用户输入就不是普通聊天,而是可能影响真实系统的指令源。

问:主要安全控制点有哪些?

答:

控制点作用
Gateway auth控制谁能连接 Gateway
Channel allowlist / pairing控制谁能通过渠道触发 Agent
Tool policy控制模型能看到和调用哪些工具
Sandbox控制执行环境和文件/网络边界
Exec approvals控制 host/node 命令执行
SecretRefs减少明文凭据暴露
Audit/logs追踪 channel、tool、session、cron、安全事件
Separate hosts/users真正拆分不可信边界

问:禁止写文件工具就安全了吗?

答:不一定。如果 exec 仍然可用,shell 命令也能写文件。

所以“只读”不是一句 deny write 就完成,而要同时考虑:

  • runtime tools。
  • filesystem tools。
  • sandbox filesystem policy。
  • host boundary。
  • exec approvals。

安全配置最怕“看起来关了门,其实窗户开着,还贴了欢迎光临”。

15. 第十四个问题:并发、稳定、性能怎么逐步解决?

问:OpenClaw 可能遇到哪些并发问题?

答:

  • 同一 session 同时来了多条消息。
  • 同一消息被渠道重投。
  • Agent run 还没结束,用户要求改方向。
  • 模型 stream 和 channel chunking 交错。
  • 多 Agent 共用 Gateway 时路由必须稳定。
  • cron、channel event、manual command 同时触发。

问:对应的解决方式是什么?

答:

问题迭代设计
重复消息inbound dedupe
连续短消息debounce
session 正在运行active-run queue / steer / follow-up / interrupt
长输出streaming + chunking
渠道差异Channel Adapter
多 Agentbinding + per-agent session/workspace
状态恢复session transcript + persistence

问:稳定性问题怎么处理?

答:稳定性主要靠边界、持久化和可观测性:

  • Gateway 负责健康检查和事件。
  • Runtime 把一次 run 拆成清晰阶段。
  • Session transcript 保存完整历史。
  • Context compaction 处理上下文溢出。
  • Tool policy 限制能力暴露。
  • Plugin manifest 先声明能力再加载行为。
  • doctorstatussecurity audit 帮助发现配置问题。

问:性能问题主要在哪里?

答:

  • 上下文太长,token 成本高。
  • 检索或 memory search 太慢。
  • 模型 stream 延迟。
  • 渠道发送限制导致输出分块。
  • 插件或工具调用拖慢 run。
  • 多 Agent、多渠道增加路由和状态维护成本。

问:怎么改进?

答:

性能压力改进方向
上下文太长compaction、context pruning、只召回相关 memory
模型调用慢streaming、合理模型选择、减少无用上下文
工具慢超时、错误可恢复、减少不必要工具暴露
渠道输出慢chunking、格式化、按渠道限制发送
状态复杂session key、binding、agentDir 分离

启发

Agent 系统的性能优化不只是“让模型快一点”。很多时候,更有效的是少发无用上下文、少暴露无用工具、少制造不必要的 agent run。

也就是说,先别急着换发动机,看看是不是后备箱里装了三吨历史聊天记录。

16. 第十五个问题:为什么要有 Workspace?

问:Workspace 解决什么?

答:Workspace 是 Agent 的家目录,也是上下文文件的来源。

常见文件包括:

  • AGENTS.md:操作说明和长期规则。
  • SOUL.md:人格、语气、边界。
  • USER.md:用户信息和偏好。
  • TOOLS.md:本地工具说明。
  • MEMORY.md:长期记忆。
  • memory/YYYY-MM-DD.md:每日工作记忆。

问:Workspace 是沙箱吗?

答:不是。Workspace 是默认 cwd,不是硬隔离。除非启用 sandbox,否则绝对路径仍可能访问宿主机其它位置。

问:为什么这点重要?

答:因为很多人会误以为“把 Agent 放进某个目录”就等于隔离。实际上目录只是房间号,门锁要靠 sandbox、权限和 host 边界。

17. 第十六个问题:可观测性从哪里来?

问:一个 Agent 做错了,怎么查?

答:需要能追踪一条消息完整路径:

Code
Inbound message  -> channel normalization  -> routing / binding  -> session key  -> debounce / queue  -> context assembly  -> model stream  -> tool calls  -> reply chunking  -> channel delivery  -> transcript persistence

问:为什么 transcript 很重要?

答:因为它保存了系统实际发生过什么,而不是我们事后希望它发生过什么。

出现问题时,要看:

  • 输入是什么。
  • 路由到哪个 Agent。
  • 模型看到了什么上下文。
  • 哪些工具可见。
  • 调用了哪些工具。
  • 工具返回了什么。
  • 最终发给用户什么。

问:有什么学习建议?

答:不要一上来泛读全部源码。先用一条消息做断点地图。沿着 inbound 到 outbound 追一遍,比硬啃目录树有效得多。

18. 第十七个问题:最终架构为什么是这样?

问:能不能把演进过程压缩成一张表?

答:可以。

阶段遇到的问题设计回应
只接一个渠道能聊,但入口单一Channel 接入
多渠道混乱字段、认证、回复限制不同Gateway + Channel Adapter
上下文混乱不知道消息属于谁Session key + Session Store
连续消息和重投重复 run、乱序、成本高dedupe + debounce + queue
不是单次问答需要工具、流式、持久化Agent Runtime
上下文过长token 成本、overflowContext Engine + Compaction
想长期记住模型无状态Workspace + Memory files + search
想真实行动只会说不会做Tools
能力越来越多核心膨胀Plugin + capability registry
外部生态接入每个系统都自定义MCP
跨设备执行不知道命令在哪跑Nodes
多人格/多职责prompt 不够隔离Multi-agent routing
真实风险prompt 不能当安全边界auth + allowlist + policy + sandbox + approvals + audit

启发

一个长期运行的 AI 助手,不是“模型聪明一点”就够了。它需要的是一整套运行系统:

  • 接得住真实消息。
  • 分得清身份和会话。
  • 控得住工具和权限。
  • 管得住上下文和记忆。
  • 扛得住并发和失败。
  • 查得出为什么出错。
  • 能逐步扩展能力。

模型是大脑,但 Gateway、Runtime、Context、Memory、Tools 和安全策略是身体、神经和刹车。只有大脑没有刹车,工程师睡觉会不踏实。

19. 复述模板

问:如果面试或学习分享里要快速讲 OpenClaw,怎么说?

答:可以这样说:

Code
OpenClaw 是一个自托管 AI 助手平台。它最核心的设计是 Gateway-first:Gateway 负责接入 Telegram、Slack、WhatsApp、WebChat 等渠道,做认证、归一化、去重、路由、session 管理和健康检查;消息进入某个 Agent 后,Agent Runtime 负责组装 system prompt、workspace 文件、session history、memory 和工具定义,调用模型并处理 tool calls;Context Engine 和 compaction 负责控制上下文长度;Memory 用 Markdown 文件和索引保存长期信息;Tools、Plugins、MCP 和 Nodes 负责扩展能力;安全上依赖 Gateway auth、channel allowlist、tool policy、sandbox、exec approvals、audit 和独立 host/user,而不是依赖 prompt 自觉。

20. 最后一个问题:学习 OpenClaw 应该抓哪条线?

问:这么多组件,先学哪个?

答:抓一条消息的旅程:

Code
用户发消息  -> Channel  -> Gateway  -> Routing  -> Session  -> Context  -> Runtime  -> Model  -> Tool  -> Stream  -> Channel reply  -> Transcript / Memory

每个组件都问三个问题:

  1. 它解决了什么问题?
  2. 如果没有它,系统会怎样失败?
  3. 它引入了什么新风险?

能这样问,OpenClaw 的架构就不是一堆名词,而是一条被问题推动出来的路径。

这也是架构学习最有趣的地方:好系统不是一开始就完整,它是在一次次“这个也会坏?”之后,慢慢长出边界、状态、策略和一点点成熟气质。

21. 术语说明

按本文中首次出现的大致顺序排列。

术语简洁解释
OpenClaw一个自托管个人 AI 助手平台,用系统化方式接入渠道、管理上下文、调用工具并长期运行。
GatewayOpenClaw 的接入和控制中枢,负责连接渠道、认证、归一化消息、路由、会话管理和健康检查。
Agent Runtime / Runtime执行一次 Agent 任务的运行层,负责组装上下文、调用模型、处理工具调用、流式输出和持久化结果。
Context模型本轮运行时能看到的信息集合,包括最近消息、摘要、记忆、工具结果和必要文件,不等于全部历史。
Memory长期保存并可检索的记忆信息,通常记录用户偏好、稳定事实、决策和重要历史。
Tools / Tool模型可以调用的结构化动作,例如查文件、运行命令、调用 API 或发送消息。
Plugins / PluginOpenClaw 的安装式扩展机制,用来向系统增加工具、渠道、模型 provider、hook 等能力。
Nodes / Node提供执行能力或设备能力的节点,可以是 Gateway 所在主机,也可以是另一台设备或远程主机。
Agent具有独立配置、记忆、工具权限和会话状态的助手实例,不只是一个 prompt。
Channel用户发消息的入口渠道,例如 Telegram、Slack、WhatsApp、WebChat 或 CLI。
CLICommand Line Interface,命令行入口;用户可以通过终端与系统交互或管理系统。
LLMLarge Language Model,大语言模型,负责根据上下文生成回复或决定是否调用工具。
bot token平台颁发给机器人的认证凭据,例如 Telegram bot token;用于证明“这个机器人是谁”。
QR pairing通过扫描二维码完成账号或设备配对的认证方式,常见于 WhatsApp 等渠道。
workspace / threadSlack 等协作平台里的组织空间和会话线索,用来区分消息属于哪里、该回复到哪条讨论。
WebSocket / HTTPGateway 对外暴露控制面或通信能力时常用的网络协议。
Control plane控制系统运行状态和路由策略的平面,关注“谁能连、消息去哪、系统是否健康”等问题。
Channel Adapter渠道适配器,把不同渠道的原始消息转换成 OpenClaw 内部统一格式,也把回复转换回渠道格式。
Normalized message归一化后的消息对象,屏蔽不同渠道字段差异,让 Runtime 面对统一输入。
session一段连续对话或任务的会话范围,用来把消息、上下文和运行状态归在一起。
session key用 channel、account、peer、group、thread、binding 等信息生成的会话标识。
session transcript会话的完整记录,保存用户输入、模型输出、工具调用和结果,便于恢复和排查问题。
context assembly运行前组装上下文的过程,决定本轮模型应该看到哪些历史、记忆、文件和工具结果。
dedupe去重机制,防止渠道重连或重投导致同一条消息被处理多次。
debounce防抖机制,把短时间连续到达的多条消息合并成更自然的一轮输入。
active-run queue会话已有 Agent run 正在执行时,用于排队、追加、转向或打断后续消息的队列机制。
chunking把过长的模型输出拆成多个小块,适配不同渠道的消息长度限制。
Agent run一次完整的 Agent 执行过程,从接收输入、组装上下文、调用模型,到工具执行和写回结果。
Provider模型服务适配层,负责对接具体模型 API、认证方式、流式协议和模型能力差异。
system prompt给模型的系统级指令,定义助手行为边界、角色、规则和执行要求。
tool call模型请求调用某个工具的动作,通常包含工具名和结构化参数。
provider stream / stream模型服务持续返回输出片段的流式结果,可用于边生成边回复。
Context Engine管理上下文的组件,负责新消息进入、运行前组装、过长时压缩以及运行后维护索引。
Compaction上下文压缩,把较早历史整理成摘要或 compact entry,以降低 token 成本并避免上下文溢出。
token模型处理文本的基本计量单位,输入和输出 token 数会影响成本、速度和上下文上限。
Memory Search记忆检索机制,从大量历史记忆中召回与当前任务相关的片段。
Tool policy工具权限策略,决定哪些工具可见、可调用,以及高风险操作是否需要审批。
Sandbox沙箱,限制工具或命令能访问的文件、网络和执行环境边界。
Exec approvals命令执行审批机制,用来控制高风险 host/node 命令是否允许运行。
Channel allowlist渠道白名单,限制哪些账号、群组、thread 或绑定可以触发 Agent。
Gateway authGateway 认证机制,控制谁能连接或管理 Gateway。
host / OS user运行系统的主机和操作系统用户,是实际文件、进程和权限边界的重要来源。
schema工具输入输出的结构说明,帮助模型和系统知道参数格式、必填字段和返回形态。
metadata辅助诊断或描述结果的元数据,例如耗时、状态、错误码,不应和正文结果混在一起。
active profile当前启用的配置档,用来决定模型、工具、权限或运行策略。
allow/deny policy允许或禁止某些能力的策略规则,常用于工具、渠道、插件和权限控制。
Manifest插件清单文件,声明插件身份、能力、配置需求和加载信息。
Capability registry能力注册表,让核心系统通过明确契约发现和使用插件提供的能力。
plugin id插件的唯一标识;plugins.allow 信任的是这个标识对应的插件。
workspace plugin从工作区加载的插件,适合本地开发和调试,生产环境应谨慎启用。
MCPModel Context Protocol,一种通用协议,用于让外部系统向 AI 应用暴露工具、资源和提示。
MCP Server按 MCP 协议提供 tools、resources、prompts 的外部服务。
resources / promptsMCP 中的资源和提示能力;resources 提供可读取内容,prompts 提供可复用提示模板。
pairing节点、设备或账号建立可信连接的配对过程。
SSH tunnel / Tailscale常见远程连接方式,用来让 Gateway 和远程 Node 或设备安全通信。
foreground-only只在应用处于前台时可用的能力,常见于移动设备限制。
multi-agent routing多 Agent 路由机制,根据渠道、绑定、会话或策略把消息送到正确的 Agent。
per-persona scope每个 Agent 独立的人格和权限范围,包括 workspace、记忆、工具、凭据和会话。
WorkspaceAgent 的工作目录和上下文文件来源,存放说明、记忆、用户信息和本地工具文档。
AGENTS.md描述 Agent 操作规则、长期约束和工作方式的文件。
SOUL.md描述 Agent 人格、语气、边界和交互风格的文件。
USER.md描述用户信息、偏好和长期背景的文件。
TOOLS.md描述本地工具、命令或使用注意事项的文件。
MEMORY.md保存长期 curated memory 的文件,适合放稳定、重要、经过整理的信息。
agentDir某个 Agent 的独立目录,用来隔离配置、记忆、会话和相关状态。
model registry模型注册表,记录可用模型及其能力、供应商和调用配置。
skill allowlist技能白名单,控制某个 Agent 可以使用哪些技能或能力包。
channel bindings渠道绑定规则,定义某个渠道、账号、群组或 thread 应该连接到哪个 Agent。
Delegate有独立身份、权限和审计轨迹的代理人,用于在限定范围内代表个人或组织行动。
standing orders预先授权的常驻指令,让 Delegate 在明确边界内主动执行任务。
SecretRefs对密钥的引用方式,用引用代替明文凭据,降低泄露风险。
Audit / logs审计和日志,记录 channel、tool、session、cron、安全事件等,便于追踪问题。
cron定时任务机制,可以按时间触发 Agent 或系统操作。
doctor / status / security audit诊断类命令或检查能力,用于查看系统状态、配置问题和安全风险。
Transcript对话和执行过程的记录,可用于恢复上下文、复盘行为和排查错误。
0