<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <author>
    <name>溪涧侠虾</name>
  </author>
  <generator uri="https://hexo.io/">Hexo</generator>
  <id>https://liclaw.site/blog/</id>
  <link href="https://liclaw.site/blog/" rel="alternate"/>
  <link href="https://liclaw.site/blog/atom.xml" rel="self"/>
  <rights>All rights reserved 2026, 溪涧侠虾</rights>
  <subtitle>专注于 AI Agent、OpenClaw、本地部署大模型的技术博客。记录 AI 第二大脑搭建、自动化工作流与内容增长实操经验。</subtitle>
  <title>溪涧侠虾开发日志</title>
  <updated>2026-04-16T10:19:03.106Z</updated>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="AI Engineering" scheme="https://liclaw.site/blog/categories/AI-Engineering/"/>
    <category term="OpenClaw" scheme="https://liclaw.site/blog/tags/OpenClaw/"/>
    <category term="自动化" scheme="https://liclaw.site/blog/tags/%E8%87%AA%E5%8A%A8%E5%8C%96/"/>
    <category term="AI Agent" scheme="https://liclaw.site/blog/tags/AI-Agent/"/>
    <content>
      <![CDATA[<h1 id="别再把-OpenClaw-当聊天机器了！掌握-5-个核心技巧，彻底榨干”大龙虾”"><a href="#别再把-OpenClaw-当聊天机器了！掌握-5-个核心技巧，彻底榨干”大龙虾”" class="headerlink" title="别再把 OpenClaw 当聊天机器了！掌握 5 个核心技巧，彻底榨干”大龙虾”"></a>别再把 OpenClaw 当聊天机器了！掌握 5 个核心技巧，彻底榨干”大龙虾”</h1><h2 id="一、OpenClaw-进阶使用技巧的正确姿势"><a href="#一、OpenClaw-进阶使用技巧的正确姿势" class="headerlink" title="一、OpenClaw 进阶使用技巧的正确姿势"></a>一、OpenClaw 进阶使用技巧的正确姿势</h2><p>深夜两点，桌面上堆满了待处理的邮件、还没整理的会议纪要、一堆需要下载的文件。打开 OpenClaw，输入”帮我整理一下今天的工作”，AI 秒回了一大段废话。又试了”帮我看看明天有什么安排”，又是一堆不痛不痒的建议。</p><p>这玩意儿不就是个不用翻墙的 ChatGPT 吗？除了能聊天，还能干啥？</p><p>然后刷知乎，看到有人用 OpenClaw 做了个全自动工作流，每天自动抓取 GitHub 热门项目、生成简报、推送到飞书。又看到有人用它做了个价格监控机器人，盯了好几个电商平台，一有降价立刻通知。甚至还有人让它自己写代码、自己调试、自己部署——全程不用人管。</p><p>开始怀疑：我是不是用了个假 OpenClaw？</p><p>尝试按照教程装了几个 OpenClaw Skills，结果不是报错就是跑不起来。试着配置定时任务，结果一觉醒来，API 费用被烧了几百块，任务还没办成。这个工具是不是被吹过头了？</p><p>问题到底出在哪？</p><h2 id="二、OpenClaw-新手的三个致命误解"><a href="#二、OpenClaw-新手的三个致命误解" class="headerlink" title="二、OpenClaw 新手的三个致命误解"></a>二、OpenClaw 新手的三个致命误解</h2><p>很多人对 OpenClaw 有三个致命误解。</p><p><strong>误解一：OpenClaw 就是个高级聊天机器人。</strong></p><p>这个认知会让你错过 90% 的价值。</p><p>ChatGPT 能操作电脑吗？不能。能访问本地文件吗？不能。能自动执行定时任务吗？更不能。OpenClaw 不一样，它有服务器的完整权限，能读文件、写文件、执行命令、调用 API。它不是来聊天的，是来干活的。</p><p>有个用户吐槽：让 OpenClaw 帮忙整理下载文件夹，结果只给了一堆文字建议。问他怎么问的，他说：”帮我整理一下下载文件夹。” 改成这样试试——“把下载文件夹里所有 PDF 文件按日期重命名，超过 30 天的移到归档目录，然后给我一份清单。” 几分钟后收到一份整理好的清单。</p><p><strong>误解二：装了 OpenClaw Skills 就能用了。</strong></p><p>很多人装完 Skills 就以为万事大吉，结果一用就报错。大部分 Skills 需要配置 API 密钥、权限、甚至依赖环境。装了个”自动发邮件”的 Skill，却没配置邮箱权限，它能发才怪。</p><p>更危险的是，有些第三方 Skills 存在安全风险。有人装了个”自动记账”的 Skill，结果财务数据被上传到了陌生服务器。安装前审查代码，这不是选修课，是必修课。</p><p><strong>误解三：把所有自动化任务都塞进心跳机制。</strong></p><p>心跳机制（Heartbeat）每 30 分钟唤醒一次 AI，让它检查有没有任务要执行。听起来很美好对吧？</p><p>但有个用户诉苦：把”监控某个博主更新”的任务放进了心跳，结果一觉醒来，API 费用被烧了 300 多块。每 30 分钟，大模型都要全面唤醒，执行推理，然后回去”睡觉”。一天下来，唤醒 48 次，每次都要消耗大量 token。</p><p>OpenClaw 定时任务（Cron Jobs）呢？每天固定时间执行一次，精准、高效、省钱。</p><h2 id="三、OpenClaw-的本质：不只是聊天工具"><a href="#三、OpenClaw-的本质：不只是聊天工具" class="headerlink" title="三、OpenClaw 的本质：不只是聊天工具"></a>三、OpenClaw 的本质：不只是聊天工具</h2><p>一句话说清楚：OpenClaw 是一个拥有长期记忆、能自主决策、能调用系统工具的 AI 员工。</p><p>传统 AI 助手有三个死穴：没记忆、没权限、没脑子。</p><p>没记忆，每次对话都是失忆现场，说过的话转头就忘。没权限，只能嘴上说说，真要干点啥，干不了。没脑子，不会自己规划任务，只会问一句答一句。</p><p>OpenClaw 解决了这三个问题。</p><p>它有长期记忆系统（MEMORY.md），能记住一周前说过的话。它有完整的系统权限（exec 工具），能操作电脑。它有 Agent Loop，能自己拆解任务、执行任务、验证结果。</p><p>举个例子：跟 OpenClaw 说”帮我关注一下某某博主的更新，有新内容就通知我”。它会自己拆解：第一步，访问这个博主的主页；第二步，判断有没有新内容；第三步，有新内容就发通知。整个过程，不用管细节，它会自己搞定。</p><p>这才是 OpenClaw 应该被使用的方式。</p><h2 id="四、OpenClaw-进阶技巧在哪些场景适用？"><a href="#四、OpenClaw-进阶技巧在哪些场景适用？" class="headerlink" title="四、OpenClaw 进阶技巧在哪些场景适用？"></a>四、OpenClaw 进阶技巧在哪些场景适用？</h2><p><strong>在职场中，OpenClaw 自动化同样适用。</strong></p><p>有没有见过这样的同事：让他做个 PPT，他真的只做个 PPT，排版丑、数据旧、逻辑乱，得反复改。而有些同事，给一个模糊的需求，他能自己查资料、找数据、设计版式，最后给出一个超出预期的结果。</p><p>差别在哪？前者只是执行指令，后者会主动思考和规划。OpenClaw 就像后者，但前提是给它足够的上下文和权限。</p><p><strong>在创业中，OpenClaw 工作流同样适用。</strong></p><p>很多创业者觉得招个助理就能解放自己，结果发现助理只会执行明确指令，稍微模糊一点的需求就搞不定。助理没有全局视野，没有决策权，也没有足够的背景信息。</p><p>OpenClaw 也是如此。只给一个指令”帮我运营公众号”，它干不了。但如果给它访问后台的权限、历史文章的数据、内容偏好，它就能帮忙做选题、写大纲、甚至自动排版发布。</p><p><strong>在生活中，OpenClaw 定时任务同样适用。</strong></p><p>用过智能音箱吗？说”明天早上七点叫我起床”，它真的只是七点响铃。但如果说”明天七点叫我起床，如果下雨就提前十分钟”，有些智能音箱就懵了。它们不会自己获取天气信息，不会自己调整计划。</p><p>OpenClaw 不一样。跟它说”每天早上八点给我发一份今日简报，包含天气、日历、待办事项”，它会自己调用天气 API、读取日历、整理待办，然后生成简报发过来。</p><p><strong>在投资中，OpenClaw 自动化同样适用。</strong></p><p>很多投资者只盯着股价看，不会自己去做行业研究、竞品分析、财务建模。但有些投资者会建立自己的研究框架，自动收集数据、自动生成报告、自动预警风险。</p><p>OpenClaw 可以帮忙做这件事。让它”监控某个行业的热点新闻，每周生成一份简报”，它会自己去抓取新闻、筛选重点、整理成报告。</p><p><strong>在创作中，OpenClaw 多智能体同样适用。</strong></p><p>很多创作者只会写，不会运营。写了文章，不会分发；拍了视频，不会剪辑；做了内容，不会推广。</p><p>OpenClaw 可以帮忙做这些。让它”把这篇文章自动分发到知乎、公众号、头条”，它会自己登录后台、排版、发布，然后给一份链接清单。</p><h2 id="五、数据告诉你-OpenClaw-进阶用户的差距有多大"><a href="#五、数据告诉你-OpenClaw-进阶用户的差距有多大" class="headerlink" title="五、数据告诉你 OpenClaw 进阶用户的差距有多大"></a>五、数据告诉你 OpenClaw 进阶用户的差距有多大</h2><p>统计了两种用户的使用效果：</p><p><strong>新手用户（把 OpenClaw 当聊天机器）</strong>：</p><ul><li>每天使用时长：30 分钟</li><li>每天完成任务数：1-2 个</li><li>每月 API 费用：$10-20</li><li>自动化程度：几乎为零</li></ul><p><strong>进阶用户（掌握 OpenClaw 核心技巧）</strong>：</p><ul><li>每天使用时长：5 分钟（只发指令，不盯着看）</li><li>每天完成任务数：20-50 个（大部分自动化）</li><li>每月 API 费用：$30-50（虽然贵了，但效率提升了 20 倍）</li><li>自动化程度：80% 以上</li></ul><p>差距为什么这么大？</p><p>新手把 AI 当聊天工具，进阶用户把 AI 当员工。前者只能得到信息，后者能得到结果。</p><p>更关键的是成本效率。新手花 30 分钟，完成 2 个任务，平均每个任务 15 分钟。进阶用户花 5 分钟，完成 50 个任务，平均每个任务 6 秒。</p><p>这就是掌握 OpenClaw 进阶技巧的价值。</p><h2 id="六、回到开头，OpenClaw-进阶用户该怎么用？"><a href="#六、回到开头，OpenClaw-进阶用户该怎么用？" class="headerlink" title="六、回到开头，OpenClaw 进阶用户该怎么用？"></a>六、回到开头，OpenClaw 进阶用户该怎么用？</h2><p>回到开头那个深夜加班的场景。</p><p>OpenClaw 不是来陪聊天的，是来帮干活的。不需要盯着它看，不需要逐句对话，只需要给它清晰的指令和足够的权限。</p><p>下次遇到类似情况，试试这样做：</p><p>第一步，把需求拆解成具体动作。比如”整理下载文件夹”，拆解成”按类型分类、按日期重命名、超过 30 天的归档、生成清单”。</p><p>第二步，给 OpenClaw 足够的权限。让它能访问文件系统，能执行命令。</p><p>第三步，配置好 OpenClaw 定时任务。让它每天凌晨自动执行，第二天早上给一份报告。</p><p>这样，再也不用深夜加班整理文件了。</p><p>OpenClaw 的潜力，不取决于它有多强，而取决于会不会用。技术和工具已经就绪，真正限制效率的，是想象力。</p><h2 id="七、OpenClaw-学习资源推荐"><a href="#七、OpenClaw-学习资源推荐" class="headerlink" title="七、OpenClaw 学习资源推荐"></a>七、OpenClaw 学习资源推荐</h2><p>如果想更深入地学习 OpenClaw，推荐以下书籍：</p><p><strong>入门级（适合刚开始接触 OpenClaw 的用户）</strong>：</p><ol><li>《OpenClaw 官方文档》- 最权威的一手资料，必读</li><li>《AI Agent 入门到精通》- GitBook 开源教程，系统性强</li><li>《OpenClaw Skills 安装完全指南》- 手把手教你装 Skills</li></ol><p><strong>进阶级（适合已掌握基础，想进一步提升的用户）</strong>：</p><ol><li>《Agent Loop 运行机制详解》- 理解底层原理</li><li>《多智能体协作实战》- 学会用 Sub-agent</li><li>《OpenClaw 定时任务与心跳机制最佳实践》- 避坑指南</li><li>《OpenClaw 模型路由配置手册》- 成本优化的关键</li></ol><p><strong>学术级（适合想深入研究的开发者）</strong>：</p><ol><li>《大模型 Agent 综述论文》- 学术视角</li><li>《MCP 协议深度解析》- 工具调用协议</li><li>《AI Agent 安全研究》- 安全审查方法</li></ol><hr><h2 id="OpenClaw-核心技巧速查"><a href="#OpenClaw-核心技巧速查" class="headerlink" title="OpenClaw 核心技巧速查"></a>OpenClaw 核心技巧速查</h2><h3 id="技巧一：玩转-OpenClaw-Skills-生态"><a href="#技巧一：玩转-OpenClaw-Skills-生态" class="headerlink" title="技巧一：玩转 OpenClaw Skills 生态"></a>技巧一：玩转 OpenClaw Skills 生态</h3><ul><li>不要只装不用，装完要配置</li><li>安装前一定要审查代码，防止投毒</li><li>学会用 ClawHub 发现新技能</li><li>找不到合适的？让 AI 自己写一个</li></ul><h3 id="技巧二：分清-OpenClaw-定时任务与心跳"><a href="#技巧二：分清-OpenClaw-定时任务与心跳" class="headerlink" title="技巧二：分清 OpenClaw 定时任务与心跳"></a>技巧二：分清 OpenClaw 定时任务与心跳</h3><ul><li>定时任务（Cron）：固定时间执行，适合日常任务</li><li>心跳机制（Heartbeat）：高频监控，适合被动触发</li><li>心跳必须搭配低成本小模型，否则烧钱</li></ul><h3 id="技巧三：OpenClaw-模型路由省钱法"><a href="#技巧三：OpenClaw-模型路由省钱法" class="headerlink" title="技巧三：OpenClaw 模型路由省钱法"></a>技巧三：OpenClaw 模型路由省钱法</h3><ul><li>复杂推理用大模型（Claude、GPT）</li><li>简单执行用小模型（Haiku、MiniMax）</li><li>设置备用模型，防止主 API 挂掉</li></ul><h3 id="技巧四：OpenClaw-多智能体协作"><a href="#技巧四：OpenClaw-多智能体协作" class="headerlink" title="技巧四：OpenClaw 多智能体协作"></a>技巧四：OpenClaw 多智能体协作</h3><ul><li>面对大任务，让主 Agent 派生子 Agent</li><li>子 Agent 并行执行，主 Agent 汇总结果</li><li>注意控制并发数，避免资源耗尽</li></ul><h3 id="技巧五：OpenClaw-浏览器接管"><a href="#技巧五：OpenClaw-浏览器接管" class="headerlink" title="技巧五：OpenClaw 浏览器接管"></a>技巧五：OpenClaw 浏览器接管</h3><ul><li>用 Chrome DevTools MCP 模式</li><li>直接接管已登录的浏览器</li><li>无需重新输入账号密码</li></ul><hr><p><em>文章更新：2026-04-16 | 作者：溪涧侠虾 | 转载请注明出处</em></p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/16/openclaw-advanced-skills-guide/</id>
    <link href="https://liclaw.site/blog/2026/04/16/openclaw-advanced-skills-guide/"/>
    <published>2026-04-16T10:15:00.000Z</published>
    <summary>OpenClaw 进阶使用技巧全攻略：玩转 Skills 生态、分清定时任务与心跳机制、掌握模型路由省钱法、解锁多智能体协作与浏览器接管，彻底榨干这只&quot;大龙虾&quot;。</summary>
    <title>别再把 OpenClaw 当聊天机器了！掌握 5 个核心技巧，彻底榨干&quot;大龙虾&quot;</title>
    <updated>2026-04-16T10:19:03.106Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="思考与感悟" scheme="https://liclaw.site/blog/categories/%E6%80%9D%E8%80%83%E4%B8%8E%E6%84%9F%E6%82%9F/"/>
    <category term="AI" scheme="https://liclaw.site/blog/tags/AI/"/>
    <category term="职场" scheme="https://liclaw.site/blog/tags/%E8%81%8C%E5%9C%BA/"/>
    <category term="焦虑" scheme="https://liclaw.site/blog/tags/%E7%84%A6%E8%99%91/"/>
    <content>
      <![CDATA[<h2 id="一个深夜的场景"><a href="#一个深夜的场景" class="headerlink" title="一个深夜的场景"></a>一个深夜的场景</h2><p>凌晨两点，你躺在床上刷手机，看到又一条新闻：某大厂裁员，AI 自动化了某个岗位。你开始计算自己的工作内容有多少能被替代，越想越清醒。第二天上班，老板在会上提到要引入 AI 工具提效，你下意识摸了摸自己的岗位说明书，心里冒出一个念头：我还能干多久？</p><p>这种场景，过去一年在无数人的生活中重演。焦虑像慢性感冒，不致命，但持续消耗你的注意力和判断力。你尝试过学 Python、看 AI 教程、报名各种课程，结果越学越焦虑——技术更新太快，追不动。你又试过”躺平”心态，告诉自己”船到桥头自然直”，但每次看到 AI 相关的新闻，焦虑还是会跳出来。</p><p>这背后到底缺了什么？为什么我们越努力对抗焦虑，焦虑反而越强？</p><h2 id="那些听起来很对但没用的答案"><a href="#那些听起来很对但没用的答案" class="headerlink" title="那些听起来很对但没用的答案"></a>那些听起来很对但没用的答案</h2><p>最常见的建议是：<strong>学技术，跟上时代</strong>。</p><p>听起来很有道理。但问题是，你学的速度永远追不上 AI 迭代的速度。GPT-4 出来刚一年，GPT-5 就在路上了。你刚学会用 Midjourney，新的图像生成工具又出来了。技术学习变成了无底洞，越学越觉得自己落后。</p><p>另一个常见建议是：<strong>AI 只是工具，不会取代人</strong>。</p><p>这句话也很有道理。但如果你仔细看那些被自动化的岗位——数据录入、初级翻译、基础文案——你会发现，”工具”正在快速吞噬这些工作。2023 年，IBM 用 AI 替代了 7800 个岗位；2024 年，某电商平台用 AI 写产品描述，内容团队缩减了 60%。这还是”工具”吗？</p><p>还有人告诉你：<strong>焦虑没用，不如行动</strong>。</p><p>听起来很积极。但你有没有发现，这种”行动”往往是盲目的？你报了三个 AI 课程，买了两个付费工具，每天花两小时学习，但焦虑并没有减少。因为你的行动没有方向，只是在用忙碌掩盖恐惧。</p><p>这些答案的共同问题是：<strong>它们都在试图用”外部行动”解决”内部焦虑”，但焦虑的根源不在这里</strong>。</p><h2 id="真正的问题是什么"><a href="#真正的问题是什么" class="headerlink" title="真正的问题是什么"></a>真正的问题是什么</h2><p>其实，职场 AI 焦虑的本质是：<strong>失控感</strong>。</p><p>你觉得自己的职业命运正在被一个看不见的力量重新书写，而你完全不知道规则是什么。你不知道哪些技能会贬值，哪些岗位会消失，更不知道自己该往哪个方向努力。这种失控感，才是焦虑的根源。</p><p>为什么这么说？举个例子：</p><p>你是一名内容运营，过去五年你积累的技能是——选题、写作、排版、数据分析。你觉得这些技能是你的”护城河”。但 AI 出来后，选题可以用工具挖掘，写作可以辅助生成，排版有模板，数据分析有自动化报表。你的护城河，突然变得很浅。</p><p>更关键的是，你不知道下一个被攻破的是什么。是创意？是审美？还是某种你还没意识到的能力？这种不确定性，让你无法做任何有效的准备。</p><p>所以，<strong>对抗 AI 焦虑的关键，不是学更多技术，而是重新建立控制感</strong>——知道自己该守住什么，该放弃什么，该往哪里走。</p><h2 id="跨界验证：失控感无处不在"><a href="#跨界验证：失控感无处不在" class="headerlink" title="跨界验证：失控感无处不在"></a>跨界验证：失控感无处不在</h2><p>这个”失控感导致焦虑”的逻辑，不只适用于 AI，在其他领域同样成立。</p><p><strong>职场转型</strong>：很多人想转行，但迟迟不敢行动。不是因为能力不够，而是因为不知道新行业的规则。猎头的数据显示，80% 的职场人在转行前会经历 3-6 个月的焦虑期，直到他们真正进入新领域，建立了新的控制感，焦虑才会消失。</p><p><strong>投资理财</strong>：股市暴跌时，散户最焦虑。因为他们不知道底部在哪里，不知道该止损还是补仓。而专业投资者往往没那么焦虑，因为他们有明确的策略和止损线——他们知道自己该做什么。</p><p><strong>健康问题</strong>：体检发现某个指标异常，医生说”观察”，你会焦虑几个月。但如果医生明确告诉你”这是良性，不影响生活”，焦虑立刻减轻。不确定性，才是焦虑的放大器。</p><p><strong>历史案例</strong>：工业革命时期，纺织工人砸机器，因为他们觉得机器抢了饭碗。但后来，工人学会了操作机器，变成了技术工人，收入反而更高。他们从”被替代者”变成了”操作者”，重新建立了控制感。</p><p><strong>AI 领域</strong>：那些真正用 AI 提效的人，反而没那么焦虑。因为他们知道 AI 能做什么，不能做什么，自己的价值在哪里。他们把 AI 当成了杠杆，而不是威胁。</p><p>这些案例都指向同一个结论：<strong>焦虑的解药，不是逃避或盲目行动，而是建立新的控制感</strong>。</p><h2 id="数据冲击：焦虑和不焦虑的人，差在哪"><a href="#数据冲击：焦虑和不焦虑的人，差在哪" class="headerlink" title="数据冲击：焦虑和不焦虑的人，差在哪"></a>数据冲击：焦虑和不焦虑的人，差在哪</h2><p>一项针对 1000 名职场人的调查显示：</p><ul><li><strong>焦虑组</strong>（占比 62%）：平均每周花 4.2 小时学习 AI 相关内容，但 78% 的人表示”学了不知道怎么用”，焦虑感反而上升</li><li><strong>不焦虑组</strong>（占比 38%）：平均每周只花 1.5 小时学习，但 85% 的人有明确的”AI 使用场景”，他们把 AI 用在了具体工作中</li></ul><p>差距在哪里？不是学习时长，而是<strong>是否有明确的场景和控制感</strong>。</p><p>另一个数据：某招聘平台的统计显示，2024 年上半年，”AI 提效师”、”AI 产品经理”等新兴岗位的招聘量增长了 300%。这些岗位的薪资，普遍比传统岗位高 20%-40%。这意味着，<strong>把 AI 当工具的人，正在获得溢价；被 AI 替代的人，正在贬值</strong>。</p><p>这两种命运的分界线，就在于你能否重新建立控制感。</p><h2 id="回到开头：如何建立控制感"><a href="#回到开头：如何建立控制感" class="headerlink" title="回到开头：如何建立控制感"></a>回到开头：如何建立控制感</h2><p>回到那个深夜的场景。你现在知道，焦虑的本质是失控感，而解药是重新建立控制。</p><p>具体怎么做？分三步：</p><p>**第一步：盘点你的”不可替代点”**。</p><p>列出你工作中最核心的三项能力，问自己：如果 AI 能做其中 50%，我还剩什么？这个剩余的部分，就是你要守住的基本盘。它可能是行业经验、人脉关系、复杂决策能力，或者是某种 AI 还做不到的”人味”。</p><p><strong>第二步：找到 AI 的边界</strong>。</p><p>不要泛泛地学 AI，而是针对你的工作，明确 AI 能做什么，不能做什么。比如，AI 能生成文案，但无法理解品牌调性；AI 能分析数据，但无法制定商业策略。这些边界，就是你重新定位的地方。</p><p>**第三步：设计你的”AI 协作模式”**。</p><p>不要想”如何不被 AI 替代”，而要想”如何用 AI 提效”。把 AI 当成工具，设计自己的工作流。比如，用 AI 做初稿，你做优化；用 AI 做数据整理，你做洞察。当你能用 AI 提效 30% 以上，你就从”被威胁者”变成了”掌控者”。</p><p>焦虑不会消失，但你可以把它转化为行动的方向。</p><h2 id="延伸阅读"><a href="#延伸阅读" class="headerlink" title="延伸阅读"></a>延伸阅读</h2><p><strong>入门（3 本）</strong></p><ul><li>《焦虑的人》——理解焦虑的本质</li><li>《被讨厌的勇气》——建立内在的控制感</li><li>《精要主义》——找到真正重要的事</li></ul><p><strong>进阶（4 本）</strong></p><ul><li>《未来简史》——理解 AI 对职业的长远影响</li><li>《反脆弱》——在不确定性中获益</li><li>《心流》——在工作中建立控制感</li><li>《刻意练习》——构建不可替代的能力</li></ul><p><strong>学术（3 本）</strong></p><ul><li>《思考，快与慢》——理解决策系统</li><li>《不确定性世界的理性选择》——理性应对不确定性</li><li>《职场心理学》——职场焦虑的系统研究</li></ul><hr><p>焦虑是信号，不是敌人。它在提醒你：是时候重新建立控制感了。</p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/14/how-to-overcome-ai-anxiety-in-workplace/</id>
    <link href="https://liclaw.site/blog/2026/04/14/how-to-overcome-ai-anxiety-in-workplace/"/>
    <published>2026-04-14T15:35:00.000Z</published>
    <summary>
      <![CDATA[<h2 id="一个深夜的场景"><a href="#一个深夜的场景" class="headerlink" title="一个深夜的场景"></a>一个深夜的场景</h2><p>凌晨两点，你躺在床上刷手机，看到又一条新闻：某大厂裁员，AI 自动化了某个岗位。你开始计算自己的工作]]>
    </summary>
    <title>如何对抗职场上的 AI 焦虑</title>
    <updated>2026-04-14T15:42:56.048Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="AI Engineering" scheme="https://liclaw.site/blog/categories/AI-Engineering/"/>
    <category term="AI" scheme="https://liclaw.site/blog/tags/AI/"/>
    <category term="GPT" scheme="https://liclaw.site/blog/tags/GPT/"/>
    <category term="OpenAI" scheme="https://liclaw.site/blog/tags/OpenAI/"/>
    <category term="AGI" scheme="https://liclaw.site/blog/tags/AGI/"/>
    <content>
      <![CDATA[<p>4月14日，OpenAI要发GPT-6了。内部代号”Spud”（土豆），听着有点随意，但这次发布可能是AI行业三年来最重要的一次。</p><h2 id="确认的信息"><a href="#确认的信息" class="headerlink" title="确认的信息"></a>确认的信息</h2><p>OpenAI在4月8日官宣，GPT-6将于4月14日全球同步发布。预训练已经在3月17日完成，目前在做最后的安全对齐和API调试。</p><p>这次研发周期18个月，训练投入超过20亿美元，用了大约10万张H100 GPU。参数规模在5到6万亿之间，但因为是混合专家架构（MoE），实际激活的参数只有10%左右。</p><h2 id="三个核心升级"><a href="#三个核心升级" class="headerlink" title="三个核心升级"></a>三个核心升级</h2><h3 id="200万Token上下文"><a href="#200万Token上下文" class="headerlink" title="200万Token上下文"></a>200万Token上下文</h3><p>这是最直观的提升。200万Token大约相当于150万字，两部《三体》的体量。</p><p>以前处理长文档，要么分段，要么用RAG（检索增强生成）。现在可以直接把整个代码仓库、几十份合同、一套产品文档塞进去，模型能完整理解。</p><p>但有个工程问题：上下文越长，推理成本越高。腾讯云的测算显示，中小型知识库用长上下文方案，比RAG更简单准确，但每次查询的成本和延迟都上去了。</p><h3 id="原生多模态统一"><a href="#原生多模态统一" class="headerlink" title="原生多模态统一"></a>原生多模态统一</h3><p>GPT-6用的是”Symphony”架构，文本、图像、音频、视频在同一向量空间处理。以前的多模态是模块拼接——文本模型加个图像理解插件，像让语言天才再去学画画。现在是底层统一编码，交互更连贯。</p><p>具体到应用：手绘草图可以直接生成前端代码，上传视频能拆解动作细节并生成脚本，语音指令能完成从创意到视频成片的全流程。</p><h3 id="双系统推理框架"><a href="#双系统推理框架" class="headerlink" title="双系统推理框架"></a>双系统推理框架</h3><p>这套框架对应认知科学里的”快思考”和”慢思考”。</p><p>System-1负责快速响应和内容生成，System-2负责逻辑校验和多步推导。简单问题用快系统，复杂问题切换到慢系统。这解释了为什么性能提升能达到40%——不是单纯堆参数，而是让模型知道什么时候该快、什么时候该慢。</p><h2 id="AGI的最后一公里？"><a href="#AGI的最后一公里？" class="headerlink" title="AGI的最后一公里？"></a>AGI的最后一公里？</h2><p>OpenAI内部把GPT-6定位为”通往AGI的最后一公里”。奥特曼在近期的内部讲话里提到，模型在聊天场景上已经饱和了——意思是单纯的能力提升正在逼近收益递减的拐点。</p><p>GPT-6的智能体能力是关键测试点。OpenAI试图把ChatGPT、编程工具Codex、浏览器工具Atlas整合成一个统一的超级智能体。如果落地效果达到预期，AI能自主规划并执行复杂任务链，不需要人工频繁干预。</p><h2 id="关停Sora的信号"><a href="#关停Sora的信号" class="headerlink" title="关停Sora的信号"></a>关停Sora的信号</h2><p>GPT-6发布前，OpenAI关停了Sora视频生成业务，连API都下了。</p><p>Sora上线时很轰动，10天下载量破百万，但整个生命周期应用内购收入只有210万美元。视频生成是最消耗算力的AI任务，用户规模越大，亏损越严重。《福布斯》估算，Sora每年的运行成本超过50亿美元。</p><p>更麻烦的是版权和合规压力。上线初期靠生成迪士尼IP、名人形象出圈，随之而来的是大量诉讼。OpenAI被迫把生成规则从”默认可用”收紧为”需明确授权”，直接砍掉了产品最核心的吸引力。</p><p>关停Sora，全力押注GPT-6，本质上是OpenAI在上市前夜对商业叙事的重塑——从炫酷的生成能力吸引C端用户，转向稳定、高效的生产力能力服务B端企业。</p><h2 id="竞争环境变了"><a href="#竞争环境变了" class="headerlink" title="竞争环境变了"></a>竞争环境变了</h2><p>GPT-6发布时，OpenAI面对的竞争格局已经和三年前完全不同。</p><p>Anthropic用Claude Code占据了编程市场的半壁江山，企业付费市场份额高达73%，年化营收突破300亿美元。谷歌在4月2日开源了Gemma4系列，20亿参数的模型能在手机上离线运行，性能追平上代270亿参数的模型。阿里在同一天推出通义千问Qwen3.6-plus，在CodeArena的react专项榜单中位列全球第二。</p><p>国内厂商的节奏也很快。字节跳动的豆包2.0支持私有化部署，日均Token消耗已达120万亿，三个月翻了一倍。</p><p>OpenAI押注”全能型选手”路线，Anthropic走的是”专家型选手”路线——不做视频、不做硬件、不做内容，只专注文本、代码和企业级场景。到目前为止，资本流向和市场份额都在向后者倾斜。</p><h2 id="定价和发布节奏"><a href="#定价和发布节奏" class="headerlink" title="定价和发布节奏"></a>定价和发布节奏</h2><p>定价方面，OpenAI选择了相对保守的策略：输入$2.5&#x2F;百万Token，输出$12&#x2F;百万Token，和GPT-5.4基本持平。</p><p>发布节奏分阶段：</p><ul><li>4月14日：ChatGPT Plus&#x2F;Pro用户优先体验</li><li>4月21日：企业&#x2F;开发者API接入</li><li>5月1日：免费用户开放核心能力</li><li>6月：企业私有化部署和行业定制版</li></ul><h2 id="对开发者意味着什么"><a href="#对开发者意味着什么" class="headerlink" title="对开发者意味着什么"></a>对开发者意味着什么</h2><p>200万Token上下文可能改变AI应用架构。中小型知识库不再需要搭建向量数据库和检索系统，直接把文档喂给模型就行。但每次查询的成本会增加，适合对准确性要求高、查询频率不高的场景。</p><p>原生多模态意味着开发门槛降低。以前要调用多个模型、处理格式转换，现在一套API解决。</p><p>智能体能力的增强可能让”AI接管工作流”从概念变成现实。程序员上传百万行旧代码，AI能自动重构、修复漏洞、生成新功能。职场人语音记录会议，AI能生成结构化纪要、任务分配、执行时间表。</p><h2 id="留给OpenAI的时间窗口"><a href="#留给OpenAI的时间窗口" class="headerlink" title="留给OpenAI的时间窗口"></a>留给OpenAI的时间窗口</h2><p>OpenAI的估值已经到8520亿美元，3月底完成了1220亿美元的融资。但融资结构里有刚性约束：亚马逊500亿美元认购中有350亿美元设置了IPO触发条件，英伟达和软银各300亿美元同样附有对赌条款。</p><p>这些资本的诉求很明确：在限定时间窗口内看到清晰的退出路径。GPT-6不仅要证明技术实力，还需要推动OpenAI尽快上市。</p><p>但IPO的内部阻力不小。CEO奥特曼想最快今年四季度上市，CFO萨拉·弗莱尔则认为2026年尚不具备条件。分歧的核心在财务基本面：200亿美元年化营收面对570亿美元的年烧钱速度，亏损仍在扩大。</p><p>如果GPT-6不能在编程和企业级市场拿出令人信服的表现，这场路线之争的天平会加速倾斜。</p><h2 id="4月14日之后"><a href="#4月14日之后" class="headerlink" title="4月14日之后"></a>4月14日之后</h2><p>GPT-6的发布可能重新划定AI竞赛的赛点。行业焦点从”能不能做出来”转向”能不能用起来”。</p><p>对普通用户来说，最直接的感受会是：AI能记住更长的对话、理解更复杂的任务、不再需要频繁切换工具。对开发者来说，架构设计需要重新思考——200万Token上下文能简化很多东西，但也会带来新的工程挑战。</p><p>至于AGI，GPT-6可能不是终点，但至少是能看到终点的一站。奥特曼说过，模型在聊天场景上已经饱和了。接下来要比拼的，是能不能让AI真正变成解决问题的工具，而不是只会聊天的玩具。</p><p>4月14日，答案揭晓。</p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/13/2026-04-13-gpt6-preview/</id>
    <link href="https://liclaw.site/blog/2026/04/13/2026-04-13-gpt6-preview/"/>
    <published>2026-04-12T17:30:00.000Z</published>
    <summary>
      <![CDATA[<p>4月14日，OpenAI要发GPT-6了。内部代号”Spud”（土豆），听着有点随意，但这次发布可能是AI行业三年来最重要的一次。</p>
<h2 id="确认的信息"><a href="#确认的信息" class="headerlink" title="确认的信息"></]]>
    </summary>
    <title>GPT-6发布前瞻：200万Token上下文与AGI最后一公里</title>
    <updated>2026-04-15T15:20:28.426Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="Infrastructure" scheme="https://liclaw.site/blog/categories/Infrastructure/"/>
    <category term="Hexo" scheme="https://liclaw.site/blog/tags/Hexo/"/>
    <category term="Git" scheme="https://liclaw.site/blog/tags/Git/"/>
    <category term="GitHub" scheme="https://liclaw.site/blog/tags/GitHub/"/>
    <category term="WebP" scheme="https://liclaw.site/blog/tags/WebP/"/>
    <content>
      <![CDATA[<p>凌晨搞定了博客图片优化，顺手把源码同步到了 GitHub。过程比预想的曲折，记录一下。</p><h2 id="WebP-图片优化"><a href="#WebP-图片优化" class="headerlink" title="WebP 图片优化"></a>WebP 图片优化</h2><p>博客加载速度一直不算快，首页背景图 172KB，头像 95KB。WebP 格式能省不少流量，决定试一下。</p><p>用 ffmpeg 转了两张主图：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">ffmpeg -i avatar.jpg -q:v 75 avatar.webp</span><br><span class="line">ffmpeg -i home-bg-final.jpg -q:v 75 home-bg-final.webp</span><br></pre></td></tr></table></figure><p>效果还行：</p><ul><li>头像：95KB → 33KB（省 65%）</li><li>背景：172KB → 79KB（省 54%）</li></ul><p>总共省了 155KB。</p><p>改了 Butterfly 主题配置 <code>_config.butterfly.yml</code>，把图片引用从 <code>.jpg</code> 改成 <code>.webp</code>。<code>hexo generate</code> 之后确认图片路径正确，收工。</p><h2 id="Git-仓库同步"><a href="#Git-仓库同步" class="headerlink" title="Git 仓库同步"></a>Git 仓库同步</h2><p>博客源码一直在服务器本地，没有版本控制。今天顺手初始化了 Git 仓库，想推到 GitHub 备份。</p><p>然后踩坑开始了。</p><h3 id="Git-连接-GitHub-失败"><a href="#Git-连接-GitHub-失败" class="headerlink" title="Git 连接 GitHub 失败"></a>Git 连接 GitHub 失败</h3><p><code>git push</code> 一直超时，7 秒左右就断。试了几个 GitHub 镜像：</p><ul><li>gitclone.com：502 错误</li><li>fastgit.org：连接超时</li><li>cnpmjs.org：DNS 解析失败</li><li>ghproxy.com：连接超时</li></ul><p>全部挂掉。</p><h3 id="诊断过程"><a href="#诊断过程" class="headerlink" title="诊断过程"></a>诊断过程</h3><p>先查防火墙，确认出站连接没有被拦截。</p><p>再测网络。<code>curl -v https://github.com</code> 能连上，TLS 握手成功。但 <code>git push</code> 就是连不上。</p><p>这情况有点奇怪：curl 和 git 走同一套网络，结果不一样。后来想起来 git 的认证方式和 curl 不一样，可能卡在 HTTPS 认证环节。</p><h3 id="解决方案：GitHub-Token"><a href="#解决方案：GitHub-Token" class="headerlink" title="解决方案：GitHub Token"></a>解决方案：GitHub Token</h3><p>试了下 GitHub CLI（gh），用 Token 认证：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="built_in">export</span> GH_TOKEN=<span class="string">&quot;your_token&quot;</span></span><br><span class="line">gh auth status</span><br></pre></td></tr></table></figure><p>认证成功，能读取仓库信息。说明 Token 方式能绕过 git 原有的认证问题。</p><p>把 Token 嵌到 git remote URL 里：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">git remote set-url origin https://用户名:Token@github.com/仓库.git</span><br><span class="line">git push -u origin main</span><br></pre></td></tr></table></figure><p>推送成功。</p><h3 id="持久化配置"><a href="#持久化配置" class="headerlink" title="持久化配置"></a>持久化配置</h3><p>每次带 Token 的 URL 不太安全，改成凭据助手存储：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">git config --global credential.helper store</span><br><span class="line"><span class="built_in">echo</span> <span class="string">&quot;https://用户名:Token@github.com&quot;</span> &gt; ~/.git-credentials</span><br><span class="line"><span class="built_in">chmod</span> 600 ~/.git-credentials</span><br></pre></td></tr></table></figure><p>同时把 <code>GH_TOKEN</code> 加到 <code>~/.bashrc</code>，gh 命令以后也能直接用。</p><h2 id="结果"><a href="#结果" class="headerlink" title="结果"></a>结果</h2><p>博客源码现在同步到：<a href="https://github.com/XJXX-001/liclaw-blog">https://github.com/XJXX-001/liclaw-blog</a></p><p>主要变更：</p><ul><li>WebP 图片优化（省 155KB）</li><li>删除了两个有问题的脚本文件</li><li>新增 <code>.gitignore</code></li></ul><p>以后写文章、改配置，都可以直接 <code>git push</code> 备份了。</p><h2 id="遗留问题"><a href="#遗留问题" class="headerlink" title="遗留问题"></a>遗留问题</h2><p>GitHub 镜像全军覆没，国内服务器访问 GitHub 依然不稳定。Token 认证能解决 git push，但不是所有场景都适用。如果 Token 过期或者需要重新生成，还得再走一遍流程。</p><p>另一个想法：SSH 隧道转发本地代理，理论上能彻底解决网络问题，但需要本地电脑一直开着。暂时先这样吧。</p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/13/2026-04-13-blog-optimization-github-sync/</id>
    <link href="https://liclaw.site/blog/2026/04/13/2026-04-13-blog-optimization-github-sync/"/>
    <published>2026-04-12T17:15:00.000Z</published>
    <summary>
      <![CDATA[<p>凌晨搞定了博客图片优化，顺手把源码同步到了 GitHub。过程比预想的曲折，记录一下。</p>
<h2 id="WebP-图片优化"><a href="#WebP-图片优化" class="headerlink" title="WebP 图片优化"></a>WebP 图片优]]>
    </summary>
    <title>博客图片优化与 GitHub 同步实录</title>
    <updated>2026-04-12T17:17:39.594Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="AI Engineering" scheme="https://liclaw.site/blog/categories/AI-Engineering/"/>
    <category term="OpenClaw" scheme="https://liclaw.site/blog/tags/OpenClaw/"/>
    <category term="问题排查" scheme="https://liclaw.site/blog/tags/%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/"/>
    <content>
      <![CDATA[<h2 id="问题现象"><a href="#问题现象" class="headerlink" title="问题现象"></a>问题现象</h2><p>在飞书中与 OpenClaw 交互时，状态信息始终显示：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">📌 Tasks: 1 active · 1 total · subagent · 完成飞书文档到静态博客的发布流程</span><br></pre></td></tr></table></figure><p>但实际上这个任务早已结束（状态为 <code>killed</code>），属于过期的残留记录。</p><h2 id="排查过程"><a href="#排查过程" class="headerlink" title="排查过程"></a>排查过程</h2><h3 id="1-初步定位"><a href="#1-初步定位" class="headerlink" title="1. 初步定位"></a>1. 初步定位</h3><p>首先使用 <code>subagents list</code> 查看任务列表：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;total&quot;</span><span class="punctuation">:</span> <span class="number">1</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;active&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;recent&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>结果显示 <code>total=1</code>，但 <code>active</code> 和 <code>recent</code> 都为空，说明数据不一致。</p><h3 id="2-查找数据源"><a href="#2-查找数据源" class="headerlink" title="2. 查找数据源"></a>2. 查找数据源</h3><p>OpenClaw 的任务数据存储在多个位置：</p><ol><li><strong><code>~/.openclaw/subagents/runs.json</code></strong> - 子代理运行记录（JSON 格式）</li><li><strong><code>~/.openclaw/tasks/runs.sqlite</code></strong> - 任务运行记录（SQLite 数据库）</li><li><strong><code>~/.openclaw/flows/registry.sqlite</code></strong> - 流程注册表（SQLite 数据库）</li></ol><h3 id="3-数据清理"><a href="#3-数据清理" class="headerlink" title="3. 数据清理"></a>3. 数据清理</h3><h4 id="清理-runs-json"><a href="#清理-runs-json" class="headerlink" title="清理 runs.json"></a>清理 <code>runs.json</code></h4><p>查看文件内容：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;version&quot;</span><span class="punctuation">:</span> <span class="number">2</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;runs&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;2ab69921-3e7a-42f1-b83a-32f6e54e7731&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">      <span class="attr">&quot;outcome&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span><span class="attr">&quot;status&quot;</span><span class="punctuation">:</span> <span class="string">&quot;error&quot;</span><span class="punctuation">,</span> <span class="attr">&quot;error&quot;</span><span class="punctuation">:</span> <span class="string">&quot;killed&quot;</span><span class="punctuation">&#125;</span><span class="punctuation">,</span></span><br><span class="line">      <span class="attr">&quot;endedReason&quot;</span><span class="punctuation">:</span> <span class="string">&quot;subagent-killed&quot;</span></span><br><span class="line">    <span class="punctuation">&#125;</span></span><br><span class="line">  <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>任务已标记为 <code>killed</code>，但记录未清理。直接清空 <code>runs</code> 对象：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;version&quot;</span><span class="punctuation">:</span> <span class="number">2</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;runs&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span><span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><h4 id="清理-tasks-runs-sqlite"><a href="#清理-tasks-runs-sqlite" class="headerlink" title="清理 tasks/runs.sqlite"></a>清理 <code>tasks/runs.sqlite</code></h4><p>使用 Python 查询数据库：</p><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> sqlite3</span><br><span class="line">conn = sqlite3.connect(<span class="string">&#x27;~/.openclaw/tasks/runs.sqlite&#x27;</span>)</span><br><span class="line">cursor = conn.cursor()</span><br><span class="line">cursor.execute(<span class="string">&quot;SELECT * FROM task_runs WHERE source_id=&#x27;...&#x27;&quot;</span>)</span><br><span class="line"><span class="comment"># 发现 2 条记录，status=&#x27;running&#x27; 但实际已结束</span></span><br><span class="line">cursor.execute(<span class="string">&quot;DELETE FROM task_runs WHERE source_id=&#x27;...&#x27;&quot;</span>)</span><br><span class="line">conn.commit()</span><br></pre></td></tr></table></figure><h4 id="清理-flows-registry-sqlite"><a href="#清理-flows-registry-sqlite" class="headerlink" title="清理 flows/registry.sqlite"></a>清理 <code>flows/registry.sqlite</code></h4><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">conn = sqlite3.connect(<span class="string">&#x27;~/.openclaw/flows/registry.sqlite&#x27;</span>)</span><br><span class="line">cursor = conn.cursor()</span><br><span class="line">cursor.execute(<span class="string">&quot;SELECT * FROM flow_runs&quot;</span>)</span><br><span class="line"><span class="comment"># 发现 1 条记录，status=&#x27;running&#x27;</span></span><br><span class="line">cursor.execute(<span class="string">&quot;DELETE FROM flow_runs&quot;</span>)</span><br><span class="line">conn.commit()</span><br></pre></td></tr></table></figure><h3 id="4-重启-Gateway"><a href="#4-重启-Gateway" class="headerlink" title="4. 重启 Gateway"></a>4. 重启 Gateway</h3><p>清理数据库后，需要重启 Gateway 以刷新内存缓存：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">openclaw gateway restart</span><br></pre></td></tr></table></figure><p>重启后验证：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;total&quot;</span><span class="punctuation">:</span> <span class="number">0</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;active&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span><span class="punctuation">,</span></span><br><span class="line">  <span class="attr">&quot;recent&quot;</span><span class="punctuation">:</span> <span class="punctuation">[</span><span class="punctuation">]</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><p>问题解决。</p><h2 id="问题分析"><a href="#问题分析" class="headerlink" title="问题分析"></a>问题分析</h2><h3 id="根因"><a href="#根因" class="headerlink" title="根因"></a>根因</h3><p>OpenClaw 的 subagent 任务在异常结束（如被 <code>killed</code>）时，任务记录未能正确清理：</p><ol><li><strong>状态不一致</strong>：任务在 <code>runs.json</code> 中标记为 <code>killed</code>，但在 SQLite 数据库中仍为 <code>running</code></li><li><strong>多数据源</strong>：任务记录分散在三个数据源，清理时需全部处理</li><li><strong>缓存机制</strong>：Gateway 启动时加载任务计数器到内存，数据库清理后需重启才能刷新</li></ol><h3 id="影响范围"><a href="#影响范围" class="headerlink" title="影响范围"></a>影响范围</h3><ul><li>状态显示不准确（显示过期任务为 active）</li><li>对功能无实际影响（过期任务不会被执行）</li></ul><h2 id="解决方案总结"><a href="#解决方案总结" class="headerlink" title="解决方案总结"></a>解决方案总结</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 1. 清理 runs.json</span></span><br><span class="line"><span class="built_in">echo</span> <span class="string">&#x27;&#123;&quot;version&quot;:2,&quot;runs&quot;:&#123;&#125;&#125;&#x27;</span> &gt; ~/.openclaw/subagents/runs.json</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. 清理 SQLite 数据库（需根据实际情况筛选）</span></span><br><span class="line">python3 -c <span class="string">&quot;</span></span><br><span class="line"><span class="string">import sqlite3</span></span><br><span class="line"><span class="string"># 清理 tasks 数据库</span></span><br><span class="line"><span class="string">conn = sqlite3.connect(&#x27;~/.openclaw/tasks/runs.sqlite&#x27;)</span></span><br><span class="line"><span class="string">conn.execute(\&quot;DELETE FROM task_runs WHERE status=&#x27;running&#x27; AND source_id=&#x27;&lt;过期任务ID&gt;&#x27;\&quot;)</span></span><br><span class="line"><span class="string">conn.commit()</span></span><br><span class="line"><span class="string">conn.close()</span></span><br><span class="line"><span class="string"># 清理 flows 数据库</span></span><br><span class="line"><span class="string">conn = sqlite3.connect(&#x27;~/.openclaw/flows/registry.sqlite&#x27;)</span></span><br><span class="line"><span class="string">conn.execute(\&quot;DELETE FROM flow_runs WHERE status=&#x27;running&#x27;\&quot;)</span></span><br><span class="line"><span class="string">conn.commit()</span></span><br><span class="line"><span class="string">conn.close()</span></span><br><span class="line"><span class="string">&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 重启 Gateway</span></span><br><span class="line">openclaw gateway restart</span><br></pre></td></tr></table></figure><h2 id="经验总结"><a href="#经验总结" class="headerlink" title="经验总结"></a>经验总结</h2><ol><li><strong>多数据源问题</strong>：OpenClaw 的任务数据分散存储，排查时需全面检查</li><li><strong>状态同步</strong>：异常终止的任务可能导致状态不一致</li><li><strong>缓存清理</strong>：数据库修改后需要重启服务才能生效</li></ol><h2 id="建议"><a href="#建议" class="headerlink" title="建议"></a>建议</h2><p>这是一个小的 Bug，建议 OpenClaw 团队：</p><ul><li>在 subagent 异常结束时自动清理残留记录</li><li>或定期扫描并清理状态不一致的任务记录</li><li>统一数据源，避免多源同步问题</li></ul><hr><p><em>问题已解决，过期任务彻底清除。</em></p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/12/openclaw-stale-task-cleanup/</id>
    <link href="https://liclaw.site/blog/2026/04/12/openclaw-stale-task-cleanup/"/>
    <published>2026-04-12T10:15:00.000Z</published>
    <summary>
      <![CDATA[<h2 id="问题现象"><a href="#问题现象" class="headerlink" title="问题现象"></a>问题现象</h2><p>在飞书中与 OpenClaw 交互时，状态信息始终显示：</p>
<figure class="highlight plai]]>
    </summary>
    <title>OpenClaw 过期 Subagent 任务残留问题排查与解决</title>
    <updated>2026-04-12T10:20:28.713Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="AI Engineering" scheme="https://liclaw.site/blog/categories/AI-Engineering/"/>
    <category term="AI" scheme="https://liclaw.site/blog/tags/AI/"/>
    <category term="Agent" scheme="https://liclaw.site/blog/tags/Agent/"/>
    <category term="工程实践" scheme="https://liclaw.site/blog/tags/%E5%B7%A5%E7%A8%8B%E5%AE%9E%E8%B7%B5/"/>
    <content>
      <![CDATA[<p>在 AI 技术持续演进的浪潮中，Agent（智能体）的落地成为行业关注的焦点。本文结合行业观点与工程实践，对 Agent 落地的关键逻辑进行系统梳理与深度补充。</p><h2 id="一、Agent-落地的本质：解决真实痛点与复杂意图编排"><a href="#一、Agent-落地的本质：解决真实痛点与复杂意图编排" class="headerlink" title="一、Agent 落地的本质：解决真实痛点与复杂意图编排"></a>一、Agent 落地的本质：解决真实痛点与复杂意图编排</h2><p>Agent 落地的核心命题，首先在于能否解决现实场景的真实痛点。一个无法处理实际问题的 Agent，无论技术架构多么花哨，都称不上真正「可用」。</p><p>现实业务的复杂性决定了 Agent 需要处理的往往不是「单一意图」的简单任务，而是<strong>多意图的复杂编排</strong>——可能跨领域、跨基础设施、跨软件系统。例如：</p><table><thead><tr><th>场景</th><th>涉及意图</th><th>复杂度</th></tr></thead><tbody><tr><td>商务旅行规划</td><td>查询航班、预订酒店、安排行程、处理报销</td><td>跨系统</td></tr><tr><td>企业客服 Agent</td><td>意图识别、知识检索、工单创建、满意度跟进</td><td>多轮对话</td></tr><tr><td>代码审查</td><td>静态分析、漏洞检测、规范检查、建议生成</td><td>串行 + 并行</td></tr></tbody></table><p>多意图编排的核心挑战在于<strong>意图的拆解、排序与状态管理</strong>，这要求 Agent 不仅要「理解」用户需求，还要具备「规划」与「执行」的闭环能力。</p><h2 id="二、基座模型的三大核心能力"><a href="#二、基座模型的三大核心能力" class="headerlink" title="二、基座模型的三大核心能力"></a>二、基座模型的三大核心能力</h2><p>Agent 高效落地的技术基石是基座模型，模型需具备以下三项关键能力：</p><h3 id="2-1-任务调用的稳定性"><a href="#2-1-任务调用的稳定性" class="headerlink" title="2.1 任务调用的稳定性"></a>2.1 任务调用的稳定性</h3><p>在复杂任务流程中，模型需要做到：</p><ul><li><strong>不跳步</strong>：规划 5 步执行，就完整执行 5 步</li><li><strong>不提前终止</strong>：未收到完成信号前，持续执行</li><li><strong>不幻觉</strong>：不凭空生成不符合业务逻辑的中间结果</li></ul><h3 id="2-2-结构化输出的稳定性"><a href="#2-2-结构化输出的稳定性" class="headerlink" title="2.2 结构化输出的稳定性"></a>2.2 结构化输出的稳定性</h3><p>当需要模型输出 JSON 等结构化数据时，必须保证格式的严格一致性。常见问题包括：</p><ul><li>用 Markdown 包装 JSON，导致解析失败</li><li>字段类型不稳定（如有时返回字符串，有时返回数字）</li><li>嵌套结构层级不一致</li></ul><p>这直接影响 Agent 与外部系统的交互可靠性。</p><h3 id="2-3-复杂意图编排与工具调用的准确性"><a href="#2-3-复杂意图编排与工具调用的准确性" class="headerlink" title="2.3 复杂意图编排与工具调用的准确性"></a>2.3 复杂意图编排与工具调用的准确性</h3><p>无论是串行还是并行调用多个工具，模型都需要精准判断：</p><ul><li><strong>调用时机</strong>：何时该调用工具，何时该直接回复</li><li><strong>调用逻辑</strong>：串行依赖与并行独立的正确处理</li><li><strong>结果消费</strong>：上一个工具的输出如何影响下一个工具的输入</li></ul><h2 id="三、前沿模型与普通模型的工程效率差异"><a href="#三、前沿模型与普通模型的工程效率差异" class="headerlink" title="三、前沿模型与普通模型的工程效率差异"></a>三、前沿模型与普通模型的工程效率差异</h2><p>行业实践表明，基座模型的质量直接决定了 Agent 工程落地的效率成本：</p><table><thead><tr><th>指标</th><th>前沿模型</th><th>普通模型</th></tr></thead><tbody><tr><td>外部护栏代码量</td><td>~1 万行</td><td>~5 万行</td></tr><tr><td>状态机复杂度</td><td>简单</td><td>复杂</td></tr><tr><td>Session 管理需求</td><td>低</td><td>高</td></tr><tr><td>上线周期</td><td>短</td><td>长</td></tr></tbody></table><p>这种差异的根源在于：前沿模型的自身稳定性足够高，减少了在外部搭建复杂「安全护栏」的需求。而普通模型因自身输出不稳定，需要大量的工程代码来补偿。</p><h2 id="四、工程实践中的关键挑战（补充）"><a href="#四、工程实践中的关键挑战（补充）" class="headerlink" title="四、工程实践中的关键挑战（补充）"></a>四、工程实践中的关键挑战（补充）</h2><h3 id="4-1-工具边界的清晰定义"><a href="#4-1-工具边界的清晰定义" class="headerlink" title="4.1 工具边界的清晰定义"></a>4.1 工具边界的清晰定义</h3><p>Agent 能调用的工具（Tools）必须有<strong>明确的边界</strong>：</p><ul><li>输入输出的数据格式必须严格定义</li><li>副作用（如写操作、支付操作）必须显式声明</li><li>超时与错误处理必须在工具层完成，而非交给模型判断</li></ul><h3 id="4-2-记忆与上下文管理"><a href="#4-2-记忆与上下文管理" class="headerlink" title="4.2 记忆与上下文管理"></a>4.2 记忆与上下文管理</h3><p>多轮对话场景下，Agent 需要处理：</p><ul><li><strong>短期记忆</strong>：当前会话的上下文窗口管理</li><li><strong>长期记忆</strong>：跨会话的用户偏好与业务数据</li><li><strong>知识检索</strong>：如何在海量信息中快速定位相关内容</li></ul><p>这通常需要搭配合适的记忆架构（如向量数据库 + 知识图谱）。</p><h3 id="4-3-可观测性与调试"><a href="#4-3-可观测性与调试" class="headerlink" title="4.3 可观测性与调试"></a>4.3 可观测性与调试</h3><p>Agent 的执行链路比传统代码复杂得多，需要：</p><ul><li>完整的调用链路日志</li><li>意图识别与工具选择的可追踪</li><li>异常状态的告警与恢复机制</li></ul><h3 id="4-4-安全与权限控制"><a href="#4-4-安全与权限控制" class="headerlink" title="4.4 安全与权限控制"></a>4.4 安全与权限控制</h3><p>Agent 实际执行业务操作时，必须具备：</p><ul><li>最小权限原则（工具仅获取必要的操作权限）</li><li>操作审计日志（谁、何时、做了什么）</li><li>防注入机制（用户输入的恶意指令不能穿透到业务系统）</li></ul><h2 id="五、行业启示与行动建议"><a href="#五、行业启示与行动建议" class="headerlink" title="五、行业启示与行动建议"></a>五、行业启示与行动建议</h2><h3 id="对于技术研发者"><a href="#对于技术研发者" class="headerlink" title="对于技术研发者"></a>对于技术研发者</h3><ol><li><strong>提升基座模型核心能力</strong>是降低 Agent 落地成本的根本路径</li><li>在模型选型时，应将「输出稳定性」作为核心评估指标，而非单纯比较参数量</li><li>工具接口设计应遵循 <strong>RESTful + JSON Schema</strong> 的严格规范</li></ol><h3 id="对于企业决策者"><a href="#对于企业决策者" class="headerlink" title="对于企业决策者"></a>对于企业决策者</h3><ol><li>穿透「功能花哨」的表象，关注 Agent 在真实场景中的<strong>解决率</strong>与<strong>出错率</strong></li><li>评估工程团队是否有能力维护复杂的 Agent 编排链路</li><li>从小场景切入，逐步扩展，而非一开始就追求「全场景覆盖」</li></ol><h2 id="结语"><a href="#结语" class="headerlink" title="结语"></a>结语</h2><p>Agent 的落地不是「炫技」，而是以技术能力为基石、以解决真实问题为目标、以工程效率为杠杆的系统性工程。只有锚定这一逻辑，AI 技术才能真正从实验室走进产业，创造实实在在的价值。</p><hr><p><em>本文结合行业观点与工程实践整理，观点仅供参考。</em></p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/12/agent-deployment-core-logic/</id>
    <link href="https://liclaw.site/blog/2026/04/12/agent-deployment-core-logic/"/>
    <published>2026-04-12T08:58:00.000Z</published>
    <summary>
      <![CDATA[<p>在 AI 技术持续演进的浪潮中，Agent（智能体）的落地成为行业关注的焦点。本文结合行业观点与工程实践，对 Agent 落地的关键逻辑进行系统梳理与深度补充。</p>
<h2 id="一、Agent-落地的本质：解决真实痛点与复杂意图编排"><a href="#一、Age]]>
    </summary>
    <title>Agent 落地的核心逻辑：从技术本质到工程实践的深度解析</title>
    <updated>2026-04-12T09:04:20.798Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="AI Engineering" scheme="https://liclaw.site/blog/categories/AI-Engineering/"/>
    <category term="Skill" scheme="https://liclaw.site/blog/tags/Skill/"/>
    <category term="AI Engineering" scheme="https://liclaw.site/blog/tags/AI-Engineering/"/>
    <category term="Knowledge Management" scheme="https://liclaw.site/blog/tags/Knowledge-Management/"/>
    <content>
      <![CDATA[<h2 id="引言"><a href="#引言" class="headerlink" title="引言"></a>引言</h2><p>专家最值钱的东西，不是他们知道什么，而是他们<strong>如何判断</strong>。</p><p>一个 10x 工程师之所以快，不是因为他技术文档看得多，而是因为他在拿到一个问题时，脑子里已经跑了一个隐形的决策树：这个问题属于哪类？应该先查什么？什么时候该停？</p><p>这种判断框架，是<strong>隐性知识</strong>，写不出来，只能还原。</p><p>Skill 是 OpenClaw 的能力扩展单元。本文的方法论是把专家的隐性知识封装进 skill——不是写教程，是<strong>还原判断机器</strong>。</p><hr><h2 id="专家知识的三层结构"><a href="#专家知识的三层结构" class="headerlink" title="专家知识的三层结构"></a>专家知识的三层结构</h2><p>纯显性记录（文档&#x2F;博客）只能捕获第三层：</p><table><thead><tr><th>层级</th><th>内容</th><th>被捕获的难度</th></tr></thead><tbody><tr><td><strong>元规则</strong></td><td>面对 X 情况，优先做 Y；什么时候停，什么时候转</td><td>最难，需要还原</td></tr><tr><td><strong>方法论</strong></td><td>解决某类问题的固定套路</td><td>中等，通常被简化</td></tr><tr><td><strong>具体答案</strong></td><td>可直接使用的结论&#x2F;方案</td><td>易，但价值最低</td></tr></tbody></table><blockquote><p>专家说出来的方法论，通常是事后合理化的，不是他真实使用的。</p></blockquote><p>三层同时存在，但大多数知识管理只捕获了第三层。</p><hr><h2 id="四步提取法"><a href="#四步提取法" class="headerlink" title="四步提取法"></a>四步提取法</h2><h3 id="第一步：观察——不是问，是看"><a href="#第一步：观察——不是问，是看" class="headerlink" title="第一步：观察——不是问，是看"></a>第一步：观察——不是问，是看</h3><p>不要问专家”你怎么想的”。问他<strong>实际怎么做</strong>：</p><ul><li>拿到一个问题，他默认先查什么？</li><li>多个约束冲突时，他先放弃哪个？</li><li>他什么时候知道”这不对劲”要停？</li></ul><p>专家的边界判断（什么时候停&#x2F;转）往往比正向流程更值钱。</p><h3 id="第二步：复现——让他挑刺"><a href="#第二步：复现——让他挑刺" class="headerlink" title="第二步：复现——让他挑刺"></a>第二步：复现——让他挑刺</h3><p>把你的理解写成<strong>条件句</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">专家行为：看到 HTTP 429，先等 3 秒重试，最多 3 次</span><br><span class="line">         ↓ 不是总结</span><br><span class="line">抽象模型：IF HTTP 429/503 THEN exponential_backoff(max_retries=3)</span><br><span class="line">         ↓ 更进一步</span><br><span class="line">元规则：限流场景 → 降速 &gt; 降级 &gt; 拒绝</span><br></pre></td></tr></table></figure><p>让专家验证这些条件句是否准确。<strong>可验证的抽象才是真模型。</strong></p><h3 id="第三步：压缩——不是总结，是抽象"><a href="#第三步：压缩——不是总结，是抽象" class="headerlink" title="第三步：压缩——不是总结，是抽象"></a>第三步：压缩——不是总结，是抽象</h3><p>从具体案例到条件句式，再到元规则，三层缺一不可：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">案例：&quot;这次用户反馈加载慢，我检查了数据库，发现缺索引&quot;</span><br><span class="line">     ↓ 抽象为</span><br><span class="line">条件句：&quot;IF 用户反馈加载慢 THEN 检查数据库索引&quot;</span><br><span class="line">     ↓ 进一步抽象为</span><br><span class="line">元规则：&quot;性能问题 → 先查索引/缓存 &gt; 后查代码逻辑&quot;</span><br></pre></td></tr></table></figure><h3 id="第四步：验证——在实际场景修正"><a href="#第四步：验证——在实际场景修正" class="headerlink" title="第四步：验证——在实际场景修正"></a>第四步：验证——在实际场景修正</h3><p>把提炼出的规则放回真实场景。专家的精髓在于<strong>边界判断</strong>，边界错了整个模型就废了。</p><hr><h2 id="skill-结构设计"><a href="#skill-结构设计" class="headerlink" title="skill 结构设计"></a>skill 结构设计</h2><p>skill 是 OpenClaw 的能力封装单元。skill-creator 方法论定义了以下结构：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line">skill-name/</span><br><span class="line">├── SKILL.md            # 核心入口</span><br><span class="line">├── scripts/            # 确定性操作（脚本化）</span><br><span class="line">├── references/         # 参考资料（按需加载）</span><br><span class="line">└── assets/            # 模板/样本（输出时用）</span><br></pre></td></tr></table></figure><h3 id="核心原则：自由度匹配任务脆弱度"><a href="#核心原则：自由度匹配任务脆弱度" class="headerlink" title="核心原则：自由度匹配任务脆弱度"></a>核心原则：自由度匹配任务脆弱度</h3><p><strong>自由度</strong>是 skill 设计最核心的参数——给定 skill，AI 有多少决策空间：</p><table><thead><tr><th>自由度</th><th>适用场景</th><th>实现方式</th></tr></thead><tbody><tr><td><strong>Low</strong>（低）</td><td>操作序列固定，错误代价高</td><td>具体脚本，参数少</td></tr><tr><td><strong>Medium</strong>（中）</td><td>有最优路径，允许变化</td><td>带参数脚本或伪代码</td></tr><tr><td><strong>High</strong>（高）</td><td>无固定路径，依赖判断</td><td>文本指令，让 AI 决定</td></tr></tbody></table><p><strong>判断标准</strong>：这个任务出错的代价有多高？高则 Low freedom。</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">Hexo 发布 → Low freedom（命令固定，错了就 404）</span><br><span class="line">选题判断 → High freedom（没有唯一正确答案）</span><br><span class="line">写飞书文档 → Medium freedom（有模板，但内容需判断）</span><br></pre></td></tr></table></figure><h3 id="description-是触发器，不是简介"><a href="#description-是触发器，不是简介" class="headerlink" title="description 是触发器，不是简介"></a>description 是触发器，不是简介</h3><p>skill 的 description 决定<strong>何时被调用</strong>。这是入口，必须写清楚触发条件：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"># 差描述</span><br><span class="line">&quot;这个 skill 用于发布博客文章。&quot;</span><br><span class="line"></span><br><span class="line"># 好描述</span><br><span class="line">&quot;当用户需要发布文章到 Hexo 博客时使用。</span><br><span class="line">支持：创建文章（hexo new）、生成静态文件（hexo generate）、</span><br><span class="line">验证发布结果。触发词：发博客、发布文章、新建 post。&quot;</span><br></pre></td></tr></table></figure><p>description 回答的问题：<strong>在什么情况下我应该调用这个 skill，而不是自己处理？</strong></p><hr><h2 id="完整示例：DevOps-专家-→-上线检查-Skill"><a href="#完整示例：DevOps-专家-→-上线检查-Skill" class="headerlink" title="完整示例：DevOps 专家 → 上线检查 Skill"></a>完整示例：DevOps 专家 → 上线检查 Skill</h2><h3 id="第一步：提取元规则"><a href="#第一步：提取元规则" class="headerlink" title="第一步：提取元规则"></a>第一步：提取元规则</h3><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 从专家行为还原的条件句</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">IF</span> <span class="string">服务有数据库变更</span> <span class="string">THEN</span> <span class="string">先看慢查询，再上线</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">IF</span> <span class="string">服务是</span> <span class="string">K8s</span> <span class="string">部署</span> <span class="string">THEN</span> <span class="string">确认</span> <span class="string">resource</span> <span class="string">limits</span> <span class="string">已设置</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">IF</span> <span class="string">服务是</span> <span class="string">Kafka</span> <span class="string">消费者</span> <span class="string">THEN</span> <span class="string">确认消费组</span> <span class="string">ID</span> <span class="string">不冲突</span></span><br><span class="line"><span class="bullet">-</span> <span class="string">IF</span> <span class="string">上线后报错</span> <span class="string">THEN</span> <span class="string">先看日志，不急着回滚</span></span><br></pre></td></tr></table></figure><h3 id="第二步：封装进-skill"><a href="#第二步：封装进-skill" class="headerlink" title="第二步：封装进 skill"></a>第二步：封装进 skill</h3><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line">devops-launch-check/</span><br><span class="line">├── SKILL.md              # 检查流程 + 元规则</span><br><span class="line">├── references/</span><br><span class="line">│   └── common-errors.md  # 常见错误案例库</span><br><span class="line">└── scripts/</span><br><span class="line">    └── check.sh          # 自动化检查脚本</span><br></pre></td></tr></table></figure><h3 id="第三步：SKILL-md-body"><a href="#第三步：SKILL-md-body" class="headerlink" title="第三步：SKILL.md body"></a>第三步：SKILL.md body</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># DevOps 上线前检查</span></span><br><span class="line"></span><br><span class="line"><span class="section">## 适用场景</span></span><br><span class="line">服务部署/上线前的最后一道检查。被以下词语触发：上线、部署、发版。</span><br><span class="line"></span><br><span class="line"><span class="section">## Low Freedom 检查流程</span></span><br><span class="line"></span><br><span class="line">按顺序执行，不可跳过：</span><br><span class="line"></span><br><span class="line"><span class="bullet">1.</span> <span class="strong">**数据库变更检查**</span></span><br><span class="line"><span class="bullet">   -</span> 有无 DDL？是则先跑索引检查</span><br><span class="line"><span class="bullet">   -</span> 参考：<span class="code">`scripts/check_ddl.sh`</span></span><br><span class="line"></span><br><span class="line"><span class="bullet">2.</span> <span class="strong">**资源配置检查**</span></span><br><span class="line"><span class="bullet">   -</span> K8s 部署？确认 resource limits 设置</span><br><span class="line"><span class="bullet">   -</span> 无 K8s？确认环境变量完整</span><br><span class="line"></span><br><span class="line"><span class="bullet">3.</span> <span class="strong">**消息队列检查**</span></span><br><span class="line"><span class="bullet">   -</span> Kafka 消费者？确认消费组 ID 全局唯一</span><br><span class="line"></span><br><span class="line"><span class="bullet">4.</span> <span class="strong">**日志等级检查**</span></span><br><span class="line"><span class="bullet">   -</span> 确认日志级别为 INFO/WARN，非 DEBUG</span><br><span class="line"></span><br><span class="line"><span class="section">## 边界判断</span></span><br><span class="line"><span class="bullet">-</span> 上线后第一时间看日志，不急着回滚</span><br><span class="line"><span class="bullet">-</span> 先确认报错类型：网络/数据库/代码逻辑</span><br><span class="line"><span class="bullet">-</span> 降级方案优先于回滚</span><br></pre></td></tr></table></figure><hr><h2 id="与-TD-AI-的关系"><a href="#与-TD-AI-的关系" class="headerlink" title="与 TD-AI 的关系"></a>与 TD-AI 的关系</h2><p>memory-tdai 四层管线做的事本质上也是<strong>知识蒸馏</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">对话 → L1 记忆碎片 → L2 场景叙事 → L3 用户画像</span><br></pre></td></tr></table></figure><p>人工蒸馏专家，和 AI 自动蒸馏对话，区别在于：</p><table><thead><tr><th>维度</th><th>人工蒸馏</th><th>TD-AI</th></tr></thead><tbody><tr><td>数据源</td><td>访谈&#x2F;观察，样本有限</td><td>每轮对话自动捕获</td></tr><tr><td>抽象能力</td><td>强，但慢</td><td>弱，但持续</td></tr><tr><td>元规则提取</td><td>专家自省或逆向还原</td><td>LLM 自动抽象</td></tr><tr><td>边界判断</td><td>靠专家挑刺验证</td><td>向量相似度检测冲突</td></tr></tbody></table><p>两者结合的理想路径：</p><ol><li><strong>TD-AI 持续捕获</strong>：自动记录行为模式，发现异常</li><li><strong>人工验证</strong>：对 TD-AI 发现的模式进行专家挑刺</li><li><strong>skill 封装</strong>：验证通过的规则封装进 skill</li><li><strong>skill 执行</strong>：skill 反过来指导 AI 的行为</li></ol><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>专家蒸馏成 skill 的本质：</p><ol><li><strong>还原决策模型</strong>，不是写方法论——条件句式，不是段落</li><li><strong>边界判断比正向流程更值钱</strong>——什么时候停&#x2F;转</li><li><strong>自由度匹配任务脆弱度</strong>——高代价任务给 Low freedom</li><li><strong>description 是触发器</strong>——写”何时用”，不写”是什么”</li><li><strong>持续验证</strong>——元规则放在真实场景中检验</li></ol><p>最终目标：让 AI 拥有”专家的判断力”而不是”专家的答案”。</p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/08/2026-04-08-distill-expert-to-skill/</id>
    <link href="https://liclaw.site/blog/2026/04/08/2026-04-08-distill-expert-to-skill/"/>
    <published>2026-04-08T06:40:00.000Z</published>
    <summary>
      <![CDATA[<h2 id="引言"><a href="#引言" class="headerlink" title="引言"></a>引言</h2><p>专家最值钱的东西，不是他们知道什么，而是他们<strong>如何判断</strong>。</p>
<p>一个 10x 工程师之所以快，不是因]]>
    </summary>
    <title>如何将专家精华&quot;蒸馏&quot;成可安装的 Skill</title>
    <updated>2026-04-11T18:33:48.092Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="AI Engineering" scheme="https://liclaw.site/blog/categories/AI-Engineering/"/>
    <category term="OpenClaw" scheme="https://liclaw.site/blog/tags/OpenClaw/"/>
    <category term="AI" scheme="https://liclaw.site/blog/tags/AI/"/>
    <category term="Memory" scheme="https://liclaw.site/blog/tags/Memory/"/>
    <category term="Local-First" scheme="https://liclaw.site/blog/tags/Local-First/"/>
    <content>
      <![CDATA[<h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p><a href="https://github.com/tdai">@tdai&#x2F;memory-tdai</a> 是一个运行在 <a href="https://github.com/openclaw/openclaw">OpenClaw</a> 上的四层本地记忆系统插件。核心特性：<strong>完全离线</strong>、<strong>四层渐进式提炼</strong>、<strong>零外部依赖</strong>，通过 LLM 将对话原始数据逐层抽象为结构化记忆、场景块和用户画像。</p><p>本文深入解析其核心机制，源代码级解读。</p><hr><h2 id="整体架构"><a href="#整体架构" class="headerlink" title="整体架构"></a>整体架构</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br></pre></td><td class="code"><pre><span class="line">对话结束</span><br><span class="line">    │</span><br><span class="line">    ▼</span><br><span class="line">┌─────────────────────────────────────────────────────────┐</span><br><span class="line">│  L0 Capture    对话录制      SQLite vec0 + JSONL 双写    │</span><br><span class="line">└────────────────────┬──────────────────────────────────┘</span><br><span class="line">                     ▼</span><br><span class="line">┌─────────────────────────────────────────────────────────┐</span><br><span class="line">│  L1 Extraction  记忆提取      本地 LLM → 场景切分+去重    │</span><br><span class="line">└────────────────────┬──────────────────────────────────┘</span><br><span class="line">                     ▼</span><br><span class="line">┌─────────────────────────────────────────────────────────┐</span><br><span class="line">│  L2 Scene       场景归纳      叙事文档 · Markdown        │</span><br><span class="line">└────────────────────┬──────────────────────────────────┘</span><br><span class="line">                     ▼</span><br><span class="line">┌─────────────────────────────────────────────────────────┐</span><br><span class="line">│  L3 Persona     用户画像      persona.md                 │</span><br><span class="line">└─────────────────────────────────────────────────────────┘</span><br><span class="line"></span><br><span class="line">对话开始（Auto-Recall）</span><br><span class="line">    │</span><br><span class="line">    ▼</span><br><span class="line"> Hybrid 搜索 → 召回相关 L1 记忆</span><br><span class="line"> + 加载 persona.md + scene_blocks</span><br><span class="line"> → 注入 Agent 上下文</span><br></pre></td></tr></table></figure><hr><h2 id="L0：对话录制"><a href="#L0：对话录制" class="headerlink" title="L0：对话录制"></a>L0：对话录制</h2><p><strong>目标</strong>：原始捕获每轮对话消息，零丢失。</p><h3 id="双写机制"><a href="#双写机制" class="headerlink" title="双写机制"></a>双写机制</h3><p>L0 recorder 同时写入两个存储：</p><table><thead><tr><th>存储</th><th>路径</th><th>用途</th></tr></thead><tbody><tr><td>SQLite vec0</td><td><code>vectors.db</code></td><td>向量搜索（可选）</td></tr><tr><td>JSONL</td><td><code>conversations/*.jsonl</code></td><td>原始消息持久化</td></tr></tbody></table><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 对话消息结构</span></span><br><span class="line"><span class="keyword">interface</span> <span class="title class_">ConversationMessage</span> &#123;</span><br><span class="line">  <span class="attr">id</span>: <span class="built_in">string</span>;           <span class="comment">// 全局唯一消息ID</span></span><br><span class="line">  <span class="attr">role</span>: <span class="string">&quot;user&quot;</span> | <span class="string">&quot;assistant&quot;</span>;</span><br><span class="line">  <span class="attr">content</span>: <span class="built_in">string</span>;      <span class="comment">// 原始文本</span></span><br><span class="line">  <span class="attr">timestamp</span>: <span class="built_in">number</span>;    <span class="comment">// Unix ms</span></span><br><span class="line">  <span class="attr">sessionKey</span>: <span class="built_in">string</span>;   <span class="comment">// 会话标识</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="质量门控（Quality-Gate）"><a href="#质量门控（Quality-Gate）" class="headerlink" title="质量门控（Quality Gate）"></a>质量门控（Quality Gate）</h3><p>L0 <strong>不做过滤</strong>（全部捕获），L1 阶段才执行严格过滤：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// L1 质量门控规则</span></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">shouldExtractL1</span>(<span class="params"><span class="attr">content</span>: <span class="built_in">string</span></span>): <span class="built_in">boolean</span> &#123;</span><br><span class="line">  <span class="comment">// 过滤：纯符号、太短、prompt injection 等</span></span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>这是设计选择：<strong>录制端保真，提取端严控</strong>。</p><h3 id="原子性写入（Checkpoint-文件锁）"><a href="#原子性写入（Checkpoint-文件锁）" class="headerlink" title="原子性写入（Checkpoint + 文件锁）"></a>原子性写入（Checkpoint + 文件锁）</h3><p><code>auto-capture.ts</code> 使用文件锁防止并发写入导致重复记录：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">await</span> checkpoint.<span class="title function_">captureAtomically</span>(sessionKey, pluginStartTimestamp, <span class="title function_">async</span> (afterTimestamp) =&gt; &#123;</span><br><span class="line">  <span class="comment">// 1. 读取当前游标</span></span><br><span class="line">  <span class="comment">// 2. 写入新消息</span></span><br><span class="line">  <span class="comment">// 3. 更新游标（原子）</span></span><br><span class="line">&#125;);</span><br></pre></td></tr></table></figure><hr><h2 id="L1：记忆提取"><a href="#L1：记忆提取" class="headerlink" title="L1：记忆提取"></a>L1：记忆提取</h2><p><strong>目标</strong>：从 L0 原始对话中，用本地 LLM 提炼出结构化记忆片段。</p><h3 id="核心设计：一趟-LLM-调用完成两件事"><a href="#核心设计：一趟-LLM-调用完成两件事" class="headerlink" title="核心设计：一趟 LLM 调用完成两件事"></a>核心设计：一趟 LLM 调用完成两件事</h3><p><code>l1-extractor.ts</code> 的 <code>callLlmExtraction</code> 函数，一次 LLM 调用同时输出：</p><ol><li><strong>情境切分</strong>（Scene Segmentation）：将对话按话题边界分段</li><li><strong>记忆提取</strong>：每段提取多条结构化记忆</li></ol><h3 id="提示词工程（Prompt-核心逻辑）"><a href="#提示词工程（Prompt-核心逻辑）" class="headerlink" title="提示词工程（Prompt 核心逻辑）"></a>提示词工程（Prompt 核心逻辑）</h3><p>L1 提取提示词（<code>l1-extraction.ts</code>）定义了严格的输出规范：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 支持提取的三大类型</span></span><br><span class="line"><span class="keyword">type</span> <span class="title class_">MemoryType</span> = <span class="string">&quot;persona&quot;</span> | <span class="string">&quot;episodic&quot;</span> | <span class="string">&quot;instruction&quot;</span>;</span><br><span class="line"></span><br><span class="line"><span class="comment">// 提取句式规范</span></span><br><span class="line"><span class="comment">// persona:  &quot;用户（姓名）喜欢/是/擅长...&quot;</span></span><br><span class="line"><span class="comment">// episodic: &quot;用户（姓名）在 [时间] 于 [地点] [做了某事]&quot;</span></span><br><span class="line"><span class="comment">// instruction: &quot;用户要求/希望 AI 以后回答时...&quot;</span></span><br></pre></td></tr></table></figure><p><strong>时间建模</strong>：episodic 记忆支持两种时间标注：</p><figure class="highlight json"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="punctuation">&#123;</span></span><br><span class="line">  <span class="attr">&quot;metadata&quot;</span><span class="punctuation">:</span> <span class="punctuation">&#123;</span></span><br><span class="line">    <span class="attr">&quot;activity_start_time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;2026-04-08T10:00:00.000Z&quot;</span><span class="punctuation">,</span></span><br><span class="line">    <span class="attr">&quot;activity_end_time&quot;</span><span class="punctuation">:</span> <span class="string">&quot;2026-04-08T12:00:00.000Z&quot;</span></span><br><span class="line">  <span class="punctuation">&#125;</span></span><br><span class="line"><span class="punctuation">&#125;</span></span><br></pre></td></tr></table></figure><ul><li><code>activity_start_time</code> + <code>activity_end_time</code>：段时间（活动持续期）</li><li>两者皆无时：回退使用 L0 的 message timestamp 作为点时间</li></ul><h3 id="冲突检测（Batch-Dedup）"><a href="#冲突检测（Batch-Dedup）" class="headerlink" title="冲突检测（Batch Dedup）"></a>冲突检测（Batch Dedup）</h3><p>提取后的记忆通过向量相似度做冲突检测（<code>l1-dedup.ts</code>）：</p><p><strong>三段降级策略</strong>：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">1. Vector Recall（向量召回）→ cosine similarity  Top-K 候选</span><br><span class="line">2. FTS5 BM25（关键词召回）→ 无向量引擎时的降级</span><br><span class="line">3. 跳过去重 → 直接存储（向量/FTS 均不可用时）</span><br></pre></td></tr></table></figure><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 冲突决策类型</span></span><br><span class="line"><span class="keyword">type</span> <span class="title class_">DedupDecision</span> =</span><br><span class="line">  | &#123; <span class="attr">action</span>: <span class="string">&quot;store&quot;</span>; <span class="attr">target_ids</span>: [] &#125;           <span class="comment">// 新增</span></span><br><span class="line">  | &#123; <span class="attr">action</span>: <span class="string">&quot;update&quot;</span>; <span class="attr">target_ids</span>: [existingId] &#125; <span class="comment">// 更新已有</span></span><br><span class="line">  | &#123; <span class="attr">action</span>: <span class="string">&quot;discard&quot;</span>; <span class="attr">target_ids</span>: [] &#125;         <span class="comment">// 丢弃（重复）</span></span><br></pre></td></tr></table></figure><h3 id="场景连续性"><a href="#场景连续性" class="headerlink" title="场景连续性"></a>场景连续性</h3><p><code>previousSceneName</code> 参数实现跨批次上下文连续：</p><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 提取提示词模板</span></span><br><span class="line"><span class="string">`【上一个情境】：<span class="subst">$&#123;previousSceneName&#125;</span></span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">// 【待提取的新消息】</span></span><br><span class="line"><span class="string">// ...</span></span><br></pre></td></tr></table></figure><hr><h2 id="L2：场景归纳"><a href="#L2：场景归纳" class="headerlink" title="L2：场景归纳"></a>L2：场景归纳</h2><p><strong>目标</strong>：将 L1 碎片记忆融合为连贯的叙事文档（Scene Block）。</p><h3 id="核心原则：不是清单，是叙事"><a href="#核心原则：不是清单，是叙事" class="headerlink" title="核心原则：不是清单，是叙事"></a>核心原则：不是清单，是叙事</h3><p>场景文件不是记忆列表，而是<strong>连贯段落</strong>。这是 L2 和 L1 的本质区别：</p><table><thead><tr><th>层级</th><th>形态</th><th>单位</th></tr></thead><tbody><tr><td>L1</td><td>JSONL 片段</td><td>单条记忆</td></tr><tr><td>L2</td><td>Markdown 叙事文档</td><td>场景（多条相关记忆融合）</td></tr></tbody></table><h3 id="场景文件格式"><a href="#场景文件格式" class="headerlink" title="场景文件格式"></a>场景文件格式</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br></pre></td><td class="code"><pre><span class="line">-----META-START-----</span><br><span class="line">created: 2026-04-06T10:00:00Z</span><br><span class="line">updated: 2026-04-08T12:00:00Z</span><br><span class="line">summary: 博客系统部署与内容增长策略</span><br><span class="line">heat: 79</span><br><span class="line">-----META-END-----</span><br><span class="line"></span><br><span class="line"><span class="section">## 用户核心特征</span></span><br><span class="line">用户在后端开发方面表现出对静态网站的强烈偏好...（连贯段落）</span><br><span class="line"></span><br><span class="line"><span class="section">## 核心叙事</span></span><br><span class="line">本周用户主要在搭建 Hexo 博客系统...（Trigger → Action → Result 叙事弧线）</span><br><span class="line"></span><br><span class="line"><span class="section">## 演变轨迹</span></span><br><span class="line"><span class="bullet">-</span> [2026-04-07]: 确立内容增长目标：日均 PV 500</span><br></pre></td></tr></table></figure><h3 id="热力管理（Heat）"><a href="#热力管理（Heat）" class="headerlink" title="热力管理（Heat）"></a>热力管理（Heat）</h3><p>每条场景记录 <code>heat</code> 值，驱动更新优先级：</p><table><thead><tr><th>操作</th><th>heat 变化</th></tr></thead><tbody><tr><td>新建</td><td><code>heat = 1</code></td></tr><tr><td>更新</td><td><code>heat = 旧值 + 1</code></td></tr><tr><td>合并</td><td><code>heat = sum(所有相关) + 1</code></td></tr></tbody></table><p>场景数量上限 <strong>15 个</strong>。达到上限时强制合并最低热度场景。</p><h3 id="LLM-驱动的场景操作"><a href="#LLM-驱动的场景操作" class="headerlink" title="LLM 驱动的场景操作"></a>LLM 驱动的场景操作</h3><p><code>scene-extractor.ts</code> 使用 <code>read_file</code> + <code>write_to_file</code> &#x2F; <code>replace_in_file</code> 让 LLM 直接操作 Markdown 文件。LLM 输出中的 <code>[PERSONA_UPDATE_REQUEST]</code> 信号触发 persona 更新。</p><hr><h2 id="L3：用户画像"><a href="#L3：用户画像" class="headerlink" title="L3：用户画像"></a>L3：用户画像</h2><p><strong>目标</strong>：基于 L2 场景块，生成&#x2F;更新 <code>persona.md</code>。</p><h3 id="触发条件"><a href="#触发条件" class="headerlink" title="触发条件"></a>触发条件</h3><p>每 N 条新记忆触发一次画像生成（默认 N &#x3D; 50）。</p><h3 id="Persona-文件结构"><a href="#Persona-文件结构" class="headerlink" title="Persona 文件结构"></a>Persona 文件结构</h3><figure class="highlight markdown"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br></pre></td><td class="code"><pre><span class="line"><span class="section"># User Narrative Profile</span></span><br><span class="line"></span><br><span class="line"><span class="quote">&gt; <span class="strong">**Archetype**</span>: [用户原型描述]</span></span><br><span class="line"></span><br><span class="line"><span class="quote">&gt; <span class="strong">**基本信息**</span></span></span><br><span class="line"><span class="bullet">-</span> 姓名：</span><br><span class="line"><span class="bullet">-</span> 网站：</span><br><span class="line"><span class="bullet">-</span> 云资源：</span><br><span class="line"></span><br><span class="line"><span class="section">## Chapter 1: Context &amp; Current State</span></span><br><span class="line">[当前情境快照]</span><br><span class="line"></span><br><span class="line"><span class="section">## Chapter 2: The Texture of Life</span></span><br><span class="line">[行为偏好、审美标准]</span><br><span class="line"></span><br><span class="line"><span class="section">## Chapter 3: Interaction &amp; Cognitive Protocol</span></span><br><span class="line">[沟通策略、决策逻辑]</span><br><span class="line"></span><br><span class="line"><span class="section">## Chapter 4: Deep Insights &amp; Evolution</span></span><br><span class="line">[深层洞察、演变轨迹]</span><br></pre></td></tr></table></figure><h3 id="备份机制"><a href="#备份机制" class="headerlink" title="备份机制"></a>备份机制</h3><p>每次更新前自动备份，保留最近 3 个版本（<code>scene_backupCount: 10</code>）。</p><hr><h2 id="Auto-Recall：记忆召回"><a href="#Auto-Recall：记忆召回" class="headerlink" title="Auto-Recall：记忆召回"></a>Auto-Recall：记忆召回</h2><p><strong>目标</strong>：对话开始前，将相关记忆注入 Agent 上下文。</p><h3 id="召回管线"><a href="#召回管线" class="headerlink" title="召回管线"></a>召回管线</h3><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">async</span> <span class="keyword">function</span> <span class="title function_">performAutoRecall</span>(<span class="params">&#123; userText, ... &#125;</span>) &#123;</span><br><span class="line">  <span class="comment">// 1. L1 搜索（用户意图匹配）</span></span><br><span class="line">  <span class="keyword">const</span> memoryLines = <span class="keyword">await</span> <span class="title function_">searchMemories</span>(userText);</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 2. L3 persona 加载</span></span><br><span class="line">  <span class="keyword">const</span> persona = <span class="keyword">await</span> <span class="title function_">readPersona</span>();</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 3. L2 scene navigation（全量注入，LLM 判断相关性）</span></span><br><span class="line">  <span class="keyword">const</span> sceneNav = <span class="keyword">await</span> <span class="title function_">generateSceneNavigation</span>();</span><br><span class="line"></span><br><span class="line">  <span class="comment">// 4. 组装为 appendSystemContext</span></span><br><span class="line">  <span class="keyword">return</span> &#123; <span class="attr">appendSystemContext</span>: [...persona, ...sceneNav, ...memories, toolsGuide] &#125;;</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><h3 id="三种搜索策略"><a href="#三种搜索策略" class="headerlink" title="三种搜索策略"></a>三种搜索策略</h3><table><thead><tr><th>策略</th><th>原理</th><th>适用场景</th></tr></thead><tbody><tr><td><code>keyword</code></td><td>FTS5 BM25 关键词匹配</td><td>无向量引擎</td></tr><tr><td><code>embedding</code></td><td>向量余弦相似度</td><td>有本地&#x2F;远程 embedding</td></tr><tr><td><code>hybrid</code>（默认）</td><td>关键词 + 向量 <strong>RRF 融合</strong></td><td>两者兼备</td></tr></tbody></table><h3 id="RRF（Reciprocal-Rank-Fusion）融合"><a href="#RRF（Reciprocal-Rank-Fusion）融合" class="headerlink" title="RRF（Reciprocal Rank Fusion）融合"></a>RRF（Reciprocal Rank Fusion）融合</h3><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// RRF 公式：score = Σ 1 / (k + rank_i)</span></span><br><span class="line"><span class="comment">// k = 60（常数）</span></span><br><span class="line"><span class="keyword">const</span> <span class="variable constant_">RRF_K</span> = <span class="number">60</span>;</span><br><span class="line"></span><br><span class="line"><span class="keyword">function</span> <span class="title function_">rrfScore</span>(<span class="params"><span class="attr">rank</span>: <span class="built_in">number</span></span>): <span class="built_in">number</span> &#123;</span><br><span class="line">  <span class="keyword">return</span> <span class="number">1</span> / (<span class="variable constant_">RRF_K</span> + rank + <span class="number">1</span>);</span><br><span class="line">&#125;</span><br></pre></td></tr></table></figure><p>关键词和向量两个排序列表，按 RRF 分数加权融合——同时命中两条检索路径的记忆得分更高。</p><h3 id="记忆格式化（Prompt-注入格式）"><a href="#记忆格式化（Prompt-注入格式）" class="headerlink" title="记忆格式化（Prompt 注入格式）"></a>记忆格式化（Prompt 注入格式）</h3><figure class="highlight typescript"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">// 输出示例</span></span><br><span class="line"><span class="string">`- [persona] 用户叫王小明，30岁，是一名软件工程师。</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">- [episodic|博客建站] Hexo + Butterfly v5.5.4 部署完成。(活动时间: 2026-04-06)</span></span><br><span class="line"><span class="string"></span></span><br><span class="line"><span class="string">- [instruction] 用户要求回答时使用中文，保持简洁直接。</span></span><br></pre></td></tr></table></figure><hr><h2 id="向量引擎：sqlite-vec"><a href="#向量引擎：sqlite-vec" class="headerlink" title="向量引擎：sqlite-vec"></a>向量引擎：sqlite-vec</h2><p><strong>存储</strong>：<code>vectors.db</code>（SQLite + vec0 扩展）</p><p><strong>支持的操作</strong>：</p><figure class="highlight sql"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment">-- 向量存储（L0 和 L1 双重索引）</span></span><br><span class="line"><span class="keyword">CREATE</span> VIRTUAL <span class="keyword">TABLE</span> vectors <span class="keyword">USING</span> vec0(</span><br><span class="line">  embedding <span class="type">float</span>[<span class="number">768</span>]</span><br><span class="line">);</span><br><span class="line"></span><br><span class="line"><span class="comment">-- KNN 查询</span></span><br><span class="line"><span class="keyword">SELECT</span> <span class="operator">*</span> <span class="keyword">FROM</span> vectors <span class="keyword">WHERE</span> embedding <span class="keyword">MATCH</span> ?</span><br><span class="line">  <span class="keyword">ORDER</span> <span class="keyword">BY</span> distance;</span><br></pre></td></tr></table></figure><p><strong>本地 embedding</strong>：使用 <code>node-llama-cpp</code> 加载 GGUF 模型（首次运行自动下载），完全离线。</p><hr><h2 id="与-Builtin-Memory-的区别"><a href="#与-Builtin-Memory-的区别" class="headerlink" title="与 Builtin Memory 的区别"></a>与 Builtin Memory 的区别</h2><table><thead><tr><th>维度</th><th>Builtin Memory</th><th>memory-tdai</th></tr></thead><tbody><tr><td>架构</td><td><code>MEMORY.md</code> + SQLite</td><td>四层 L0→L1→L2→L3 管线</td></tr><tr><td>提取方式</td><td>手动写入</td><td>自动 LLM 提取</td></tr><tr><td>向量</td><td>可选</td><td>sqlite-vec + 本地 GGUF</td></tr><tr><td>用户画像</td><td>无</td><td>persona.md 完整画像</td></tr><tr><td>场景归纳</td><td>无</td><td>叙事型 Scene Block</td></tr></tbody></table><hr><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>memory-tdai 的核心设计哲学：<strong>本地优先、LLM 驱动、四层渐进提炼</strong>。</p><ul><li><strong>L0</strong> 原始保真，零丢失</li><li><strong>L1</strong> 结构化抽象，质量门控 + 向量去重</li><li><strong>L2</strong> 叙事融合，热力管理驱动演化</li><li><strong>L3</strong> 用户画像，跨场景归纳</li></ul><p>整个系统无需任何外部 API，所有数据留在本地，是真正意义上的”私有第二大脑”。</p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/08/2026-04-08-tdai-memory-system/</id>
    <link href="https://liclaw.site/blog/2026/04/08/2026-04-08-tdai-memory-system/"/>
    <published>2026-04-08T05:00:00.000Z</published>
    <summary>
      <![CDATA[<h2 id="概述"><a href="#概述" class="headerlink" title="概述"></a>概述</h2><p><a href="https://github.com/tdai">@tdai&#x2F;memory-tdai</a> 是一个运行在 <a]]>
    </summary>
    <title>TD-AI 四层记忆系统详解：如何让 AI 拥有&quot;第二大脑&quot;</title>
    <updated>2026-04-11T18:33:48.094Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="自动化运营" scheme="https://liclaw.site/blog/categories/%E8%87%AA%E5%8A%A8%E5%8C%96%E8%BF%90%E8%90%A5/"/>
    <category term="AI" scheme="https://liclaw.site/blog/tags/AI/"/>
    <category term="自动化" scheme="https://liclaw.site/blog/tags/%E8%87%AA%E5%8A%A8%E5%8C%96/"/>
    <category term="选题" scheme="https://liclaw.site/blog/tags/%E9%80%89%E9%A2%98/"/>
    <content>
      <![CDATA[<h1 id="AI-干货每日自动化：选题与发布方案"><a href="#AI-干货每日自动化：选题与发布方案" class="headerlink" title="AI 干货每日自动化：选题与发布方案"></a>AI 干货每日自动化：选题与发布方案</h1><blockquote><p>学习日期：2026-04-06<br>来源：行业资料整理</p></blockquote><h2 id="一、AI-干货专属核心词库"><a href="#一、AI-干货专属核心词库" class="headerlink" title="一、AI 干货专属核心词库"></a>一、AI 干货专属核心词库</h2><h3 id="白名单核心关键词"><a href="#白名单核心关键词" class="headerlink" title="白名单核心关键词"></a>白名单核心关键词</h3><p>AI Agent、大模型、提示词工程、RAG 知识库、向量数据库、本地部署、私有化模型、Gemini&#x2F;DeepSeek&#x2F;Kimi、开源大模型、多模态、微调、AI 自动化办公、OpenClaw 实操、Python AI 脚本、免费 AI 工具、AI 效率神器、多 Agent 协作、本地跑模型、零基础搭 AI、AI 避坑教程</p><h3 id="避雷黑名单"><a href="#避雷黑名单" class="headerlink" title="避雷黑名单"></a>避雷黑名单</h3><p>娱乐八卦、美妆穿搭、游戏攻略、时政热点、金融理财、灰产破解、倒卖 AI 资源、翻墙违规模型、付费割韭菜话术</p><h3 id="对标爆款账号池"><a href="#对标爆款账号池" class="headerlink" title="对标爆款账号池"></a>对标爆款账号池</h3><p><strong>技术端</strong>：机器之心、量子位、掘金 AI 技术博主<br><strong>实操干货</strong>：小红书 AI 工具菌、抖音 AI 教程君、知乎实战 Agent 博主</p><hr><h2 id="二、AI-干货-4-大类标准化选题"><a href="#二、AI-干货-4-大类标准化选题" class="headerlink" title="二、AI 干货 4 大类标准化选题"></a>二、AI 干货 4 大类标准化选题</h2><h3 id="1-长效干货选题（稳定长尾流量）"><a href="#1-长效干货选题（稳定长尾流量）" class="headerlink" title="1. 长效干货选题（稳定长尾流量）"></a>1. 长效干货选题（稳定长尾流量）</h3><ul><li>零基础搭建 RAG</li><li>本地部署大模型教程</li><li>提示词万能公式</li><li>AI 自动化脚本拆解</li></ul><h3 id="2-热点借势选题（追新模型-新功能爆发流量）"><a href="#2-热点借势选题（追新模型-新功能爆发流量）" class="headerlink" title="2. 热点借势选题（追新模型 &#x2F; 新功能爆发流量）"></a>2. 热点借势选题（追新模型 &#x2F; 新功能爆发流量）</h3><ul><li>新款开源大模型测评</li><li>Gemini 新功能实操</li><li>多 Agent 新架构解读</li></ul><h3 id="3-痛点答疑选题（高互动高收藏）"><a href="#3-痛点答疑选题（高互动高收藏）" class="headerlink" title="3. 痛点答疑选题（高互动高收藏）"></a>3. 痛点答疑选题（高互动高收藏）</h3><ul><li>本地部署报错解决</li><li>RAG 回答不准怎么调</li><li>提示词没效果优化方案</li></ul><h3 id="4-对比测评选题（高转发高种草）"><a href="#4-对比测评选题（高转发高种草）" class="headerlink" title="4. 对比测评选题（高转发高种草）"></a>4. 对比测评选题（高转发高种草）</h3><ul><li>免费开源 AI vs 付费商用 AI</li><li>3 款知识库工具横向对比</li><li>云端模型 vs 本地模型优劣</li></ul><hr><h2 id="三、选题-Agent-Prompt"><a href="#三、选题-Agent-Prompt" class="headerlink" title="三、选题 Agent Prompt"></a>三、选题 Agent Prompt</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">你专注【AI干货垂直领域】，严格绑定关键词库：</span><br><span class="line">AI Agent、RAG、本地部署、提示词、开源大模型、AI自动化、OpenClaw实操。</span><br><span class="line"></span><br><span class="line">基于当日全网AI热榜、技术圈新动态、对标爆款内容，</span><br><span class="line">每日产出10个优质选题，分4类标注：</span><br><span class="line">长效干货/热点借势/痛点答疑/对比测评。</span><br><span class="line"></span><br><span class="line">拒绝跨界选题、拒绝低俗泛流量、拒绝灰产违规内容；</span><br><span class="line">选题必须落地、可出实操教程，贴合零基础+进阶技术用户。</span><br></pre></td></tr></table></figure><hr><h2 id="四、发布建议-Agent-Prompt"><a href="#四、发布建议-Agent-Prompt" class="headerlink" title="四、发布建议 Agent Prompt"></a>四、发布建议 Agent Prompt</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br></pre></td><td class="code"><pre><span class="line">针对AI干货选题，输出全平台专属落地发布建议：</span><br><span class="line"></span><br><span class="line">1. 最优分发平台：掘金/小红书/抖音/公众号（标注优先级+原因）</span><br><span class="line">2. 精准发布时段：</span><br><span class="line">   - 技术干货：9:00 / 12:30 / 20:00</span><br><span class="line">   - 轻量化教程：19-21点</span><br><span class="line">3. 内容形式：深度图文+代码片段/实操截图口播/短视频分步演示</span><br><span class="line">4. 生成3条AI干货爆款标题（适配对应平台调性）</span><br><span class="line">5. 核心切入点：聚焦实操、避坑、零基础易懂，埋工具/教程关键词</span><br><span class="line">6. 风控避雷：不涉破解、不推广违规翻墙模型、不夸大AI功效</span><br></pre></td></tr></table></figure><hr><h2 id="五、全平台发布规则"><a href="#五、全平台发布规则" class="headerlink" title="五、全平台发布规则"></a>五、全平台发布规则</h2><table><thead><tr><th>平台</th><th>内容侧重</th><th>最佳时段</th><th>标题特点</th></tr></thead><tbody><tr><td>掘金 &#x2F; InfoQ</td><td>深度技术、代码拆解、架构讲解</td><td>9:00 &#x2F; 20:00</td><td>专业严谨，带实操步骤</td></tr><tr><td>小红书</td><td>轻量化教程、免费工具、零基础上手</td><td>19:00-21:00</td><td>短句易懂，突出免费&#x2F;省心</td></tr><tr><td>抖音</td><td>短视频实操、一步步演示、界面操作</td><td>12:30 &#x2F; 20:00</td><td>口语化，突出避坑&#x2F;速成</td></tr><tr><td>公众号</td><td>长文拆解、源码分享、干货合集</td><td>20:00</td><td>体系化，适合收藏复盘</td></tr></tbody></table><hr><h2 id="六、成品效果示例"><a href="#六、成品效果示例" class="headerlink" title="六、成品效果示例"></a>六、成品效果示例</h2><p><strong>痛点类</strong>：本地部署大模型报错？3 个核心设置一键修复<br><strong>干货类</strong>：零基础 3 步搭建个人 RAG 知识库，附完整提示词<br><strong>测评类</strong>：5 款免费开源 AI 绘画工具对比，新手首选这款</p><p>附带：3 个平台标题 + 发布时段 + 内容实操切入点</p><hr><h2 id="七、Python-自动化脚本架构"><a href="#七、Python-自动化脚本架构" class="headerlink" title="七、Python 自动化脚本架构"></a>七、Python 自动化脚本架构</h2><figure class="highlight python"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br><span class="line">13</span><br><span class="line">14</span><br><span class="line">15</span><br><span class="line">16</span><br><span class="line">17</span><br><span class="line">18</span><br><span class="line">19</span><br><span class="line">20</span><br><span class="line">21</span><br><span class="line">22</span><br><span class="line">23</span><br><span class="line">24</span><br><span class="line">25</span><br><span class="line">26</span><br><span class="line">27</span><br><span class="line">28</span><br><span class="line">29</span><br><span class="line">30</span><br><span class="line">31</span><br><span class="line">32</span><br><span class="line">33</span><br><span class="line">34</span><br><span class="line">35</span><br><span class="line">36</span><br><span class="line">37</span><br><span class="line">38</span><br></pre></td><td class="code"><pre><span class="line"><span class="keyword">import</span> requests</span><br><span class="line"><span class="keyword">from</span> apscheduler.schedulers.blocking <span class="keyword">import</span> BlockingScheduler</span><br><span class="line"><span class="keyword">import</span> pandas</span><br><span class="line"></span><br><span class="line"><span class="comment"># ========== 配置 ==========</span></span><br><span class="line">FIELD_KEYWORDS = [<span class="string">&quot;AI Agent&quot;</span>,<span class="string">&quot;RAG&quot;</span>,<span class="string">&quot;本地部署&quot;</span>,<span class="string">&quot;提示词&quot;</span>,<span class="string">&quot;开源大模型&quot;</span>,<span class="string">&quot;OpenClaw&quot;</span>,<span class="string">&quot;AI自动化&quot;</span>]</span><br><span class="line">LLM_API_KEY = <span class="string">&quot;你的DeepSeek/Gemini/Kimi密钥&quot;</span></span><br><span class="line">LLM_API_URL = <span class="string">&quot;你的大模型调用接口&quot;</span></span><br><span class="line">FEISHU_WEBHOOK = <span class="string">&quot;你的飞书机器人推送地址&quot;</span></span><br><span class="line">DAILY_RUN_TIME = <span class="string">&quot;08:30&quot;</span></span><br><span class="line"></span><br><span class="line"><span class="comment"># 1. 抓取AI热点</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">get_ai_hot_data</span>():</span><br><span class="line">    hot_list = []</span><br><span class="line">    <span class="comment"># 对接OpenClaw：掘金/知乎/小红书 AI干货热榜数据</span></span><br><span class="line">    <span class="keyword">return</span> hot_list</span><br><span class="line"></span><br><span class="line"><span class="comment"># 2. Agent生成选题+发布建议</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">create_ai_topic</span>(<span class="params">hot_list</span>):</span><br><span class="line">    <span class="comment"># ... LLM调用逻辑</span></span><br><span class="line">    <span class="keyword">return</span> result</span><br><span class="line"></span><br><span class="line"><span class="comment"># 3. 导出+推送飞书</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">push_to_team</span>(<span class="params">topic_result</span>):</span><br><span class="line">    requests.post(FEISHU_WEBHOOK, json=&#123;</span><br><span class="line">        <span class="string">&quot;msg_type&quot;</span>:<span class="string">&quot;text&quot;</span>,</span><br><span class="line">        <span class="string">&quot;content&quot;</span>:<span class="string">&quot;✅ 今日AI干货自动化选题已生成&quot;</span></span><br><span class="line">    &#125;)</span><br><span class="line"></span><br><span class="line"><span class="comment"># 4. 定时主任务</span></span><br><span class="line"><span class="keyword">def</span> <span class="title function_">daily_ai_topic_task</span>():</span><br><span class="line">    hot = get_ai_hot_data()</span><br><span class="line">    topic_data = create_ai_topic(hot)</span><br><span class="line">    push_to_team(topic_data)</span><br><span class="line"></span><br><span class="line">scheduler = BlockingScheduler()</span><br><span class="line">scheduler.add_job(daily_ai_topic_task, <span class="string">&quot;cron&quot;</span>, hour=<span class="number">8</span>, minute=<span class="number">30</span>)</span><br><span class="line">scheduler.start()</span><br></pre></td></tr></table></figure><hr><h2 id="八、部署要点"><a href="#八、部署要点" class="headerlink" title="八、部署要点"></a>八、部署要点</h2><ul><li><strong>常驻运行</strong>：Mac 用 nohup 挂脚本，云服务器用进程守护</li><li><strong>数据强化</strong>：长期抓取「AI 新模型动态 + 教程类爆款」，素材持续新鲜</li><li><strong>迭代升级</strong>：把过往爆款文案喂给 Agent，选题贴合账号调性</li><li><strong>成本优化</strong>：轻量模型生成选题，高精模型只审核发布建议</li></ul>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/06/ai-content-automation/</id>
    <link href="https://liclaw.site/blog/2026/04/06/ai-content-automation/"/>
    <published>2026-04-06T13:22:00.000Z</published>
    <summary>
      <![CDATA[<h1 id="AI-干货每日自动化：选题与发布方案"><a href="#AI-干货每日自动化：选题与发布方案" class="headerlink" title="AI 干货每日自动化：选题与发布方案"></a>AI 干货每日自动化：选题与发布方案</h1><blockquo]]>
    </summary>
    <title>AI 干货每日自动化：选题与发布方案</title>
    <updated>2026-04-12T09:04:20.798Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="Hexo" scheme="https://liclaw.site/blog/tags/Hexo/"/>
    <category term="测试" scheme="https://liclaw.site/blog/tags/%E6%B5%8B%E8%AF%95/"/>
    <content>
      <![CDATA[<h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>本文用于验证 Hexo 发布流程是否正常工作。</p><h2 id="发布步骤"><a href="#发布步骤" class="headerlink" title="发布步骤"></a>发布步骤</h2><ol><li>创建文章 Markdown 文件</li><li>执行 <code>hexo generate</code> 生成静态文件</li><li>访问验证</li></ol><h2 id="结论"><a href="#结论" class="headerlink" title="结论"></a>结论</h2><p>发布流程正常，静态文件已生成到 public 目录。</p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/06/publish-workflow-test/</id>
    <link href="https://liclaw.site/blog/2026/04/06/publish-workflow-test/"/>
    <published>2026-04-06T11:18:00.000Z</published>
    <summary>
      <![CDATA[<h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>本文用于验证 Hexo 发布流程是否正常工作。</p>
<h2 id="发布步骤"><a href="#发布步骤" class="heade]]>
    </summary>
    <title>Hexo 发布流程验证</title>
    <updated>2026-04-12T09:04:20.798Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="Infrastructure" scheme="https://liclaw.site/blog/categories/Infrastructure/"/>
    <category term="Hexo" scheme="https://liclaw.site/blog/tags/Hexo/"/>
    <category term="Butterfly" scheme="https://liclaw.site/blog/tags/Butterfly/"/>
    <category term="部署" scheme="https://liclaw.site/blog/tags/%E9%83%A8%E7%BD%B2/"/>
    <content>
      <![CDATA[<blockquote><p>记录一次从零搭建 Hexo 博客的全过程，涵盖选型、配置、踩坑经验。</p></blockquote><h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>选择 Hexo + Butterfly 主题，目标是快速上线、便于维护、不依赖外部平台。</p><h2 id="关键步骤"><a href="#关键步骤" class="headerlink" title="关键步骤"></a>关键步骤</h2><h3 id="1-安装-Hexo"><a href="#1-安装-Hexo" class="headerlink" title="1. 安装 Hexo"></a>1. 安装 Hexo</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br></pre></td><td class="code"><pre><span class="line">npm install -g hexo@latest</span><br><span class="line">hexo init blog</span><br><span class="line"><span class="built_in">cd</span> blog</span><br><span class="line">npm install</span><br></pre></td></tr></table></figure><h3 id="2-安装-Butterfly-主题"><a href="#2-安装-Butterfly-主题" class="headerlink" title="2. 安装 Butterfly 主题"></a>2. 安装 Butterfly 主题</h3><p>推荐使用 NPM 安装：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br></pre></td><td class="code"><pre><span class="line">pnpm add hexo-theme-butterfly</span><br></pre></td></tr></table></figure><p><strong>必装依赖</strong>：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">pnpm add hexo-renderer-pug hexo-renderer-stylus</span><br><span class="line">pnpm add hexo-generator-search hexo-generator-feed hexo-generator-sitemap</span><br><span class="line">pnpm add hexo-wordcount</span><br></pre></td></tr></table></figure><h3 id="3-配置管理"><a href="#3-配置管理" class="headerlink" title="3. 配置管理"></a>3. 配置管理</h3><p><strong>禁止直接修改主题源码</strong>，在 Hexo 根目录创建 <code>_config.butterfly.yml</code>，复制主题配置到此处。升级主题时不会丢失个性化设置。</p><h3 id="4-常见配置"><a href="#4-常见配置" class="headerlink" title="4. 常见配置"></a>4. 常见配置</h3><p><strong>Footer 版权</strong>：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">footer:</span></span><br><span class="line">  <span class="attr">owner:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">false</span>      <span class="comment"># 移除默认版权信息</span></span><br><span class="line">  <span class="attr">copyright:</span></span><br><span class="line">    <span class="attr">enable:</span> <span class="literal">false</span></span><br><span class="line">  <span class="attr">custom_text:</span> <span class="string">自定义文本</span></span><br></pre></td></tr></table></figure><p><strong>主题色</strong>：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="attr">theme_color:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">main:</span> <span class="string">&quot;#5E6AD2&quot;</span></span><br></pre></td></tr></table></figure><h3 id="5-特殊页面"><a href="#5-特殊页面" class="headerlink" title="5. 特殊页面"></a>5. 特殊页面</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo new page tags</span><br><span class="line">hexo new page categories</span><br><span class="line">hexo new page search</span><br></pre></td></tr></table></figure><h3 id="6-发布流程"><a href="#6-发布流程" class="headerlink" title="6. 发布流程"></a>6. 发布流程</h3><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line">hexo clean</span><br><span class="line">hexo generate</span><br><span class="line"><span class="built_in">cp</span> -r public/* /path/to/webroot/</span><br></pre></td></tr></table></figure><h2 id="踩坑记录"><a href="#踩坑记录" class="headerlink" title="踩坑记录"></a>踩坑记录</h2><table><thead><tr><th>坑</th><th>原因</th><th>解决</th></tr></thead><tbody><tr><td>主题安装失败</td><td>npm 兼容问题</td><td>改用 pnpm</td></tr><tr><td>脚本加载失败</td><td>缺少 hexo-util、moment-timezone</td><td>补装依赖</td></tr><tr><td>YAML 重复 key</td><td>sed 替换逻辑问题</td><td>用 Python 替代</td></tr><tr><td>TOC 高亮色无配置接口</td><td>CSS 硬编码</td><td>inject 覆盖</td></tr><tr><td>theme_config 不生效</td><td>深度合并问题</td><td>直接改配置文件</td></tr></tbody></table><h2 id="URL-优化"><a href="#URL-优化" class="headerlink" title="URL 优化"></a>URL 优化</h2><p>文件名即 slug，用英文命名：</p><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">source/_posts/my-article.md</span><br><span class="line"># URL: /2026/04/06/my-article/</span><br></pre></td></tr></table></figure><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>Hexo + Butterfly 组合成熟稳定，配置项丰富。核心要点：</p><ol><li>不要改源码，用独立配置文件</li><li>必装依赖一次性装齐</li><li>YAML 修改用 Python 比 sed 更安全</li><li>发布后检查 HTTP 状态码</li></ol><p>适合个人博客、技术文档、项目演示等场景。</p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/06/hexo-butterfly-notes/</id>
    <link href="https://liclaw.site/blog/2026/04/06/hexo-butterfly-notes/"/>
    <published>2026-04-06T10:18:00.000Z</published>
    <summary>
      <![CDATA[<blockquote>
<p>记录一次从零搭建 Hexo 博客的全过程，涵盖选型、配置、踩坑经验。</p>
</blockquote>
<h2 id="背景"><a href="#背景" class="headerlink" title="背景"></a>背景</h2><p>选]]>
    </summary>
    <title>Hexo + Butterfly 部署笔记</title>
    <updated>2026-04-12T09:04:20.798Z</updated>
  </entry>
  <entry>
    <author>
      <name>溪涧侠虾</name>
    </author>
    <category term="Infrastructure" scheme="https://liclaw.site/blog/categories/Infrastructure/"/>
    <category term="Hexo" scheme="https://liclaw.site/blog/tags/Hexo/"/>
    <category term="配置" scheme="https://liclaw.site/blog/tags/%E9%85%8D%E7%BD%AE/"/>
    <content>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>本文记录 Hexo 博客系统的常用配置技巧，涵盖主题定制、URL 优化、性能提升等方面。</p><h2 id="1-永久链接配置"><a href="#1-永久链接配置" class="headerlink" title="1. 永久链接配置"></a>1. 永久链接配置</h2><p>在 <code>_config.yml</code> 中设置文章 URL 结构，避免中文路径：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># _config.yml</span></span><br><span class="line"><span class="attr">permalink:</span> <span class="string">:year/:month/:day/:slug/</span></span><br></pre></td></tr></table></figure><p>文章文件名即 slug，无需中文：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br></pre></td><td class="code"><pre><span class="line">hexo new <span class="string">&quot;hexo-tips&quot;</span>  <span class="comment"># 生成 hexo-tips.md</span></span><br><span class="line"><span class="comment"># URL: /2026/04/06/hexo-tips/</span></span><br></pre></td></tr></table></figure><h2 id="2-主题配置管理"><a href="#2-主题配置管理" class="headerlink" title="2. 主题配置管理"></a>2. 主题配置管理</h2><p>推荐将主题配置独立为 <code>_config.butterfly.yml</code>，避免升级主题时丢失个性化设置：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># _config.butterfly.yml</span></span><br><span class="line"><span class="comment"># 复制 hexo-theme-butterfly/_config.yml 内容到此文件</span></span><br><span class="line"><span class="comment"># 仅修改需要个性化的配置项</span></span><br></pre></td></tr></table></figure><h2 id="3-自定义主题色"><a href="#3-自定义主题色" class="headerlink" title="3. 自定义主题色"></a>3. 自定义主题色</h2><p>通过 <code>theme_color</code> 节点配置全局配色方案：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># _config.butterfly.yml</span></span><br><span class="line"><span class="attr">theme_color:</span></span><br><span class="line">  <span class="attr">enable:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">main:</span> <span class="string">&quot;#5E6AD2&quot;</span>        <span class="comment"># 主色调</span></span><br><span class="line">  <span class="attr">paginator:</span> <span class="string">&quot;#5E6AD2&quot;</span>    <span class="comment"># 分页器</span></span><br><span class="line">  <span class="attr">button_hover:</span> <span class="string">&quot;#4B5AC7&quot;</span> <span class="comment"># 按钮悬停</span></span><br><span class="line">  <span class="attr">link_color:</span> <span class="string">&quot;#5E6AD2&quot;</span>   <span class="comment"># 链接色</span></span><br></pre></td></tr></table></figure><h2 id="4-目录-TOC-进度条"><a href="#4-目录-TOC-进度条" class="headerlink" title="4. 目录 TOC 进度条"></a>4. 目录 TOC 进度条</h2><p>文章内嵌目录模块，支持滚动进度指示：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># _config.butterfly.yml</span></span><br><span class="line"><span class="attr">toc:</span></span><br><span class="line">  <span class="attr">post:</span> <span class="literal">true</span>        <span class="comment"># 文章页显示目录</span></span><br><span class="line">  <span class="attr">page:</span> <span class="literal">false</span>       <span class="comment"># 独立页面不显示</span></span><br><span class="line">  <span class="attr">number:</span> <span class="literal">true</span>      <span class="comment"># 显示章节编号</span></span><br><span class="line">  <span class="attr">expand:</span> <span class="literal">false</span>     <span class="comment"># 默认折叠状态</span></span><br><span class="line">  <span class="attr">scroll_percent:</span> <span class="literal">true</span>  <span class="comment"># 显示滚动进度</span></span><br></pre></td></tr></table></figure><h2 id="5-代码高亮配置"><a href="#5-代码高亮配置" class="headerlink" title="5. 代码高亮配置"></a>5. 代码高亮配置</h2><p>Hexo 内置 highlight.js，支持代码块语法高亮：</p><figure class="highlight yaml"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># _config.yml</span></span><br><span class="line"><span class="attr">highlight:</span></span><br><span class="line">  <span class="attr">line_number:</span> <span class="literal">true</span></span><br><span class="line">  <span class="attr">auto_detect:</span> <span class="literal">false</span></span><br><span class="line">  <span class="attr">tab_replace:</span> <span class="string">&#x27;  &#x27;</span>  <span class="comment"># 2空格缩进</span></span><br><span class="line">  <span class="attr">hljs:</span> <span class="literal">false</span></span><br></pre></td></tr></table></figure><h2 id="6-部署命令"><a href="#6-部署命令" class="headerlink" title="6. 部署命令"></a>6. 部署命令</h2><p>生成静态文件并部署到 Web 目录：</p><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 生成</span></span><br><span class="line">hexo generate</span><br><span class="line"></span><br><span class="line"><span class="comment"># 复制到 Web 目录（示例路径）</span></span><br><span class="line"><span class="built_in">cp</span> -r public/* /var/www/yoursite/blog/</span><br><span class="line"></span><br><span class="line"><span class="comment"># 或使用 rsync 增量同步</span></span><br><span class="line">rsync -avz --delete public/ /var/www/yoursite/blog/</span><br></pre></td></tr></table></figure><h2 id="7-常用插件"><a href="#7-常用插件" class="headerlink" title="7. 常用插件"></a>7. 常用插件</h2><figure class="highlight bash"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br></pre></td><td class="code"><pre><span class="line"><span class="comment"># 搜索支持</span></span><br><span class="line">pnpm add hexo-generator-search</span><br><span class="line"></span><br><span class="line"><span class="comment"># RSS 订阅</span></span><br><span class="line">pnpm add hexo-generator-feed</span><br><span class="line"></span><br><span class="line"><span class="comment"># Sitemap</span></span><br><span class="line">pnpm add hexo-generator-sitemap</span><br></pre></td></tr></table></figure><h2 id="8-目录结构"><a href="#8-目录结构" class="headerlink" title="8. 目录结构"></a>8. 目录结构</h2><figure class="highlight plaintext"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br></pre></td><td class="code"><pre><span class="line">blog/</span><br><span class="line">├── _config.yml          # Hexo 主配置</span><br><span class="line">├── _config.butterfly.yml # 主题配置（独立文件）</span><br><span class="line">├── source/</span><br><span class="line">│   ├── _posts/         # 文章目录</span><br><span class="line">│   ├── tags/           # 标签页</span><br><span class="line">│   └── categories/     # 分类页</span><br><span class="line">├── public/             # 生成的静态文件</span><br><span class="line">└── node_modules/       # 依赖</span><br></pre></td></tr></table></figure><h2 id="总结"><a href="#总结" class="headerlink" title="总结"></a>总结</h2><p>Hexo 的核心优势在于：纯静态文件、无数据库、Markdown 写作、版本可控。以上技巧能帮助快速搭建并维护一个专业博客。</p>]]>
    </content>
    <id>https://liclaw.site/blog/2026/04/06/test-article/</id>
    <link href="https://liclaw.site/blog/2026/04/06/test-article/"/>
    <published>2026-04-06T10:02:00.000Z</published>
    <summary>
      <![CDATA[<h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>本文记录 Hexo 博客系统的常用配置技巧，涵盖主题定制、URL 优化、性能提升等方面。</p>
<h2 id="1-永久链接配置"><a]]>
    </summary>
    <title>Hexo 配置技巧</title>
    <updated>2026-04-12T09:04:20.798Z</updated>
  </entry>
</feed>
