每日精选 OpenClaw 社区最重要的功能更新和 Bug 修复,带你深入理解开源 AI Agent 框架的演进。
📊 今日概览
| 指标 | 数值 |
|---|---|
| Merged PRs | 55 |
| 主要贡献者 | joshavant, obviyus, ngutman, onutc, davidguttman |
| 活跃模块 | secrets, gateway, telegram, agents, acp |
🚀 Top 3 Features
1. 阿里云 Model Studio 一键接入 [#40634]
PR: feat: integrate Alibaba Cloud Model Studio Coding Plan into onboarding wizard
作者: @pomelo-nwu | 规模: L (+532/-1)
背景:阿里云 Model Studio Coding Plan 是一个包含 8 个模型(Qwen、GLM、Kimi、MiniMax)的订阅服务,单一 API Key 按订阅计费,无 token 成本。但之前需要手动编辑配置文件。
新功能:
openclaw onboard向导新增「阿里云 Model Studio」选项- 支持国内和国际两个端点
- 自动配置 8 个模型:
qwen3.5-plus、qwen3-max、qwen3-coder-next、glm-5、kimi-k2.5等 - 新增 CLI 参数支持脚本化安装
使用示例:
# 交互式
openclaw onboard # 选择 "Alibaba Cloud Model Studio"
# 非交互式
openclaw onboard --modelstudio-api-key-cn <YOUR_KEY> # 国内
openclaw onboard --modelstudio-api-key <YOUR_KEY> # 国际
核心配置:
{
"models": {
"providers": {
"modelstudio": {
"api": "openai-completions",
"baseUrl": "https://coding.dashscope.aliyuncs.com/v1"
}
}
}
}
影响:中国及国际用户可一键接入高性价比的多模型服务。
2. Web 工具 SecretRef 原子化解析 [#41599]
PR: fix(secrets): resolve web tool SecretRefs atomically at runtime
作者: @joshavant | 规模: XL (+2059/-112)
背景:Web 搜索工具(Perplexity/Grok/Kimi/Gemini)的 API Key 配置支持 SecretRef,但解析时机不一致,可能导致启动时默默失败或使用错误的凭证。
改进点:
- SecretRef 在启动/重载时原子化解析
- 启动时如果活跃 SecretRef 无法解析且无回退,立即报错(fail-fast)
- 重载失败时保留「最后已知正常」的运行时快照
- Perplexity 认证改为懒加载(执行时解析)
新增行为:
// 启动时验证
if (activeWebSecretRefsUnresolved && !fallbackAvailable) {
throw new Error('required secrets are unavailable');
}
// 重载失败时保持稳定
if (reloadFails) {
keepLastKnownGoodSnapshot();
emitDegradedStateEvent();
}
影响:避免 Web 搜索在运行时突然失效,提升可观测性和稳定性。
3. ACP Session 恢复能力 [#41847]
PR: feat(acp): add resumeSessionId to sessions_spawn for ACP session resume
作者: @pejmanjohn | 规模: S (+98/-8)
背景:ACP(Agent Communication Protocol)sessions 是一次性的——之前没有办法恢复一个已经存在的 Codex/Claude Code 会话。
新功能:
sessions_spawn新增resumeSessionId参数- Agent 可以恢复之前的对话上下文
- 支持跨设备、跨会话的工作流接力
使用示例:
// 恢复之前的 Codex 会话
sessions_spawn({
runtime: "acp",
resumeSessionId: "abc123-previous-session",
task: "继续上次的重构工作"
});
适用场景:
- 设备间切换继续同一任务
- 中断后恢复复杂工作流
- headless 与 interactive 模式桥接
影响:ACP 工作流更加灵活,长任务不再需要从头开始。
🐛 重要 Bugfix
Telegram 预览编辑超时导致重复消息 [#41662]
PR: fix(telegram): prevent duplicate messages when preview edit times out
作者: @hougangdev | 规模: L (+492/-53)
问题根源:当 streaming 预览的 editMessageText 在网络层超时(尤其通过 OpenRouter/Cloudflare AI Gateway 时),编辑实际上已经成功,但客户端收到错误后触发了 fallback sendMessage,导致用户看到两条相同的消息。
修复方案:
// editPreview 回调现在分类错误类型
if (isSafeToRetrySendError(error)) {
// 预连接错误(如 ECONNREFUSED)→ 安全重试
throw error;
} else if (isPostConnectNetworkError(error)) {
// 后连接错误(如 timeout)→ 吞掉,假设编辑成功
return; // 避免重复
} else {
// API 错误(400/500)→ 重试发送
throw error;
}
ACP 取消和事件路由隔离 [#41331]
PR: fix(acp): scope cancellation and event routing by runId
作者: @pejmanjohn | 规模: M (+298/-10)
问题:多个 ACP session 共享 gateway session key 时,取消操作可能误杀其他 session 的运行;事件路由可能发送到错误的 session。
修复要点:
cancel现在传递 scopedrunId,不再 abort 整个 session keyfindPendingBySessionKey支持runId匹配- 工具事件也通过
runId精确路由
模型控制 Token 泄露清理 [#42173]
PR: fix: strip leaked model control tokens from user-facing text
作者: @odysseus0 | 规模: S (+56/-2)
问题:GLM-5、DeepSeek 等模型有时会在回复中泄露内部控制 token(如 <|assistant|>、<|tool_call_result_begin|>)。
修复:
// 新增通用清理函数
function stripModelSpecialTokens(text: string): string {
// 匹配 <|...|> 和 <|...|>(全角)格式
return text.replace(/<[||][^>]+[||]>/g, '');
}
Telegram Exec Approvals 全面修复 [#37233]
PR: Telegram: fix exec approvals and topic follow-up routing
作者: @huntharo | 规模: XL (+4058/-524)
之前的问题:
- Telegram 无法审批 exec 请求(总是报
unknown approval id) - 没有
execApprovals配置门控和approvers列表 - Topic 内的后续消息可能跳到
#general
修复要点:
- 规范化
/approve处理,支持短 ID 前缀 - 为 Telegram 审批提示注入规范按钮
- 保留 session 的 topic/thread ID 用于后续消息路由
- 支持 event-driven heartbeat wake
📝 文档与基础设施
- #42414 新增 npm 发布 workflow,CalVer 版本校验
- #42503 贡献指南要求本地运行
codex review - #42451 Telegram 群组与发送者白名单文档澄清
- #41787 CI 修复 Swift 6.2 工具链选择
🔒 安全加固
SecretRef 遍历 ID 校验 [#42370]
全链路拒绝包含遍历片段(如 ../)的 exec SecretRef ID:
- Config schema 校验
- 运行时解析器
- Gateway 协议验证
- Plugin SDK 输入校验
SecretRef 持久化与复用加固 [#42554]
- 标记值不再作为可用凭证被误用
- 运行时解析的明文不会被回写到持久化配置
- Merge 时不保留过时的明文 apiKey
📈 性能与稳定性
- #40740 Telegram 网络回退重构为 resolver-scoped dispatchers(告别进程级全局状态翻转)
- #41711 同 provider 冷却探测去重,避免 fallback 链过度探测
- #41173 Session reset 不再复用过时的 runtime model 字段
📚 往期回顾:2026-03-09 | 2026-03-08
本日报由 OpenClaw 社区自动生成,欢迎在 GitHub 参与讨论。