### 主要亮点
- 插件系统:新增提供商认证注册功能 + `clawdbot models auth login` 命令,支持插件驱动的 OAuth/API 密钥流程。
- 浏览器:改进远程 CDP/Browserless 支持(认证透传、`wss`升级、超时控制、更清晰的错误提示)。
- 心跳机制:支持按代理配置 + 24小时重复告警抑制。(#980)— 感谢 @voidserf。
- 安全功能:安全审计对弱模型层级发出警告;应用节点现以加密方式存储认证令牌(钥匙串/安全偏好设置)。
### 重大变更
- **不兼容变更:** iOS 最低版本要求提升至 18.0,以支持原生聊天中的 Textual 格式 Markdown 渲染。(#702)
- **不兼容变更:** Microsoft Teams 现已改为插件形式;请通过 `clawdbot plugins install @clawdbot/msteams` 安装。
### 功能更新
- 命令行界面:将进程标题设置为 `clawdbot-<命令>` 格式,使进程列表更清晰。
- 命令行界面/macOS:将远程 SSH 目标/身份同步至配置,并让 `gateway status` 自动推断 SSH 目标(支持 ssh-config 识别)。
- 心跳机制:优化提示指导 + 24小时内重复告警抑制。(#980)— 感谢 @voidserf。
- 代码仓库:忽略本地身份文件,避免意外提交。(#1001)— 感谢 @gerardward2007。
- 会话/安全:新增 `session.dmScope` 配置,实现多用户私信隔离及审计警告。(#948)— 感谢 @Alphonse-arianee。
- 插件系统:新增提供商认证注册功能 + `clawdbot models auth login` 命令,支持插件驱动的 OAuth/API 密钥流程。
- 新手引导:将频道设置改为支持每个频道操作的单项选择循环,并在选择器中隐藏已禁用选项的提示。
- 终端界面:在活动会话和默认模型中显示提供商/模型标签。
- 心跳机制:新增按代理配置心跳功能及多代理文档示例。
- 界面优化:对未授权的 Control UI 连接,显示网关认证指南及文档链接。
- 安全功能:在 `clawdbot security audit` 命令中,对弱模型层级(Haiku、低于 GPT-5、低于 Claude 4.5)发出警告。
- 应用程序:节点认证令牌现以加密方式存储(钥匙串/安全偏好设置)。
- 守护进程:在服务辅助程序中共享配置文件/状态目录解析逻辑,并为 Windows 任务脚本启用 `CLAWDBOT_STATE_DIR` 环境变量。
- 文档:澄清多网关救援机器人的使用指南。(#969)— 感谢 @bjesuiter。
- 智能体:在系统提示中加入“当前日期与时间”模块,并支持可配置的时间格式(自动/12小时制/24小时制)。
- 工具集成:标准化 Slack/Discord 消息时间戳,提供 `timestampMs`/`timestampUtc` 字段,同时保留原始提供商字段。
- macOS:新增 `system.which` 命令,支持无提示的远程技能发现(通过网关可回退至 `system.run`)。
- 文档:新增“日期与时间”指南,并更新了提示词/时区配置文档。
- 消息处理:对跨渠道的快速入站消息进行去抖处理,并支持按连接器自定义覆盖。(#971)— 感谢 @juanpablodlc。
- 消息处理:允许仅发送媒体内容(通过命令行/工具),并为 Telegram 语音消息显示录音状态。(#957)— 感谢 @rdev。
- 认证/状态:保持每个会话的认证配置文件粘性(在压缩或新建时轮换),在 `/status` 和 `clawdbot models status` 中显示提供商使用情况头部,并更新相关文档。
- 命令行界面:为 `clawdbot daemon` 的生命周期管理及安装命令添加 `--json` 输出选项。
- 内存管理:将 `node-llama-cpp` 设为可选依赖项(避免在 Node 25 上安装失败),并改进本地嵌入功能的回退机制及错误提示。
- 浏览器:为 `snapshot` 命令新增 `snapshot refs=aria`(Playwright aria-ref IDs)功能,支持在 `snapshot` 到 `act` 流程中自解析引用。
- 浏览器:`profile="chrome"` 配置现在默认由主机控制,并在未附加标签页时返回更清晰的错误提示。
- 浏览器:自动检测时优先选择稳定的 Chrome 浏览器,并支持 Brave/Edge 作为备选,同时更新相关文档。(#983)— 感谢 @cpojer。
- 浏览器:增加远程 CDP 可达性超时时间 + 新增 `remoteCdpTimeoutMs`/`remoteCdpHandshakeTimeoutMs` 配置项。
- 浏览器:为远程 CDP 端点保留认证/查询令牌,并为 CDP HTTP/WS 连接传递基本认证信息。(#895)— 感谢 @mukhtharcm。
- Telegram:新增双向消息反应支持,提供可配置的通知选项及智能体使用指南。(#964)— 感谢 @bohdanpodvirnyi。
- Telegram:允许在机器人菜单中添加自定义命令(与原生命令合并,冲突时忽略)。(#860)— 感谢 @nachoiacovino。
- Discord:当 `groupPolicy="allowlist"` 时,允许已加入白名单但没有频道列表的服务器接收消息。— 感谢 @thewilloftheshadow。
- Discord:在配置默认值中允许上传表情符号/贴纸及执行频道操作。(#870)— 感谢 @JDIVE。
### 问题修复
- 修复:将模型选择器中的条目显示为“提供商/模型”对,以便进行明确选择。(#970)— 感谢 @mcinteerj。
- 修复:使 OpenAI 图像生成的默认设置与 DALL-E 3 标准质量对齐,并记录输出格式。(#880)— 感谢 @mkbehr。
- 修复:在 `clawdbot configure` 中选择本地运行模式后,即使未选择其他配置部分,也能正确持久化 `gateway.mode=local` 设置。
- 守护进程:修复了配置文件感知的服务标签解析问题(由环境变量驱动),并增加了对 launchd/systemd/schtasks 的测试覆盖。(#969)— 感谢 @bjesuiter。
- 智能体:避免在记录不支持的 Google 工具模式关键词时产生误报。
- 智能体:为 google-antigravity 模型跳过 Gemini 历史记录降级处理,以保留工具调用信息。(#894)— 感谢 @mukhtharcm。
- 状态:修复了当没有 OAuth 配置文件时,恢复显示当前提供商的使用情况摘要行的问题。
- 修复:防止模型在未定义提供商/模型值时进行回退。(#954)— 感谢 @roshanasingh4。
- 修复:重构会话存储更新逻辑,增加 `chat.inject` 功能,并强化子智能体的清理流程。(#944)— 感谢 @tyler6204。
- 修复:清理各后端中挂起的 CLI 进程。(#978)— 感谢 @Nachx639。
- 修复:支持 MiniMax 编程计划使用 `model_remains`/`current_interval_*` 负载的响应。
- 修复:在初始链接时,抑制 WhatsApp 因同步历史私信而回复配对消息的问题。(#904)
- 浏览器:当扩展模式只附加了一个标签页时(使用过时的 targetId 回退),能够正常恢复。
- 浏览器:修复了当 Playwright 阻止 `newCDPSession` 时,扩展中继快照/操作出现“标签页未找到”的问题(改用单个可用的 Page 对象)。
- 浏览器:当远程 CDP 使用 `https` 时,自动将 `ws` 升级为 `wss`(修复 Browserless 握手问题)。
- Telegram:在向常规主题发送消息时,跳过设置 `message_thread_id=1`,同时保留正在输入的状态提示。(#848)— 感谢 @azade-c。
- 修复:清理面向用户的错误文本,并在整个回复流程中去除 `<final>` 标签。(#975)— 感谢 @ThomsenDrake。
- 修复:规范化配对命令行别名,允许扩展频道,并强化 Zalo webhook 负载的解析。(#991)— 感谢 @longmaba。
- 修复:允许使用本地 Tailscale Serve 主机名,而不将 tailnet 客户端视为直连。(#885)— 感谢 @oswalpalash。
- 修复:在角色顺序冲突后重置会话,以从连续的用户轮次中恢复。(#998)
### Highlights
- Plugins: add provider auth registry + `clawdbot models auth login` for plugin-driven OAuth/API key flows.
- Browser: improve remote CDP/Browserless support (auth passthrough, `wss` upgrade, timeouts, clearer errors).
- Heartbeat: per-agent configuration + 24h duplicate suppression. (#980) — thanks @voidserf.
- Security: audit warns on weak model tiers; app nodes store auth tokens encrypted (Keychain/SecurePrefs).
### Breaking
- **BREAKING:** iOS minimum version is now 18.0 to support Textual markdown rendering in native chat. (#702)
- **BREAKING:** Microsoft Teams is now a plugin; install `@clawdbot/msteams` via `clawdbot plugins install @clawdbot/msteams`.
### Changes
- CLI: set process titles to `clawdbot-<command>` for clearer process listings.
- CLI/macOS: sync remote SSH target/identity to config and let `gateway status` auto-infer SSH targets (ssh-config aware).
- Heartbeat: tighten prompt guidance + suppress duplicate alerts for 24h. (#980) — thanks @voidserf.
- Repo: ignore local identity files to avoid accidental commits. (#1001) — thanks @gerardward2007.
- Sessions/Security: add `session.dmScope` for multi-user DM isolation and audit warnings. (#948) — thanks @Alphonse-arianee.
- Plugins: add provider auth registry + `clawdbot models auth login` for plugin-driven OAuth/API key flows.
- Onboarding: switch channels setup to a single-select loop with per-channel actions and disabled hints in the picker.
- TUI: show provider/model labels for the active session and default model.
- Heartbeat: add per-agent heartbeat configuration and multi-agent docs example.
- UI: show gateway auth guidance + doc link on unauthorized Control UI connections.
- Security: warn on weak model tiers (Haiku, below GPT-5, below Claude 4.5) in `clawdbot security audit`.
- Apps: store node auth tokens encrypted (Keychain/SecurePrefs).
- Daemon: share profile/state-dir resolution across service helpers and honor `CLAWDBOT_STATE_DIR` for Windows task scripts.
- Docs: clarify multi-gateway rescue bot guidance. (#969) — thanks @bjesuiter.
- Agents: add Current Date & Time system prompt section with configurable time format (auto/12/24).
- Tools: normalize Slack/Discord message timestamps with `timestampMs`/`timestampUtc` while keeping raw provider fields.
- macOS: add `system.which` for prompt-free remote skill discovery (with gateway fallback to `system.run`).
- Docs: add Date & Time guide and update prompt/timezone configuration docs.
- Messages: debounce rapid inbound messages across channels with per-connector overrides. (#971) — thanks @juanpablodlc.
- Messages: allow media-only sends (CLI/tool) and show Telegram voice recording status for voice notes. (#957) — thanks @rdev.
- Auth/Status: keep auth profiles sticky per session (rotate on compaction/new), surface provider usage headers in `/status` and `clawdbot models status`, and update docs.
- CLI: add `--json` output for `clawdbot daemon` lifecycle/install commands.
- Memory: make `node-llama-cpp` an optional dependency (avoid Node 25 install failures) and improve local-embeddings fallback/errors.
- Browser: add `snapshot refs=aria` (Playwright aria-ref ids) for self-resolving refs across `snapshot` → `act`.
- Browser: `profile="chrome"` now defaults to host control and returns clearer “attach a tab” errors.
- Browser: prefer stable Chrome for auto-detect, with Brave/Edge fallbacks and updated docs. (#983) — thanks @cpojer.
- Browser: increase remote CDP reachability timeouts + add `remoteCdpTimeoutMs`/`remoteCdpHandshakeTimeoutMs`.
- Browser: preserve auth/query tokens for remote CDP endpoints and pass Basic auth for CDP HTTP/WS. (#895) — thanks @mukhtharcm.
- Telegram: add bidirectional reaction support with configurable notifications and agent guidance. (#964) — thanks @bohdanpodvirnyi.
- Telegram: allow custom commands in the bot menu (merged with native; conflicts ignored). (#860) — thanks @nachoiacovino.
- Discord: allow allowlisted guilds without channel lists to receive messages when `groupPolicy="allowlist"`. — thanks @thewilloftheshadow.
- Discord: allow emoji/sticker uploads + channel actions in config defaults. (#870) — thanks @JDIVE.
### Fixes
- Fix: list model picker entries as provider/model pairs for explicit selection. (#970) — thanks @mcinteerj.
- Fix: align OpenAI image-gen defaults with DALL-E 3 standard quality and document output formats. (#880) — thanks @mkbehr.
- Fix: persist `gateway.mode=local` after selecting Local run mode in `clawdbot configure`, even if no other sections are chosen.
- Daemon: fix profile-aware service label resolution (env-driven) and add coverage for launchd/systemd/schtasks. (#969) — thanks @bjesuiter.
- Agents: avoid false positives when logging unsupported Google tool schema keywords.
- Agents: skip Gemini history downgrades for google-antigravity to preserve tool calls. (#894) — thanks @mukhtharcm.
- Status: restore usage summary line for current provider when no OAuth profiles exist.
- Fix: guard model fallback against undefined provider/model values. (#954) — thanks @roshanasingh4.
- Fix: refactor session store updates, add chat.inject, and harden subagent cleanup flow. (#944) — thanks @tyler6204.
- Fix: clean up suspended CLI processes across backends. (#978) — thanks @Nachx639.
- Fix: support MiniMax coding plan usage responses with `model_remains`/`current_interval_*` payloads.
- Fix: suppress WhatsApp pairing replies for historical catch-up DMs on initial link. (#904)
- Browser: extension mode recovers when only one tab is attached (stale targetId fallback).
- Browser: fix `tab not found` for extension relay snapshots/actions when Playwright blocks `newCDPSession` (use the single available Page).
- Browser: upgrade `ws` → `wss` when remote CDP uses `https` (fixes Browserless handshake).
- Telegram: skip `message_thread_id=1` for General topic sends while keeping typing indicators. (#848) — thanks @azade-c.
- Fix: sanitize user-facing error text + strip `<final>` tags across reply pipelines. (#975) — thanks @ThomsenDrake.
- Fix: normalize pairing CLI aliases, allow extension channels, and harden Zalo webhook payload parsing. (#991) — thanks @longmaba.
- Fix: allow local Tailscale Serve hostnames without treating tailnet clients as direct. (#885) — thanks @oswalpalash.
- Fix: reset sessions after role-ordering conflicts to recover from consecutive user turns. (#998)