← 返回更新日志

OpenClaw v2.0.0-beta3

2025-12-27 · GitHub 原文
### 亮点 - 首套 Clawdis 工具(浏览器、画布、节点、定时任务)取代了旧的 `clawdis-*` 技能;工具模式现已直接注入到代理运行时中。 - 支持按会话选择模型 + 自定义模型提供商:`models.providers` 合并到 `~/.clawdis/agent/models.json`(合并/替换模式),可用于 LiteLLM、本地兼容 OpenAI 的服务器、Anthropic 代理等。 - 群聊激活模式:每个群组可使用 `/activation mention|always` 命令,并显示状态可见性。 - 为私信和公会文本频道添加了 Discord 机器人传输,支持允许列表 + 提及控制。 - 网关 Webhook:外部 `wake` 和独立的 `agent` 钩子,使用专用令牌认证。 - 钩子映射 + Gmail Pub/Sub 助手(`clawdis hooks gmail setup/run`),支持自动续订 + Tailscale Funnel。 - 命令队列模式 + 按会话覆盖(`/queue ...`)以及新的 `agent.maxConcurrent` 限制,确保跨会话的安全并行处理。 - 后台 Bash 任务:`bash` 在 20 秒后自动让出(或按需),并提供一个 `process` 工具来列出/轮询/记录/写入/终止会话。 - 网关进程内重启:`clawdis_gateway` 工具操作可触发 SIGUSR1 重启,无需监管程序。 ### 破坏性变更 - 配置重构:移除了 `inbound.*`;请使用顶层配置 `routing`(允许列表 + 群组规则 + 转录)、`messages`(前缀/时间戳)和 `session`(作用域/存储/主密钥)。不再读取旧版配置键。 - 心跳配置移至 `agent.heartbeat`:设置 `every: "30m"`(持续时间字符串)和可选的 `model`。移除了 `agent.heartbeatMinutes`,除非设置了 `agent.heartbeat.every`,否则心跳将被禁用。 - 心跳现在通过网关运行器(主会话)执行,并默认发送到最后使用的频道。移除了 WhatsApp 回复心跳的行为;请使用 `agent.heartbeat.target`/`to`(或 `target: "none"`)来控制发送。 - 浏览器 `act` 不再接受 CSS `selector`;请使用 `snapshot` 引用(默认为 `ai`)或使用 `evaluate` 作为应急方案。 ### 修复 - 心跳回复现在会去除重复的 `HEARTBEAT_OK` 尾部,避免意外的“OK OK”垃圾信息。 - 心跳发送现在使用最后一个非空载荷,防止工具前导内容吞掉最终回复。 - 心跳失败日志现在包含错误原因,而非 `[object Object]`。 - 持续时间字符串现在接受 `h`(小时)作为单位(例如心跳间隔)。 - WhatsApp 入站消息现在规范化了更多包装类型,以便可靠地提取引用回复的正文。 - WhatsApp 发送消息现在保留现有的 JID(包括群组的 `@g.us`),而不是强制转换为 `@s.whatsapp.net`。(感谢 @arun-8687。) - Telegram/WhatsApp:回复上下文保留在 `Body`/`ReplyTo*` 中,但出站回复不再关联到原始消息线程。(感谢 @joshp123 的 PR 和后续问题。) - 除非启用详细模式,否则抑制了控制台日志中 libsignal 会话清理的垃圾信息。 - 加强了 WhatsApp 网页版凭证的持久化;在认证检查前恢复凭证,如果卡住,二维码登录将自动重启。 - 群聊现在默认遵循 `routing.groupChat.requireMention=false`,当没有按群组覆盖设置时以此为准。 - 网关认证不再支持 PAM/系统模式;请使用令牌或共享密码。 - Tailscale Funnel 现在需要密码认证(不允许仅令牌的公开暴露)。 - 群组 `/new` 重置现在支持 @提及,因此激活指南会在新会话中出现。 - 群聊激活上下文现在在会话启动时(以及在激活更改后)注入到系统提示中,包括 /new 的问候语。 - 打字指示器现在仅在生成回复载荷后开始(静默运行时不会显示“正在思考”的打字状态)。 - WhatsApp 群组打字现在仅在机器人被提及时立即开始;否则会等待直到有实际输出。 - 流式传输的 `<think>` 片段在发出部分回复前被去除。 - 系统提示现在将允许列表中的所有者号码标记为用户身份,避免错误地假设为“朋友”。 - LM Studio/Ollama 的回复现在需要 `<final>` 标签;流式传输在 `<final>` 开始前会忽略内容。 - LM Studio 响应 API:工具载荷不再包含 `strict: null`,并且不再强制为 LM Studio 添加 `<think>/<final>` 标签。 - 身份表情符号不再自动作为回复前缀(如果需要,请显式设置 `messages.responsePrefix`)。 - 模型切换现在会加入一个系统事件到队列中,以便下一次运行知道当前活跃的模型。 - `/model status` 现在会列出可用模型(与 `/model` 相同)。 - `process log` 分页现在基于行数(省略 `offset` 以获取最后 N 行)。 - macOS WebChat:切换浅色/深色模式时,助手气泡现在能正确更新。 - macOS:避免在已有外部监听器时生成重复的网关进程。 - Node 桥接:当绑定到非本地回环地址(如 Tailnet IP)时,也会监听 `127.0.0.1` 以接受本地连接(不会为 `0.0.0.0`/`127.0.0.1` 绑定创建重复的本地回环监听器)。 - UI 性能:当场景不活跃时暂停重复动画(如打字点、引导光晕、iOS 状态脉冲),限制语音叠加层电平更新的频率,减少叠加层焦点切换。 - 画布默认值/A2UI 自动导航对齐;调试状态叠加层居中;移除了 `CanvasManager` 中多余的等待。 - 修复了网关的 launchd 循环,移除了多余的 `kickstart -k`。 - CLI 现在会在 Peekaboo 未授权时给出提示。 - WhatsApp 网页版收件箱监听器现在在关闭时会进行清理,避免重复处理器。 - 网关启动现在在外部提供商之前启动浏览器控制;可以通过 `web.enabled`、`telegram.enabled` 或 `discord.enabled` 禁用 WhatsApp/Telegram/Discord 的自动启动。 ### 提供商与路由 - 新增 Discord 提供商,支持私信和公会文本频道,默认使用允许列表和通过提及来限制回复。 - `routing.queue` 现在全局和按界面控制队列与中断行为(默认:WhatsApp/Telegram 中断,Discord/WebChat 队列)。 - `/queue <模式>` 支持一次性或按会话覆盖;`/queue reset|default` 清除覆盖设置。 - `agent.maxConcurrent` 限制全局并行运行的数量,同时保持按会话的串行化。 ### macOS 应用 - 菜单中显示可更新状态;菜单部分重新分组,增加了会话子菜单。 - 菜单栏现在在“上下文”下显示专门的“节点”部分,包含内联行、溢出子菜单和图标化操作。 - 节点现在显示一致的内联详情,每个节点都有子菜单,方便快速复制关键字段。 - 节点行现在显示紧凑的应用版本(构建号移至子菜单),并在可用时提供通过 Bonjour 启动 SSH 的选项。 - 菜单操作分组在开关下方;当画布被禁用时,“打开画布”选项会隐藏,“语音唤醒”现在锚定了麦克风选择器。 - “连接”部分现在包含 Discord 提供商的状态和配置界面。 - 菜单栏在“画布”旁边增加了“允许相机”开关。 - 会话列表优化:睡眠/断开/错误状态、使用量条恢复、调整了内边距和条形大小、移除了同步菜单、断开连接时隐藏头部。 - 聊天界面优化:工具调用卡片 + 合并的工具结果、毛玻璃背景、更紧凑的编辑器间距、视觉效果宿主调整。 - OAuth 存储迁移;移除了旧版会话同步元数据。 - 远程 SSH 隧道现在有健康检查;调试 → 端口会突出显示不健康的隧道,并提供“重置 SSH 隧道”选项。 - 菜单栏的会话/节点部分在打开时不再重新排版,保持悬停高亮对齐。 - 菜单悬停高亮现在跨越整个宽度(包括子菜单箭头)。 - 菜单会话行在打开时刷新,宽度不再变化(不再卡在“加载会话中…”)。 - 当鼠标在行间移动时,菜单宽度不再因悬停而增加。 - 浅色模式下,上下文使用量条的对比度更高。 - macOS 节点超时现在共享一个单一的异步超时助手,以确保行为一致。 - WebChat 窗口默认设置收紧(宽度更窄,边缘到边缘布局),并从标题中移除了 SwiftUI 标签。 ### 节点与画布 - 调试状态叠加层现已在 macOS/iOS/Android 节点上受控并可切换。 - 网关现在通过共享助手获取画布主机 URL,用于桥接和 WebSocket 握手(避免本地回环陷阱)。 - `canvas a2ui push` 现在会验证 JSONL 并提供行错误信息,拒绝 v0.9 载荷,并支持 `--text` 快速渲染。 - `nodes rename` 允许你覆盖已配对节点的显示名称,而无需编辑 JSON。 - Android 脚手架资源清理;iOS 画布/语音唤醒调整。 ### 日志与可观测性 - 新的子系统控制台格式化器,支持颜色模式、缩短前缀和 TTY 检测;浏览器/网关日志通过子系统记录器路由。 - 精简了 WhatsApp 控制台输出;修复了 chalk/tslog 的类型问题。 ### Web UI - 聊天现在是仪表板的着陆视图;简化了健康状态;移除了初始滚动动画。 ### 构建、开发、文档 - 为 macOS 发布工件添加了公证流程;更新了打包脚本。 - macOS 签名现在自动选择“开发者 ID” → “Apple Distribution” → “Apple Development”;不再使用临时代理。 - 添加了类型感知的 oxlint;文档列表从当前工作目录解析;格式/代码清理和依赖项更新(Peekaboo)。 - 刷新了关于工具、自定义模型提供商、Discord、队列/路由、群组激活命令、日志记录、重启语义、发布说明、GitHub Pages 行动号召和 npm 陷阱的文档。 - `pnpm build` 现在跳过 A2UI 打包以加快构建速度(需要时运行 `pnpm canvas:a2ui:bundle`)。 ### 测试 - 增加了对模型配置合并、WhatsApp 回复上下文、二维码登录流程、自动回复行为和网关 SIGTERM 超时的测试覆盖。 - 增加了网关 Webhook 的测试覆盖(认证、验证和摘要发布)。 - Vitest 现在隔离 HOME/XDG 配置根目录,因此测试永远不会触及真实的 `~/.clawdis` 安装。