Skip to content

Agent Workspace(工作目录)

Workspace 是 Agent 的"家"。所有文件工具的读写操作都以它为根目录,工作区上下文也来自这里。把它当成私人记忆来保管。

这和 ~/.openclaw/(存放配置、凭证和会话记录的地方)是分开的。

重要提示: Workspace 是默认的工作目录(cwd),不是硬性沙箱。工具会将相对路径解析到 Workspace,但绝对路径仍然可以访问宿主机的其他位置——除非你开启了沙箱。如果需要隔离,请配置 agents.defaults.sandbox(也可按 Agent 单独配置)。开启沙箱且 workspaceAccess 不为 "rw" 时,工具将在 ~/.openclaw/sandboxes 下的沙箱 Workspace 中运行,而非你的宿主机 Workspace。

默认位置

  • 默认:~/.openclaw/workspace
  • 若设置了 OPENCLAW_PROFILE 且不为 "default",默认变为 ~/.openclaw/workspace-<profile>
  • 可在 ~/.openclaw/openclaw.json 中覆盖:
json5
{
  agent: {
    workspace: "~/.openclaw/workspace",
  },
}

执行 openclaw onboardopenclaw configureopenclaw setup 时,若 Workspace 不存在,会自动创建并写入引导文件。沙箱的种子复制只接受 Workspace 内的普通文件;解析到 Workspace 之外的符号链接/硬链接会被忽略。

如果你自己管理 Workspace 文件,可以禁用引导文件创建:

json5
{ agent: { skipBootstrap: true } }

多余的 Workspace 目录

旧版本安装可能创建过 ~/openclaw。同时保留多个 Workspace 目录会导致认证或状态混乱,因为每次只有一个 Workspace 是活跃的。

建议: 只保留一个活跃 Workspace。如果不再使用那些多余的目录,请将其归档或移入回收站(例如 trash ~/openclaw)。如果你确实需要多个 Workspace,请确保 agents.defaults.workspace 指向当前活跃的那个。

openclaw doctor 检测到多余的 Workspace 目录时会发出警告。

Workspace 文件说明(每个文件的含义)

以下是 OpenClaw 在 Workspace 内期望找到的标准文件:

  • AGENTS.md

    • Agent 的操作指令,以及如何使用记忆的说明
    • 每次会话开始时加载
    • 适合放规则、优先级以及"行为准则"等内容
  • SOUL.md

    • 角色人设、语气风格与边界限制
    • 每次会话加载
  • USER.md

    • 用户是谁,以及如何称呼用户
    • 每次会话加载
  • IDENTITY.md

    • Agent 的名称、气质与 emoji
    • 在引导仪式中创建/更新
  • TOOLS.md

    • 本地工具和约定的说明
    • 不控制工具可用性,仅作为指导
  • HEARTBEAT.md

    • 可选的心跳运行小清单
    • 保持简短,避免消耗大量 token
  • BOOT.md

    • 可选的启动清单,在开启内部 hooks 时随 Gateway 重启执行
    • 保持简短;通过 message 工具发送外发消息
  • BOOTSTRAP.md

    • 首次运行的一次性仪式
    • 只为全新 Workspace 创建
    • 仪式完成后请删除
  • memory/YYYY-MM-DD.md

    • 每日记忆日志(每天一个文件)
    • 建议在会话开始时读取今天和昨天的日志
  • MEMORY.md(可选)

    • 精心整理的长期记忆
    • 只在主私人会话中加载(不在共享/群组上下文中加载)

更多内容见 Memory

  • skills/(可选)

    • Workspace 专属 Skills
    • 同名时覆盖托管/内置 Skills
  • canvas/(可选)

    • Canvas UI 文件(例如 canvas/index.html

如果某个引导文件缺失,OpenClaw 会在会话中注入一个"文件缺失"标记并继续运行。大型引导文件注入时会被截断;可通过 agents.defaults.bootstrapMaxChars(默认:20000)和 agents.defaults.bootstrapTotalMaxChars(默认:150000)调整限制。openclaw setup 可在不覆盖现有文件的前提下重建缺失的默认文件。

不在 Workspace 中的内容

以下文件位于 ~/.openclaw/不应提交到 Workspace 仓库:

  • ~/.openclaw/openclaw.json(配置)
  • ~/.openclaw/credentials/(OAuth token、API 密钥)
  • ~/.openclaw/agents/<agentId>/sessions/(会话记录和元数据)
  • ~/.openclaw/skills/(托管 Skills)

如果需要迁移会话或配置,请单独复制,并排除在版本控制之外。

Git 备份(推荐,私有)

把 Workspace 当作私人记忆来对待。将其放入私有 Git 仓库,以便备份和恢复。

以下步骤在运行 Gateway 的机器上执行(Workspace 就在那台机器上)。

1)初始化仓库

如果安装了 git,全新的 Workspace 会自动初始化。如果还没有仓库,运行:

bash
cd ~/.openclaw/workspace
git init
git add AGENTS.md SOUL.md TOOLS.md IDENTITY.md USER.md HEARTBEAT.md memory/
git commit -m "Add agent workspace"

2)添加私有远程仓库

方案 A:GitHub 网页端

  1. 在 GitHub 上创建一个私有仓库。
  2. 不要用 README 初始化(避免合并冲突)。
  3. 复制 HTTPS 远程 URL。
  4. 添加远程并推送:
bash
git branch -M main
git remote add origin <https-url>
git push -u origin main

方案 B:GitHub CLI(gh

bash
gh auth login
gh repo create openclaw-workspace --private --source . --remote origin --push

方案 C:GitLab 网页端

  1. 在 GitLab 上创建一个私有仓库。
  2. 不要用 README 初始化(避免合并冲突)。
  3. 复制 HTTPS 远程 URL。
  4. 添加远程并推送:
bash
git branch -M main
git remote add origin <https-url>
git push -u origin main

3)日常更新

bash
git status
git add .
git commit -m "Update memory"
git push

不要提交敏感信息

即使在私有仓库中,也要避免在 Workspace 中存储密钥:

  • API 密钥、OAuth token、密码或私有凭证
  • ~/.openclaw/ 下的任何内容
  • 聊天记录的原始导出或敏感附件

如果确实需要存储敏感引用,请用占位符代替,将真正的密钥存放在密码管理器、环境变量或 ~/.openclaw/ 中。

推荐的 .gitignore 起点:

gitignore
.DS_Store
.env
**/*.key
**/*.pem
**/secrets*

将 Workspace 迁移到新机器

  1. 将仓库克隆到目标路径(默认 ~/.openclaw/workspace)。
  2. ~/.openclaw/openclaw.json 中将 agents.defaults.workspace 设为该路径。
  3. 运行 openclaw setup --workspace <path> 补全缺失文件。
  4. 如需迁移会话记录,从旧机器单独复制 ~/.openclaw/agents/<agentId>/sessions/

高级说明

  • 多 Agent 路由可以为每个 Agent 配置不同的 Workspace。路由配置见 Channel routing
  • 如果 agents.defaults.sandbox 已启用,非主会话可以使用 agents.defaults.sandbox.workspaceRoot 下的每会话沙箱 Workspace。