1. 项目概述一个打通双平台的本地化笔记系统如果你和我一样同时是 OpenClaw 和 Claude Code 的用户并且对 flomo 那种轻量、随想随记的笔记方式情有独钟那么你很可能也面临过和我一样的困扰想法和灵感是流动的它们可能在任何地方、任何工具里冒出来。在 OpenClaw 里用命令行快速记下的一个点子回头想在 Claude Code 的对话中引用时却找不到反之在 Claude Code 里深思熟虑写下的一段备忘也无法在 OpenClaw 的随机回顾中被触发。数据被割裂在不同的“花园”里这违背了笔记工具服务于“第二大脑”的初衷。今天要分享的openclaw-flomo-skill正是为了解决这个痛点而生。它不是一个全新的笔记应用而是一个精巧的“连接器”和“增强器”。它的核心价值在于为 OpenClaw 赋予了一套 flomo 风格的快速笔记与回顾能力并且通过一个共享的本地 Markdown 文件无缝打通了 OpenClaw 和 Claude Code 两个平台的数据孤岛。这意味着无论你在哪个工具里记录所有笔记都会自动汇聚到同一个知识库中并且可以在任一平台被搜索、回顾甚至通过微信收到 AI 驱动的随机回顾提醒。这个技能非常适合追求效率、注重数据主权、且工作流横跨命令行与 AI 对话界面的开发者、写作者和知识工作者。它极其轻量完全本地运行没有云同步的延迟和隐私担忧却通过简单的自动化如 AI 打标、随机回顾带来了远超纯文本备忘录的效用。接下来我将详细拆解它的设计思路、实现细节、以及我在深度使用中积累的配置技巧和避坑经验。2. 核心设计思路与架构解析2.1 为什么是“Flomo 风格”与“本地 Markdown”的结合在决定构建这个技能之前我评估了多种笔记方案。云笔记虽然同步方便但存在 API 限制、隐私顾虑和网络依赖。而纯粹的本地文件如 Vim 编辑.txt又缺乏快速捕获和智能回顾的能力。Flomo 的理念——“记录想法而非文章”——深深吸引了我它降低了记录的心理成本但其云端本质仍是一个限制。因此我的设计目标是在本地实现 Flomo 的核心体验并赋予其与 AI 工作流深度结合的能力。本地 Markdown 文件是实现这一目标的完美载体永不过时与完全可控Markdown 是纯文本未来几十年都可读可写数据完全掌握在自己手中。极致的便携性与兼容性任何文本编辑器、任何系统都能打开便于备份、版本管理Git和全局搜索如grep、ripgrep。结构化的灵活性虽然 Flomo 本身是线性的但用 Markdown 的##标题分隔每条笔记用#表示标签既能保持人类可读的简洁性又便于程序Skill进行精准的解析和操作。选择 OpenClaw 作为入口是因为命令行是“快速捕获”想法的最短路径。无需打开图形界面一个触发词加内容想法瞬间落袋为安。而 Claude Code 的集成则是为了在“深度处理”场景中也能无缝接入这个笔记流。2.2 跨平台数据互通的核心共享文件与解析协议这是本项目最巧妙也最实用的设计。实现跨平台互通并非通过复杂的同步服务或数据库而是约定一个共同读取和写入的单一文件。技术实现统一的存储路径Skill 的配置中定义了一个DATA_FILE_PATH例如~/.openclaw_notes.md。无论是 OpenClaw skill 还是 Claude Code 的 memo skill都指向这个完全相同的路径。严谨的数据格式协议互通的前提是双方能互相理解。我们约定每条笔记的存储格式如下## 2024-04-05 10:32 用户记录的原始内容可以有多行。 #手动添加的标签 AI标签#灵感 #技术 #待深入 ---分隔符每条笔记以## YYYY-MM-DD HH:MM的时间戳标题开始以---分隔线结束。这为程序解析提供了清晰的边界。标签系统支持用户手动添加的标签如#手动标签和 AI 自动生成的标签如#AI标签1。在解析时程序会提取所有以#开头的词作为标签。无冲突写入机制为了避免两个进程同时写入导致内容损坏技能采用了“追加写入”模式。新增笔记永远被添加到文件末尾。无论是 OpenClaw 还是 Claude Code都遵循“读取全部 - 在内存中处理或添加 - 整体写回”或“直接追加”的策略由于操作非常快速在实践中发生冲突的概率极低。对于高级用户可以将该文件置于 Git 仓库中通过版本控制来管理变更历史。注意这种基于文件的共享方式简单而强大但它要求两个技能对文件格式的理解必须完全一致。任何一方的格式更新都需要同步到另一方否则会导致解析失败。目前的格式已经过充分验证足够稳定。2.3 微信推送与随机回顾打造无感的复习系统“随机回顾”是 Flomo 的精华功能旨在利用间隔重复的原理被动地激活记忆。本技能在此基础上做了两点关键增强基于时间的随机池技能并非从全部笔记中随机抽取而是默认从“7天前”的笔记中选取。这个设计非常符合记忆曲线优先回顾那些即将被遗忘的内容。池子的时间窗口7天是可配置的你可以根据自己笔记的频率调整。AI 生成追问并推送至微信这是将回顾价值最大化的关键。随机选出一条旧笔记后技能会调用 AI例如 OpenAI GPT、Claude 等模型基于该笔记内容生成一个开放性的、能引发深度思考的问题。例如对于笔记“区块链的不可篡改性源于密码学哈希”AI 可能追问“如果量子计算机实用化对当前区块链的哈希算法会构成怎样的根本性挑战”。然后这条笔记和追问会通过微信 clawbot 推送到你的手机微信上。为什么是微信推送因为微信是我们最高频、最自然的注意力入口。将回顾推送到微信相当于把复习环节无缝嵌入到你刷朋友圈、看群消息的动线中极大地提高了回顾发生的概率和及时性让知识在碎片时间自然回流。3. 详细安装、配置与核心功能实操3.1 环境准备与技能安装首先确保你已安装并运行着 OpenClaw。OpenClaw 的技能通常存放在用户目录下的.openclaw/workspace/skills/中。安装步骤# 1. 克隆技能仓库到 OpenClaw 的技能目录 git clone https://github.com/chester-zhou/openclaw-flomo-skill.git ~/.openclaw/workspace/skills/memo-notes # 2. 重启 OpenClaw 应用使其加载新技能。 # 如果是服务形式运行可能需要重启服务systemctl --user restart openclaw # 或直接关闭再打开 OpenClaw 客户端。安装后在 OpenClaw 中输入help命令你应该能在技能列表里看到memo-notes或相关功能已就绪。3.2 关键配置项详解技能的核心行为通过配置文件或环境变量控制。你需要找到技能目录下的配置文件通常是config.yaml或config.json并进行调整。以下是几个关键配置数据文件路径 (DATA_FILE_PATH):data_file_path: /home/your_username/.openclaw_notes.md作用定义笔记存储的绝对路径。确保 OpenClaw skill 和 Claude Code memo skill 使用完全相同的路径这是跨平台互通的基础。建议不要放在临时目录或 OpenClaw 的内部目录下。建议放在家目录下如~/.openclaw_notes.md便于备份和在其他工具中访问。AI 集成配置: 为了实现自动打标和生成追问需要配置 AI 模型。以 OpenAI 为例ai_provider: openai # 或 claude, gemini 等取决于技能支持 openai_api_key: sk-... # 你的 API Key openai_base_url: https://api.openai.com/v1 # 如需使用代理或自定义端点 model: gpt-3.5-turbo # 推荐使用 gpt-4 或 claude-3 系列以获得更好效果但 gpt-3.5-turbo 成本更低注意API Key 是敏感信息切勿提交到版本库。建议通过环境变量注入或在配置文件中引用环境变量如openai_api_key: ${OPENAI_API_KEY}。随机回顾配置:review: lookback_days: 7 # 回顾池的时间窗口单位天 wechat_push: true # 是否启用微信推送 clawbot_webhook: https://qyapi.weixin.qq.com/cgi-bin/webhook/send?keyYOUR_KEY # 你的 clawbot 机器人 Webhook 地址lookback_days: 设置为30可以回顾更久远的笔记设置为1则只回顾昨天的笔记。根据你的笔记量和复习频率调整。clawbot_webhook: 这是实现微信推送的关键。你需要在企业微信或类似支持 Webhook 的机器人服务中创建一个机器人并获取其 Webhook URL。3.3 核心功能使用实录配置完成后就可以体验无缝的笔记流了。场景一在 OpenClaw 中快速记录你 记一下 今天想到用 Rust 的 Result 类型来统一处理错误比到处用 panic 优雅多了。 OpenClaw: [memo-notes] 笔记已保存。AI 已添加标签#编程 #Rust #错误处理 #最佳实践背后发生的事技能将你的话作为内容生成时间戳调用 AI 模型对内容进行分析提取出几个核心标签然后以规定格式追加到DATA_FILE_PATH指定的 Markdown 文件中。场景二搜索与筛选你 搜笔记 Rust 错误处理 OpenClaw: [memo-notes] 找到 3 条相关笔记 1. [2024-04-05 10:32] 今天想到用 Rust 的 Result 类型... #编程 #Rust 2. [2024-04-01 14:15] 阅读了关于 Rust 中 ? 运算符的博客... #Rust ... 你 #Rust 的笔记 OpenClaw: [memo-notes] 标签 #Rust 下的所有笔记共5条...技术细节搜索功能通常是通过读取整个 Markdown 文件逐条解析笔记然后在笔记的“内容”和“标签”字段中进行字符串匹配实现的。虽然对于成千上万条笔记线性搜索可能稍慢但对于个人知识库的规模来说完全足够且实现简单可靠。场景三触发随机回顾与微信推送你 随机回顾 OpenClaw: [memo-notes] 已从 7 天前的笔记中随机选取一条并通过微信 clawbot 推送。请查收微信。此时你的微信会收到一条类似这样的消息【笔记回顾】 时间2024-03-29 16:48 内容用户增长的飞轮效应好产品-更多用户-更多数据/反馈-改进产品-更好产品。 标签#产品 #增长 #思维模型 AI 追问这个飞轮模型在哪个环节最容易断裂结合一个你熟悉的产品案例谈谈。完整流程Skill 读取数据文件筛选出所有时间戳在[当前时间 - lookback_days, 当前时间]范围内的笔记。从这个子集中随机选择一条。将这条笔记的内容作为上下文发送给配置的 AI 模型请求其生成一个开放性问题。Prompt 可能是“请针对以下这段笔记内容提出一个能引发深度思考、促进知识连接的开放性问题。笔记内容[...]”。将笔记原文和 AI 生成的问题按照企业微信机器人要求的 Markdown 格式组装成消息体。通过 HTTP POST 请求发送到clawbot_webhook。企业微信服务器将消息推送到你所在的群聊或你的私聊。4. 与 Claude Code 的协同工作流Claude Code 的 memo skill 并非本技能的一部分但它们是“孪生”设计共同构成了这个跨平台系统。假设你已经在 Claude Code 中配置了它的 memo skill。工作流示例在 Claude Code 中记录你在与 Claude 讨论一个技术方案时突然想到一个关键点可以立即输入命令如/memo 这个方案需要考虑服务降级和熔断机制参考 Netflix Hystrix。Claude Code 的 memo skill 会将这条记录写入同一个~/.openclaw_notes.md文件。在 OpenClaw 中回顾几天后你在 OpenClaw 中触发“随机回顾”系统完全有可能把这条关于“服务降级”的笔记推送到你的微信并附上 AI 生成的追问比如“除了 Hystrix还有哪些流行的服务容错库它们的设计哲学有何不同”双向搜索无论你在 OpenClaw 里用“搜笔记 熔断”还是在 Claude Code 里用“搜索 memo 降级”你都能查到这条笔记因为它们操作的是同一个数据源。配置要点你必须确保 Claude Code memo skill 的存储路径配置与 OpenClaw skill 的DATA_FILE_PATH绝对一致。两个技能对笔记格式的解析逻辑必须兼容。通常它们会共用同一套解析函数库或严格遵守相同的格式规范。5. 高级技巧、常见问题与排查5.1 性能优化与数据维护当笔记文件.md变得非常大例如超过 10MB 或数万条笔记时可能会遇到一些问题。问题搜索或随机回顾速度变慢。原因技能每次操作都需要读取并解析整个文件文件越大I/O 和解析耗时越长。解决方案归档旧笔记定期如每季度、每年将早期的笔记移动到一个单独的归档文件中例如notes_archive_2023.md。主文件只保留最近1-2年的活跃笔记。技能可以修改为同时读取主文件和归档文件但回顾功能仅针对主文件。这需要你手动操作或编写一个简单的脚本。使用数据库后端高级对于开发者可以 fork 原项目将存储后端从 Markdown 文件迁移到轻量级数据库如 SQLite。SQLite 的单文件特性保持了便携性同时提供了索引能极大提升搜索和随机查询的速度。但这会破坏与现有 Claude Code memo skill 的兼容性除非也同步修改后者。问题Markdown 文件内容混乱或格式错误。原因手动编辑文件时误删了分隔符或者两个技能同时写入极小概率导致格式错乱。解决方案备份在进行任何手动修改前先备份文件。使用校验脚本可以编写一个简单的 Python 脚本检查文件格式。例如确保每个## 日期时间标题后面都有对应的---分隔符。# 示例简单的格式检查脚本 check_notes.py import re with open(‘~/.openclaw_notes.md‘, ‘r‘) as f: content f.read() entries re.split(r‘\n---\n‘, content) for i, entry in enumerate(entries): if entry.strip() and not entry.startswith(‘##‘): print(f“格式错误在条目 {i1} 附近: {entry[:100]}...“)5.2 AI 功能相关问题问题AI 生成的标签不准确或过于笼统。原因默认的提示词Prompt可能不适合你的笔记领域或者使用的模型如gpt-3.5-turbo理解能力有限。优化方案定制 Prompt找到技能中负责生成标签的代码部分通常是一个函数接收笔记内容返回标签。修改发送给 AI 的指令。例如可以更具体化“请为以下技术类笔记生成2-4个精确的标签优先使用 #编程语言 #框架 #概念 这类具体词汇避免 #想法 #学习 这类宽泛词。笔记内容[...]”升级模型如果成本允许将配置中的model改为gpt-4或claude-3-sonnet它们的理解和归纳能力更强。混合标签接受 AI 标签作为补充但自己养成手动添加1-2个核心标签的习惯。例如记录时直接输入“记一下 内容 xxx #我的核心标签”。问题微信 clawbot 收不到推送消息。排查步骤检查 Webhook 地址确认clawbot_webhook配置是否正确且没有过期。企业微信的 Webhook key 有时会重置。检查网络连通性在服务器上运行curl -X POST -H “Content-Type: application/json“ -d ‘{“msgtype“:“text“,“text“:{“content“:“测试消息“}}‘ YOUR_WEBHOOK_URL看是否能成功发送并收到响应。查看 OpenClaw 日志OpenClaw 或技能本身通常会有运行日志。检查当触发“随机回顾”时是否有错误信息输出例如 HTTP 403权限错误、404地址错误或网络超时。检查机器人权限确认 clawbot 机器人仍然在你需要推送的群聊或对话中且没有被禁用。5.3 安全与备份建议API 密钥安全绝对不要将包含真实 API Key 的配置文件上传到公开的 Git 仓库。使用环境变量或单独的、被.gitignore排除的配置文件如config.local.yaml来管理密钥。笔记数据备份你的笔记数据现在集中在一个或几个Markdown 文件里这反而让备份变得简单。自动化备份使用cron任务定期将~/.openclaw_notes.md复制到云存储如 Dropbox、iCloud Drive或另一个硬盘。版本控制将笔记文件所在的目录初始化为 Git 仓库定期提交。这不仅能备份还能看到笔记的历史变更。你可以使用git commit -am “Daily notes update“这样的简单命令。5.4 自定义扩展思路这个技能的架构是开放的你可以基于它进行扩展添加新的触发词和动作例如增加“今日笔记”命令列出当天所有的记录或者增加“总结上周”命令让 AI 对过去一周的笔记进行摘要。集成更多消息推送除了微信还可以添加飞书Lark、Slack、Telegram 等机器人的 Webhook 支持让回顾出现在你更常用的工作沟通工具里。实现双向链接在解析笔记时自动检测内容中提到的其他笔记标题例如[[2024-04-01 14:15]]并将其转换为链接。这需要更复杂的解析和索引但能极大提升笔记间的连接性。这个openclaw-flomo-skill项目本质上是在轻量与智能、本地与互联之间找到了一个优雅的平衡点。它没有试图取代任何全功能笔记软件而是精准地填补了快速捕获、跨平台统一和被动回顾这三个关键场景的空白。通过将近半年的日常使用它已经成为了我数字工作流中一个不可或缺的“神经节点”让散落在各处的碎片想法最终都能汇聚并生长到同一个知识体系中去。如果你也厌倦了在不同工具间复制粘贴不妨试试这个方案它带来的流畅感可能会超出你的预期。