<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>自动化 on Kalend's Blog</title><link>https://blog.kalend.top/tags/%E8%87%AA%E5%8A%A8%E5%8C%96/</link><description>Recent content in 自动化 on Kalend's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Tue, 26 May 2026 23:00:00 +0800</lastBuildDate><atom:link href="https://blog.kalend.top/tags/%E8%87%AA%E5%8A%A8%E5%8C%96/index.xml" rel="self" type="application/rss+xml"/><item><title>我给AI建了个全自动知识库：每周自动从对话中提炼知识点</title><link>https://blog.kalend.top/2026/05/26/wiki-auto-knowledge-base.html/</link><pubDate>Tue, 26 May 2026 23:00:00 +0800</pubDate><guid>https://blog.kalend.top/2026/05/26/wiki-auto-knowledge-base.html/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;和AI聊了几百轮，发现最有价值的知识全散落在聊天记录里。下次遇到类似问题，还得重新问一遍。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这不是工具推荐，是我自己搭的一套系统。用了一年，从零长到23个知识页面，全是AI自己从对话里提炼出来的。&lt;/p&gt;
&lt;p&gt;先说结论：把AI当知识管理员，比当聊天机器人有用得多。&lt;/p&gt;
&lt;h2 id="一为什么要自动化知识库"&gt;一、为什么要自动化知识库
&lt;/h2&gt;&lt;p&gt;我每天和AI助手聊天，聊技术、聊工具、聊踩坑经验。&lt;/p&gt;
&lt;p&gt;这些对话里藏着大量可复用的知识点：某个工具的配置方法、某个问题的解决方案、某个概念的清晰解释。&lt;/p&gt;
&lt;p&gt;但问题是——它们全在聊天记录里。&lt;/p&gt;
&lt;p&gt;想找的时候翻不到，找到了也不确定是最新的。&lt;/p&gt;
&lt;p&gt;更关键的是，下次遇到类似问题，我又得重新描述一遍背景，重新问一遍。&lt;/p&gt;
&lt;p&gt;所以我想要一个系统：自动扫描对话，自动提炼知识点，自动写入知识库。&lt;/p&gt;
&lt;p&gt;不是什么Notion模板，不是Obsidian手动整理。&lt;/p&gt;
&lt;p&gt;是真正的全自动——我正常聊天，知识库自动生长。&lt;/p&gt;
&lt;h2 id="二方案llm-wiki-规范--定时扫描"&gt;二、方案：LLM Wiki 规范 + 定时扫描
&lt;/h2&gt;&lt;p&gt;我的方案基于Karpathy提出的LLM Wiki规范。&lt;/p&gt;
&lt;p&gt;核心思路：用Markdown文件存知识，用双向链接把知识点串成图谱，用AI定时扫描对话来增量更新。&lt;/p&gt;
&lt;p&gt;整个知识库就是一个文件夹，长这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;wiki/
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; entities/ # 实体页（工具、人物、项目）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; concepts/ # 概念页（方法论、架构、工作流）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; comparisons/ # 对比页（方案选型）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; queries/ # 查询页（常见问题）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; raw/ # 原始素材（对话摘要）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; SCHEMA.md # 规范定义
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; index.md # 全局索引
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; log.md # 操作日志
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每个页面都有统一的frontmatter格式：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;span class="lnt"&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;页面标题&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;created&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ld"&gt;2026-05-14&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;updated&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="ld"&gt;2026-05-25&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;entity | concept | comparison | query&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;tags&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;ai, tools, open-source]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;sources&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="l"&gt;raw/articles/xxx.md]&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nt"&gt;confidence&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="l"&gt;high | medium | low&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nn"&gt;---&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;用&lt;code&gt;[[wikilinks]]&lt;/code&gt;语法在页面间建立双向链接。&lt;/p&gt;
&lt;p&gt;比如opencode页面引用了understand-anything，后者又引用了hermes-agent。&lt;/p&gt;
&lt;p&gt;这些链接自动形成知识图谱，不用手动维护。&lt;/p&gt;
&lt;h2 id="三扫描脚本从对话中挖知识点"&gt;三、扫描脚本：从对话中挖知识点
&lt;/h2&gt;&lt;p&gt;核心是一个Python脚本，每周自动扫描最近7天的AI对话记录。&lt;/p&gt;
&lt;p&gt;它的逻辑很简单：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一步&lt;/strong&gt;：扫描会话数据库，找到最近有实质内容的对话。&lt;/p&gt;
&lt;p&gt;筛选标准：消息数≥5条，标题非空，时间在7天内。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二步&lt;/strong&gt;：用关键词匹配分类。我定义了8个类别：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-fallback" data-lang="fallback"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AI/模型 | 工具/Agent | 数据库 | OSINT
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;DevOps | 编程 | 写作 | 记忆/知识库
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;每条匹配规则是多个关键词用管道符连接。&lt;/p&gt;
&lt;p&gt;比如&amp;quot;ai|llm|模型|训练|推理&amp;quot;都归到AI类。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三步&lt;/strong&gt;：过滤掉已有页面覆盖的内容，输出候选清单。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第四步&lt;/strong&gt;：LLM Agent拿到候选清单，判断是否值得入库。&lt;/p&gt;
&lt;p&gt;不是什么都记。有两个硬性门槛：&lt;/p&gt;
&lt;p&gt;同一个知识点出现2次以上，或者来自1个高质量核心来源。&lt;/p&gt;
&lt;p&gt;这样避免了把闲聊当知识的问题。&lt;/p&gt;
&lt;h2 id="四自动化流程定时任务配置"&gt;四、自动化流程：定时任务配置
&lt;/h2&gt;&lt;p&gt;我把扫描脚本配成了定时任务，每周日上午11点自动运行。&lt;/p&gt;
&lt;p&gt;流程是四步：&lt;/p&gt;
&lt;p&gt;扫描脚本输出候选 → LLM判断是否值得入库 → 创建或更新wiki页面 → 追加操作日志&lt;/p&gt;
&lt;p&gt;目前已经跑了5轮自动入库，产生了这些内容：&lt;/p&gt;
&lt;p&gt;实体页13个：hermes-agent、mempalace、opencode、obsidian、karpathy等。&lt;/p&gt;
&lt;p&gt;概念页5个：双向链接、知识库工作流、五层记忆架构、MySQL大表DDL方案、被动验证方法论。&lt;/p&gt;
&lt;p&gt;最有价值的是交叉引用。&lt;/p&gt;
&lt;p&gt;opencode → understand-anything → hermes-agent → openclaw&lt;/p&gt;
&lt;p&gt;这条引用链，把四个工具的定位和关系串了起来。&lt;/p&gt;
&lt;p&gt;下次我需要对比它们，直接看知识库就行。&lt;/p&gt;
&lt;h2 id="五设计思考为什么不用notion"&gt;五、设计思考：为什么不用Notion
&lt;/h2&gt;&lt;p&gt;很多人会问：为什么不直接用Notion？或者Obsidian的插件？&lt;/p&gt;
&lt;p&gt;三个原因：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第一&lt;/strong&gt;，数据主权。我的知识库是本地Markdown文件，git管理。&lt;/p&gt;
&lt;p&gt;不依赖任何云服务，不会因为某天服务下线就丢数据。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第二&lt;/strong&gt;，增量构建。不是一次性搭好架子然后手动填充。&lt;/p&gt;
&lt;p&gt;是每周自动从对话中生长，越用越丰富。&lt;/p&gt;
&lt;p&gt;我正常使用AI，知识库自动变厚。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;第三&lt;/strong&gt;，AI做苦力。扫描、分类、提取、格式化，全部自动化。&lt;/p&gt;
&lt;p&gt;我只做最终决策——这个东西值不值得记。&lt;/p&gt;
&lt;p&gt;当然也有代价：没有Notion那么漂亮的界面，没有协作功能。&lt;/p&gt;
&lt;p&gt;但知识库的本质是&amp;quot;能找到&amp;quot;，不是&amp;quot;好看&amp;quot;。&lt;/p&gt;
&lt;h2 id="六一个真实页面长什么样"&gt;六、一个真实页面长什么样
&lt;/h2&gt;&lt;p&gt;拿hermes-agent这个实体页举例：&lt;/p&gt;
&lt;p&gt;开头是frontmatter，包含标题、日期、类型、标签、来源、置信度。&lt;/p&gt;
&lt;p&gt;然后是正文：概述、核心架构（配置层级表格）、Profile隔离系统、Skill系统、五层记忆架构、多平台网关。&lt;/p&gt;
&lt;p&gt;最后是相关页面链接：nous-research、llm-wiki、obsidian、mempalace。&lt;/p&gt;
&lt;p&gt;每个链接都能跳转，形成知识网络。&lt;/p&gt;
&lt;p&gt;整个页面从创建到现在更新了3次，每次都是自动扫描触发的。&lt;/p&gt;
&lt;p&gt;不是手动维护的&amp;quot;死&amp;quot;文档，而是跟着我的使用持续进化的&amp;quot;活&amp;quot;知识。&lt;/p&gt;
&lt;p&gt;回看log.md的操作记录，5次自动入库覆盖了完全不同的领域：&lt;/p&gt;
&lt;p&gt;从MySQL大表DDL方案到OSINT被动验证方法论。&lt;/p&gt;
&lt;p&gt;这正是自动化的价值——它不会只记你&amp;quot;觉得重要&amp;quot;的东西。&lt;/p&gt;
&lt;p&gt;而是记录你&amp;quot;实际在用&amp;quot;的东西。&lt;/p&gt;
&lt;p&gt;如果你也在大量使用AI工具，强烈建议搭一个自己的知识库。&lt;/p&gt;
&lt;p&gt;不需要复杂，一个文件夹 + 一个扫描脚本就够了。&lt;/p&gt;
&lt;p&gt;关键不是工具选型，而是让知识自动沉淀。&lt;/p&gt;
&lt;p&gt;手动整理的知识库，最后都会变成没人维护的死文档。&lt;/p&gt;
&lt;p&gt;只有自动化的，才能活下来。&lt;/p&gt;
&lt;p&gt;关注 varkm，一起学习，一起成长&lt;/p&gt;
&lt;p&gt;下一篇讲怎么给这个知识库加上语义搜索，让它从&amp;quot;能找到&amp;quot;变成&amp;quot;能联想&amp;quot;&lt;/p&gt;</description></item><item><title>AI Agent 的定时任务：从「到点跑命令」到「到点帮你思考」</title><link>https://blog.kalend.top/2026/05/14/hermes-cron-tasks.html/</link><pubDate>Thu, 14 May 2026 00:00:00 +0800</pubDate><guid>https://blog.kalend.top/2026/05/14/hermes-cron-tasks.html/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;半夜3点磁盘满了，早上9点选题推荐准时推送——这些都不是我干的，是我的AI定时任务替我干的。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="先说结论"&gt;先说结论
&lt;/h2&gt;&lt;p&gt;AI Agent的cron定时任务，和传统的 &lt;code&gt;crontab&lt;/code&gt; 不是一回事。&lt;/p&gt;
&lt;p&gt;传统cron是&amp;quot;到点跑命令&amp;quot;，AI Agent的cron是**&amp;ldquo;到点唤醒一个AI帮你思考和执行&amp;rdquo;**。它能搜索、能分析、能写文件、能推送到微信。&lt;/p&gt;
&lt;p&gt;两种模式：&lt;strong&gt;脚本直出&lt;/strong&gt;（零token消耗，纯数据采集）和&lt;strong&gt;Agent模式&lt;/strong&gt;（有推理能力，会做判断。token可以理解为AI思考和输出的计费单位）。选型一句话：固定格式用脚本，需要思考的用Agent。&lt;/p&gt;
&lt;h2 id="传统cron到底差在哪"&gt;传统cron到底差在哪
&lt;/h2&gt;&lt;p&gt;先看一张对比：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th style="text-align: center"&gt;传统crontab&lt;/th&gt;
 &lt;th style="text-align: center"&gt;AI Agent cron&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;能力&lt;/td&gt;
 &lt;td style="text-align: center"&gt;执行固定命令&lt;/td&gt;
 &lt;td style="text-align: center"&gt;执行+推理+搜索+写文件&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;输出&lt;/td&gt;
 &lt;td style="text-align: center"&gt;发邮件，没人看&lt;/td&gt;
 &lt;td style="text-align: center"&gt;推到微信/Telegram&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;上下文&lt;/td&gt;
 &lt;td style="text-align: center"&gt;无&lt;/td&gt;
 &lt;td style="text-align: center"&gt;可注入skill、记忆、历史&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;智能程度&lt;/td&gt;
 &lt;td style="text-align: center"&gt;零&lt;/td&gt;
 &lt;td style="text-align: center"&gt;能判断&amp;quot;没事别烦我&amp;quot;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;失败处理&lt;/td&gt;
 &lt;td style="text-align: center"&gt;写个error日志&lt;/td&gt;
 &lt;td style="text-align: center"&gt;分析原因、换方案重试&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;传统cron最大的问题不是功能弱，而是&lt;strong&gt;输出没人看&lt;/strong&gt;。crontab每天给你发邮件，你打开过吗？&lt;/p&gt;
&lt;p&gt;AI Agent的cron不一样——它直接推到你的聊天工具，而且只在有事的时候才推。&lt;/p&gt;
&lt;h2 id="两种模式"&gt;两种模式
&lt;/h2&gt;&lt;h3 id="a-脚本直出no_agent模式"&gt;A. 脚本直出（no_agent模式）
&lt;/h3&gt;&lt;p&gt;原理很简单：bash/python脚本跑完 → stdout → 直接推送到你的聊天窗口。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不经过LLM，零token消耗。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;我配了一个系统健康巡查脚本，每天8:00和22:00自动跑，输出长这样：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-markdown" data-lang="markdown"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="gu"&gt;## 🟢 系统巡查报告
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;时间: 2026-05-12 08:01 | 运行: 3天23小时 | 负载: 0.06
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;资源
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 指标 | 数值 | 状态 |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;|--------|-------------------|------|
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| CPU | 3% | ✅ |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 内存 | 2268M/32131M (7%) | ✅ |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| Swap | 0M/7823M | ✅ |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;| 磁盘/ | 42G/140G (32%) | ✅ |
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;服务: sshd ✅ | AI助手 ✅
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;网络: 百度 ✅ | Google ✅
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这个脚本做了什么？&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;检查CPU/内存/Swap/磁盘，超阈值标⚠️&lt;/li&gt;
&lt;li&gt;检查关键服务是否活着（sshd、cron、AI进程）&lt;/li&gt;
&lt;li&gt;测试国内外网络连通性（ping + HTTP）&lt;/li&gt;
&lt;li&gt;拉最近1小时系统错误日志&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;任何一项异常，标题从🟢变⚠️&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;全部健康就一条消息，有异常自动高亮。每天看一眼就行。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;适合场景&lt;/strong&gt;：监控告警、固定格式数据采集、定期备份验证。核心特征是&lt;strong&gt;输出格式固定，不需要AI判断&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="b-agent模式"&gt;B. Agent模式
&lt;/h3&gt;&lt;p&gt;这个才是真正有意思的。&lt;/p&gt;
&lt;p&gt;原理：定时唤醒 → 加载你写的prompt → AI推理 → 调用工具（搜索、终端、文件） → 生成报告 → 推送给你。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;消耗token，但有&amp;quot;脑子&amp;quot;。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;比如我的公众号选题推荐，每周二9:00自动执行。它的信息采集分四个维度：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;维度1&lt;/strong&gt;：我最近做了什么（读cron状态、最近skill、产出文件、AI记忆）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;维度2&lt;/strong&gt;：我的系统最新更新了什么（搜GitHub release/changelog）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;维度3&lt;/strong&gt;：外面在我的系统上都在聊什么（Reddit/HN/掘金/知乎）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;维度4&lt;/strong&gt;：外面在聊什么（本周AI热点动态）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;它会&lt;strong&gt;先读本地环境&lt;/strong&gt;（最近装了什么、配了什么），&lt;strong&gt;再搜外部热点&lt;/strong&gt;，然后找两者的交集。出来的选题不是泛泛的&amp;quot;AI时代来了&amp;quot;，而是&amp;quot;我刚装了RTK省了80% token&amp;quot;这种实操内容。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;适合场景&lt;/strong&gt;：需要搜索分析、需要综合判断、需要阅读本地文件的场景。核心特征是&lt;strong&gt;每次输出不一样，需要AI&amp;quot;思考&amp;quot;&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="一个关键设计静默机制"&gt;一个关键设计：静默机制
&lt;/h2&gt;&lt;p&gt;Agent模式有个 &lt;code&gt;[SILENT]&lt;/code&gt; 机制——如果AI判断&amp;quot;确实没什么新东西&amp;quot;，它回复一个静默标记，系统就不推送。&lt;/p&gt;
&lt;p&gt;这个设计太重要了。&lt;/p&gt;
&lt;p&gt;传统监控最怕的是什么？&lt;strong&gt;告警疲劳&lt;/strong&gt;。天天给你发&amp;quot;一切正常&amp;quot;，你就不看了。突然有一天&amp;quot;不正常&amp;quot;了，你早就把它当噪音过滤掉了。&lt;/p&gt;
&lt;p&gt;静默机制反过来：&lt;strong&gt;没事别烦我，有事才说话。&lt;/strong&gt; 你的聊天窗口只出现真正需要关注的信息。&lt;/p&gt;
&lt;h2 id="从0配置一个cron-job"&gt;从0配置一个cron job
&lt;/h2&gt;&lt;p&gt;以健康巡查为例，完整流程：&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Step 1：写脚本&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;~/.hermes/scripts/health-check.sh&lt;/code&gt;，用bash采集系统信息，输出Markdown表格。关键点：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;用 &lt;code&gt;set -uo pipefail&lt;/code&gt; 防止静默失败&lt;/li&gt;
&lt;li&gt;设置阈值判断（CPU&amp;gt;80% ⚠️、内存&amp;gt;85% ⚠️）&lt;/li&gt;
&lt;li&gt;输出格式统一（Markdown表格，方便在聊天窗口阅读）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Step 2：创建cron&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;span class="lnt"&gt;15
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 脚本模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cronjob create &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name &lt;span class="s2"&gt;&amp;#34;系统健康巡查&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --script &lt;span class="s2"&gt;&amp;#34;health-check.sh&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --no-agent &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --schedule &lt;span class="s2"&gt;&amp;#34;0 8,22 * * *&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --deliver origin
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Agent模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;cronjob create &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --name &lt;span class="s2"&gt;&amp;#34;公众号选题推荐&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --prompt &lt;span class="s2"&gt;&amp;#34;你的prompt...&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --toolsets web,terminal,file &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --schedule &lt;span class="s2"&gt;&amp;#34;0 9 * * 2&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --deliver origin
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Step 3：验证&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;所有执行记录存在cron的output目录下，按时间命名。随时可以回查。&lt;/p&gt;
&lt;h2 id="进阶玩法"&gt;进阶玩法
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;链式执行&lt;/strong&gt;：job A采集数据 → job B分析报告（A跑完自动触发B）。用 &lt;code&gt;context_from&lt;/code&gt; 参数把上游输出注入下游。比如：健康巡查发现异常 → 自动触发诊断任务分析原因。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型锁定&lt;/strong&gt;：每个job可以指定不同模型。省钱的数据采集用小模型，重要的分析任务用大模型。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;目录隔离&lt;/strong&gt;：不同job可以指定不同的工作目录（&lt;code&gt;workdir&lt;/code&gt;），互不干扰。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="踩坑实录"&gt;踩坑实录
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;1. skill找不到&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;cron执行环境是独立的，不像主对话有完整的skill列表。解决方案：把需要的能力写在 &lt;code&gt;enabled_toolsets&lt;/code&gt; 里（web/terminal/file）。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. 纯数据采集用了Agent模式&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;固定格式的数据采集（比如健康检查），用Agent模式是纯浪费token。&lt;strong&gt;能用脚本解决的别用Agent。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. 输出太长被截断&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;微信单条消息有长度限制。设计prompt时加一句&amp;quot;输出控制在500字以内&amp;quot;，或者脚本里精简格式。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. 时区&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;schedule用的是系统时区。服务器在国内就不用管，在海外记得设 &lt;code&gt;TZ=Asia/Shanghai&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;5. 静默不等于失败&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;脚本模式下，stdout为空 = 不推送。如果你的脚本某个分支忘了echo，就会&amp;quot;消失&amp;quot;。确保每种情况都有输出。&lt;/p&gt;
&lt;h2 id="怎么选"&gt;怎么选
&lt;/h2&gt;&lt;p&gt;一句话决策树：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-gdscript3" data-lang="gdscript3"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;需要&lt;/span&gt;&lt;span class="n"&gt;AI判断吗&lt;/span&gt;&lt;span class="err"&gt;？&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;不需要&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="err"&gt;脚本直出（&lt;/span&gt;&lt;span class="n"&gt;no_agent&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;true&lt;/span&gt;&lt;span class="err"&gt;）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;│&lt;/span&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;监控、采集、固定格式报告&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;需要&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;Agent模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;搜索&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="err"&gt;分析&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;toolsets加web&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;├──&lt;/span&gt; &lt;span class="err"&gt;读本地文件&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="n"&gt;toolsets加terminal&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="n"&gt;file&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="err"&gt;└──&lt;/span&gt; &lt;span class="err"&gt;两个都要&lt;/span&gt; &lt;span class="err"&gt;→&lt;/span&gt; &lt;span class="err"&gt;都加上&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id="写在最后"&gt;写在最后
&lt;/h2&gt;&lt;p&gt;AI Agent的cron，本质上是把&amp;quot;定时执行&amp;quot;升级为**&amp;ldquo;定时思考&amp;rdquo;**——不是到点跑命令，而是到点让AI帮你做决策。&lt;/p&gt;
&lt;p&gt;不在线的时候，有人在替你盯着。&lt;/p&gt;</description></item></channel></rss>