🗓️ OpenClaw 开发日报 | 2026-03-10

0 阅读5分钟

每日精选 OpenClaw 社区最重要的功能更新和 Bug 修复,带你深入理解开源 AI Agent 框架的演进。


📊 今日概览

指标数值
Merged PRs55
主要贡献者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-plusqwen3-maxqwen3-coder-nextglm-5kimi-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 现在传递 scoped runId,不再 abort 整个 session key
  • findPendingBySessionKey 支持 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 参与讨论。