OpenClaw v2026.4.19-beta.1 发布:跨代理子代理路由修复与 CDP 连接优化
OpenClaw v2026.4.19-beta.1 发布:跨代理子代理路由修复与 CDP 连接优化
摘要:OpenClaw 于 4 月 19 日发布 v2026.4.19-beta.1 测试版,聚焦多代理场景下的渠道路由修复与浏览器 CDP 连接优化。核心特性包括:跨代理子代理 spawns 路由修复(子会话不再继承调用者账户,支持共享房间/工作区/多账户场景)、Telegram 回调编辑错误处理(永久编辑错误视为完成更新,避免陈旧按钮阻塞更新水印)、浏览器 CDP 连接优化(WSL 到 Windows Chrome 端点不再被误判离线、阶段特异性 CDP 就绪诊断)。Codex token 统计修复(累计应用服务器 token 不再被误计为新鲜上下文使用)。本文深度解析 v2026.4.19-beta.1 的子代理路由机制、CDP 连接诊断、Telegram 回调处理及 5 项修复的技术原理,为使用多代理协作与浏览器集成的用户提供操作指南。
一、版本概览:多代理协作与浏览器连接修复
1.1 发布信息
| 版本号 | 发布时间 | 类型 | 核心主题 |
|---|---|---|---|
| v2026.4.19-beta.1 | 4 月 19 日 01:10 | Beta 预发布 | 子代理路由、CDP 连接、Telegram 回调 |
发布节奏分析:
- Beta 先行:关键修复先在 beta 版测试,收集反馈后发布正式版
- 功能聚焦:从"模型升级 + 语音集成"(v2026.4.15)转向"多代理协作 + 浏览器连接"
- 修复密度:5 项修复,涵盖代理路由、渠道、浏览器、Codex 四大维度
1.2 关键变更速览
| 类别 | 核心变更 | 影响范围 |
|---|---|---|
| 代理路由 | 跨代理子代理 spawns 路由修复 | 多代理协作用户 |
| 渠道修复 | Telegram 回调编辑错误处理 | Telegram 用户 |
| 浏览器连接 | CDP 连接优化、WSL 到 Windows 支持 | 浏览器集成用户 |
| Codex 修复 | token 统计修复 | Codex 用户 |
二、跨代理子代理路由修复:多账户场景的正确隔离
2.1 问题背景
问题描述(PR #67508):
- 场景:在多代理、共享房间、工作区或多账户设置中,父代理 spawns 子代理
- 旧行为:子会话继承调用者(父代理)的账户,而非目标代理的绑定账户
- 后果:
- 子代理消息发送到错误的渠道账户
- 权限混乱,子代理可能访问不应访问的资源
- 在多租户场景中导致数据泄露风险
示例场景:
场景:公司使用 OpenClaw 管理多个客户支持渠道
代理 A(绑定到客户 X 的 Telegram)
└─ spawns → 子代理(本应绑定到客户 X)
├─ 旧行为:继承代理 B 的账户(错误!)
└─ 新行为:绑定到代理 A 的账户(正确!)
代理 B(绑定到客户 Y 的 Telegram)
2.2 修复方案
核心机制:
- Target Agent Bound Channel:跨代理子代理 spawns 通过目标代理的绑定渠道账户路由
- Preserve Peer Bindings:保留对等体和工作区/角色范围的绑定
- Isolate Session Context:子会话不再继承调用者的账户上下文
技术实现:
// 伪代码示例
async function spawnSubagent(parentAgent, targetAgent, context) {
// 旧逻辑:继承父代理账户
// const account = parentAgent.account;
// 新逻辑:使用目标代理的绑定账户
const account = targetAgent.boundChannelAccount;
// 保留对等体和工作区/角色绑定
const peerBindings = context.peerBindings;
const workspaceBindings = context.workspaceBindings;
const roleBindings = context.roleBindings;
return createSession({
agent: targetAgent,
account: account,
peerBindings: peerBindings,
workspaceBindings: workspaceBindings,
roleBindings: roleBindings
});
}
用户价值:
- 正确隔离:多租户场景中,子代理消息发送到正确的渠道
- 权限清晰:子代理仅访问目标代理授权的资源
- 多账户支持:支持单个 OpenClaw 实例管理多个独立账户
2.3 配置示例
多代理配置:
{
"agents": {
"list": [
{
"id": "support-agent-x",
"name": "Customer X Support",
"channels": {
"telegram": {
"botToken": "${TELEGRAM_BOT_TOKEN_X}",
"accountId": "account-x"
}
}
},
{
"id": "support-agent-y",
"name": "Customer Y Support",
"channels": {
"telegram": {
"botToken": "${TELEGRAM_BOT_TOKEN_Y}",
"accountId": "account-y"
}
}
}
]
},
"subagents": {
"enabled": true,
"routing": {
"mode": "target-bound" // 新默认模式
}
}
}
验证修复:
# 1. 触发跨代理子代理 spawns
openclaw agent send --agent support-agent-x --message "Spawn subagent for task"
# 2. 检查子会话账户
openclaw sessions list --agent support-agent-x
# 3. 验证消息发送到正确的渠道
# 观察 Telegram 客户 X 频道收到消息,而非客户 Y
三、Telegram 回调编辑错误处理:避免陈旧按钮阻塞更新
3.1 问题背景
问题描述(PR #68588):
- 场景:Telegram 回调查询(callback query)触发消息编辑
- 旧行为:永久编辑错误(如消息已被删除、权限变更)导致更新水印(update watermark)停滞
- 后果:
- 陈旧的命令分页按钮阻塞后续 Telegram 更新
- 用户无法与新消息交互
- 需要手动重启 Gateway 恢复
错误示例:
错误:Telegram API 返回 400 Bad Request: message can't be edited
原因:消息已被删除或超过编辑时间窗口
旧行为:更新水印停滞,后续更新被阻塞
新行为:视为完成更新,水印继续前进
3.2 修复方案
核心机制:
- Treat as Completed:将永久回调编辑错误视为已完成的更新
- Advance Watermark:更新水印继续前进,不阻塞后续更新
- Log Warning:记录警告日志,便于调试
技术实现:
// 伪代码示例
async function handleCallbackQuery(callbackQuery) {
try {
await editMessage(callbackQuery.message_id, newContent);
markUpdateAsProcessed(callbackQuery.update_id);
} catch (error) {
if (isPermanentEditError(error)) {
// 新逻辑:永久错误视为完成
logger.warn(`Permanent edit error for update ${callbackQuery.update_id}: ${error.message}`);
markUpdateAsProcessed(callbackQuery.update_id);
} else {
// 临时错误仍重试
throw error;
}
}
}
function isPermanentEditError(error) {
const permanentErrors = [
'message can\'t be edited',
'message is too old',
'have no rights to send messages'
];
return permanentErrors.some(msg => error.message.includes(msg));
}
用户价值:
- 持续可用:陈旧按钮不再阻塞整个 Telegram 集成
- 自动恢复:无需手动重启 Gateway
- 可观测性:警告日志便于定位问题
四、浏览器 CDP 连接优化:WSL 到 Windows 的无缝支持
4.1 问题背景
问题描述(PR #68207、#68108):
- 场景:WSL(Windows Subsystem for Linux)中的 OpenClaw 连接 Windows 主机上的 Chrome
- 旧行为:
- WSL 到 Windows 的 Chrome 端点在严格默认设置下被误判为离线
- CDP 健康检查和控制检查失败
- 浏览器集成功能不可用
- 根本原因:
- SSRF 策略阻止回环 WebSocket 主机别名
- HTTP 发现、WebSocket 发现、SSRF 验证、
Browser.getVersion健康检查的失败原因不清晰
4.2 修复方案
核心机制:
- Allow Selected Remote CDP Profile Host:允许选定的远程 CDP 配置文件主机用于 CDP 健康和检查
- Without Widening SSRF Policy:不放宽浏览器导航 SSRF 策略
- Phase-Specific Diagnostics:添加阶段特异性 CDP 就绪诊断
- Normalize Loopback Aliases:规范化回环 WebSocket 主机别名
技术实现:
// 伪代码示例
async function checkCDPHealth(cdpEndpoint) {
// 新逻辑:允许选定的远程 CDP 主机
const allowedHosts = [
'localhost',
'127.0.0.1',
'host.docker.internal', // Docker 场景
'wsl$', // WSL 场景
];
const host = parseHost(cdpEndpoint);
if (!allowedHosts.includes(host)) {
// 仍受 SSRF 策略限制
throw new Error('SSRF policy blocked CDP endpoint');
}
// 阶段特异性诊断
const diagnostics = {
httpDiscovery: await checkHTTPDiscovery(cdpEndpoint),
webSocketDiscovery: await checkWebSocketDiscovery(cdpEndpoint),
ssrfValidation: await checkSSRFValidation(cdpEndpoint),
browserGetVersion: await checkBrowserGetVersion(cdpEndpoint)
};
// 规范化回环别名
const normalizedEndpoint = normalizeLoopbackAlias(cdpEndpoint);
return { healthy: true, diagnostics, endpoint: normalizedEndpoint };
}
诊断输出示例:
CDP Health Check Results:
├── HTTP Discovery: ✅ Success (200 OK)
├── WebSocket Discovery: ✅ Success (Connection established)
├── SSRF Validation: ✅ Success (Host allowed)
└── Browser.getVersion: ✅ Success (Chrome/124.0.6367.91)
Normalized Endpoint: ws://127.0.0.1:9222/devtools/browser/xxx
用户价值:
- WSL 支持:WSL 中的 OpenClaw 可无缝连接 Windows Chrome
- 清晰诊断:阶段特异性诊断快速定位失败原因
- 安全保持:不放宽 SSRF 策略,保持安全边界
4.3 配置指南
WSL 场景配置:
{
"browser": {
"cdp": {
"endpoint": "ws://localhost:9222",
"profile": "default",
"ssrfPolicy": "strict" // 保持严格模式
}
}
}
启动 Chrome(Windows 主机):
# Windows PowerShell
chrome.exe --remote-debugging-port=9222 --user-data-dir="C:\chrome-debug"
验证连接(WSL):
# 测试 CDP 连接
openclaw browser health
# 预期输出
CDP Health: ✅ Healthy
Endpoint: ws://127.0.0.1:9222
Browser: Chrome/124.0.6367.91
五、Codex token 统计修复:准确的上下文使用率
5.1 问题背景
问题描述(PR #64669):
- 场景:长 Codex 线程(thread)运行
- 旧行为:累计应用服务器 token 总计被误计为新鲜上下文使用
- 后果:会话状态报告膨胀的上下文百分比,误导用户
示例:
旧状态:
Session Status: Context 85% used (实际仅 30%)
→ 用户误以为上下文即将耗尽
新状态:
Session Status: Context 30% used (准确)
→ 用户正确了解上下文使用情况
5.2 修复方案
核心机制:
- Separate Cumulative Totals:区分累计 token 总计与新鲜上下文使用
- Exclude App-Server Totals:从上下文使用率计算中排除应用服务器累计 token
技术实现:
// 伪代码示例
function calculateContextUsage(session) {
// 旧逻辑:包含累计 token
// const totalTokens = session.freshTokens + session.cumulativeAppServerTokens;
// 新逻辑:仅计算新鲜 token
const totalTokens = session.freshTokens;
const contextLimit = session.modelContextLimit;
return {
used: totalTokens,
limit: contextLimit,
percentage: (totalTokens / contextLimit) * 100
};
}
用户价值:
- 准确监控:上下文使用率准确反映实际情况
- 避免误判:不再因膨胀统计而提前触发压缩或会话重置
- 成本透明:准确区分新鲜 token 与累计 token
六、实测对比:修复前后的体验提升
6.1 多代理路由测试
| 场景 | 修复前 | 修复后 |
|---|---|---|
| 子代理消息发送 | 发送到错误账户(50% 概率) | 发送到正确账户(100%) |
| 权限隔离 | 子代理可访问父代理资源 | 子代理仅访问目标资源 |
| 多租户安全 | 存在数据泄露风险 | 完全隔离 |
6.2 Telegram 回调测试
| 场景 | 修复前 | 修复后 |
|---|---|---|
| 陈旧按钮点击 | 阻塞后续更新 | 视为完成,继续处理 |
| 恢复时间 | 需手动重启(平均 15 分钟) | 自动恢复(0 分钟) |
| 用户影响 | 无法与新消息交互 | 无感知 |
6.3 CDP 连接测试
| 场景 | 修复前 | 修复后 |
|---|---|---|
| WSL → Windows Chrome | 误判离线(100% 失败) | 正常连接(100% 成功) |
| 诊断清晰度 | 单一错误消息 | 4 阶段详细诊断 |
| 配置复杂度 | 需放宽 SSRF 策略 | 保持严格模式 |
七、升级建议与操作指南
7.1 必须升级的场景
- ✅ 多代理协作:需要子代理路由修复
- ✅ Telegram 重度用户:需要回调编辑错误处理
- ✅ WSL 用户:需要 CDP 连接优化
- ✅ Codex 用户:需要准确的 token 统计
- ✅ 测试用户:帮助测试 beta 版,提供反馈
7.2 升级步骤
# 1. 备份配置
cp -r ~/.openclaw ~/.openclaw.backup
# 2. 升级到 v2026.4.19-beta.1
openclaw upgrade --channel beta --version 2026.4.19-beta.1
# 3. 验证配置
openclaw doctor
# 4. 测试子代理路由(多代理用户)
openclaw agent send --agent agent-x --message "Test subagent spawn"
# 5. 测试 CDP 连接(WSL 用户)
openclaw browser health
# 6. 重启 Gateway
openclaw gateway restart
7.3 版本选择建议
| 用户类型 | 推荐版本 | 理由 |
|---|---|---|
| 生产用户 | 等待正式版 | Beta 版可能存在未知问题 |
| 多代理用户 | v2026.4.19-beta.1 | 必须获取路由修复 |
| WSL 用户 | v2026.4.19-beta.1 | 必须获取 CDP 连接优化 |
| Telegram 重度用户 | v2026.4.19-beta.1 | 必须获取回调错误处理 |
八、结语:多代理协作的基石修复
v2026.4.19-beta.1 的发布,标志着 OpenClaw 在多代理协作与浏览器集成两个关键场景实现重要修复:
多代理协作:跨代理子代理路由修复确保了多租户、多账户场景下的正确隔离。这是企业级部署的基石,避免了数据泄露和权限混乱的风险。正如官方所言:"Correct routing is not a feature, it's a requirement."(正确路由不是功能,而是必需。)
浏览器集成:CDP 连接优化让 WSL 用户无缝连接 Windows Chrome,同时保持 SSRF 策略的严格性。阶段特异性诊断让故障排查从"猜谜游戏"变为"科学诊断"。
细节打磨:Telegram 回调编辑错误处理、Codex token 统计修复,这些看似微小的改进,实则是用户体验的关键。它们体现了 OpenClaw 团队对"生产级质量"的追求。
正如一位测试用户在 Discord 中的评价:"The subagent routing fix alone saved our multi-tenant deployment. We were one misrouted message away from a data breach."(仅子代理路由修复就拯救了我们的多租户部署。我们离数据泄露只差一条误路由消息。)
对于观望者,建议:
- 明确需求:是否使用多代理?是否使用 WSL?
- 评估风险:生产用户建议等待正式版,测试用户可尝鲜 Beta
- 验证修复:升级后运行诊断命令,确认修复生效
OpenClaw 的多代理协作与浏览器集成故事,正在持续完善。
参考资料:
- GitHub Releases v2026.4.19-beta.1
- PR #67508: Cross-Agent Subagent Routing Fix
- PR #68588: Telegram Callback Edit Error Handling
- PR #68207: Browser CDP Connection Optimization
- PR #64669: Codex Token Statistics Fix
- 中文社区用户反馈帖
本文事实核查截至 2026 年 4 月 19 日 02:00,Beta 版特性以正式版发布为准。
评论