### 亮点
- Microsoft Teams 提供程序:轮询、附件、出站 CLI 发送、按频道策略。
- 模型/认证扩展:接入 OpenCode Zen + MiniMax API;令牌认证配置文件 + 认证顺序;doctor/status 中的 OAuth 健康检查。
- CLI/网关用户体验:消息子命令、网关 discover/status/SSH、/config + /debug、沙箱 CLI。
- 提供程序可靠性提升:WhatsApp 联系人卡片/目标、Telegram 音频作为语音 + 流式传输、Signal 消息反应、Slack 线程化、Discord 稳定性。
- 自动回复 + 状态:块流控制、推理处理、使用量/成本报告。
- 控制 UI/TUI:队列消息、会话链接、推理视图、移动端优化、日志用户体验。
### 不兼容变更
- CLI:`clawdbot message` 现在使用子命令 (`message send|poll|...`),并且除非仅配置了一个提供程序,否则需要指定 `--provider`。
- 命令/工具:`/restart` 和网关重启工具默认禁用;通过 `commands.restart=true` 启用。
### 新功能和变化
- 模型/认证:接入 OpenCode Zen (#623) —— 感谢 @magimetal;接入兼容 Anthropic 的 MiniMax API 及托管服务 (#590, #495) —— 感谢 @mneves75, @tobiasbischoff。
- 模型/认证:setup-token + 令牌认证配置文件;`clawdbot models auth order {get,set,clear}`;`/model status` 中显示每个代理的认证候选;doctor/status 中的 OAuth 过期检查。
- 代理/系统:claude-cli 运行器;`session_status` 工具(及沙箱允许);默认启用自适应上下文剪枝;系统提示消息指导 + 无自动自我更新;注入符合条件的技能列表;子代理上下文修剪。
- 命令:`/commands` 列表;`/models` 别名;`/usage` 别名;`/debug` 运行时覆盖 + 有效配置视图;`/config` 聊天更新 + `/config get`;`config --section`。
- CLI/网关:统一的消息工具 + 消息子命令;网关 discover(本地 + 广域网 DNS-SD)支持 JSON/超时;网关状态支持人类可读、JSON 和 SSH 环回;广域网记录包含 gatewayPort/sshPort/cliPath + tailnet DNS 后备。
- CLI 用户体验:日志输出模式(pretty/plain/JSONL)+ 彩色化 health/daemon 输出;全局 `--no-color`;onboarding/config 中的龙虾色调色板。
- 开发便利性:网关 `--dev/--reset` + 开发配置文件自动配置;C-3PO 开发模板;开发网关/TUI 辅助脚本。
- 沙箱/工作区:沙箱 list/recreate 命令;将技能同步到沙箱工作区;沙箱浏览器自动启动。
- 配置/入门:内联环境变量;OpenAI API 密钥流程至共享的 `~/.clawdbot/.env`;用于 Anthropic 认证的 Opus 4.5 默认提示;快速启动自动安装网关(仅限 Node)+ 提供程序选择器调整 + 跳过 systemd 标志;TUI 启动提示(`tui --message`);移除 Bun 运行时选择。
- 提供程序:Microsoft Teams 提供程序(轮询、附件、出站发送、requireMention、配置重载/DM 策略)。(#404) —— 感谢 @onutc
- 提供程序:WhatsApp 广播组,用于多代理回复 (#547) —— 感谢 @pasogott;入站媒体大小限制可配置 (#505) —— 感谢 @koala73;基于身份的消息前缀 (#578) —— 感谢 @p6l-richard。
- 提供程序:Telegram 内联键盘按钮 + 回调负载路由 (#491) —— 感谢 @azade-c;cron 主题投递目标 (#474/#478) —— 感谢 @mitschabaude-bot, @nachoiacovino;支持 `[[audio_as_voice]]` 标签 (#490) —— 感谢 @jarvis-medmatic。
- 提供程序:Signal 消息反应 + 支持带有允许列表的通知。
- 状态/使用量:/status 成本报告 + `/cost` 行;认证配置文件片段;提供程序使用窗口。
- 控制 UI:移动端响应式 (#558) —— 感谢 @carlulsoe;队列消息 + 回车发送 (#527) —— 感谢 @YuriNachos;会话链接 (#471) —— 感谢 @HazAT;推理视图;技能安装反馈 (#445) —— 感谢 @pkrmf;聊天布局刷新 (#475) —— 感谢 @rahthakor;文档链接 + 新建会话按钮;移除显式的 `ui:install`。
- TUI:代理选择器 + 代理列表 RPC;改进的状态行。
- Doctor/守护进程:审计/修复流程、权限检查、监督程序配置审计;提供程序状态探测 + Discord intents 和 Telegram 隐私的警告;最后活动时间戳;网关重启指导。
- 文档:Hetzner Docker VPS 指南 + 交叉链接 (#556/#592) —— 感谢 @Iamadig;Ansible 指南 (#545) —— 感谢 @pasogott;提供程序故障排查索引;钩子参数扩展 (#532) —— 感谢 @mcinteerj;模型允许列表说明;OAuth 深度解析;示例刷新。
- 应用/品牌:刷新的 iOS/Android/macOS 图标 (#521) —— 感谢 @fishfisher。
### 修复
- 打包:在 npm tarball 中包含 MS Teams 发送模块。
- 沙箱/浏览器:自动启动 CDP 端点;将 CDP 代理出容器以支持 attachOnly;放宽 Bun fetch 类型;使沙箱列表输出与配置镜像对齐。
- 代理/运行时:将心跳提示限制为默认会话;/stop 在工具调用之间中止;需要显式的系统事件会话密钥;防护小上下文窗口;修复模型回退字符串化;sessions_spawn 继承提供程序;在计费/积分不足时故障转移;遵守认证冷却顺序;恢复 Anthropic OAuth 工具分发 + 工具名称绕过;避免 OpenAI 无效推理重放;强化 Gmail 钩子模型默认值。
- 代理历史/模式:剥离/跳过空的助手/错误块,以防止会话损坏/Claude 400 错误;清除不支持的 JSON Schema 关键字 + 为 Cloud Code Assist 清理工具调用 ID;简化兼容 Gemini 的工具/会话模式;config.apply 需要 raw。
- 自动回复/流式传输:默认 audioAsVoice 为 false;保留 audio_as_voice 传播 + 缓冲音频块 + 保护语音笔记;块回复排序(超时)+ 强制块防护安全;避免在括号内部分块 + 防护块中断 + 无效 UTF-16 截断;保留内联指令间距 + 允许回复标签中的空白;过滤 NO_REPLY 前缀 + 规范化路由回复;使用单独的 Reasoning 抑制 <think> 泄漏;块流默认值(默认关闭,minChars/idle 调整)+ 合并块;去重后续队列;恢复显式的 responsePrefix 默认值。
- 状态/命令:/status 模型显示中的提供程序前缀;使用量过滤 + 提供程序映射;认证标签 + 使用量快照(claude-cli 后备 + 可选的 claude.ai);仅在启用时显示 Verbose/Elevated;紧凑的使用量/成本行 + 恢复富表情状态;仅指令模式下的 /status + 多指令处理;提及绕过提升处理;显示提供程序使用错误;将 /usage 连接到 /status;恢复隐藏的网关守护进程别名;目录不可用时回退到 /model list。
- WhatsApp:vCard/联系人卡片(优先使用 FN,包含号码,显示所有联系人,保留摘要计数,改进空摘要);保留群组 JID + 规范化目标;解析 @lid 映射/JID(Baileys/auth-dir)+ 入站映射;将队列中的消息路由给发送者;改进 web 监听器错误 + 从错误中移除提供程序名称;记录出站活动账户 ID;修复 web 媒体获取错误;广播群组历史一致性。
- Telegram:保持 streamMode 仅为草稿;长轮询冲突重试 + 更新去重;修复 grammY fetch 不匹配 + 限制 Bun 原生 fetch;抑制 getUpdates 堆栈跟踪;在配对中包含用户 ID;audio_as_voice 处理修复。
- Discord/Slack:线程上下文助手 + 论坛线程发起者;避免分类父级覆盖;网关重连日志 + HELLO 超时 + 重连耗尽后停止提供程序;针对数字 ID 的 DM 收件人解析;移除错误的有限警告;回复线程化 + mrkdwn 边缘情况;回复后移除确认反应;网关调试事件可见性。
- Signal:反应处理安全性;匹配自己的反应(uuid+phone);接受仅 UUID 的发送者;忽略仅包含反应的消息。
- MS Teams:可靠下载图片附件;修复顶级回复;关闭时停止 + 遵守块限制;规范化轮询提供程序/依赖项;配对标签修复。
- iMessage:按 chat_id 隔离类群组线程。
- 网关/守护进程/Doctor:原子配置写入;修复网关服务入口点 + 安装开关;非交互式旧版迁移;systemd 单元对齐 + KillMode=process;节点桥接 keepalive/pings;登录时启动持久化;打包 ClawdbotKit 资源 + Swift 6.2 兼容 dylib;中继版本检查 + 移除冒烟测试;重新生成 Swift GatewayModels + 保留代理提供程序字符串;cron 任务 ID 别名 + 频道别名迁移 + 主会话密钥规范化;心跳 Telegram 账户 ID 解析;避免内部运行时回退到 WhatsApp;网关监听器错误措辞;serveBaseUrl 参数;遵守 gateway --dev;修复广域网发现更新;对齐 agents.defaults 模式;守护进程状态中的提供程序账户元数据;刷新 Carbon 补丁以修复网关问题;恢复 doctor prompter 的 initialValue 处理。
- 控制 UI/TUI:持久化每个会话的 verbose 关闭状态 + 隐藏工具卡片;日志标签页在底部打开;相对资源路径 + 登录页面清理;会话标签查找/持久化;停止在最近项目中固定主会话;日志从底部开始;TUI 状态栏刷新 + 超时处理 + 关闭时隐藏推理标签。
- 入门/配置:快速启动单选提供程序选择器;避免 Codex CLI 假过期警告;澄清 WhatsApp 所有者提示;修复 Minimax 托管接入(agents.defaults + msteams 心跳目标);移除配置控制 UI 提示;遵守 gateway --dev 标志。
### 维护
- 依赖项:将 pi-* 堆栈升级到 0.42.2。
- 依赖项:Pi 升级到 0.40.0 (#543) —— 感谢 @mcinteerj。
- 构建:Docker 构建缓存层 (#605) —— 感谢 @zknicker。
### Highlights
- Microsoft Teams provider: polling, attachments, outbound CLI send, per-channel policy.
- Models/Auth expansion: OpenCode Zen + MiniMax API onboarding; token auth profiles + auth order; OAuth health in doctor/status.
- CLI/Gateway UX: message subcommands, gateway discover/status/SSH, /config + /debug, sandbox CLI.
- Provider reliability sweep: WhatsApp contact cards/targets, Telegram audio-as-voice + streaming, Signal reactions, Slack threading, Discord stability.
- Auto-reply + status: block-streaming controls, reasoning handling, usage/cost reporting.
- Control UI/TUI: queued messages, session links, reasoning view, mobile polish, logs UX.
### Breaking
- CLI: `clawdbot message` now subcommands (`message send|poll|...`) and requires `--provider` unless only one provider configured.
- Commands/Tools: `/restart` and gateway restart tool disabled by default; enable with `commands.restart=true`.
### New Features and Changes
- Models/Auth: OpenCode Zen onboarding (#623) — thanks @magimetal; MiniMax Anthropic-compatible API + hosted onboarding (#590, #495) — thanks @mneves75, @tobiasbischoff.
- Models/Auth: setup-token + token auth profiles; `clawdbot models auth order {get,set,clear}`; per-agent auth candidates in `/model status`; OAuth expiry checks in doctor/status.
- Agent/System: claude-cli runner; `session_status` tool (and sandbox allow); adaptive context pruning default; system prompt messaging guidance + no auto self-update; eligible skills list injection; sub-agent context trimmed.
- Commands: `/commands` list; `/models` alias; `/usage` alias; `/debug` runtime overrides + effective config view; `/config` chat updates + `/config get`; `config --section`.
- CLI/Gateway: unified message tool + message subcommands; gateway discover (local + wide-area DNS-SD) with JSON/timeout; gateway status human-readable + JSON + SSH loopback; wide-area records include gatewayPort/sshPort/cliPath + tailnet DNS fallback.
- CLI UX: logs output modes (pretty/plain/JSONL) + colorized health/daemon output; global `--no-color`; lobster palette in onboarding/config.
- Dev ergonomics: gateway `--dev/--reset` + dev profile auto-config; C-3PO dev templates; dev gateway/TUI helper scripts.
- Sandbox/Workspace: sandbox list/recreate commands; sync skills into sandbox workspace; sandbox browser auto-start.
- Config/Onboarding: inline env vars; OpenAI API key flow to shared `~/.clawdbot/.env`; Opus 4.5 default prompt for Anthropic auth; QuickStart auto-install gateway (Node-only) + provider picker tweaks + skip-systemd flags; TUI bootstrap prompt (`tui --message`); remove Bun runtime choice.
- Providers: Microsoft Teams provider (polling, attachments, outbound sends, requireMention, config reload/DM policy). (#404) — thanks @onutc
- Providers: WhatsApp broadcast groups for multi-agent replies (#547) — thanks @pasogott; inbound media size cap configurable (#505) — thanks @koala73; identity-based message prefixes (#578) — thanks @p6l-richard.
- Providers: Telegram inline keyboard buttons + callback payload routing (#491) — thanks @azade-c; cron topic delivery targets (#474/#478) — thanks @mitschabaude-bot, @nachoiacovino; `[[audio_as_voice]]` tag support (#490) — thanks @jarvis-medmatic.
- Providers: Signal reactions + notifications with allowlist support.
- Status/Usage: /status cost reporting + `/cost` lines; auth profile snippet; provider usage windows.
- Control UI: mobile responsiveness (#558) — thanks @carlulsoe; queued messages + Enter-to-send (#527) — thanks @YuriNachos; session links (#471) — thanks @HazAT; reasoning view; skill install feedback (#445) — thanks @pkrmf; chat layout refresh (#475) — thanks @rahthakor; docs link + new session button; drop explicit `ui:install`.
- TUI: agent picker + agents list RPC; improved status line.
- Doctor/Daemon: audit/repair flows, permissions checks, supervisor config audits; provider status probes + warnings for Discord intents and Telegram privacy; last activity timestamps; gateway restart guidance.
- Docs: Hetzner Docker VPS guide + cross-links (#556/#592) — thanks @Iamadig; Ansible guide (#545) — thanks @pasogott; provider troubleshooting index; hook parameter expansion (#532) — thanks @mcinteerj; model allowlist notes; OAuth deep dive; showcase refresh.
- Apps/Branding: refreshed iOS/Android/macOS icons (#521) — thanks @fishfisher.
### Fixes
- Packaging: include MS Teams send module in npm tarball.
- Sandbox/Browser: auto-start CDP endpoint; proxy CDP out of container for attachOnly; relax Bun fetch typing; align sandbox list output with config images.
- Agents/Runtime: gate heartbeat prompt to default sessions; /stop aborts between tool calls; require explicit system-event session keys; guard small context windows; fix model fallback stringification; sessions_spawn inherits provider; failover on billing/credits; respect auth cooldown ordering; restore Anthropic OAuth tool dispatch + tool-name bypass; avoid OpenAI invalid reasoning replay; harden Gmail hook model defaults.
- Agent history/schema: strip/skip empty assistant/error blocks to prevent session corruption/Claude 400s; scrub unsupported JSON Schema keywords + sanitize tool call IDs for Cloud Code Assist; simplify Gemini-compatible tool/session schemas; require raw for config.apply.
- Auto-reply/Streaming: default audioAsVoice false; preserve audio_as_voice propagation + buffer audio blocks + guard voice notes; block reply ordering (timeout) + forced-block fence-safe; avoid chunk splits inside parentheses + fence-close breaks + invalid UTF-16 truncation; preserve inline directive spacing + allow whitespace in reply tags; filter NO_REPLY prefixes + normalize routed replies; suppress <think> leakage with separate Reasoning; block streaming defaults (off by default, minChars/idle tuning) + coalesced blocks; dedupe followup queue; restore explicit responsePrefix default.
- Status/Commands: provider prefix in /status model display; usage filtering + provider mapping; auth label + usage snapshots (claude-cli fallback + optional claude.ai); show Verbose/Elevated only when enabled; compact usage/cost line + restore emoji-rich status; /status in directive-only + multi-directive handling; mention-bypass elevated handling; surface provider usage errors; wire /usage to /status; restore hidden gateway-daemon alias; fallback /model list when catalog unavailable.
- WhatsApp: vCard/contact cards (prefer FN, include numbers, show all contacts, keep summary counts, better empty summaries); preserve group JIDs + normalize targets; resolve @lid mappings/JIDs (Baileys/auth-dir) + inbound mapping; route queued replies to sender; improve web listener errors + remove provider name from errors; record outbound activity account id; fix web media fetch errors; broadcast group history consistency.
- Telegram: keep streamMode draft-only; long-poll conflict retries + update dedupe; grammY fetch mismatch fixes + restrict native fetch to Bun; suppress getUpdates stack traces; include user id in pairing; audio_as_voice handling fixes.
- Discord/Slack: thread context helpers + forum thread starters; avoid category parent overrides; gateway reconnect logs + HELLO timeout + stop provider after reconnect exhaustion; DM recipient parsing for numeric IDs; remove incorrect limited warning; reply threading + mrkdwn edge cases; remove ack reactions after reply; gateway debug event visibility.
- Signal: reaction handling safety; own-reaction matching (uuid+phone); UUID-only senders accepted; ignore reaction-only messages.
- MS Teams: download image attachments reliably; fix top-level replies; stop on shutdown + honor chunk limits; normalize poll providers/deps; pairing label fixes.
- iMessage: isolate group-ish threads by chat_id.
- Gateway/Daemon/Doctor: atomic config writes; repair gateway service entrypoint + install switches; non-interactive legacy migrations; systemd unit alignment + KillMode=process; node bridge keepalive/pings; Launch at Login persistence; bundle ClawdbotKit resources + Swift 6.2 compat dylib; relay version check + remove smoke test; regen Swift GatewayModels + keep agent provider string; cron jobId alias + channel alias migration + main session key normalization; heartbeat Telegram accountId resolution; avoid WhatsApp fallback for internal runs; gateway listener error wording; serveBaseUrl param; honor gateway --dev; fix wide-area discovery updates; align agents.defaults schema; provider account metadata in daemon status; refresh Carbon patch for gateway fixes; restore doctor prompter initialValue handling.
- Control UI/TUI: persist per-session verbose off + hide tool cards; logs tab opens at bottom; relative asset paths + landing cleanup; session labels lookup/persistence; stop pinning main session in recents; start logs at bottom; TUI status bar refresh + timeout handling + hide reasoning label when off.
- Onboarding/Configure: QuickStart single-select provider picker; avoid Codex CLI false-expiry warnings; clarify WhatsApp owner prompt; fix Minimax hosted onboarding (agents.defaults + msteams heartbeat target); remove configure Control UI prompt; honor gateway --dev flag.
### Maintenance
- Dependencies: bump pi-* stack to 0.42.2.
- Dependencies: Pi 0.40.0 bump (#543) — thanks @mcinteerj.
- Build: Docker build cache layer (#605) — thanks @zknicker.