OpenClaw 核心概念详解
在上一篇文章中,我们了解了 OpenClaw 的定位与愿景,也看到了它在 AI 自动化领域的独特价值。从这一篇开始,我们将深入 OpenClaw 的技术内核,掌握其核心概念——会话(Sessions)、技能(Skills)和记忆(Memory)。理解这三大支柱,是驾驭 OpenClaw 的全部潜力的关键。
1. 会话(Sessions):AI 与世界的对话窗口
1.1 什么是会话?为什么重要?
会话(Session)是 OpenClaw 中最基础的概念之一。简单来说,会话是 AI 与用户、工具、环境进行交互的上下文容器。每一次你与 OpenClaw 的对话,都发生在一个会话之中。
为什么会话如此重要?因为在现实世界的交互中,上下文是一切理解的基础。想象一下:
你问助手"把它发给我"——这里的"它"指什么?只有了解了前文,助手才能明白。 你说"继续"——继续什么?只有记住之前做了什么,助手才能正确响应。 你让助手"等待 10 分钟后提醒我"——这需要会话保持活跃,跨越时间的间隔。
会话就是这些上下文的载体。它记录着:
对话历史(Messages) 已加载的技能(Skills) 可用的工具(Tools) 临时变量和状态 子会话的层级关系
1.2 主会话 vs 子会话(Sub-agent)
OpenClaw 的会话架构支持一种强大的能力:子会话(Sub-agent)。
主会话(Main Session):这是你与 OpenClaw 直接交互的会话。它拥有完整的工具访问权限、完整的记忆访问权限,可以创建和管理子会话。
子会话(Sub-agent):当主会话需要执行一个独立的子任务时,可以"派生"出一个子会话。这个子会话:
有独立的上下文,不受主会话后续对话的干扰 可以并行运行,提高效率 有工具白名单限制,增强安全性 完成后向主会话报告结果
这种架构带来几个关键优势:
- 隔离性
:复杂的子任务不会影响主会话的上下文 - 并行性
:可以同时派生多个子会话处理不同任务 - 安全性
:子会话可以限制可访问的工具,降低风险 - 模块化
:每个子会话专注于一个明确的目标
# 典型的工作流程主会话: "帮我分析这三个网页的内容并总结"├─ 子会话A: 分析网页1├─ 子会话B: 分析网页2└─ 子会话C: 分析网页3主会话: 汇总三个子会话的结果,生成最终报告
1.3 会话隔离与上下文管理
OpenClaw 的会话系统实现了严格的上下文隔离:
同一层级的会话:
子会话 A 看不到子会话 B 的内部对话 每个子会话只看到它被赋予的输入和工具
父子关系:
父会话可以创建、监控、终止子会话 子会话完成后,结果返回给父会话 子会话不能直接访问父会话的完整上下文(除非显式传递)
上下文传递:
// 创建子会话时可以传递上下文sessions_spawn({description: "分析数据",context: {dataFile: "/path/to/data.csv",analysisType: "summary"},tools: ["read", "exec"] // 限制可用工具})
1.4 ACP(Agent Coding Protocol)简介
ACP 是 OpenClaw 的一项重要协议,全称 Agent Coding Protocol(代理编程协议)。它定义了 AI 助手如何与人类进行协作编程的标准方式。
在 ACP 模式下:
AI 助手扮演编程伙伴的角色 通过特定的消息格式和工具调用进行代码协作 支持代码审查、调试建议、重构建议等
我们将在第六篇文章中深入探讨 ACP 的实战应用。
2. 技能(Skills):扩展 AI 的能力边界
如果说会话是舞台,那么技能(Skills)就是演员的能力。没有技能,AI 只能进行基本的对话;有了技能,AI 可以操作文件、调用 API、控制设备、访问数据库…无所不能。
2.1 Skill 的概念与架构
什么是 Skill?
Skill 是 OpenClaw 的能力扩展单元。每个 Skill 封装了一组相关的工具和能力,以模块化的方式提供给 AI 使用。
一个 Skill 通常包含:
- SKILL.md
:技能的使用说明书,描述技能的功能、工具、使用场景 - 工具实现
:实际的工具代码(JavaScript、Python、Shell 脚本等) - 配置
:技能特有的配置项
Skill 的架构:
Skill├── SKILL.md # 技能说明文档├── package.json # 依赖定义(Node.js 技能)├── scripts/ # 工具脚本│ ├── tool1.js│ └── tool2.js└── references/ # 参考文档└── api-reference.md
2.2 如何发现与安装技能
OpenClaw 拥有丰富的技能生态系统。你可以通过以下方式发现技能:
1. ClawHub(官方技能市场):
# 搜索技能clawhub search githubclawhub search weather# 安装技能clawhub install githubclawhub install weather
2. SkillHub(中文技能市场):
# 优先使用 skillhub 进行中文技能发现skillhub searchskillhub install <skill-name>
3. 本地开发:
# 创建本地技能目录mkdir -p ~/.openclaw/workspace/skills/my-skill# 编写 SKILL.md 和工具代码
2.3 SKILL.md 规范解析
SKILL.md 是每个技能的核心文档,它告诉 AI 这个技能是什么、能做什么、怎么用。
一个标准的 SKILL.md 结构:
# Skill 名称## 功能概述简要描述这个技能的功能。## 可用工具### tool_name- **用途**:这个工具的作用- **参数**:- `param1` (string): 参数说明- `param2` (number): 参数说明- **返回值**:返回什么数据- **示例**:使用示例## 使用场景- 场景 1:什么时候用这个技能- 场景 2:另一个使用场景## 注意事项- 重要提示 1- 重要提示 2
为什么 SKILL.md 如此重要?
因为 AI 助手在开始工作前会阅读相关的 SKILL.md。一个写得好的 SKILL.md 能让 AI:
快速理解技能的功能 正确选择和使用工具 避免常见的使用错误
2.4 常用技能推荐
以下是一些 OpenClaw 用户常用的技能:
github | ||
web_search | ||
browser | ||
weather | ||
obsidian | ||
tmux | ||
feishu | ||
wecom | ||
schedule | ||
summarize |
3. 记忆(Memory):让 AI 拥有"长期记忆"
如果说会话是短期的工作记忆,那么 Memory 系统就是 OpenClaw 的长期记忆。它让 AI 能够记住重要的信息,跨越会话的边界,真正做到"越用越懂你"。
3.1 短期记忆 vs 长期记忆
短期记忆(Short-term Memory):
存储在当前会话的上下文中 会话结束后即丢失 用于当前任务的中间状态
长期记忆(Long-term Memory):
存储在文件系统中 跨会话持久保存 用于重要的知识、偏好、历史记录
OpenClaw 的记忆系统设计哲学:显式优于隐式。重要信息需要显式地写入记忆文件,而不是依赖 AI 自动"记住"。
3.2 MEMORY.md 与每日记忆文件
OpenClaw 的记忆系统采用文件化的方式存储,主要有两种形式:
1. MEMORY.md(长期记忆):
这是最重要的记忆文件,位于工作区根目录。它存储:
用户的基本信息(姓名、偏好等) 重要的决策和约定 项目的关键信息 任何需要长期记住的内容
# MEMORY.md## 用户信息- **姓名**:张三- **职业**:软件工程师- **偏好**:简洁的技术解释,喜欢示例代码## 项目上下文- 当前主要项目:OpenClaw 博客系列- 技术栈:Node.js, TypeScript- 重要决策:使用 SkillHub 作为主要技能源## 待跟进事项- [ ] 完成第二篇博客的记忆部分- [ ] 测试新的 browser 技能
2. 每日记忆文件(Daily Notes):
位于 memory/YYYY-MM-DD.md,用于记录:
当天的工作日志 临时的想法和发现 需要稍后处理的事项
# 每日文件示例memory/├── 2025-03-28.md├── 2025-03-29.md├── 2025-03-30.md└── 2025-03-31.md
3.3 记忆搜索与检索机制
OpenClaw 提供了记忆检索的工具,帮助 AI 快速找到相关信息:
搜索记忆:
// AI 可以使用 search_memory 工具{"query": "用户喜欢的编程语言","limit": 5}
读取特定记忆文件:
// 读取 MEMORY.mdread_file({file_path: "MEMORY.md"})// 读取今天的记忆read_file({file_path: "memory/2025-03-31.md"})
记忆维护工作流程:
1. 每日结束时,AI 会回顾当天的对话2. 提取重要信息,更新 memory/YYYY-MM-DD.md3. 定期(每周/每月)回顾每日记忆4. 将有价值的信息提炼到 MEMORY.md5. 清理过时的记忆内容
3.4 最佳实践:如何设计记忆结构
设计一个高效、可维护的记忆结构,是充分发挥 OpenClaw 潜力的关键。以下是经过实践验证的最佳实践:
3.4.1 分层记忆架构
将记忆分为三个层次,每个层次有不同的更新频率和用途:
第一层:核心记忆(Core Memory)- MEMORY.md
- 更新频率
:低,仅当重要信息变化时 - 内容
:用户基本信息、长期偏好、重要决策 - 作用
:AI 加载时首先读取,建立基本认知
第二层:项目记忆(Project Memory)- AGENTS.md / TOOLS.md
- 更新频率
:中等,项目变更时更新 - 内容
:项目配置、工具设置、工作约定 - 作用
:为特定项目或场景提供上下文
第三层:日常记忆(Daily Notes)- memory/*.md
- 更新频率
:高,每日更新 - 内容
:工作日志、临时想法、待办事项 - 作用
:记录短期信息,定期归档到长期记忆
3.4.2 记忆文件的命名规范
工作区/├── MEMORY.md # 核心长期记忆├── AGENTS.md # 工作区约定├── TOOLS.md # 工具配置├── USER.md # 用户画像├── SOUL.md # AI 人格设定└── memory/├── 2025-03-31.md # 每日记忆├── 2025-03-30.md└── archive/ # 归档记忆└── 2025-03-q1.md # 季度汇总
3.4.3 记忆内容的设计原则
1. 原子性原则: 每个记忆片段应该是独立的、可理解的。
<!-- 好的记忆 -->## API 密钥- OpenAI: sk-xxx (2025-03-20 更新)- 用途:文本生成、代码辅助<!-- 不好的记忆 -->密钥在配置文件里,问我就行。
2. 结构化原则: 使用 Markdown 的结构化特性,便于 AI 解析。
## 项目配置| 配置项 | 值 | 说明 ||-------|-----|------|| 数据库 | PostgreSQL | 生产环境 || 缓存 | Redis | 可选 || 日志级别 | INFO | 调试时可改为 DEBUG |
3. 可追溯性原则: 重要决策记录决策原因和时间。
## 技术决策### 2025-03-15: 选择 pnpm 作为包管理器**原因**:1. 磁盘空间效率更高2. 严格的依赖管理3. 团队已有使用经验**决策人**:张三
4. 可搜索性原则: 在记忆内容中使用关键词,便于检索。
## 常用命令<!-- 关键词: 部署, deploy, 上线, production -->### 部署到生产环境```bashnpm run build && npm run deploy:prod
#### 3.4.4 记忆维护的自动化利用 OpenClaw 的能力,可以建立自动化的记忆维护流程:**每日自动总结**:```markdown# 在 SKILL.md 中定义## 日终任务每天会话结束时:1. 回顾当日对话历史2. 提取重要信息3. 更新 memory/YYYY-MM-DD.md4. 如有重要决策,提醒更新 MEMORY.md
定期记忆整理:
# 可以设置 cron 任务或心跳检查# 每周回顾一次记忆文件- 检查过期的临时信息- 归档旧的每日记忆- 更新 MEMORY.md
3.4.5 记忆安全与隐私
敏感信息处理:
<!-- 不要将敏感信息直接写入记忆 -->## API 配置- OpenAI API Key: 存储在环境变量 OPENAI_API_KEY- 获取方式:询问用户或使用密钥管理工具<!-- 不要这样写 -->## API 配置- OpenAI API Key: sk-abc123xyz789
记忆访问控制:
在共享环境中,谨慎设置记忆文件的权限 考虑使用加密存储敏感的记忆片段 定期审查记忆内容,删除不再需要的敏感信息
3.4.6 实战:设计一个开发者工作区的记忆结构
以下是一个软件开发工作区的完整记忆结构示例:
# MEMORY.md## 开发者档案- **姓名**:李明- **技术栈**:React, Node.js, Python- **编码风格**:偏好函数式编程,重视代码可读性- **常用工具**:VS Code, Docker, GitHub## 项目清单1. **OpenClaw Blog** - 技术博客系列- 技术栈:Markdown, Node.js- 状态:进行中- 位置:~/projects/openclaw-blog2. **E-commerce Platform** - 电商平台- 技术栈:Next.js, PostgreSQL- 状态:维护阶段- 重要:数据库密码在 1Password 中## 常用资源- **设计规范**:https://company.design.system- **API 文档**:https://api.company.com/docs- **内部 Wiki**:https://wiki.company.com
# AGENTS.md## 工作流程1. 所有代码变更先创建分支2. PR 需要至少一个 Code Review3. 合并前必须通过 CI 测试## 代码规范- 使用 ESLint + Prettier- 提交信息遵循 Conventional Commits- 测试覆盖率不低于 80%## 沟通约定- 重要决策在 Slack #dev 频道同步- 紧急问题直接电话沟通
# TOOLS.md## 本地开发环境- **Node 版本**:20.x (使用 nvm 管理)- **包管理器**:pnpm- **数据库**:PostgreSQL 15 (Docker 运行)```bashdocker-compose up -d postgres
常用命令
pnpm dev | |
pnpm test | |
pnpm build | |
pnpm lint |
SSH 快捷方式
home-server→ 192.168.1.100 prod-server→ 生产服务器(需要 VPN)
---## 4. 动手实践:构建你的第一个记忆系统理论讲完了,让我们动手实践一下。在这个环节,你将:1. 创建工作区的记忆文件结构2. 设置个性化的 MEMORY.md3. 测试记忆系统的运作### 4.1 准备工作首先,确保你有 OpenClaw 工作区的访问权限。你需要能够:- 在工作区根目录创建文件- 创建 `memory/` 目录### 4.2 创建记忆文件结构在你的工作区执行以下操作:**步骤 1:创建 memory 目录**```bashmkdir -p memory/archive
步骤 2:创建 MEMORY.md
创建文件 MEMORY.md,内容如下(根据你的实际情况修改):
# MEMORY.md - 我的个人助手记忆## 基本信息- **姓名**:[你的名字]- **职业**:[你的职业]- **所在时区**:[如 Asia/Shanghai]## 偏好设置- **沟通风格**:偏好简洁/详细/幽默- **技术解释**:希望深入浅出/专业术语- **代码示例**:需要详细注释/简洁即可## 重要项目1. **[项目名称]**- 描述:[简要描述]- 状态:[进行中/已完成/暂停]- 优先级:[高/中/低]## 常用工具- **编辑器**:[VS Code / Vim / IntelliJ]- **终端**:[iTerm / Windows Terminal / 其他]- **笔记工具**:[Obsidian / Notion / 其他]## 学习目标- [ ] 掌握 OpenClaw 高级功能- [ ] 开发 3 个自定义 Skill- [ ] [你的自定义目标]
步骤 3:创建 AGENTS.md
# AGENTS.md - 工作区约定## 文件组织- 所有项目代码放在 `projects/` 目录- 笔记放在 `notes/` 目录- 临时文件放在 `tmp/` 目录(会被定期清理)## 命名规范- 文件使用小写和连字符:`my-file-name.md`- 日期格式:YYYY-MM-DD- 版本号:v1.0.0 格式## 工作流程1. 开始新任务前,先查阅 MEMORY.md2. 重要决策记录在当天的记忆文件中3. 每天结束时,回顾并更新记忆
步骤 4:创建今日的记忆文件
# 获取今天的日期date +%Y-%m-%d# 输出示例:2025-03-31
创建文件 memory/2025-03-31.md(替换为实际日期):
# 2025-03-31 工作日志## 今日完成- [x] 完成 OpenClaw 核心概念的学习- [x] 创建了记忆文件结构## 今日发现- OpenClaw 的记忆系统设计非常灵活- 子会话的概念对任务分解很有帮助## 待办事项- [ ] 阅读下一篇博客:环境搭建- [ ] 尝试安装一个技能## 想法记录[记录任何临时的想法和灵感]
4.3 测试记忆系统
现在让我们测试记忆系统是否正常工作。你可以向 AI 提出以下问题:
测试基本信息记忆:
“根据我的 MEMORY.md,我叫什么名字?”
测试偏好记忆:
“我应该用什么风格与我沟通?”
测试项目记忆:
“我当前最重要的项目是什么?”
测试工作流记忆:
“根据我的工作约定,新任务应该如何开始?”
如果 AI 能够正确回答这些问题,说明你的记忆系统已经正常工作了!
4.4 进阶练习
完成基础设置后,尝试以下进阶练习:
练习 1:添加一个复杂的项目记忆
在你的 MEMORY.md 中添加一个真实项目的详细信息,包括:
项目背景 技术架构 当前挑战 下一步计划
练习 2:创建一个技能特定的记忆
为你常用的一个技能创建专门的记忆文件,例如 github-config.md:
# GitHub 工作流## 常用仓库- 个人博客:username/blog- 开源项目:username/project## PR 模板创建 PR 时必须包含:1. 改动描述2. 测试说明3. 影响范围## 标签约定- `bug`: Bug 修复- `feature`: 新功能- `docs`: 文档更新
练习 3:建立记忆维护习惯
与 AI 一起建立记忆维护的工作流程:
每天结束时,让 AI 帮你总结当日内容 每周回顾一次,将重要信息归档到 MEMORY.md 定期清理过时的临时信息
小结
在这篇文章中,我们深入探讨了 OpenClaw 的三大核心概念:
会话(Sessions) 是 AI 与世界的对话窗口。主会话承载主要交互,子会话实现任务隔离和并行处理。理解会话的生命周期和上下文管理,是高效使用 OpenClaw 的基础。
技能(Skills) 扩展了 AI 的能力边界。通过模块化的 Skill,你可以让 AI 操作文件、调用 API、访问数据库。SKILL.md 规范确保了技能的可发现性和可用性。ClawHub 和 SkillHub 提供了丰富的技能生态。
记忆(Memory) 让 AI 拥有长期记忆能力。通过 MEMORY.md 和每日记忆文件的配合,你可以构建一个分层、结构化的记忆系统。遵循最佳实践设计记忆结构,能让 AI 越用越懂你。
这三大概念相互配合,构成了 OpenClaw 的核心架构。掌握它们,你就掌握了驾驭 OpenClaw 的钥匙。
下篇预告
在下一篇文章中,我们将进入实战环节,带你从零搭建 OpenClaw 环境。你将学习到:
多种安装方式:Docker、npm、源码安装 配置文件详解:profiles.yaml 的每个字段 多平台集成:如何连接 Discord、Telegram、Slack Gateway 服务管理:启动、停止、监控 模型配置:接入 OpenAI、Claude、本地模型
不要错过!准备好你的开发环境,我们下一篇见。
思考题
会话设计:在你的工作场景中,哪些任务适合使用子会话?试着列出 3 个具体场景。
技能选择:如果你要开发一个个人助手 Skill,你希望它具备什么功能?试着写出它的 SKILL.md 大纲。
记忆结构:回顾你目前的工作方式,哪些信息应该放入 MEMORY.md?哪些适合放入每日记忆?
隐私考量:在设计记忆系统时,如何平衡便利性和隐私安全?你会如何处理敏感信息?
进阶思考:想象一下,如果你的 AI 助手记住了你过去所有的对话和决策,你希望它如何帮助你做出更好的决策?
欢迎在评论区分享你的想法和实践经验。如果你在实践过程中遇到问题,也可以在社区中寻求帮助。下一篇,我们将一起动手搭建 OpenClaw 环境!
夜雨聆风