### 亮点
- **重大变更:** 在 CLI/RPC/配置文件中,将聊天“providers”(Slack/Telegram/WhatsApp/…)重命名为 **channels**;旧的配置键会在加载时自动迁移(并写回为 `channels.*`)。
- 记忆: 为代理记忆(仅限 Markdown)添加向量搜索功能,包含 SQLite 索引、分块、惰性同步 + 文件监控,以及按代理启用/回退。
- 插件: 恢复完整的语音通话插件功能对等(Telnyx/Twilio、流式传输、入站策略、工具/CLI)。
- 模型: 添加 Synthetic 提供商以及 Moonshot Kimi K2 0905 + turbo/thinking 变体(附带文档)。(#811) — 感谢 @siraht; (#818) — 感谢 @mickahouan。
- 定时任务: 一次性调度现在接受 ISO 时间戳(UTC),并可选择运行后删除;cron 作业可以针对特定代理(CLI + macOS/Control UI)。
- 代理: 添加压缩模式配置,可选的保护性摘要生成以及按代理的模型回退。(#700) — 感谢 @thewilloftheshadow; (#583) — 感谢 @mitschabaude-bot。
### 新功能与改进
- 记忆: 添加自定义的、兼容 OpenAI 的嵌入端点;支持 OpenAI/本地 `node-llama-cpp` 嵌入,具有按代理覆盖和在工具/CLI 中显示提供商元数据的功能。(#819) — 感谢 @mukhtharcm。
- 记忆: 新的 `clawdbot memory` CLI 以及 `memory_search`/`memory_get` 工具,支持代码片段 + 行范围;索引存储在 `~/.clawdbot/memory/{agentId}.sqlite`,默认开启监控。
- 代理: 加强记忆召回指引;使工作区引导截断可配置(默认为 20k)并带有警告;添加默认的子代理模型配置。
- 工具/沙箱: 添加工具配置文件 + 组简写;支持 `tools.sandbox.tools` 中的工具策略组;移除旧的 `memory` 简写;允许通过 `docker.binds` 进行 Docker 绑定挂载。(#790) — 感谢 @akonyer。
- 工具: 添加浏览器 `scrollintoview` 操作;允许 Claude/Gemini 工具参数别名;允许为 GPT-5.2/Codex 使用 `xhigh` 思考级别,并带有安全降级。(#793) — 感谢 @hsrvc; (#444) — 感谢 @grp06。
- 网关/CLI: 添加 Tailscale 二进制发现、自定义绑定模式和探测认证重试;添加 `clawdbot dashboard` 自动打开流程;将默认原生斜杠命令设为 `"auto"`,并支持按提供商覆盖。(#740) — 感谢 @jeffersonwarrior。
- 认证/引导: 添加 Chutes OAuth(PKCE + 刷新 + 引导选择);规范化 API 密钥输入;默认 TUI 引导设置 `deliver: false`。(#726) — 感谢 @FrieSei; (#791) — 感谢 @roshanasingh4。
- 提供商: 添加 `discord.allowBots`;从默认目录中修剪旧的 MiniMax M2;将 MiniMax 视觉路由到 Coding Plan VLM 端点(也接受 `@/path/to/file.png` 输入)。(#802) — 感谢 @zknicker。
- 网关: 允许 Tailscale Serve 身份标头满足令牌认证;当协议模式更新时重建 Control UI 资源。(#823) — 感谢 @roshanasingh4; (#786) — 感谢 @meaningfool。
- 心跳: 默认 `ackMaxChars` 为 300,以便简短的 `HEARTBEAT_OK` 回复保持内部状态。
### 安装程序
- 安装: 在 git 安装/更新后运行 `clawdbot doctor --non-interactive`,并在检测到守护进程时提示重启。
### 修复
- 诊断: 在 pnpm 工作区不匹配、缺少 Control UI 资源以及缺少 tsx 二进制文件时发出警告;提供 UI 重建选项。
- 模型/提供商: 将凭证验证失败视为认证错误以触发回退;规范化 `${ENV_VAR}` apiKey 值并自动填充缺失的提供商密钥;保留明确的 GitHub Copilot 提供商配置 + 代理目录认证配置文件。(#822) — 感谢 @sebslight; (#705) — 感谢 @TAGOOZ。
- 认证: 从排序中移除无效的认证配置文件,以便环境密钥仍可用于 MiniMax 等提供商。
- Gemini: 将 Gemini 3 ID 规范化为预览变体;去除 Gemini CLI 工具调用/响应 ID;降级缺失的 `thought_signature`;去除 Claude `msg_*` thought_signature 字段以避免 base64 解码错误。(#795) — 感谢 @thewilloftheshadow; (#783) — 感谢 @ananth-vardhan-cn; (#793) — 感谢 @hsrvc; (#805) — 感谢 @marcmarg。
- 代理: 通过重置会话并重试,从压缩上下文溢出中自动恢复;从嵌入运行中传播溢出细节,以便调用者能够恢复。
- MiniMax: 去除格式错误的工具调用 XML;将 `MiniMax-VL-01` 包含在隐式提供商中以进行图像配对。(#809) — 感谢 @latitudeki5223。
- 引导/认证: 在写入认证配置文件时(MiniMax),遵循 `CLAWDBOT_AGENT_DIR` / `PI_CODING_AGENT_DIR` 环境变量。(#829) — 感谢 @roshanasingh4。
- Anthropic: 用友好的消息处理 `overloaded_error` 并进行故障转移分类。(#832) — 感谢 @danielz1z。
- Anthropic: 在验证前合并连续的用户对话轮次(保留最新的元数据),以避免角色错误。(#804) — 感谢 @ThomsenDrake。
- 消息传递: 对消息工具发送强制实施上下文隔离;在工具执行期间保持“正在输入”指示器活跃。(#793) — 感谢 @hsrvc; (#450, #447) — 感谢 @thewilloftheshadow。
- 自动回复: `/status` 允许列表行为,回退时的推理标签强制执行,以及为提升/推理切换入队系统事件。(#810) — 感谢 @mcinteerj。
- 系统事件: 当事件被注入提示时,包含本地时间戳。(#245) — 感谢 @thewilloftheshadow。
- 自动回复: 解决歧义的 `/model` 匹配;修复流式块回复的媒体处理;保留超过 300 字符的心跳回复而非丢弃。
- Discord/Slack: 集中化回复线程规划;修复 autoThread 路由 + 添加按频道的 autoThread;避免重复监听器;保持推理斜体不变;允许通过消息工具清除频道父级。(#800, #807) — 感谢 @davidguttman; (#744) — 感谢 @thewilloftheshadow。
- Telegram: 保留论坛主题线程 ID,持久化轮询偏移量,在 webhook 模式下尊重账户绑定,并在通用主题中显示“正在输入”指示器。(#727, #739) — 感谢 @thewilloftheshadow; (#821) — 感谢 @gumadeiras; (#779) — 感谢 @azade-c。
- Slack: 接受带或不带前导 `/` 的斜杠命令以用于自定义命令配置。(#798) — 感谢 @thewilloftheshadow。
- 定时任务: 正确持久化禁用的作业;接受 `jobId` 别名用于更新/运行/移除参数。(#205, #252) — 感谢 @thewilloftheshadow。
- 网关/CLI: 遵循 `CLAWDBOT_LAUNCHD_LABEL` / `CLAWDBOT_SYSTEMD_UNIT` 覆盖;`agents.list` 尊重显式配置;在测试期间减少嘈杂的回环 WS 日志;在更新期间运行 `clawdbot doctor --non-interactive`。(#781) — 感谢 @ronyrus。
- 引导/Control UI: 拒绝无效配置(先运行诊断工具);为 OAuth 引用 Windows 浏览器 URL;除非用户接近底部,否则保持聊天滚动位置。(#764) — 感谢 @mukhtharcm; (#794) — 感谢 @roshanasingh4; (#217) — 感谢 @thewilloftheshadow。
- 工具/UI: 为严格的提供商强化工具输入模式;为 Gemini 模式清理去除仅 null 的联合变体;将 `maxChars: 0` 视为无限制;在 TUI 中保留最后流式传输的响应,而不是显示“(无输出)”。(#782) — 感谢 @AbhisekBasu1; (#796) — 感谢 @gabriel-trigo; (#747) — 感谢 @thewilloftheshadow。
- 连接 UI: 优化多账户的账户卡片显示。(#816) — 感谢 @steipete。
### 维护
- 依赖: 将 Pi 包升级到 0.45.3 并刷新打过补丁的 pi-ai。
- 测试: 将 Vitest + browser-playwright 更新到 4.0.17。
- 文档: 添加 Amazon Bedrock 提供商说明,并在模型/常见问题中提供链接。
### Highlights
- **BREAKING:** rename chat “providers” (Slack/Telegram/WhatsApp/…) to **channels** across CLI/RPC/config; legacy config keys auto-migrate on load (and are written back as `channels.*`).
- Memory: add vector search for agent memories (Markdown-only) with SQLite index, chunking, lazy sync + file watch, and per-agent enablement/fallback.
- Plugins: restore full voice-call plugin parity (Telnyx/Twilio, streaming, inbound policies, tools/CLI).
- Models: add Synthetic provider plus Moonshot Kimi K2 0905 + turbo/thinking variants (with docs). (#811) — thanks @siraht; (#818) — thanks @mickahouan.
- Cron: one-shot schedules accept ISO timestamps (UTC) with optional delete-after-run; cron jobs can target a specific agent (CLI + macOS/Control UI).
- Agents: add compaction mode config with optional safeguard summarization and per-agent model fallbacks. (#700) — thanks @thewilloftheshadow; (#583) — thanks @mitschabaude-bot.
### New & Improved
- Memory: add custom OpenAI-compatible embedding endpoints; support OpenAI/local `node-llama-cpp` embeddings with per-agent overrides and provider metadata in tools/CLI. (#819) — thanks @mukhtharcm.
- Memory: new `clawdbot memory` CLI plus `memory_search`/`memory_get` tools with snippets + line ranges; index stored under `~/.clawdbot/memory/{agentId}.sqlite` with watch-on-by-default.
- Agents: strengthen memory recall guidance; make workspace bootstrap truncation configurable (default 20k) with warnings; add default sub-agent model config.
- Tools/Sandbox: add tool profiles + group shorthands; support tool-policy groups in `tools.sandbox.tools`; drop legacy `memory` shorthand; allow Docker bind mounts via `docker.binds`. (#790) — thanks @akonyer.
- Tools: add browser `scrollintoview` action; allow Claude/Gemini tool param aliases; allow thinking `xhigh` for GPT-5.2/Codex with safe downgrades. (#793) — thanks @hsrvc; (#444) — thanks @grp06.
- Gateway/CLI: add Tailscale binary discovery, custom bind mode, and probe auth retry; add `clawdbot dashboard` auto-open flow; default native slash commands to `"auto"` with per-provider overrides. (#740) — thanks @jeffersonwarrior.
- Auth/Onboarding: add Chutes OAuth (PKCE + refresh + onboarding choice); normalize API key inputs; default TUI onboarding to `deliver: false`. (#726) — thanks @FrieSei; (#791) — thanks @roshanasingh4.
- Providers: add `discord.allowBots`; trim legacy MiniMax M2 from default catalogs; route MiniMax vision to the Coding Plan VLM endpoint (also accepts `@/path/to/file.png` inputs). (#802) — thanks @zknicker.
- Gateway: allow Tailscale Serve identity headers to satisfy token auth; rebuild Control UI assets when protocol schema is newer. (#823) — thanks @roshanasingh4; (#786) — thanks @meaningfool.
- Heartbeat: default `ackMaxChars` to 300 so short `HEARTBEAT_OK` replies stay internal.
### Installer
- Install: run `clawdbot doctor --non-interactive` after git installs/updates and nudge daemon restarts when detected.
### Fixes
- Doctor: warn on pnpm workspace mismatches, missing Control UI assets, and missing tsx binaries; offer UI rebuilds.
- Models/Providers: treat credential validation failures as auth errors to trigger fallback; normalize `${ENV_VAR}` apiKey values and auto-fill missing provider keys; preserve explicit GitHub Copilot provider config + agent-dir auth profiles. (#822) — thanks @sebslight; (#705) — thanks @TAGOOZ.
- Auth: drop invalid auth profiles from ordering so environment keys can still be used for providers like MiniMax.
- Gemini: normalize Gemini 3 ids to preview variants; strip Gemini CLI tool call/response ids; downgrade missing `thought_signature`; strip Claude `msg_*` thought_signature fields to avoid base64 decode errors. (#795) — thanks @thewilloftheshadow; (#783) — thanks @ananth-vardhan-cn; (#793) — thanks @hsrvc; (#805) — thanks @marcmarg.
- Agents: auto-recover from compaction context overflow by resetting the session and retrying; propagate overflow details from embedded runs so callers can recover.
- MiniMax: strip malformed tool invocation XML; include `MiniMax-VL-01` in implicit provider for image pairing. (#809) — thanks @latitudeki5223.
- Onboarding/Auth: honor `CLAWDBOT_AGENT_DIR` / `PI_CODING_AGENT_DIR` when writing auth profiles (MiniMax). (#829) — thanks @roshanasingh4.
- Anthropic: handle `overloaded_error` with a friendly message and failover classification. (#832) — thanks @danielz1z.
- Anthropic: merge consecutive user turns (preserve newest metadata) before validation to avoid incorrect role errors. (#804) — thanks @ThomsenDrake.
- Messaging: enforce context isolation for message tool sends; keep typing indicators alive during tool execution. (#793) — thanks @hsrvc; (#450, #447) — thanks @thewilloftheshadow.
- Auto-reply: `/status` allowlist behavior, reasoning-tag enforcement on fallback, and system-event enqueueing for elevated/reasoning toggles. (#810) — thanks @mcinteerj.
- System events: include local timestamps when events are injected into prompts. (#245) — thanks @thewilloftheshadow.
- Auto-reply: resolve ambiguous `/model` matches; fix streaming block reply media handling; keep >300 char heartbeat replies instead of dropping.
- Discord/Slack: centralize reply-thread planning; fix autoThread routing + add per-channel autoThread; avoid duplicate listeners; keep reasoning italics intact; allow clearing channel parents via message tool. (#800, #807) — thanks @davidguttman; (#744) — thanks @thewilloftheshadow.
- Telegram: preserve forum topic thread ids, persist polling offsets, respect account bindings in webhook mode, and show typing indicator in General topics. (#727, #739) — thanks @thewilloftheshadow; (#821) — thanks @gumadeiras; (#779) — thanks @azade-c.
- Slack: accept slash commands with or without leading `/` for custom command configs. (#798) — thanks @thewilloftheshadow.
- Cron: persist disabled jobs correctly; accept `jobId` aliases for update/run/remove params. (#205, #252) — thanks @thewilloftheshadow.
- Gateway/CLI: honor `CLAWDBOT_LAUNCHD_LABEL` / `CLAWDBOT_SYSTEMD_UNIT` overrides; `agents.list` respects explicit config; reduce noisy loopback WS logs during tests; run `clawdbot doctor --non-interactive` during updates. (#781) — thanks @ronyrus.
- Onboarding/Control UI: refuse invalid configs (run doctor first); quote Windows browser URLs for OAuth; keep chat scroll position unless the user is near the bottom. (#764) — thanks @mukhtharcm; (#794) — thanks @roshanasingh4; (#217) — thanks @thewilloftheshadow.
- Tools/UI: harden tool input schemas for strict providers; drop null-only union variants for Gemini schema cleanup; treat `maxChars: 0` as unlimited; keep TUI last streamed response instead of "(no output)". (#782) — thanks @AbhisekBasu1; (#796) — thanks @gabriel-trigo; (#747) — thanks @thewilloftheshadow.
- Connections UI: polish multi-account account cards. (#816) — thanks @steipete.
### Maintenance
- Dependencies: bump Pi packages to 0.45.3 and refresh patched pi-ai.
- Testing: update Vitest + browser-playwright to 4.0.17.
- Docs: add Amazon Bedrock provider notes and link from models/FAQ.