跳转至

个人助理设置

OpenClaw 是一个自托管网关,可将 Discord、Google Chat、iMessage、Matrix、Microsoft Teams、Signal、Slack、Telegram、WhatsApp、Zalo 等连接到 AI Agent。本指南涵盖"个人助理"配置:一个专用的 WhatsApp 号码,行为就像你始终在线的 AI 助理。想改为搭建供多人使用的共享网关?请参阅 团队配置。

好的默认设置优先

已连接的 Agent 才是有能力的 Agent:根据你的工具策略,它可以运行命令、在其工作区中处理文件,并代表你向他人发送消息。默认设置将这些能力限制在你个人范围内;有几项设置值得事先确认:

  • 始终设置 channels.whatsapp.allowFrom(绝不要在个人 Mac 上以对全世界开放的方式运行)。
  • 为助理使用专用的 WhatsApp 号码。
  • 心跳默认每 30 分钟一次。在评估配置期间,设置 agents.defaults.heartbeat.every: "0m" 可禁用循环轮询。定向的事件驱动后续任务仍可运行,因此在信任该配置之前,请对工具策略和沙箱保持保守态度。

先决条件

  • 已安装并完成引导的 OpenClaw——如果尚未完成,请参阅 快速入门
  • 已安装 WhatsApp 插件,或在引导过程中选择了 WhatsApp。WhatsApp 是官方插件,可按需安装。请参阅 WhatsApp
  • 为助理准备第二个手机号码(SIM/eSIM/预付费)

你希望的是这样的架构:

flowchart TB
    A["<b>Your Phone (personal)<br></b><br>Your WhatsApp<br>+1-555-YOU"] -- message --> B["<b>Second Phone (assistant)<br></b><br>Assistant WA<br>+1-555-ASSIST"]
    B -- linked via QR --> C["<b>Your Mac (openclaw)<br></b><br>AI agent"]

如果你将个人 WhatsApp 链接到 OpenClaw,那么发给你的每一条消息都会变成"Agent 输入"。这通常不是你想要的效果。

5 分钟快速上手

  1. 配对 WhatsApp Web(显示二维码;用助理手机扫描):
openclaw channels login
  1. 启动网关(保持运行):
openclaw gateway --port 18789
  1. 在 ~/.openclaw/openclaw.json 中放入最小配置:
{
  gateway: { mode: "local" },
  channels: { whatsapp: { allowFrom: ["+15555550123"] } },
}

现在,从你的白名单手机向助理号码发送消息。

引导完成后,OpenClaw 会自动打开仪表盘并打印一个干净的(不含令牌的)链接。如果仪表盘提示需要认证,请将配置好的共享密钥粘贴到 Control UI 设置中。引导默认使用令牌认证(gateway.auth.token),但如果你已将 gateway.auth.mode 切换为 password,密码认证同样有效。之后如需重新打开:openclaw dashboard。

为 Agent 创建工作区(AGENTS)

OpenClaw 从其工作区目录中读取操作说明和"记忆"。

默认情况下,OpenClaw 使用 ~/.openclaw/workspace 作为 Agent 工作区,并在引导或首次运行 Agent 时自动创建它(以及初始的 AGENTS.md、SOUL.md、IDENTITY.md、USER.md)。将特定于环境的工具说明放入 AGENTS.md 的 ## Tools 部分。BOOTSTRAP.md 仅为全新工作区创建,删除后不应再出现。MEMORY.md 是可选的,绝不会自动创建;当存在时,它会在普通会话中加载。子 Agent 会话仅注入 AGENTS.md。

Tip

将文件夹视为 OpenClaw 的记忆,并将其设为 git 仓库(最好是私有的),以便备份你的 AGENTS.md 和记忆文件。如果已安装 git,全新的工作区会自动使用 git init 初始化。

如需在不运行完整引导向导的情况下创建工作区和配置文件夹:

openclaw setup --baseline

(裸命令 openclaw setup 是 openclaw onboard 的别名,会运行完整的交互式引导向导。)

完整的工作区布局 + 备份指南:Agent 工作区 记忆工作流:Memory

可选:使用 agents.defaults.workspace 选择不同的工作区(支持 ~)。

{
  agents: {
    defaults: {
      workspace: "~/.openclaw/workspace",
    },
  },
}

如果你已经从仓库自带工作区文件,可以完全禁用引导文件的创建:

{
  agents: {
    defaults: {
      skipBootstrap: true,
    },
  },
}

将其变成"助理"的配置

OpenClaw 的默认配置就是一个良好的助理配置,但你通常需要调整:

  • SOUL.md 中的人设/指令
  • 思考默认值(如果需要)
  • 心跳(一旦你信任它)

示例:

{
  logging: { level: "info" },
  agents: {
    defaults: {
      workspace: "~/.openclaw/workspace",
      thinkingDefault: "high",
      timeoutSeconds: 1800,
      // Start with 0; enable later.
      heartbeat: { every: "0m" },
    },
    entries: {
      main: {
        default: true,
        groupChat: {
          mentionPatterns: ["@openclaw", "openclaw"],
        },
      },
    },
  },
  channels: {
    whatsapp: {
      allowFrom: ["+15555550123"],
      groups: {
        "*": { requireMention: true },
      },
    },
  },
  session: {
    scope: "per-sender",
    resetTriggers: ["/new", "/reset"],
    reset: {
      mode: "daily",
      atHour: 4,
      idleMinutes: 10080,
    },
  },
}

会话与记忆

  • 会话行、记录行和元数据(令牌用量、最后路由等):~/.openclaw/agents/<agentId>/agent/openclaw-agent.sqlite
  • 旧版/归档会话记录文件:~/.openclaw/agents/<agentId>/sessions/
  • 旧版行数据的迁移来源:~/.openclaw/agents/<agentId>/sessions/sessions.json
  • /new 或 /reset 会为该聊天开启一个全新会话(可通过 session.resetTriggers 配置)。如果单独发送这些命令,OpenClaw 会确认重置而不调用模型。
  • /compact [instructions] 会压缩会话上下文,并报告剩余的上下文预算。

心跳(主动模式)

默认情况下,OpenClaw 每 30 分钟运行一次心跳——当配置了 Anthropic OAuth/令牌认证(包括 Claude CLI 复用)时则为每小时一次。完整的默认值请参阅 Heartbeat。提示词为: Follow the heartbeat monitor scratch context when provided. Recurring tasks are automations; create or change their schedules with the automations tool, not heartbeat scratch. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply NO_REPLY. 设置 agents.defaults.heartbeat.every: "0m" 可禁用循环节奏。定向的事件驱动唤醒(例如后台执行完成后的后续处理)仍然可用,且不会创建循环计划。心跳检查清单存放在监视器的 cron scratch 中(参阅 Heartbeat);openclaw doctor --fix 会将旧版工作区的 HEARTBEAT.md 迁移到其中。

  • 如果监控 scratch 存在但实际为空(仅包含空行、Markdown/HTML 注释、类似 # Heading 的 Markdown 标题、围栏标记或空清单存根),OpenClaw 会跳过本次 heartbeat 运行以节省 API 调用。
  • 如果不存在 scratch,heartbeat 仍会运行,并由模型决定如何处理。
  • 如果 agent 回复 NO_REPLY,OpenClaw 会抑制该 heartbeat 的出站投递。旧版 HEARTBEAT_OK 回复仍受支持,并带有固定的 300 字符确认预算。
  • 默认情况下,允许向 DM 风格的 user:<id> 目标投递 heartbeat。设置 agents.defaults.heartbeat.directPolicy: "block" 可抑制直接目标投递,同时保持 heartbeat 运行处于活动状态。
  • Heartbeat 会运行完整的 agent 轮次——更短的间隔会消耗更多 Token。
{
  agents: {
    defaults: {
      heartbeat: { every: "30m" },
    },
  },
}

媒体输入与输出

入站附件(图像/音频/文档)可以通过模板呈现到你的命令中:

  • {{AttachmentPath}}(本地临时文件路径)
  • {{AttachmentUrl}}(原始 URL 或提供商引用)
  • {{AttachmentContentType}}(MIME 内容类型)
  • {{AttachmentDir}}(包含本地路径的目录)
  • {{AttachmentIndex}}(从零开始的源事实索引)
  • {{Transcript}}(如果启用了音频转录)

旧版 {{MediaPath}}、{{MediaUrl}}、{{MediaType}} 和 {{MediaDir}} 名称仍可作为已弃用的兼容性别名使用。

agent 的出站附件使用消息工具或回复负载中的结构化媒体字段,例如 media、mediaUrl、mediaUrls、path 或 filePath。消息工具参数示例:

{
  "message": "Here's the screenshot.",
  "mediaUrl": "https://example.com/screenshot.png"
}

OpenClaw 会随文本一起发送结构化媒体。旧版最终 assistant 回复可能仍会被规范化以兼容,但工具输出、浏览器输出、流式块和消息操作不会将文本解析为附件命令。

如果必须使用旧版最终回复中的 MEDIA: 行,请将其保留为独立的纯 文本。Markdown 包装器、代码围栏以及内联文本,例如 **MEDIA:/path.png**、`MEDIA:/path.png` 或 Here is the image: MEDIA:/path.png,仍会保持为文本,不会附加媒体。参见 富输出协议.

本地路径行为遵循与 agent 相同的文件读取信任模型:

  • 如果 tools.fs.workspaceOnly 为 true,出站本地媒体路径仍限制在 OpenClaw 临时根目录、媒体缓存、agent 工作区路径以及活动会话沙箱中生成的文件。同级沙箱中的文件仍不可访问。
  • 如果 tools.fs.workspaceOnly 为 false,出站本地媒体可以使用 agent 已被允许读取的宿主本地文件。
  • 本地路径可以是绝对路径、工作区相对路径,或使用 ~/ 的主目录相对路径。
  • 宿主本地发送仍只允许媒体和支持的文档类型(图像、音频、视频、PDF、Office 文档(包括启用宏的 Excel .xlsm),以及经过验证的文本文档,例如 Markdown/MD、TXT、JSON、YAML 和 YML)。这是现有宿主读取信任边界的扩展,而不是机密扫描器:如果 agent 可以读取宿主本地的 secret.txt 或 config.json,并且扩展名和内容验证匹配,它就可以附加该文件。文件类型验证并不能证明所附加工作簿中的宏可以安全运行。

请将敏感文件放在 agent 可读文件系统之外,或保持 tools.fs.workspaceOnly: true 以更严格地限制本地路径发送。

当消息工具无法为当前会话暂存附件时, 其错误会标识文件及报告的原因,例如文件缺失或 不支持的本地格式。位于工作区内并不意味着所有 文件类型都符合宿主本地附件读取条件。

运维检查清单

openclaw status          # local status (creds, sessions, queued events)
openclaw status --all    # full diagnosis (read-only, pasteable)
openclaw status --deep   # probe channels (WhatsApp Web + Telegram + Discord + Slack + Signal)
openclaw health --json   # gateway health snapshot over the WS connection

日志位于 /tmp/openclaw/ 下:默认 profile 使用 openclaw-YYYY-MM-DD.log,命名 profile 使用 openclaw-<profile>-YYYY-MM-DD.log。

后续步骤

本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 cl/openclaw