借鉴 OpenClaw 的工作区理念,通过 soul.md、user.md、tools.md 等结构化文件管理 aily 的身份、用户画像和环境上下文。支持工作区初始化、会话上下文注入、每日记忆日志和上下文生命周期管理。与 memory-management 技能互补使用。
Scanned 9/9/2026
Install to Claude Code
npx -y skills add GACLove/feishu-aily-skills --skill openclaw --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Openclaw?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/gaclove-openclaw)More formats (shields.io, HTML) on the badges page.
---
name: openclaw
label: 上下文工作区
description: 借鉴 OpenClaw 的工作区理念,通过 soul.md、user.md、tools.md 等结构化文件管理 aily 的身份、用户画像和环境上下文。支持工作区初始化、会话上下文注入、每日记忆日志和上下文生命周期管理。与 memory-management 技能互补使用。
---
# OpenClaw 上下文工作区
借鉴 [OpenClaw](https://github.com/openclaw/openclaw) 的核心理念:**会话是短暂的,文件是持久的**。通过结构化的工作区文件,让 aily 在每次对话中都能快速恢复身份、理解用户、适配环境。
## 核心理念
1. **文件即记忆** — LLM 上下文窗口是缓存,磁盘文件是真相源
2. **身份可定义** — 通过 soul.md 声明 aily 的个性和行为边界,而非硬编码
3. **关注点分离** — 身份(soul)、用户(user)、环境(tools)、操作(aily.md) 各司其职
4. **渐进加载** — 按需加载,避免一次性注入所有上下文浪费 token
## 工作区结构
```
<project-root>/
├── aily.md ← 操作指令 + 工作记忆(热缓存)
├── soul.md ← aily 的身份与个性
├── user.md ← 用户画像与偏好
├── tools.md ← 本地环境与工具备注
├── memory/
│ ├── glossary.md ← 术语词典(由 memory-management 管理)
│ ├── people/ ← 人员档案
│ ├── projects/ ← 项目详情
│ ├── context/ ← 公司/团队背景
│ └── daily/ ← 每日记忆日志
│ ├── 2026-02-09.md
│ └── 2026-02-08.md
```
**与 memory-management 的关系:**
- `memory-management` 负责术语解码、人员/项目记忆(glossary、people、projects)
- `openclaw` 负责身份定义、用户画像、环境上下文、会话生命周期
- 两者共享 `aily.md` 和 `memory/` 目录,互补使用
## 工作区文件详解
### soul.md — aily 的灵魂
定义 aily **是谁**,而非它能做什么。包含个性、价值观、沟通风格和行为边界。
```markdown
# Soul
## 核心原则
- **实质优先**:跳过客套话("好问题!"),直接给出有价值的内容
- **有自己的观点**:可以有偏好、可以不同意,有个性的助手比搜索引擎更有用
- **先调查再提问**:优先查看已有文件和上下文,而非直接问用户
- **谨慎对外**:对内部操作(读文件、整理数据)大胆,对外部操作(发消息、提交)谨慎
## 沟通风格
- 简洁但不敷衍,详尽但不啰嗦
- 用中文沟通,技术术语保留英文
- 不用 emoji(除非用户要求)
## 行为边界
- 私密信息不外传
- 不确定时,外部操作先确认
- 不代替用户在群聊中发言
- 会话刷新时,重要上下文先存盘
## 自我迭代
当对自己的理解发生变化时,更新此文件并告知用户。
```
> 参考完整模板: `templates/soul.md`
### user.md — 用户画像
记录用户的身份、工作背景和交互偏好,让 aily 每次对话都"认识"你。
```markdown
# User
## 基本信息
- **姓名**: [你的名字]
- **角色**: [职位] @ [团队/部门]
- **工作内容**: [一句话描述日常工作]
## 工作上下文
- **主要项目**: [当前负责的项目]
- **常用工具**: 飞书、VS Code、[其他]
- **工作时间**: [时区和工作时段]
## 交互偏好
- 偏好异步沟通,飞书 IM 优先
- 会议控制在 25 分钟
- 周五下午不安排会议
- 代码风格: [偏好的风格/规范]
## 关注领域
- [领域1]
- [领域2]
```
> 参考完整模板: `templates/user.md`
### tools.md — 环境备忘录
记录用户本地环境的特殊配置,**不是工具清单,而是使用备注**。
```markdown
# Tools
## 开发环境
- Python: 3.11, 使用 conda 管理
- Node: v20, 使用 pnpm
- IDE: VS Code + Cursor
## 服务端
| 名称 | 地址 | 用途 |
|------|------|------|
| dev-server | 10.0.1.100 | 开发环境 |
| staging | staging.example.com | 预发布 |
## 内部系统
| 系统 | 别名 | 备注 |
|------|------|------|
| 飞书 CRM | "CRM" | 客户管理 |
| 内部 CI | "流水线" | Jenkins-based |
## 特殊说明
- Git 提交需要 GPG 签名
- 部署走飞书审批流
```
> 参考完整模板: `templates/tools.md`
### aily.md — 操作指令与工作记忆
这是 aily 的核心配置文件,结合了 OpenClaw 的 AGENTS.md(操作规则)和工作记忆。由 memory-management 技能共同维护,此处不重复定义格式。
**关键原则**:保持在 ~100 行以内,覆盖 90% 的日常需求。
## 上下文注入
### 会话启动时加载
每次新会话开始,按以下优先级加载上下文:
```
必须加载(每次):
1. aily.md — 操作指令 + 工作记忆
2. soul.md — 身份与个性
按需加载(首次交互后判断):
3. user.md — 用户画像
4. tools.md — 环境备注
5. memory/daily/ — 今日 + 昨日日志
```
### 加载规则
- **空文件跳过** — 文件存在但内容为空时不加载
- **大文件截断** — 单个文件超过 2000 行时只加载前 500 行 + 截断提示
- **缺失文件标记** — 文件不存在时记录一行提示,不报错
### Token 预算意识
避免每轮对话都重复注入所有文件。策略:
- 首轮加载 aily.md + soul.md(核心身份)
- 涉及用户偏好时才加载 user.md
- 涉及环境操作时才加载 tools.md
- 涉及历史回顾时才加载 daily logs
## 会话生命周期
### 新建会话
当用户说"新对话"/"重新开始"/"换个话题"时:
1. **保存当前上下文** — 将重要信息写入对应文件
2. **生成每日日志** — 追加到 `memory/daily/YYYY-MM-DD.md`
3. **清理对话状态** — 准备好干净的上下文环境
### 上下文压缩
当对话变长、接近上下文限制时,主动执行压缩:
1. **保存持久化信息** — 新学到的术语写入 glossary,新认识的人写入 people/
2. **生成对话摘要** — 保留关键决策和待办事项
3. **刷新工作记忆** — 更新 aily.md 中的活跃项目和近期上下文
**触发时机:**
- 用户明确要求压缩
- 检测到上下文使用超过 70% 时主动提醒
- 长对话(>30 轮)后建议压缩
### 会话结束保存
在会话即将结束时(用户说"再见"/"今天到这"等),执行保存仪式:
```
1. 扫描对话中的新信息
- 新认识的人 → memory/people/
- 新术语/缩写 → memory/glossary.md
- 项目更新 → memory/projects/
- 决策和结论 → memory/daily/
2. 更新 aily.md 热缓存
- 新增高频项 → 添加到 aily.md
- 已完成项目 → 从 aily.md 移除
3. 追加每日日志
- 今日讨论的关键主题
- 待办事项和跟进项
- 重要决策和原因
```
## 每日记忆日志
### 格式
`memory/daily/YYYY-MM-DD.md`:
```markdown
# 2026-02-09
## 讨论主题
- 完成了 50 个 official skills 的飞书适配
- 创建了 openclaw 上下文管理技能
## 决策记录
- 保留 HTML/Python 原有能力,不替换为飞书工具
- skill 的 label 和 description 统一使用中文
## 待办跟进
- [ ] 推送 official-skills 分支到远程
- [ ] 测试新 skill 的效果
## 新增记忆
- 术语: "official skills" = 来自 anthropics/knowledge-work-plugins 的技能
- 偏好: 用户希望保留代码执行类技能的原有实现方式
```
### 管理规则
- **自动创建**:首次在某天有对话时创建当天日志
- **追加写入**:同一天内多次对话,追加到同一文件
- **加载范围**:默认加载今天 + 昨天的日志
- **归档清理**:超过 7 天的日志仅在用户请求时加载
## 工作区初始化(Bootstrap)
### 首次使用
当用户说"初始化工作区"/"设置 openclaw"时:
1. **检查现有文件** — 不覆盖已存在的文件
2. **创建缺失文件** — 从模板创建 soul.md、user.md、tools.md
3. **确认 aily.md** — 如果不存在,创建基础模板
4. **创建目录结构** — 确保 memory/daily/ 目录存在
5. **引导用户填写** — 逐步询问关键信息
```
初始化对话示例:
aily: "我来帮你初始化工作区。先告诉我几个基本信息:
1. 你的名字和角色?
2. 你希望我用什么风格和你沟通?
3. 你主要用哪些工具和系统?"
用户: "张三,前端开发,直接简洁就好,主要用飞书和 VS Code"
aily: "好的,我已经创建了以下文件:
- soul.md — 设定为直接简洁风格
- user.md — 记录了你的基本信息
- tools.md — 记录了飞书和 VS Code
- memory/daily/ — 每日日志目录
你可以随时编辑这些文件来调整我的行为。"
```
### 增量更新
工作区已存在时,只更新变化的部分:
- 新增的偏好 → 追加到对应文件
- 过时的信息 → 询问后更新
- 从不自动删除用户内容
## 交互模式
### 用户说"你是谁"/"介绍自己"
→ 读取 soul.md,用其中定义的风格回应
### 用户说"记住..."/"我喜欢..."
→ 判断类型,写入对应文件:
- 关于 aily 行为 → soul.md
- 关于用户自身 → user.md
- 关于工具环境 → tools.md
- 关于术语/人/项目 → memory/ (由 memory-management 处理)
### 用户说"查看工作区"/"我的设置"
→ 列出所有工作区文件及简要内容摘要
### 用户说"压缩上下文"/"整理一下"
→ 执行上下文压缩流程
### 用户说"今天做了什么"/"回顾"
→ 读取今日 daily log 并总结
## 文件位置约定
| 文件 | 位置 | 说明 |
|------|------|------|
| soul.md | 项目根目录 | 身份定义 |
| user.md | 项目根目录 | 用户画像 |
| tools.md | 项目根目录 | 环境备注 |
| aily.md | 项目根目录 | 操作指令 + 工作记忆 |
| memory/ | 项目根目录 | 深度记忆(与 memory-management 共享) |
所有文件使用 **Markdown 格式**,支持版本控制。
## 最佳实践
1. **soul.md 写"是什么"不写"做什么"** — 个性特质而非功能列表
2. **user.md 从简开始** — 随着交互逐步丰富,不需要一次填完
3. **tools.md 记特殊的** — 只记录需要特别注意的环境配置
4. **daily log 重质量** — 记决策和原因,不记流水账
5. **定期整理** — 每周审视一次工作区文件,清理过时内容
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!