会话与多聊天
会话与多聊天¶
如何开始一次全新的对话?
发送 /new 或 /reset 作为独立消息。参见 会话管理。
如果我从不发送 /new,会话会自动重置吗?
不,默认不会。会话保持相同的 sessionId,并且随着对话增长,压缩会限制活动模型上下文。/new 和 /reset 仍然可用,或者你可以选择使用 mode: "daily" 或 mode: "idle" 自动重置。每日模式在网关主机上的 session.reset.atHour(默认 4,0-23)时刻轮换;空闲模式使用自上次真实交互以来的 session.reset.idleMinutes,不包括心跳/定时任务/exec 系统事件。
{
session: {
reset: { mode: "daily", atHour: 4 },
resetByType: {
group: { mode: "idle", idleMinutes: 120 },
thread: { mode: "daily", atHour: 6 },
},
resetByChannel: {
discord: { mode: "idle", idleMinutes: 10080 },
},
},
}
resetByType 支持 direct、group 和 thread。Doctor 会将旧的 dm 条目迁移为 direct;schema 会拒绝 dm。当未设置 session.reset/resetByType 块时,旧的顶层 session.idleMinutes 仍可作为空闲模式默认值的兼容别名。完整生命周期请参见 会话管理。
有没有办法组建一个由 OpenClaw 实例组成的团队(一个 CEO 和多个智能体)?
是的,可以通过多智能体路由和子智能体实现:一个协调智能体加上多个拥有各自工作区和模型的工作智能体。
这最好被视为一个有趣的实验——它消耗大量 token,而且通常比一个使用独立会话的单个 bot 效率更低。典型模式是:你与一个 bot 对话,使用不同的会话进行并行工作,并在需要时生成子智能体。
文档:多智能体路由、子智能体、Agents CLI。
为什么任务中途上下文被截断?如何避免?
会话上下文受模型窗口限制。长聊天、大型工具输出或大量文件都可能触发压缩或截断。
- 让 bot 总结当前状态并写入文件。
- 在长任务前使用
/compact,在切换主题时使用/new。 - 将重要上下文保留在工作区中,并让 bot 重新读取。
- 使用子智能体处理长时间或并行工作,以保持主聊天更小。
- 如果这种情况经常发生,请选择上下文窗口更大的模型。
如何完全重置 OpenClaw 但保留安装?
非交互式完全重置:
然后重新运行设置:
要重置并立即重新运行引导,请传递 openclaw onboard --reset;reset 是一个命令标志,而不是 设置模式 菜单选项。参见 引导(CLI)。如果你使用了配置文件(--profile / OPENCLAW_PROFILE),请重置每个状态目录(默认 ~/.openclaw-<profile>)。仅开发人员重置:openclaw gateway --dev --reset 会清除开发配置、凭据、会话和工作区。
我遇到 'context too large' 错误——如何重置或压缩?
- 压缩(保留对话,总结较早的轮次):使用
/compact或/compact <instructions>来引导摘要。 - 重置(为同一聊天键获取新的会话 ID):使用
/new或/reset。
如果这种情况持续发生,请调整会话剪枝(agents.defaults.contextPruning)以修剪旧工具输出,或使用上下文窗口更大的模型。
为什么我会看到 'LLM request rejected: messages.content.tool_use.input field required'?
提供方验证错误:模型发送了一个缺少必需 input 的 tool_use 块。这通常意味着会话历史已过期或损坏(通常在长线程或工具/schema 更改后出现)。
修复:使用 /new(独立消息)开始一个新的会话。
为什么我每 30 分钟收到一次心跳消息?
默认情况下,心跳每 30 分钟运行一次;当解析出的认证模式为 Anthropic OAuth/token 认证(包括 Claude CLI 复用)且 heartbeat.every 未设置时,则为 1 小时。可以调整或禁用:
{
agents: {
defaults: {
heartbeat: {
every: "2h", // or "0m" to disable recurring cadence
},
},
},
}
心跳指令位于监控器的 cron 暂存区中。如果暂存区实际为空,则会跳过心跳运行以节省 API 调用;如果没有暂存区,心跳仍会运行,并由模型决定要做什么。0m 不会阻止定向的事件驱动唤醒,例如后台 exec 完成后的后续处理;这些仍可运行一个智能体回合,而不会启用周期性节奏。
按智能体覆盖使用 agents.entries.*.heartbeat。文档:心跳。
我需要向 WhatsApp 群组添加一个“机器人账户”吗?
不需要。OpenClaw 运行在你自己的账户上——如果你在群组中,OpenClaw 就能看到。默认情况下,群组回复会被阻止,直到你允许发件人(groupPolicy: "allowlist")。
要将群组回复限制为仅你自己:
如何获取 WhatsApp 群组的 JID?
最快的方法:跟踪日志并在群组中发送一条测试消息。
查找以 @g.us 结尾的 chatId(或 from),例如 1234567890-1234567890@g.us。
如果已配置/已加入允许列表,可从配置中列出群组:
为什么 OpenClaw 不在群里回复?
常见原因有两个:默认启用了提及门控(你必须 @提及机器人,或匹配 mentionPatterns),或者你配置了 channels.whatsapp.groups 但没有包含 "*",导致该群组未被加入白名单。
群组/线程会与私信(DMs)共享上下文吗?
默认情况下,私聊会并入主会话(main session)。群组/频道拥有各自的会话键(session key),除非路由绑定将 session.groupScope: "main" 设置为把该房间合并到主会话;Telegram 主题 / Discord 线程则是独立的会话。参见 群组 和 群组消息。
我可以创建多少个工作区和智能体?
没有硬性限制——几十个甚至几百个都没问题,但要注意:
- 磁盘增长:活动会话和记录存储在每智能体的 SQLite 数据库中;历史/归档产物仍可能堆积在
~/.openclaw/agents/<agentId>/sessions/下。 - Token 成本:智能体越多,并发模型使用量越大。
- 运维开销:每个智能体的认证配置、工作区和频道路由。
每个智能体只保留一个活动工作区(agents.defaults.workspace)。如果磁盘增长,使用 openclaw sessions cleanup 清理旧会话(不要手动编辑活动的 SQLite 状态),并使用 openclaw doctor 来发现游离的工作区和配置不匹配。
我可以同时运行多个机器人或聊天(Slack)吗?应该如何设置?
可以,通过多智能体路由(Multi-Agent Routing):运行多个相互隔离的智能体,并按频道/账号/对端(peer)路由入站消息。Slack 可作为频道使用,并可以绑定到特定智能体。
浏览器访问功能很强大,但并非“能做到人能做的任何事情”——反机器人(anti-bot)、CAPTCHA 和 MFA 仍可能阻止自动化。为了获得最可靠的控制,请在宿主机上使用本地 Chrome MCP,或在真正运行浏览器的机器上使用 CDP。
最佳实践设置:始终在线的 Gateway 主机(VPS/Mac mini),每个角色一个智能体(通过绑定),将 Slack 频道绑定到这些智能体,并在需要时通过 Chrome MCP 或节点使用本地浏览器。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw