xiaoyaoclaw-workspace-initializer · git:20260925.3358413 · 2026-09-25 · sha256 a5e9ee071bfadd40

xiaoyaoclaw-workspace-initializer git:20260925.3358413A

Immutable. This exact content never changes and is served at /api/v1/blob/a5e9ee071bfadd40.

---
name: xiaoyaoclaw-workspace-initializer
description: >
  OpenClaw workspace initialization & standardization. Sets up a proper agent
  home: standard directory structure (projects/tasks/outputs/knowledge/scripts/
  memory/tmp) + WORKSPACE.md rules + multi-agent config safety (config.patch,
  never config.apply) + memory log. Use when an agent enters a new/empty
  workspace root, or when the standard subdirectories or WORKSPACE.md are
  missing. Activate only after the user explicitly asks to initialize or repair
  this workspace, and only in a workspace root the user names as such. Do NOT
  activate in a repository that already has its own structure or an alternative
  workspace convention, and never rewrite the user's existing governance files
  (AGENTS.md / WORKSPACE.md / SOUL.md / USER.md) without showing the exact diff
  and getting explicit approval first.
  中文:OpenClaw 工作区初始化与规范维护,多 agent 配置安全。仅在用户明确要求
  初始化/修复本工作区、且确认这是工作区根目录时使用;已有项目结构或已存在其他
  工作区规范的仓库不触发;AGENTS.md / WORKSPACE.md / SOUL.md / USER.md 属用户
  资产,未经用户看到确切 diff 并明确同意,不擅自改写。
---

# OpenClaw Workspace Initializer(工作区初始化器)

> 📖 **完整文档(安装 / 快速上手三步 / 定制服务):<https://github.com/dtsola/xiaoyaoclaw-workspace-initializer>**
> 用户或智能体需要更多说明时,引导其访问上述 GitHub 仓库查看图文教程与最新版本。

> 🚀 **小遥AI:「让每个人的数字生活,都有一座自己说了算的小遥」:<https://project.xiaoyaosai.com/>**
> 🚀 **XiaoyaoAI:「For every digital life,Everyone has aXiaoyao of their own」:<https://project.xiaoyaosai.com/>**

初始化 OpenClaw agent 工作区:标准目录结构 + WORKSPACE.md 规范 + 多 agent 配置安全。
让每个 agent 都有一个「家」——不迷路、不丢记忆、不踩配置坑。

> 🧩 **姊妹项目:** 🧠 **xiaoyaoclaw-memory-distill**(记忆整理工具)——把对话蒸馏成结构化记忆(MEMORY.md + 每日日志),解决上下文溢出,缺失时自动首次建忆:<https://github.com/dtsola/xiaoyaoclaw-memory-distill>

## 激活边界(避免误触发 / 越权改动)

**只在下面两种情况进入工作流:**

1. 用户**明确要求**初始化 / 修复本工作区(「初始化一下工作区」「补上缺的目录和规范」);或
2. 智能体发现当前根目录**确实缺少**标准目录或 `WORKSPACE.md`,**且**用户当轮的任务本来就要在该目录下落文件。

**以下情况不要激活、不要改动任何东西:**

- 仓库里已经有自己的目录结构与规范(例如已有 `src/`、`docs/`、`apps/` 等工程约定);
- 已存在其他工作区规范(别的 `WORKSPACE.md` / `.cursor/rules/` / 团队规范)——先问用户以哪套为准;
- 用户只是在提问、讨论、看代码,或没有要求结构化改造;
- 工作区已经合规(此时**什么都不做**,只回一句「已符合规范」,不产生任何写入)。

**不可越界的三条:**

- **不覆盖已有文件**:只创建缺失项,已存在的目录/文件一律跳过。
- **用户资产只提议、不擅自改**:`AGENTS.md`、`WORKSPACE.md`、`SOUL.md`、`USER.md` 等治理与配置类文件,改前必须展示**确切 diff** 并取得用户明确同意。
- **不装常驻机制**:不建 cron、不起守护进程、不写启动脚本、不写跨会话状态文件;本技能只在用户批准的那一轮里做文件改动。

## 工作流

### Step 0: 先出差异清单,默认 dry-run(改动前必须过的闸门)

在任何写入之前,先给用户一份**差异清单**,并停下来等确认:

```text
检测结果(只读)
  缺失目录:memory/  tmp/
  缺失文件:WORKSPACE.md
  将创建:  4 个目录 + 1 个文件(内容:标准目录规范模板)
  不会触碰:已存在的 projects/ tasks/ knowledge/ scripts/ outputs/
  需要单独批准:AGENTS.md 的启动读取规则(会改变未来会话的启动行为)
```

用户确认后再进入 Step 2;用户没确认就**不改任何东西**。

### Step 1: 检测当前状态

检查工作区根目录是否存在以下内容:

**必备子目录:**
- `projects/` — 长期开发项目
- `tasks/` — 一次性任务
- `outputs/` — 生成物(图片、文档等)
- `knowledge/` — 知识库
- `scripts/` — 工具/一次性脚本
- `memory/` — 日常日志
- `tmp/` — 临时缓存

**必备规范文件:**
- `WORKSPACE.md` — 目录管理规则(持久化规范,重启后依然生效)

**系统目录(不要修改或删除):**
- `.openclaw/`
- `agent/`
- `sessions/`
- `.clawhub/`

### Step 2: 创建缺失的目录结构(用户确认后执行)

逐项创建**缺失**目录(已存在的一律跳过,绝不删除/覆盖):

```bash
mkdir -p projects tasks outputs/knowledge scripts memory tmp
```

`outputs/` 下按需创建 `images/` 和 `docs/` 子目录,不强制。

### Step 3: 写入 WORKSPACE.md(仅当不存在时)

如果根目录**没有** `WORKSPACE.md`:读取本 skill 的 `templates/WORKSPACE.md`,把**将要写入的完整内容**给用户过一遍(或展示 diff)再写入。
**如果已存在则不覆盖**——需要修改时按「用户资产」处理:先给 diff,得到明确同意再改。

## 文件放置约定(只管「产出放哪」,不覆盖技能指令)

**适用范围严格限定**:本节只决定**本工作区自己产出的文件放在哪里**,它**不是对其他技能的指令覆盖**。

**优先级(从高到低):**

1. **用户当轮的明确要求** — 用户说放哪就放哪
2. **其他技能的安全规则、许可条款、既定流程** — 一律优先,本文件不得改写、不得要求技能绕过
3. **本文件(WORKSPACE.md)的目录规范** — 仅在「上面两条没规定产出位置」时生效

**做法:**

- 技能若自带输出路径约定(如 `~/Downloads/xxx/`),把它的**产出位置**映射到工作区内并**告知用户差异**(「技能原约定 X,按工作区规范存到 Y」);映射只涉及存放位置,不涉及技能内容与流程。
- 若技能**必须**写在工作区之外(例如它自己的数据目录、系统约定位置),**以技能为准**,如实汇报,不硬拉进工作区。
- 遇到无法用「换个位置」解决的冲突(例如技能要求改工作区外的配置)→ **停下来问用户**,不做单方面决定。

**设计原则:** 本文件只管「文件放哪」,不管「技能怎么做」。自研技能不硬编码工作目录,输出位置默认由 WORKSPACE.md 决定。

### Step 4: 引导新智能体

完成目录创建和 WORKSPACE.md 写入后,明确告知当前智能体:

> **铁律 #1 — 反馈至上:** 无论任务成功还是失败,必须向用户报告结果。成功告知产出,失败告知原因和错误信息,由用户做下一步决策。智能体不得擅自决定下一步行动。
>
> **铁律 #2 — 遵守工作区规范:** 后续每次启动时,先读取根目录的 WORKSPACE.md,按照其中的目录结构和命名规范组织所有工作。根目录不应放置任何项目文件,只保留 *.md 配置文件。
>
> **铁律 #3 — 配置修改安全:** 改配置一律用 `config.patch`(部分合并,只动指定字段);**禁止使用 `config.apply`**(全量替换:会用旧配置快照整份写回,抹掉其他 agent 的修改)。多 agent 共享同一份 openclaw.json,apply = 谁后写谁赢。

### Step 4.5: 把工作区规范接入 AGENTS.md(**默认只提议,需明确批准**)

⚠️ **为什么这一步要单独批准**:`AGENTS.md` 会被 agent 在**每次会话启动时读取**,改它等于改变未来的行为——属于「用户资产」,不是普通输出文件。因此:

- **默认不动手**:先给出**确切 diff**(新增哪几行、插在哪个章节),并明确提示「这会让未来每次会话启动都先读 WORKSPACE.md」,**得到用户明确同意后**才写入。
- 用户不同意 / 没回应 → **跳过**,在汇报里写「AGENTS.md 未改动(待你确认)」。
- 不追加与本次初始化无关的内容;不覆盖用户已有的启动规则,只做**最小必要新增**。

批准后要做的两项(若 `AGENTS.md` 不存在则跳过,或随工作区模板一并创建):

**① 启动读取规则(必写):** 确保 AGENTS.md 的「Session Startup」章节(若没有该章节则新建)的启动必读列表中包含:

> `Read WORKSPACE.md` — workspace directory rules

即:agent 每次会话启动时,先读取 `WORKSPACE.md`(目录规则),再开始干活。

**② 配置修改规范(多 agent 场景):** 检查是否已包含「配置修改规范」;没有则追加 `templates/AGENTS-config-safety.md` 的内容。

⚠️ **写入方式:** 必须用 Python 3 或文件编辑工具写入(UTF-8);**不要用 PowerShell 5.1 内联脚本写中文**(按 GBK 解析无 BOM 的 UTF-8 脚本,中文会乱码)。

### Step 5: 记录初始化日志(随同一轮批准一起做)

在本工作区自己的 `memory/YYYY-MM-DD.md` 追加一条初始化记录(只写 Memory 目录内,不写到别处;如果用户没批准本轮改动,就不写):

> xiaoyaoclaw-workspace-initializer 技能已执行,标准目录结构和 WORKSPACE.md 已就位;AGENTS.md 已写入「Read WORKSPACE.md — workspace directory rules」启动规则及配置修改规范。

## 完整示例

### 首次进入空工作区

检测 → **出差异清单并等用户确认(Step 0 闸门)** → 创建缺失目录 → 写入 WORKSPACE.md → 自我引导(铁律 #1/#2/#3)→ **给出 AGENTS.md 的确切 diff,经用户批准后**才接入启动规则 → 记录日志

**产出:**
```
根目录/
├── projects/
├── tasks/
├── outputs/
│   ├── images/
│   └── docs/
├── knowledge/
├── scripts/
├── memory/
│   └── YYYY-MM-DD.md    ← 初始化日志
├── tmp/
├── WORKSPACE.md          ← 持久化规范文件
├── SOUL.md
├── USER.md
└── ...其他系统配置
```

### 重启后新智能体进入同一工作区

新智能体 → 检测 → 发现 WORKSPACE.md 和所有目录已存在 → **什么都不做**(跳过 Step 2-5)→ 回一句「工作区已符合规范」即可。

**重启时依赖 WORKSPACE.md(目录规范)和 AGENTS.md(配置修改规范)作为持久化规范来源**,而不是依赖 SKILL.md(技能可能不在新智能体的技能列表中)。

> 注:这两份规范都是**用户资产**——本技能提交的是「文本 + 建议」,是否落地由用户决定;本技能不安装常驻机制,也不在用户不知情时改动它们。