乐于分享
好东西不私藏

Openclaw-BOOTSTRAP.md新生儿的第一张卡片

Openclaw-BOOTSTRAP.md新生儿的第一张卡片

BOOTSTRAP.md是 OpenClaw 工作区中一个非常特殊且短暂存在的文件——它只在全新工作区首次启动时出现,用于指导 AI 完成一次性初始化任务。一旦这些任务执行完毕,它通常会自我删除或标记为已完成,因此大多数时候你不会见到它。

下面从概念、生命周期、内容结构以及最佳实践几个方面详细介绍。


📌 核心概念:AI 的“出生证明”

BOOTSTRAP.md就像一个新生儿的第一张卡片,上面写着:“这是我第一次醒来,请帮我完成以下准备步骤”。它存在的意义是让 AI 能够在零配置、零记忆的状态下,通过读取这个文件自动进入可用状态,而无需你手动去配置所有东西。


🧬 生命周期:一次性的仪式

  1. 创建:当你创建一个新的工作区(例如openclaw agents add myagent --workspace ~/myworkspace)或首次运行某个 Agent 时,OpenClaw 网关会检查该工作区目录。如果发现没有任何记忆文件(如MEMORY.mdmemory/目录为空)且不存在BOOTSTRAP.md,则会自动生成一个默认的BOOTSTRAP.md模板

  2. 执行:Agent 启动时会读取BOOTSTRAP.md,将其内容作为系统提示的一部分注入,并按照其中指示的步骤依次执行初始化任务。例如:创建必要的目录、生成基础配置文件、克隆技能仓库、设置 API 密钥占位符等。

  3. 完成与清理:当所有步骤完成后,Agent必须(按照规范)删除或重命名BOOTSTRAP.md(例如改为BOOTSTRAP.md.done),以避免下次启动时重复执行。有些版本的 OpenClaw 也会在任务完成后自动将其清空或加上<!-- DONE -->标记。

  4. 后续:之后该工作区进入正常运作状态,AI 依靠SOUL.mdUSER.mdMEMORY.md等文件维持人格和记忆。除非你手动删除整个工作区重新开始,否则BOOTSTRAP.md不会再出现。

⚠️重要永远不要手动创建BOOTSTRAP.md。如果因为某些原因需要重新执行初始化,正确做法是删除整个工作区(或至少删除MEMORY.mdmemory/目录),然后重启 Agent 让其自动生成新的BOOTSTRAP.md


📝 典型内容与结构

BOOTSTRAP.md的格式没有严格的硬性规定,但通常遵循以下结构:

markdown

# Bootstrap Instructions for [Agent Name]
This is the first time this workspace is being used. Please perform the following setup tasks sequentially.
## 1. Create basic directory structure
- Ensure `~/myworkspace/skills/` exists.
- Ensure `~/myworkspace/memory/` exists.
## 2. Clone default skills
- Run: `git clone https://github.com/openclaw/default-skills.git skills/default`## 3. Generate initial configuration files
- Create `USER.md` with placeholder: "# About the user\n\nPlease tell me your name and preferences."
- Create `SOUL.md` with placeholder: "# My personality\n\nI am a helpful assistant."
## 4. Set up environment variables
- Check if `OPENAI_API_KEY` is set; if not, prompt the user to set it.
## 5. Mark bootstrap as complete
- Once all steps succeed, delete this file.

核心内容包括:

  • 明确的步骤列表(使用有序列表或带- [ ]的复选框)。

  • 可执行的命令(如mkdir,git clone,openclaw config set)。

  • 用户交互提示(如“请告诉你的名字”)。

  • 完成标志(通常是“删除本文件”或“创建.bootstrapped文件”)。


🔧 工作流程示例

假设你创建了一个新工作区~/myagent,并首次启动openclaw agent run --workspace ~/myagent

  1. 网关发现~/myagent下没有MEMORY.md,也没有BOOTSTRAP.md,于是生成一个默认的BOOTSTRAP.md

  2. Agent 加载该文件,开始执行步骤:

    • 创建skills/memory/目录。

    • 克隆官方技能仓库。

    • 生成USER.mdSOUL.md模板。

    • 检测到OPENAI_API_KEY未设置,于是向你发送一条消息:“请设置 OPENAI_API_KEY 环境变量”。

  3. 你设置好 API Key 后,再次运行 Agent(或 Agent 自动重试),步骤继续。

  4. 所有步骤完成,Agent 删除BOOTSTRAP.md

  5. 之后每次启动,Agent 都会读取USER.mdSOUL.md等文件,不会再看到BOOTSTRAP.md


⚠️ 注意事项

  1. 幂等性BOOTSTRAP.md中的步骤应该设计成可以重复执行而不产生副作用(例如创建目录前先检查是否存在)。因为网络波动或中途失败可能导致部分步骤被重复执行。

  2. 避免长耗时操作:初始化不应包含大规模下载、训练模型等耗时任务。这些应放在单独的HEARTBEAT.md定时任务中。

  3. 安全限制:不要在其中写入硬编码的密码或 API Key。应使用环境变量或提示用户输入。

  4. 用户交互:如果步骤需要用户输入(如“请选择你的默认模型”),Agent 应暂停并询问,而不是直接假设。

  5. 版本控制:通常不建议将BOOTSTRAP.md纳入 Git 仓库,因为它与特定运行环境相关。但可以将其模板作为文档提交。


🔗 与其他文件的关系

文件
关系
AGENTS.mdBOOTSTRAP.md
完成后,Agent 的行为由AGENTS.md中的规则定义。
SOUL.mdBOOTSTRAP.md
可能会生成初始的SOUL.md占位符,之后由用户或 Agent 自行完善。
USER.md
同理,BOOTSTRAP.md可能创建USER.md模板,等待用户填充。
HEARTBEAT.md
初始化完成后,HEARTBEAT.md负责周期性任务,与BOOTSTRAP.md无直接关联。
MEMORY.mdBOOTSTRAP.md
执行期间不会写入长期记忆,因为记忆系统本身可能还未就绪。

🧪 调试与恢复

如果你不小心删除了BOOTSTRAP.md但工作区尚未初始化完成,可以手动创建一个同名文件,写入所需的初始化步骤。但更推荐的做法是删除整个工作区(或至少清空MEMORY.mdmemory/),然后重启 Agent 让其自动生成。

检查当前是否处于已初始化状态:

bash

ls ~/.openclaw/workspace/BOOTSTRAP.md   # 如果不存在,说明已完成初始化

📌 总结

BOOTSTRAP.md是 OpenClaw 工作区生命周期中的第一个文件,它帮助 AI 从零开始建立运行环境,完成一次性的准备工作。完成使命后它会自动消失,让位给其他长期记忆和行为定义文件。理解它的工作原理,有助于你调试新工作区的初始化问题,或者在自动化部署中定制初始化流程。