1. 项目概述:构建一个会“成长”的AI伙伴
如果你和我一样,已经厌倦了每次打开ChatGPT或Claude都要从头解释一遍“我是谁”、“我在做什么项目”、“我习惯怎么沟通”,那么“Personal OS Skills”这个项目,可能就是你在寻找的答案。这不仅仅是一个工具集,它代表了一种全新的AI使用范式——进化模型。核心思想很简单:一个不会学习的AI代理,充其量只是个昂贵的聊天机器人。真正的价值在于,让AI能够像人一样积累经验、形成记忆、沉淀工作流,并随着时间的推移,变得越来越懂你,越来越不可或缺。
想象一下,你的AI助手在第一天只知道你的名字和时区;一周后,它已经熟悉了你手头的项目、关键联系人和决策风格;一个月后,它甚至能预判你的需求,在你开口前就准备好会议简报,或者在你代码提交前自动运行一遍你常用的检查脚本。这种能力的增长不是靠模型本身的升级,而是靠一套精心设计的、由你完全掌控的文件系统。智能不在云端的大模型里,而在你本地硬盘的这些Markdown和JSON文件中。你拥有它,它为你服务,并且只为你进化。
这个开源项目提供了一系列技能,适用于OpenClaw、Claude Code等支持技能插件的AI代理运行时。它解决的痛点非常明确:打破AI对话的“会话失忆症”,将一次性的工具调用,转变为可积累、可复利的核心资产。接下来,我将带你深入拆解这套系统的设计哲学、实操部署,并分享我在搭建和使用过程中踩过的坑和总结的经验。
2. 进化模型:从“工具”到“伙伴”的设计哲学
2.1 三维增长轴:记忆、技能与协议
“进化模型”是整个项目的灵魂,它定义了AI代理能力增长的三个核心维度。理解这三个维度,你就能明白这套系统为何与众不同。
第一轴:记忆这是最基础也是最重要的一环。传统AI对话的上下文是短暂的、易失的。而在这里,记忆通过结构化的文件被持久化。每次会话,代理都会读取memory/目录下的文件,了解过去的对话、决策和成果。这不仅仅是聊天记录,而是经过提炼的、结构化的知识。例如,一次关于项目架构的讨论结论,会被总结成要点存入memory/project_architecture_decisions.md。下次当你提到相关模块时,代理能直接引用之前的结论,保持决策的一致性。
第二轴:技能技能是代理可执行的具体能力。项目初始提供了一系列技能,如会议准备、内容创作、漏洞修复协议等。关键在于,技能库是可扩展的。你可以根据自己独特的工作流,创建专属技能。比如,我为自己添加了一个paper-summarizer技能,它知道如何从arXiv抓取我关注领域的最新论文,并用我习惯的模板生成摘要。技能的安装就像给手机装APP一样简单,每增加一个,代理的能力边界就拓宽一分。
第三轴:协议协议是代理行为的“操作规程”和“安全手册”。它定义了在何种情况下,代理可以自主行动;在何种问题上,必须向你确认。AGENTS.md文件就是协议的核心。例如,你可以规定:“当处理涉及财务数据的任务时,必须双人复核(即与我确认)”;或者“每天上午9点,自动检查日历并生成当日会议简报”。协议确保了代理行为的可靠性和安全性,避免了AI的“胡作非为”。随着你与代理协作的深入,协议会越来越完善,代理的行为也会越来越符合你的预期。
这三个轴共同作用,使得代理的价值呈现非线性增长。初期投入时间配置,后续享受复利回报。它的智能,本质上是你的工作习惯、知识和决策模式的外化与自动化。
2.2 核心文件系统:智能的“物理载体”
所有进化都依赖于一套简约而强大的文件结构。这些文件位于你的代理工作空间,是代理每次启动时必读的“启动配置”和“记忆库”。
你的工作空间/ ├── SOUL.md # 代理的“灵魂”:人格、价值观、核心原则 ├── USER.md # 你的“用户画像”:姓名、偏好、禁忌 ├── IDENTITY.md # 代理的“身份”:名称、角色、图标 ├── AGENTS.md # 代理的“协议”:行为准则、安全规则 ├── MEMORY.md # 长期记忆的索引与摘要 └── HEARTBEAT.md # “心跳”任务:定时自动执行的任务列表SOUL.md是最关键的文件。它决定了代理与你互动时的语气、思考方式和价值判断。我最初的版本很简单,只定义了“专业、简洁、乐于助人”。但后来我意识到,这不够。我补充了:“优先考虑解决方案的可持续性和可维护性”、“在提出建议时,需同时评估其实现成本和潜在风险”、“以教学式口吻解释复杂概念”。这些细微的调整,让代理的输出质量有了质的飞跃。它不再只是给答案,而是像一个资深的同事一样,提供有深度的建议。
USER.md则是代理了解你的窗口。除了基本信息,我还会在里面记录:“我通常在上午进行深度编程工作,此时非紧急勿扰”、“我倾向于使用Python的pathlib而非os.path”、“在代码审查中,我特别关注错误处理和日志记录”。这些细节让代理的产出更加个性化,减少了你需要反复纠正的摩擦。
实操心得:不要试图一次性完美定义
SOUL.md和USER.md。最好的方法是,在最初几天的使用中,随时记录下让你觉得“对,这就是我想要的”或者“不,这里不应该这样”的时刻,然后立刻去修改这两个文件。这是一个动态磨合的过程。
3. 核心技能解析与实战应用
项目预置的技能覆盖了效率、研发、内容等多个场景。这里我挑几个最具代表性、也是我使用频率最高的技能,深入剖析其原理和实战技巧。
3.1/onboarding:15分钟完成个性化奠基
这是所有旅程的起点。/onboarding技能通过一个交互式的对话,引导你完成所有基础文件的创建。它会问你一系列问题,比如“你希望代理如何称呼你?”、“你的主要工作领域是什么?”、“你偏好正式还是随性的沟通风格?”。根据你的回答,它会自动生成初步的SOUL.md、USER.md等文件。
为什么它重要?手动创建这些文件是令人望而生畏的,你可能会对着空白的SOUL.md发呆。而这个交互过程降低了启动门槛,同时确保了核心文件的结构正确。生成的版本是一个优秀的起点,你可以在此基础上精细打磨。
我的踩坑经验:最初我草草回答了 onboarding 的问题,结果生成的代理性格过于活泼,不适合我的工作场景。我的建议是,把 onboarding 访谈当作一次严肃的“岗位职责定义”。认真思考你希望代理扮演的角色:是一个严格的代码审查员?一个创意无限的头脑风暴伙伴?还是一个井井有条的个人助理?你的回答将直接塑造它的“灵魂”。
3.2/recall:打破“会话失忆”的关键
这是实现“记忆”功能的枢纽技能。/recall允许代理从过去的记忆文件中加载上下文。它支持多种模式:
- 时间模式:
/recall last week加载上周的所有记忆。 - 主题模式:
/recall about project-X加载所有与“项目X”相关的记忆。 - 图谱模式:
/recall graph尝试展示不同记忆点之间的关联。
其底层原理是结合了语义搜索(通常利用嵌入向量)和关键词匹配,在memory/目录中快速定位相关文件。一个设计精妙之处在于,它每次回忆结束时,会要求输出“One Thing”——即本次回忆中最关键的一条信息或一个待办事项。这迫使代理进行信息提炼,而不是简单罗列。
实战应用:我每周一会例行运行/recall last week,让代理帮我生成一份周报草稿,并基于上周的讨论,提示本周可能的风险点。这节省了我大量梳理上下文的时间。
3.3/bug-fix-protocol:将教训转化为资产
这是一个极具工程师思维的技能。它不仅仅是一个修bug的指令,更是一个质量改进流程。协议规定:每一次修复bug,必须完成两件事:
- 修复出问题的代码。
- 增强测试系统(或监控、或日志),确保同类bug永远不会再次发生。
例如,修复了一个因空指针导致的崩溃后,协议会要求你:要么添加一个单元测试覆盖该边界条件,要么在代码入口处增加健壮性检查并记录日志。这样,每一次事故都变成了系统健壮性的一次升级。
我的实践:我将这个协议与我的CI/CD流程结合。现在,每次提交bug修复的代码时,我的AI代理会自动检查本次提交是否包含了相应的测试用例更新。如果没有,它会提醒我,甚至拒绝为我生成提交信息。这强制形成了良好的开发习惯。
3.4/claude-code-task:释放异步生产力
这个技能解决了AI辅助编程中的一个痛点:等待。当你让Claude Code分析一个大型代码库或执行一个耗时重构时,你需要盯着屏幕,消耗着token。/claude-code-task允许你将任务提交到后台异步执行。
其工作原理是,技能会生成一个包含详细指令的脚本文件,然后利用操作系统的后台任务机制(如nohup或tmux)来运行Claude Code。你可以关闭聊天窗口,去做别的事情。任务完成后,结果会保存到指定文件,代理会在下次互动时通知你。
性能提示:对于超大型任务,我通常会将其分解为多个子任务,然后使用这个技能批量提交。这相当于用零边际成本(在你睡觉时)让AI为你工作。
4. 从零到一的完整部署与配置指南
理论说得再多,不如亲手搭建一遍。下面是我在 macOS/Linux 环境下,基于 OpenClaw 运行时部署 Personal OS Skills 的详细步骤和避坑指南。
4.1 环境准备与运行时选择
首先,你需要一个支持技能系统的AI代理运行时。目前两个主要选择是OpenClaw和Claude Code。
- OpenClaw:功能更强大,支持24/7后台运行(通过cron)、多代理协作、Telegram集成等高级特性。适合追求自动化、希望代理真正在后台“活”起来的用户。部署稍复杂。
- Claude Code:更轻量,与Claude.ai深度集成,通过
/plugin系统安装技能非常简单。适合初学者,或者主要使用Claude进行编程和写作的用户。
我个人的选择是 OpenClaw,因为我需要代理定时执行任务(如每日清晨汇总新闻)。以下部署以 OpenClaw 为例。
# 1. 克隆 OpenClaw 主项目(假设你已安装好Python和Git) git clone https://github.com/openclaw-ai/openclaw.git cd openclaw pip install -r requirements.txt # 2. 配置环境变量。最关键的一步! cp .env.example .env # 编辑 .env 文件,填入你的 Anthropic Claude API Key # 其他配置如Telegram Bot Token等可按需设置重要警告:API Key 务必妥善保管在
.env文件中,并确保该文件已被添加到.gitignore。绝对不要将密钥硬编码在脚本或提交到代码仓库。
4.2 安装与初始化 Personal OS Skills
# 1. 克隆技能库到本地合适位置,比如你的用户目录下 cd ~ git clone https://github.com/borodich/personal-os-skills.git # 2. 为你的代理创建工作空间目录 mkdir -p ~/my_ai_workspace cd ~/my_ai_workspace # 3. 复制基础模板文件。这是你的智能“空白画布” cp ~/personal-os-skills/templates/* . # 4. 将你需要的技能链接或复制到 OpenClaw 的技能目录 # 假设 OpenClaw 的技能目录是 ~/.openclaw/skills/ mkdir -p ~/.openclaw/skills ln -s ~/personal-os-skills/skills/onboarding ~/.openclaw/skills/ ln -s ~/personal-os-skills/skills/recall ~/.openclaw/skills/ # ... 以此类推,链接其他你需要的技能 # 5. 启动 OpenClaw,并运行 onboarding 技能 cd ~/openclaw python main.py # 在 OpenClaw 的交互界面中,输入: # /onboarding配置过程中的常见陷阱:
- 权限问题:确保技能目录和脚本(通常在
skills/*/scripts/下)有可执行权限。chmod +x ~/.openclaw/skills/*/scripts/*.sh。 - 路径问题:技能中的脚本可能会引用绝对路径。你需要检查并修改
config.example.json或脚本内的路径,使其指向你实际的工作空间(如~/my_ai_workspace)。 - 依赖缺失:某些技能(如
voice-telegram需要本地Whisper)依赖外部工具。务必阅读每个技能目录下的README.md,安装所需依赖。
4.3 核心文件深度定制指南
初始化完成后,你需要花时间精心雕琢那几个核心的.md文件。这决定了代理的“智商”和“情商”。
SOUL.md撰写技巧:
- 分层定义:不要混为一谈。可以按“核心原则”、“沟通风格”、“决策框架”、“安全边界”来组织。
- 使用具体例子:与其说“保持专业”,不如说“在回复技术问题时,先给出结论,再分点阐述论据,最后可附上参考链接”。
- 定义边界:明确什么不能做。例如:“绝不执行未经验证的、从互联网直接下载的脚本”、“涉及删除文件或修改系统配置的操作,必须向我二次确认”。
AGENTS.md协议设计:这是代理的“自动驾驶手册”。我的一部分协议如下:
## 自主行动协议 - **每日 08:00**:自动运行 `meeting-prep`,扫描日历,为今天的所有会议生成简报。 - **收到含 `[URGENT]` 标签的邮件**:提取关键信息,并发送Telegram通知给我。 - **检测到 `memory/` 中关于同一错误的记录超过3次**:自动创建一份根因分析报告草案。 ## 必须确认协议 - 任何涉及调用第三方API且可能产生费用的操作。 - 任何修改 `SOUL.md`、`USER.md`、`AGENTS.md` 本身的行为。 - 对模糊或存在多种可能解释的指令,必须请求澄清。通过这份协议,代理既获得了有限的自主权以提升效率,又被牢牢地约束在安全范围内。
5. 高级技巧:技能开发与工作流集成
当你熟练使用现有技能后,很自然会想要创建属于自己的技能。这也是进化模型最强大的地方——让你的工作流彻底AI化。
5.1 创建一个自定义技能:以“周报生成器”为例
假设我想创建一个weekly-report技能,它能自动汇总我一周的Git提交、日历事件和记忆文件,生成一份周报草稿。
步骤1:创建技能结构
mkdir -p ~/personal-os-skills/skills/weekly-report cd ~/personal-os-skills/skills/weekly-report touch SKILL.md README.md config.example.json mkdir scripts步骤2:编写SKILL.md(核心)这是给AI代理看的“说明书”,必须包含特定的前置元数据。
--- name: weekly-report description: 自动汇总用户一周的Git活动、日历事件和记忆,生成周报草稿。 when_to_use: | 当用户提及“周报”、“总结本周”或“weekly report”时。 每周五下午5点自动触发(需在AGENTS.md中配置cron)。 --- # 技能:周报生成器 ## 目标 基于过去一周(周一至周五)的数据,生成一份结构化的周报草稿,包含工作成果、会议要点和下周计划。 ## 输入 本技能无需额外输入。它会自动从以下来源获取数据: 1. **Git仓库**:扫描 `~/projects/` 目录下所有Git仓库的提交记录。 2. **日历文件**:读取 `~/my_ai_workspace/calendar.ics` 文件。 3. **记忆系统**:调用 `/recall last week` 技能获取记忆。 ## 处理流程 1. **数据收集**:执行 `scripts/collect_data.sh`。 2. **信息提取**:分析Git提交信息,归类为“新功能”、“Bug修复”、“优化”等。 3. **事件关联**:将日历事件与记忆条目进行关联,补充会议上下文。 4. **报告生成**:使用模板,填充数据,生成Markdown格式报告。 ## 输出 在 `~/my_ai_workspace/reports/` 目录下生成 `weekly_report_YYYY-MM-DD.md` 文件,并通知用户。关键点:when_to_use字段是灵魂。它告诉代理在什么情况下自动调用这个技能。你可以定义基于关键词的触发,也可以在AGENTS.md里用cron表达式定义定时触发。
步骤3:编写配套脚本 (scripts/collect_data.sh)
#!/bin/bash # 收集Git数据 WORKSPACE="$HOME/my_ai_workspace" REPORT_DIR="$WORKSPACE/reports" mkdir -p $REPORT_DIR # 1. Git提交汇总 echo "## 本周代码贡献" > $REPORT_DIR/git_summary.md for repo in ~/projects/*/; do if [ -d "$repo/.git" ]; then repo_name=$(basename $repo) echo "### 仓库: $repo_name" >> $REPORT_DIR/git_summary.md git -C $repo log --since="last monday" --oneline >> $REPORT_DIR/git_summary.md 2>/dev/null || echo " 无提交" >> $REPORT_DIR/git_summary.md fi done # 2. (此处可扩展)调用日历解析脚本等... echo "数据收集完成。"步骤4:配置与测试
- 将
config.example.json复制为config.json,并填入你的项目路径等个性化设置。 - 将技能目录链接到OpenClaw的技能目录。
- 在OpenClaw中,手动输入
/weekly-report进行测试。 - 测试成功后,在
AGENTS.md中添加自动触发规则:- cron: "0 17 * * 5" -> /weekly-report(每周五17:00执行)。
通过以上步骤,你就将一个重复性的手动任务,封装成了一个可自动触发、持续进化的AI技能。代理每次执行都会积累经验,未来生成的周报可能会越来越贴合你老板的偏好。
5.2 与现有工具链集成
Personal OS Skills 不是一个孤岛,它应该融入你现有的生产力工具链。
- 与Obsidian/Zettelkasten集成:你可以修改
recall技能,让它不仅从memory/目录,也从你的Obsidian知识库中检索信息。这样,代理就能利用你积累的所有笔记。 - 与任务管理工具集成:创建一个
todo-sync技能,定期将代理在对话中识别出的待办事项(如“明天记得给客户发方案”),同步到你的Todoist或Notion中。 - 与监控系统集成:如果你是开发者,可以创建一个
alert-triage技能。当收到Sentry或Prometheus的报警时,让代理先进行初步分析,提取错误日志和可能的原因,再通知你,让你能快速定位问题。
集成的核心思路是:让AI代理成为你所有数字工具的统一“接口”和“决策中枢”。它不取代这些工具,而是让它们协同工作,并把最有价值的信息提炼给你。
6. 常见问题与故障排查实录
在实际搭建和使用中,你一定会遇到各种问题。以下是我遇到的一些典型情况及解决方案。
6.1 技能无法被识别或调用
症状:在代理中输入/skill-name无反应,或提示“未知命令”。
- 检查1:技能安装路径。确认技能目录是否正确链接或复制到了运行时(OpenClaw/Claude Code)指定的技能目录。路径通常在配置文件中定义。
- 检查2:
SKILL.md文件格式。确保文件顶部有正确的YAML前置元数据块(以---包裹),并且name字段与你想调用的命令一致。文件名可以任意,但name字段决定了命令。 - 检查3:运行时重启。安装新技能后,通常需要重启AI代理运行时,它才能重新扫描技能目录。
- 检查4:权限问题。确保
SKILL.md文件可读,其下的scripts/目录中的可执行文件有执行权限。
6.2 记忆 (recall) 功能效果不佳
症状:代理回忆的内容不相关,或者找不到已知的记忆。
- 原因1:记忆文件格式混乱。代理通常通过语义搜索或关键词匹配查找。确保你的
memory/文件内容清晰、结构化。建议为每个文件添加一个简明的标题和几个关键词标签(如# 项目A架构讨论 [关键词:架构, 微服务, 数据库])。 - 原因2:搜索范围过大或过小。
/recall技能可能有配置项控制搜索深度或时间范围。检查config.json。 - 解决方案:建立记忆归档规范。我个人的习惯是,每天结束前,让代理帮我将当天的对话总结成一条记忆,并让我手动确认后存入
memory/daily/YYYY-MM-DD.md。定期(如每月)对记忆文件进行整理和合并,删除过时内容。
6.3 代理行为与SOUL.md定义不符
症状:代理的回复语气或决策方式偏离了你在SOUL.md中的设定。
- 原因1:指令冲突。
SOUL.md中的指令可能过于宽泛或相互矛盾。例如,既要求“极具创意”,又要求“绝对稳妥”,在具体场景下代理会困惑。 - 原因2:上下文权重不足。在冗长的对话中,早期的系统指令(
SOUL.md内容)可能会被后续对话内容“稀释”。这是大模型本身的限制。 - 解决方案:采用“原则+示例”的写法。在
SOUL.md中,不仅写原则,更要附上正面和反面的对话示例。例如:原则:提供可操作的建议。好例子:“要解决这个连接超时问题,我建议:1. 将超时参数从30秒调整为120秒;2. 在重试逻辑中加入指数退避。这是代码示例...”坏例子:“可能是网络问题,你检查一下。” 同时,可以在
AGENTS.md中设置规则,让代理在对话每进行10轮后,自动重新读取一遍SOUL.md的核心摘要,以刷新记忆。
6.4 自动化任务(心跳/定时任务)不执行
症状:配置在HEARTBEAT.md或通过cron设置的定时任务没有运行。
- 检查1:运行时是否在持续运行。OpenClaw的心跳功能需要主进程
main.py一直处于运行状态。你需要使用systemd、launchd(macOS) 或tmux/screen等工具将其作为后台服务运行。 - 检查2:cron表达式或时间格式。检查
HEARTBEAT.md中的时间设置语法是否正确。不同的运行时可能支持不同的语法(如cron表达式 vs. 自然语言)。 - 检查3:任务执行权限和环境变量。后台执行的任务可能无法访问与交互式终端相同的环境变量(如
PATH,API_KEY)。确保在启动运行时的环境中明确定义所有所需变量,或者在技能脚本中使用绝对路径。
6.5 性能与成本考量
症状:代理响应变慢,或API调用费用激增。
- 优化1:记忆检索优化。避免每次回忆都扫描全部记忆文件。可以建立索引文件,或按时间/主题分目录存储。
- 优化2:上下文管理。定期清理
MEMORY.md等索引文件,移除过时或低频信息。只将真正需要长期记忆的内容结构化保存。 - 优化3:技能设计。对于复杂任务,将其拆解为多个步骤,让代理逐步思考。这比一次性抛出一个极其复杂的问题更能获得可靠结果,有时反而总token更少。
- 成本监控:为你的API Key设置用量告警。大多数AI代理运行时会记录token消耗,定期查看日志,分析哪些技能或对话模式最耗资源,并针对性优化。
搭建一个进化的个人AI操作系统,初期需要一些投入,但一旦度过磨合期,它将成为你数字生活中如同水电煤一样的基础设施。它不会取代你的思考,而是将你从信息的泥沼和重复的劳作中解放出来,让你更专注于创造和决策本身。这个过程,也是你重新梳理自己工作流和知识体系的过程,其本身就有巨大的价值。开始可能只是一个简单的会议摘要技能,但随着你和你的AI伙伴不断共同进化,你会发现,你创造的不仅仅是一个工具,而是一个真正理解你、与你共同成长的数字伴侣。