Gateway 的整体定位与生命周期 全渠道接入:插件化与适配器模式 消息路由:精准投递到 Agent 会话 Agent 装配:构建知识与能力上下文 分布式架构:给 Agent 配备远程“手脚” 配置热重载:不停机的“换引擎”
PART 01
接入与路由
Agent 装备与调用
远程 Agent 工具执行
PART 02
简单渠道只需实现配置解析 + 消息发送的能力 复杂渠道可以实现更多适配器,例如线程回复、群组管理等
const plugin = {
id: "feishu",
name: "Feishu",
description: "Feishu/Lark channel plugin",
configSchema: emptyPluginConfigSchema(),
register(api: OpenClawPluginApi) {
setFeishuRuntime(api.runtime);
api.registerChannel({ plugin: feishuPlugin });
......
},
};exportconst feishuPlugin: ChannelPlugin<ResolvedFeishuAccount> = {
id: "feishu",
......
capabilities: {
chatTypes: ["direct", "channel"],
polls: false,
threads: true,
media: true,
reactions: true,
...事件序列号管理与断线检测 慢客户端保护(防止发送缓冲区堆积) 基于指数退避的自动重连机制 流式输出控制(管理持续发送的 Delta 流)
适配器组合优于继承层次。通过一组可选适配器让渠道按需组合能力,这种组合式架构比继承体系更加灵活。 核心代码的可扩展性。新增渠道时,只需要导入插件,并在入口调用注册方法即可,核心代码与配置无需修改,插件管理器(OpenClaw的ChannelManager)通过插件注册表自动发现并管理新渠道。 最后是通信机制。在 Agent 系统中,网络通信容易被忽视(往往更关注 Agent 的推理)。但如果系统涉及流式输出、多客户端、远程设备,那么从一开始就需要设计好协议格式、重连策略以及流数据控制等机制。
PART 03
飞书群组 A 使用 “研究助手” Agent 飞书群组 B 使用 “运维机器人” Agent 同一个用户在私聊中使用 “默认助手” Discord 某个角色组的成员拥有 专属 Agent
peer:精确绑定到某个群组或用户。
peer.parent:线程消息继承父消息的绑定关系。
team:团队 / 组织级规则。
account:Bot 账号级规则(同一平台可能有多个 Bot)。
channel:通道级兜底规则。
全新的渠道、或全新用户的首次使用 会话过期:每天凌晨重置或者空闲超时(默认1小时) 用户主动发送命令:/new 或者 /reset
PART 04
过滤后的技能列表 格式化后的文本片段(用来注入系统提示词) 相关的环境变量覆盖(Skill 可以声明自己依赖的命令路径等)
会话内一致性 :Skill 快照只会在新会话的第一轮构建,之后的多轮对话都会复用,不会再次扫描。
主动裁剪 :Skill 可以声明自己的平台要求、是否仅限本地等条件。 还支持按 Agent ID 配置白名单,让不同 Agent 看到不同的技能子集。
Owner 门控:身份级别门槛,在进管道之前就隔绝某些高危操作。比如:某些 tool 仅能由渠道的Owner调用
Profile:角色模板,定义某类 Agent 的基本能力边界。比如:一个Coding Agent 可能不允许使用web_search工具。
Provider Profile:同一 Agent 根据不同模型供应商调整能力边界。比如:切换到 Gemini 时某个工具要被移除。
全局策略:组织级别统一规则,所有 Agent 都受约束。比如:组织内所有 Agent 都不能操作远程设备(Nodes)。
Agent 策略:精细化到单个 Agent 的工具权限定制。比如:某个分析 Agent 只能读文件和搜索,但不能调用 exec 工具。
群组/渠道策略:同一 Agent 在不同渠道/群组中有不同的工具能力。比如:公司公告群里的请求不允许用 exec 工具;但研发群可以。
Sandbox 策略:安全隔离环境的硬边界,不可被上层绕过。比如沙箱环境只允许 read 工具,但不允许使用 write 工具。
Subagent 策略:框架层面防“递归爆炸”的系统性保护。比如:subagent 不允许使用 spawn 工具再递归产生 subagent。
白名单(例如某个 iOS 节点只允许 camera.snap 工具) 人工审批(例如调用 sms.send 时需要人工确认)
过度管控:每次工具调用都走安全控制,导致性能与体验下降 安全真空:所有工具一视同仁,某些危险操作(远程)缺乏保护
PART 05
Agent 能操控远程服务器(执行部署脚本、查看日志) Agent 能调用手机能力(读取日历、获取位置、拍照) Agent 能跨设备协同工作
能力声明:新 Node 首次连接时,需要人工审批才能被信任;连接时必须告诉 Gateway 自己支持哪些命令和能力 — 也是后续工具安全的校验依据
断连清理 :当 Node 断开连接时,Gateway 会自动拒绝所有尚未完成的远程调用,防止 Agent 的工具请求长时间挂住
超时机制 :每次远程调用默认 30 秒超时,超时后自动失败并清理
远程 Gateway + 本地客户端 :Gateway 与 Agent 部署在 VPS 或企业内网服务器,本地通过 CLI 或 Web UI 远程管理。这种模式适合团队共享
远程 Gateway + 本地 Node:Gateway 在云端,本机既是操作者也是Node。Agent 的决策在云端,但工具回到本机执行(访问本地资源)
Linux 服务器上的 system.run 执行部署脚本 iPhone 上的 calendar.events 查看日程 Mac 上的 browser.proxy 操作浏览器
PART 06
{ prefix: "hooks.gmail", kind: "hot", actions: ["restart-gmail-watcher"] },
// → 改了 hooks.gmail.model,只重启 Gmail 监听器
{ prefix: "hooks", kind: "hot", actions: ["reload-hooks"] },
// → 改了其他 hook 配置,重载 hook 模块
{ prefix: "cron", kind: "hot", actions: ["restart-cron"] },
// → 改了定时任务配置,只重启 cron 调度器END
