构建进化型AI伙伴:从记忆、技能到协议的三维增长模型
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/onboarding15分钟完成个性化奠基这是所有旅程的起点。/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 --sincelast 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指定的技能目录。路径通常在配置文件中定义。检查2SKILL.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等工具将其作为后台服务运行。检查2cron表达式或时间格式。检查HEARTBEAT.md中的时间设置语法是否正确。不同的运行时可能支持不同的语法如cron表达式 vs. 自然语言。检查3任务执行权限和环境变量。后台执行的任务可能无法访问与交互式终端相同的环境变量如PATH,API_KEY。确保在启动运行时的环境中明确定义所有所需变量或者在技能脚本中使用绝对路径。6.5 性能与成本考量症状代理响应变慢或API调用费用激增。优化1记忆检索优化。避免每次回忆都扫描全部记忆文件。可以建立索引文件或按时间/主题分目录存储。优化2上下文管理。定期清理MEMORY.md等索引文件移除过时或低频信息。只将真正需要长期记忆的内容结构化保存。优化3技能设计。对于复杂任务将其拆解为多个步骤让代理逐步思考。这比一次性抛出一个极其复杂的问题更能获得可靠结果有时反而总token更少。成本监控为你的API Key设置用量告警。大多数AI代理运行时会记录token消耗定期查看日志分析哪些技能或对话模式最耗资源并针对性优化。搭建一个进化的个人AI操作系统初期需要一些投入但一旦度过磨合期它将成为你数字生活中如同水电煤一样的基础设施。它不会取代你的思考而是将你从信息的泥沼和重复的劳作中解放出来让你更专注于创造和决策本身。这个过程也是你重新梳理自己工作流和知识体系的过程其本身就有巨大的价值。开始可能只是一个简单的会议摘要技能但随着你和你的AI伙伴不断共同进化你会发现你创造的不仅仅是一个工具而是一个真正理解你、与你共同成长的数字伴侣。