<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Agent on Kalend's Blog</title><link>https://blog.kalend.top/tags/agent/</link><description>Recent content in Agent on Kalend's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Tue, 26 May 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://blog.kalend.top/tags/agent/index.xml" rel="self" type="application/rss+xml"/><item><title>11个PR，6.1k颗星：这个AI Agent的Web界面终于能用了</title><link>https://blog.kalend.top/2026/05/26/hermes-web-ui-v061-update.html/</link><pubDate>Tue, 26 May 2026 10:00:00 +0800</pubDate><guid>https://blog.kalend.top/2026/05/26/hermes-web-ui-v061-update.html/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;Hermes Web UI 刚发了 v0.6.1，11个PR合并。&lt;/p&gt;
&lt;p&gt;移动端断线重连、登录安全、Skills外部目录——都是用户催了几个月的刚需。&lt;/p&gt;
&lt;p&gt;我花了一晚上升级体验，把值得关心的点全整理出来了。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="先说结论"&gt;先说结论
&lt;/h2&gt;&lt;p&gt;这次更新解决了&lt;strong&gt;两个最烦人的问题&lt;/strong&gt;：移动端聊着聊着断线丢状态，以及多人共用时登录安全性不够。&lt;/p&gt;
&lt;p&gt;加上 Profile 管理优化和 Skills 外部目录支持，v0.6.1 是一个&lt;strong&gt;值得立刻升级&lt;/strong&gt;的版本。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="4个重点更新按优先级排"&gt;4个重点更新，按优先级排
&lt;/h2&gt;&lt;h3 id="1-移动端断线重连终于不丢状态了"&gt;1. 移动端断线重连——终于不丢状态了
&lt;/h3&gt;&lt;p&gt;之前用手机打开 Web UI，切个应用回来，&lt;strong&gt;连接就断了&lt;/strong&gt;。聊天记录、Agent运行状态全没了。&lt;/p&gt;
&lt;p&gt;v0.6.1 把移动端和后台聊天断线视为&lt;strong&gt;临时性故障&lt;/strong&gt;，重连后从服务器恢复运行状态。&lt;/p&gt;
&lt;p&gt;简单说：你切出去回个微信，回来还能接着聊。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;**实际体感：**从&amp;quot;每次切应用都要刷新页面&amp;quot;变成了&amp;quot;无感重连&amp;quot;。如果你主要用手机操作 Agent，这一个改动就值得升级。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h3 id="2-登录安全增强防暴力破解"&gt;2. 登录安全增强——防暴力破解
&lt;/h3&gt;&lt;p&gt;新增 IP 锁定机制：同一 IP 连续登录失败 &lt;strong&gt;10 次&lt;/strong&gt;，自动锁定。&lt;/p&gt;
&lt;p&gt;锁了之后，登录界面直接显示恢复命令：&lt;/p&gt;
&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;命令&lt;/th&gt;
 &lt;th&gt;作用&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;clear-lock&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;清除 IP 锁定&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;reset-default-login&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;重置默认登录凭据&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;同时，遗留的 &lt;code&gt;AUTH_DISABLED&lt;/code&gt; 绕过已被&lt;strong&gt;彻底移除&lt;/strong&gt;。多人环境下不再有免认证后门。&lt;/p&gt;
&lt;h3 id="3-skills-外部目录插件管理更灵活"&gt;3. Skills 外部目录——插件管理更灵活
&lt;/h3&gt;&lt;p&gt;现在可以在 Profile 配置中指定 &lt;code&gt;skills.external_dirs&lt;/code&gt;，从&lt;strong&gt;任意目录加载 Skills&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;规则很清晰：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;本地优先&lt;/strong&gt;：同名 Skill，本地版本覆盖外部版本&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;标记区分&lt;/strong&gt;：外部 Skills 会被标记，方便识别来源&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;热加载&lt;/strong&gt;：从活跃的 Profile 配置中直接读取&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这意味着你可以把通用 Skills 放在一个共享目录，多个 Profile 复用，不用再每个 Profile 复制一份。&lt;/p&gt;
&lt;h3 id="4-profile-管理列表更完整操作更精准"&gt;4. Profile 管理——列表更完整、操作更精准
&lt;/h3&gt;&lt;p&gt;Session 列表现在显示账户下&lt;strong&gt;所有可用 Profile&lt;/strong&gt;，不再只显示当前过滤后的。&lt;/p&gt;
&lt;p&gt;历史操作也更精准了：删除 session 时用 profile 限定目标，全局 Profile 变更时自动刷新 History 列表。&lt;/p&gt;
&lt;p&gt;加上 CLI 的 &lt;code&gt;node:sqlite&lt;/code&gt; 实验性警告也被干掉了——控制台终于干净了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="其他值得注意的改动"&gt;其他值得注意的改动
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;改动&lt;/th&gt;
 &lt;th&gt;影响&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;确认/澄清回复通道修复&lt;/td&gt;
 &lt;td&gt;Clarify 和 confirmation 消息走认证 socket，不再丢失&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;导航链接改进&lt;/td&gt;
 &lt;td&gt;支持新标签页打开、复制链接、持久化折叠侧边栏&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Session 链接修复&lt;/td&gt;
 &lt;td&gt;不再泄漏 Profile 过滤器到普通 session 列表&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;工具标记持久化&lt;/td&gt;
 &lt;td&gt;Bridge marker 在 tool/run 边界持久化，状态更可靠&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;hr&gt;
&lt;h2 id="我的升级建议"&gt;我的升级建议
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;如果你在用 Hermes Web UI&lt;/strong&gt;，直接升。移动端重连和安全修复是刚需，没有不升的理由。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;如果你还没用过&lt;/strong&gt;，6k+ Star、765 Fork——社区最活跃的第三方 Web UI，值得一试。&lt;/p&gt;
&lt;p&gt;多 Profile 管理、移动端支持、Skills 扩展，该有的都有了。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id="快速上手"&gt;快速上手
&lt;/h2&gt;&lt;p&gt;三步搞定：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;升级&lt;/strong&gt;：拉取最新代码，重新构建&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;配置&lt;/strong&gt;：设置 &lt;code&gt;AUTH_TOKEN&lt;/code&gt;，多用户环境下别用默认密码&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;验证&lt;/strong&gt;：手机打开 Web UI，切应用再切回来，确认无感重连生效&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;v0.6.1 合并了 11 个 PR（#971 ~ #1014），发布于 2026-05-25。仓库星标 6.1k，Fork 765。&lt;/p&gt;</description></item><item><title>5款Hermes Agent Web UI对比：只有2个值得装</title><link>https://blog.kalend.top/2026/05/23/hermes-web-ui-comparison.html/</link><pubDate>Sat, 23 May 2026 12:20:00 +0800</pubDate><guid>https://blog.kalend.top/2026/05/23/hermes-web-ui-comparison.html/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;用了半年 Hermes Agent，一直靠终端敲命令。直到有一天我想在手机上查个对话记录——没办法，只能SSH上去翻日志。于是我开始找 Web UI。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="先说结论"&gt;先说结论
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;只想装一个？选 hermes-webui（8.3K Star）。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;想要IDE级体验？hermes-workspace。其余三个，各有硬伤。&lt;/p&gt;
&lt;p&gt;下面逐个拆解。&lt;/p&gt;
&lt;h2 id="1-官方内嵌-dashboard"&gt;1. 官方内嵌 Dashboard
&lt;/h2&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;/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;hermes dashboard
&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;http://localhost:9119&lt;/code&gt;，FastAPI + Uvicorn 驱动。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;能干什么：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;查看和编辑配置文件（config.yaml）&lt;/li&gt;
&lt;li&gt;管理环境变量（.env）&lt;/li&gt;
&lt;li&gt;浏览会话列表&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;不能干什么：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不能聊天（没有对话界面）&lt;/li&gt;
&lt;li&gt;不能管理Skills、Cron任务&lt;/li&gt;
&lt;li&gt;不能在手机上用（只绑127.0.0.1）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;官方 Dashboard 本质是个配置编辑器。&lt;/p&gt;
&lt;p&gt;适合不需要Web聊天、只想改改配置的轻量用户。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;评分：&lt;/strong&gt; 安装 ★★★★★ | 功能 ★★☆☆☆ | 手机 ★☆☆☆☆ | 维护 ★★★★★&lt;/p&gt;
&lt;h2 id="2-nesquenahermes-webui---83k"&gt;2. nesquena/hermes-webui — ⭐ 8.3K
&lt;/h2&gt;&lt;p&gt;Python + 原生JS，三栏布局。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;安装：&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;/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;git clone https://github.com/nesquena/hermes-webui.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; hermes-webui
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pip install -r requirements.txt
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;python app.py
&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;不需要npm构建，不需要Docker。装完直接跑。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心功能：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完整对话界面（聊天、发图、文件上传）&lt;/li&gt;
&lt;li&gt;会话管理（创建、切换、删除）&lt;/li&gt;
&lt;li&gt;手机端自适应（三栏自动折叠）&lt;/li&gt;
&lt;li&gt;直接读取Hermes本地数据（会话、记忆、配置）&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;为什么推荐它：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;零构建步骤这一点就秒杀了大部分竞品。&lt;/p&gt;
&lt;p&gt;三栏布局在桌面端是会话列表 | 对话区 | 详情面板，手机上自动折叠为单栏。&lt;/p&gt;
&lt;p&gt;根据README描述，支持实时流式输出和Markdown渲染。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不足：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;不支持Cron任务管理&lt;/li&gt;
&lt;li&gt;不支持Kanban看板&lt;/li&gt;
&lt;li&gt;没有多用户系统&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;评分：&lt;/strong&gt; 安装 ★★★★★ | 功能 ★★★★☆ | 手机 ★★★★☆ | 维护 ★★★★☆&lt;/p&gt;
&lt;h2 id="3-outsourc-ehermes-workspace---47k"&gt;3. outsourc-e/hermes-workspace — ⭐ 4.7K
&lt;/h2&gt;&lt;p&gt;JavaScript，IDE风格多面板界面。&lt;/p&gt;
&lt;p&gt;2026年黑客松获奖项目。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;安装：&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;/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;git clone https://github.com/outsourc-e/hermes-workspace.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; hermes-workspace
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run dev
&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;需要Node.js环境，有构建步骤。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;核心功能：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;IDE风格多面板（对话、终端、记忆、Skills、检查器）&lt;/li&gt;
&lt;li&gt;内置终端模拟器&lt;/li&gt;
&lt;li&gt;记忆和Skills的可视化管理&lt;/li&gt;
&lt;li&gt;支持实时日志查看&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;适合谁：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;重度开发者，喜欢IDE布局，需要同时看对话、终端和状态。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;不足：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;需要npm构建（对纯Python用户不友好）&lt;/li&gt;
&lt;li&gt;手机端体验一般（面板太多，小屏挤不下）&lt;/li&gt;
&lt;li&gt;Star数最少，社区相对小&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;评分：&lt;/strong&gt; 安装 ★★★☆☆ | 功能 ★★★★★ | 手机 ★★☆☆☆ | 维护 ★★★☆☆&lt;/p&gt;
&lt;h2 id="4-ekkolearnaihermes-web-ui---58k"&gt;4. EKKOLearnAI/hermes-web-ui — ⭐ 5.8K
&lt;/h2&gt;&lt;p&gt;Vue3 + Koa，端口8648。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;安装：&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;/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;git clone https://github.com/EKKOLearnAI/hermes-web-ui.git
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; hermes-web-ui
&lt;/span&gt;&lt;/span&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;npm install
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm run build
&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;核心功能：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;全功能管理界面（聊天、会话、配置）&lt;/li&gt;
&lt;li&gt;支持8个平台渠道可视化（Telegram、Discord、Slack等）&lt;/li&gt;
&lt;li&gt;定时任务（Cron）管理&lt;/li&gt;
&lt;li&gt;用量分析面板&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;不足：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;构建步骤最复杂（前后端分离）&lt;/li&gt;
&lt;li&gt;Vue3技术栈对非前端开发者有门槛&lt;/li&gt;
&lt;li&gt;从功能来看，平台渠道可视化是亮点也是局限——大部分个人用户用不到8个平台&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;评分：&lt;/strong&gt; 安装 ★★☆☆☆ | 功能 ★★★★★ | 手机 ★★★☆☆ | 维护 ★★★★☆&lt;/p&gt;
&lt;h2 id="5-open-webui---138k"&gt;5. Open WebUI — ⭐ 138K+
&lt;/h2&gt;&lt;p&gt;138K Star的通用LLM前端，不是专为Hermes设计的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;怎么接Hermes：&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;/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;# 1. 启动Hermes API Server（端口8642）&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hermes gateway --platform api_server
&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;# 2. 启动Open WebUI&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;docker run -d -p 3000:8080 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e &lt;span class="nv"&gt;OPENAI_API_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;http://localhost:8642/v1 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; -e &lt;span class="nv"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;dummy &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ghcr.io/open-webui/open-webui:main
&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;通过Hermes的API Server（端口8642）接入。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;优势：&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;生态最大（138K Star，社区资源丰富）&lt;/li&gt;
&lt;li&gt;支持RAG、文件上传、图像生成等高级功能&lt;/li&gt;
&lt;li&gt;Docker一键部署&lt;/li&gt;
&lt;li&gt;多用户系统、权限管理&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;为什么不是首选：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Open WebUI是通用LLM前端，不是Hermes原生客户端。&lt;/p&gt;
&lt;p&gt;你无法管理Hermes特有的功能：Skills、Cron、记忆、Kanban、多Profile。&lt;/p&gt;
&lt;p&gt;它只能「聊天」，不能「管理Hermes」。&lt;/p&gt;
&lt;p&gt;适合需要多用户+RAG+文件分析的团队场景，不适合个人Hermes全功能管理。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;评分：&lt;/strong&gt; 安装 ★★★☆☆ | 功能 ★★★☆☆（Hermes维度） | 手机 ★★★★☆ | 维护 ★★★★★&lt;/p&gt;
&lt;h2 id="对比总表"&gt;对比总表
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th style="text-align: center"&gt;官方Dashboard&lt;/th&gt;
 &lt;th style="text-align: center"&gt;hermes-webui&lt;/th&gt;
 &lt;th style="text-align: center"&gt;hermes-workspace&lt;/th&gt;
 &lt;th style="text-align: center"&gt;hermes-web-ui&lt;/th&gt;
 &lt;th style="text-align: center"&gt;Open WebUI&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;Star&lt;/td&gt;
 &lt;td style="text-align: center"&gt;内置&lt;/td&gt;
 &lt;td style="text-align: center"&gt;8.3K&lt;/td&gt;
 &lt;td style="text-align: center"&gt;4.7K&lt;/td&gt;
 &lt;td style="text-align: center"&gt;5.8K&lt;/td&gt;
 &lt;td style="text-align: center"&gt;138K&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;极低&lt;/td&gt;
 &lt;td style="text-align: center"&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;✅&lt;/td&gt;
 &lt;td style="text-align: center"&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;✅&lt;/td&gt;
 &lt;td style="text-align: center"&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;Skills管理&lt;/td&gt;
 &lt;td style="text-align: center"&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;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;Cron管理&lt;/td&gt;
 &lt;td style="text-align: center"&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;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;❌&lt;/td&gt;
 &lt;td style="text-align: center"&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;✅&lt;/td&gt;
 &lt;td style="text-align: center"&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;❌&lt;/td&gt;
 &lt;td style="text-align: center"&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;无&lt;/td&gt;
 &lt;td style="text-align: center"&gt;npm&lt;/td&gt;
 &lt;td style="text-align: center"&gt;npm&lt;/td&gt;
 &lt;td style="text-align: center"&gt;Docker&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;日常使用&lt;/td&gt;
 &lt;td style="text-align: center"&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;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="选择建议"&gt;选择建议
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;个人用户，想最快用上Web界面：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;hermes-webui。三条命令装完，手机也能用。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;开发者，需要IDE级管理：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;hermes-workspace。终端、记忆、Skills全在一个界面。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;运维需求，管多平台+Cron：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;hermes-web-ui。唯一一个带Cron管理和渠道可视化的。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;团队场景，多用户+RAG：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Open WebUI。但别指望它管理Hermes特有功能。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;只是偶尔改改配置：&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;官方Dashboard就够了。&lt;code&gt;hermes dashboard&lt;/code&gt; 一条命令。&lt;/p&gt;
&lt;section style="margin:20px 0;padding:16px 20px;background:linear-gradient(135deg,#4a90d9,#357abd);border-radius:8px;text-align:center;"&gt;
&lt;p style="margin:0;color:#fff;font-size:16px;font-weight:bold;line-height:1.6;"&gt;关注 varkm，一起学习，一起成长&lt;/p&gt;
&lt;/section&gt;</description></item><item><title>从零搭建 Blog Writer Agent：让 AI 自己写文章、自己部署</title><link>https://blog.kalend.top/2026/05/15/blog-writer-agent-tutorial.html/</link><pubDate>Fri, 15 May 2026 17:30:00 +0800</pubDate><guid>https://blog.kalend.top/2026/05/15/blog-writer-agent-tutorial.html/</guid><description>
 &lt;blockquote&gt;
 &lt;p&gt;这是「多 Agent 协作」系列第 2 篇。第 1 篇讲了概念：&lt;a class="link" href="https://blog.kalend.top/2026/05/14/hermes-kanban-tutorial.html/" &gt;Kanban + Profile：让你的 AI Agent 自己管博客&lt;/a&gt;。这篇是纯实操——每一步都是我刚跑过的真实命令。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="先说结论"&gt;先说结论
&lt;/h2&gt;&lt;p&gt;搭一个会自己写博客的 AI Agent，&lt;strong&gt;7 步，2.5 分钟&lt;/strong&gt;。不是 demo，是真的能写文章、构建验证、部署上线的 Agent。&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;你：hermes kanban create &amp;#34;写一篇 Kanban 入门&amp;#34; --assignee blog-writer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;AI：自动写文章 → 构建验证 → 完成汇报
&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;发一条命令&lt;/strong&gt;。&lt;/p&gt;
&lt;h2 id="前置条件"&gt;前置条件
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;已安装 Hermes Agent（v0.13.0+）&lt;/li&gt;
&lt;li&gt;有一个 Hugo/Hexo 等静态博客项目&lt;/li&gt;
&lt;li&gt;Gateway 正在运行&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="第-1-步启用-kanban-toolset"&gt;第 1 步：启用 Kanban Toolset
&lt;/h2&gt;&lt;p&gt;Kanban 是&lt;strong&gt;隐藏 toolset&lt;/strong&gt;——&lt;code&gt;hermes tools list&lt;/code&gt; 里看不到它。需要手动在 &lt;code&gt;config.yaml&lt;/code&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;/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="c"&gt;# ~/.hermes/config.yaml&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;toolsets&lt;/span&gt;&lt;span class="p"&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="l"&gt;hermes-cli&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="l"&gt;kanban &lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="c"&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;config.yaml&lt;/code&gt; 底部确认 dispatcher 配置（通常已有）：&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;/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="nt"&gt;kanban&lt;/span&gt;&lt;span class="p"&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="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;dispatch_in_gateway&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&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="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;dispatch_interval_seconds&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;60&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="w"&gt; &lt;/span&gt;&lt;span class="nt"&gt;failure_limit&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="m"&gt;2&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;改完重启 gateway：&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;/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;systemctl restart hermes-gateway.service
&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="第-2-步创建-blog-writer-profile"&gt;第 2 步：创建 blog-writer Profile
&lt;/h2&gt;&lt;p&gt;Profile 就是&lt;strong&gt;一个独立的 AI 身份&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;/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;hermes profile create blog-writer --clone
&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;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;/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;Profile &amp;#39;blog-writer&amp;#39; created at ~/.hermes/profiles/blog-writer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Cloned config, .env, SOUL.md, and skills from default.
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Wrapper created: ~/.local/bin/blog-writer
&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;--clone&lt;/code&gt; 会复制当前 profile 的 API 密钥、配置、记忆文件，省得重新配置。&lt;/p&gt;
&lt;h2 id="第-3-步写-soulmd定义人格"&gt;第 3 步：写 SOUL.md（定义人格）
&lt;/h2&gt;&lt;p&gt;SOUL.md 决定了这个 Agent 的行为模式。给 blog-writer 写一个专门的人格：&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;span class="lnt"&gt;16
&lt;/span&gt;&lt;span class="lnt"&gt;17
&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;cat &amp;gt; ~/.hermes/profiles/blog-writer/SOUL.md &lt;span class="s"&gt;&amp;lt;&amp;lt; &amp;#39;EOF&amp;#39;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;# Blog Writer Agent
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;你是博客写作和部署专家。
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;## 职责
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;1. 撰写技术博客文章（Markdown + Hugo front matter）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;2. 构建验证（hugo --minify）
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;3. 部署到云存储
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;## 严格规则
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;- 日期必须是 RFC3339 格式：2026-05-15T10:00:00+08:00
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;- categories 和 tags 都要包含主题关键词
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;- description 必须填写
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;- **永远不要用 read_file → write_file 修改 Markdown**
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;- 构建后必须检查页面数
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s"&gt;EOF&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="第-4-步配置工作目录"&gt;第 4 步：配置工作目录
&lt;/h2&gt;&lt;p&gt;让 blog-writer 的默认工作目录指向博客项目：&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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 编辑 blog-writer 的 config.yaml&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 在 terminal 段添加：&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;terminal:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; cwd: /root/blog
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;toolsets:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- hermes-cli
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;- kanban
&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;这样 worker 被调度时，会自动 &lt;code&gt;cd&lt;/code&gt; 到博客目录。&lt;/p&gt;
&lt;h2 id="第-5-步初始化-kanban-看板"&gt;第 5 步：初始化 Kanban 看板
&lt;/h2&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;/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;hermes kanban init
&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;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;/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;Kanban DB initialized at ~/.hermes/kanban.db
&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;Discovered 3 profile(s) on disk:
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; blog-writer
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; default
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; yuan
&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;看板是一张 SQLite 表，所有 profile 共享。验证一下：&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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hermes kanban stats &lt;span class="c1"&gt;# 0 tasks (空看板)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hermes kanban assignees &lt;span class="c1"&gt;# blog-writer (idle)&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="第-6-步创建第一个写作任务"&gt;第 6 步：创建第一个写作任务
&lt;/h2&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;/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;hermes kanban 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; --assignee blog-writer &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --skill hugo-blog &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --workspace &lt;span class="s1"&gt;&amp;#39;dir:/root/blog&amp;#39;&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; --body &lt;span class="s1"&gt;&amp;#39;写一篇 Kanban 入门文章。要求：RFC3339日期、categories含hermes、构建验证&amp;#39;&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; &lt;span class="s1"&gt;&amp;#39;测试任务：写一篇 Kanban 入门文章&amp;#39;&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;/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;/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;Created t_9dd47956 (ready, assignee=blog-writer)
&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;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;参数&lt;/th&gt;
 &lt;th&gt;作用&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--assignee blog-writer&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;指定谁来做&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--skill hugo-blog&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;给 worker 注入博客相关知识&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--workspace dir:/root/blog&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;工作目录（不是临时 scratch）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;code&gt;--body '...'&lt;/code&gt;&lt;/td&gt;
 &lt;td&gt;任务的详细要求&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="第-7-步等-2-分钟验收"&gt;第 7 步：等 2 分钟，验收
&lt;/h2&gt;&lt;p&gt;Dispatcher 每 60 秒轮询一次 ready 任务。大约 70 秒后：&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-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;hermes kanban stats
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# blog-writer running=1 ← 正在执行&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;再等 82 秒：&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;/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;hermes kanban show t_9dd47956
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# status: done&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# summary: 完成测试文章「Hermes Kanban 快速入门」，186页构建通过&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# Run #1: completed @blog-writer 82s&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;strong&gt;文章已经写好了。&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;/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&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;title: &amp;#34;Hermes Kanban 快速入门&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;date: 2026-05-15T17:00:00+08:00
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;categories: [&amp;#34;hermes&amp;#34;]
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;tags: [&amp;#34;hermes&amp;#34;, &amp;#34;kanban&amp;#34;, &amp;#34;agent&amp;#34;]
&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="gu"&gt;## 什么是 Kanban？
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Hermes Kanban 是内置的任务调度系统...
&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;front matter 格式正确，日期 RFC3339，构建验证通过。全流程从创建到完成 &lt;strong&gt;2 分 22 秒&lt;/strong&gt;。&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;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;你发命令 → kanban create（SQLite 写入一条 ready 任务）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 60s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;Gateway dispatcher 轮询 → 发现 ready 任务 → claim
&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;spawn 子进程：hermes -p blog-writer --skills kanban-worker --skills hugo-blog chat -q &amp;#34;work kanban task t_9dd47956&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ↓ 82s
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;blog-writer 读任务 → 写文章 → hugo 构建 → kanban_complete
&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;任务状态 → done，你收到通知
&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;&lt;strong&gt;Dispatcher 嵌在 Gateway 里&lt;/strong&gt;，不需要给 blog-writer 单独跑 gateway&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Worker 是独立子进程&lt;/strong&gt;，&lt;code&gt;hermes -p blog-writer&lt;/code&gt; 启动，完成后自行退出&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;code&gt;--skills&lt;/code&gt; 自动注入&lt;/strong&gt;，每个 worker 都会加载 &lt;code&gt;kanban-worker&lt;/code&gt; skill（行为规范）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claim TTL = 15 分钟&lt;/strong&gt;，超时自动 reclaim，不会永远卡住&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="我踩过的-4-个坑"&gt;我踩过的 4 个坑
&lt;/h2&gt;&lt;h3 id="坑-1hermes-不在-path-中"&gt;坑 1：hermes 不在 PATH 中
&lt;/h3&gt;&lt;p&gt;Dispatcher spawn worker 时执行 &lt;code&gt;hermes -p blog-writer ...&lt;/code&gt;，如果 &lt;code&gt;hermes&lt;/code&gt; 不在 PATH 里，直接失败。&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;/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;which hermes &lt;span class="c1"&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;&lt;span class="c1"&gt;# 修复&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;ln -sf ~/.hermes/hermes-agent/venv/bin/hermes /usr/local/bin/hermes
&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;h3 id="坑-2blog-writer-不需要独立-gateway"&gt;坑 2：blog-writer 不需要独立 gateway
&lt;/h3&gt;&lt;p&gt;一开始我以为每个 profile 都得跑自己的 gateway。错了。Dispatcher 运行在&lt;strong&gt;主 gateway&lt;/strong&gt; 里，通过 &lt;code&gt;hermes -p blog-writer&lt;/code&gt; spawn 子进程。子进程不需要消息平台，不需要 gateway。&lt;/p&gt;
&lt;p&gt;如果你给 blog-writer 启动了 gateway，会和主 gateway 冲突（weixin token 被占）。&lt;/p&gt;
&lt;h3 id="坑-3kanban-toolset-是隐藏的"&gt;坑 3：kanban toolset 是隐藏的
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;hermes tools list&lt;/code&gt; 不显示 kanban。它是条件注册的——只有 config.yaml 的 &lt;code&gt;toolsets&lt;/code&gt; 列表里有 &lt;code&gt;kanban&lt;/code&gt; 才会激活。很多教程会遗漏这一步。&lt;/p&gt;
&lt;h3 id="坑-4workspace-默认是-scratch"&gt;坑 4：workspace 默认是 scratch
&lt;/h3&gt;&lt;p&gt;如果不指定 &lt;code&gt;--workspace&lt;/code&gt;，默认用 &lt;code&gt;scratch&lt;/code&gt;（临时目录，任务完成后会被清理）。博客项目要用 &lt;code&gt;dir:/root/blog&lt;/code&gt;，否则写完文章就被删了。&lt;/p&gt;
&lt;h2 id="时间线回顾"&gt;时间线回顾
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;时刻&lt;/th&gt;
 &lt;th&gt;事件&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;17:07:00&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;kanban create&lt;/code&gt; → 任务 ready&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;17:07:10&lt;/td&gt;
 &lt;td&gt;Dispatcher claim + spawn worker&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;17:08:32&lt;/td&gt;
 &lt;td&gt;Worker 完成，kanban_complete&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;&lt;strong&gt;总耗时&lt;/strong&gt;&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;1 分 32 秒（从创建到完成）&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="下一步"&gt;下一步
&lt;/h2&gt;&lt;p&gt;这是系列第 2 篇。接下来的内容：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;第 3 篇&lt;/strong&gt;：多任务编排——让多个 Agent 同时写多篇文章，Pipeline + Fan-out 实战&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;第 4 篇&lt;/strong&gt;：踩坑全记录——格式陷阱、模型选择、成本控制、调试技巧&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;关注 varkm，一起学习，一起成长&lt;/p&gt;</description></item><item><title>Hermes Agent</title><link>https://blog.kalend.top/wiki/entities/hermes-agent/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.kalend.top/wiki/entities/hermes-agent/</guid><description>&lt;h1 id="hermes-agent"&gt;Hermes Agent
&lt;/h1&gt;&lt;h2 id="概述"&gt;概述
&lt;/h2&gt;&lt;p&gt;Hermes Agent 是 [[nous-research]] 开发的开源自主 AI 代理框架。支持多平台（CLI、Telegram、Discord、微信等）、多模型提供商，核心特点是内置技能学习循环和五层记忆架构。&lt;/p&gt;
&lt;h2 id="核心架构"&gt;核心架构
&lt;/h2&gt;&lt;h3 id="配置文件层级"&gt;配置文件层级
&lt;/h3&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;层级&lt;/th&gt;
 &lt;th&gt;文件&lt;/th&gt;
 &lt;th&gt;用途&lt;/th&gt;
 &lt;th&gt;安全级别&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;核心&lt;/td&gt;
 &lt;td&gt;config.yaml&lt;/td&gt;
 &lt;td&gt;主配置：模型、工具、网关、MCP&lt;/td&gt;
 &lt;td&gt;🟡&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;核心&lt;/td&gt;
 &lt;td&gt;.env&lt;/td&gt;
 &lt;td&gt;API密钥与机密&lt;/td&gt;
 &lt;td&gt;🔴&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;核心&lt;/td&gt;
 &lt;td&gt;SOUL.md&lt;/td&gt;
 &lt;td&gt;Agent性格，每轮加载无需重启&lt;/td&gt;
 &lt;td&gt;🟢&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数据&lt;/td&gt;
 &lt;td&gt;state.db&lt;/td&gt;
 &lt;td&gt;会话状态&lt;/td&gt;
 &lt;td&gt;🟡&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数据&lt;/td&gt;
 &lt;td&gt;sessions/&lt;/td&gt;
 &lt;td&gt;会话记录&lt;/td&gt;
 &lt;td&gt;🟢 可删&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数据&lt;/td&gt;
 &lt;td&gt;memories/&lt;/td&gt;
 &lt;td&gt;MEMORY.md + USER.md 热记忆&lt;/td&gt;
 &lt;td&gt;🟡&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数据&lt;/td&gt;
 &lt;td&gt;memory.db&lt;/td&gt;
 &lt;td&gt;记忆后端（可删，数据在.md）&lt;/td&gt;
 &lt;td&gt;🟢&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;数据&lt;/td&gt;
 &lt;td&gt;kanban.db&lt;/td&gt;
 &lt;td&gt;看板任务数据&lt;/td&gt;
 &lt;td&gt;🟡&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;扩展&lt;/td&gt;
 &lt;td&gt;skills/&lt;/td&gt;
 &lt;td&gt;技能系统（更新不覆盖）&lt;/td&gt;
 &lt;td&gt;🟢&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;扩展&lt;/td&gt;
 &lt;td&gt;scripts/&lt;/td&gt;
 &lt;td&gt;脚本&lt;/td&gt;
 &lt;td&gt;🟢&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;扩展&lt;/td&gt;
 &lt;td&gt;hooks/&lt;/td&gt;
 &lt;td&gt;事件钩子&lt;/td&gt;
 &lt;td&gt;🟢&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="profile-隔离系统"&gt;Profile 隔离系统
&lt;/h3&gt;&lt;p&gt;每个 profile 位于 &lt;code&gt;profiles/&amp;lt;name&amp;gt;/&lt;/code&gt;，是独立的 Hermes home：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;拥有独立的 config.yaml、SOUL.md、sessions、memories、skills、auth、cron、kanban&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;关键限制&lt;/strong&gt;：全局 skills/ 对 profile worker 不可见，需手动复制到 &lt;code&gt;profiles/&amp;lt;name&amp;gt;/skills/&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;适用场景：多角色隔离（如 blog-writer、reviewer 等独立 profile）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="skill-系统"&gt;Skill 系统
&lt;/h3&gt;&lt;p&gt;按分类组织在 &lt;code&gt;skills/&lt;/code&gt;，每个技能包含 SKILL.md 与可选的 refs/templates/scripts。技能从经验中积累可复用程序化知识，跨会话持久化，且不会被 Hermes 更新覆盖。&lt;/p&gt;
&lt;h3 id="记忆系统"&gt;记忆系统
&lt;/h3&gt;&lt;p&gt;五层记忆架构（详见 [[memory-layered-architecture]]）：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;L0: Persona (SOUL.md) — 每轮注入&lt;/li&gt;
&lt;li&gt;L1: 热记忆 (MEMORY.md + USER.md) — 每轮注入&lt;/li&gt;
&lt;li&gt;L2: [[mempalace]] 语义检索 — 按需&lt;/li&gt;
&lt;li&gt;L3: 知识图谱 — 按需&lt;/li&gt;
&lt;li&gt;L4: 会话历史 — 按需&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="多平台网关"&gt;多平台网关
&lt;/h3&gt;&lt;p&gt;支持 CLI、Telegram、Discord、微信（WeChat）、WhatsApp、Slack 等。网关状态保存在 gateway_state.json 和各平台子目录中。&lt;/p&gt;
&lt;h2 id="版本"&gt;版本
&lt;/h2&gt;&lt;p&gt;当前 v0.14.0。更新命令：&lt;code&gt;hermes update&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id="相关"&gt;相关
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[[nous-research]] — 开发团队&lt;/li&gt;
&lt;li&gt;[[llm-wiki]] — 知识库方案&lt;/li&gt;
&lt;li&gt;[[obsidian]] — 笔记工具集成&lt;/li&gt;
&lt;li&gt;[[mempalace]] — 记忆系统&lt;/li&gt;
&lt;li&gt;[[opencode]] — 编程Agent，可通过delegate_task编排&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>OpenClaw</title><link>https://blog.kalend.top/wiki/entities/openclaw/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.kalend.top/wiki/entities/openclaw/</guid><description>&lt;h1 id="openclaw"&gt;OpenClaw
&lt;/h1&gt;&lt;h2 id="概述"&gt;概述
&lt;/h2&gt;&lt;p&gt;OpenClaw（小龙虾🦞）是 [[hermes-agent]] 的直接竞品，定位为全平台个人 AI 助手。&lt;/p&gt;
&lt;h2 id="项目信息"&gt;项目信息
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;项目&lt;/th&gt;
 &lt;th&gt;详情&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;GitHub Stars&lt;/td&gt;
 &lt;td&gt;37.2万&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;语言&lt;/td&gt;
 &lt;td&gt;TypeScript&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;许可证&lt;/td&gt;
 &lt;td&gt;MIT&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;创建时间&lt;/td&gt;
 &lt;td&gt;2025-11&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;赞助商&lt;/td&gt;
 &lt;td&gt;OpenAI、GitHub、NVIDIA、Vercel&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="核心特性"&gt;核心特性
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;20+ 渠道支持（含微信/QQ）&lt;/li&gt;
&lt;li&gt;Voice Wake（语音唤醒）&lt;/li&gt;
&lt;li&gt;Live Canvas（实时画布）&lt;/li&gt;
&lt;li&gt;原生 App（桌面+移动）&lt;/li&gt;
&lt;li&gt;ClawHub：5400+ 社区 skills&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="与-hermes-的设计哲学差异"&gt;与 Hermes 的设计哲学差异
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;维度&lt;/th&gt;
 &lt;th&gt;OpenClaw&lt;/th&gt;
 &lt;th&gt;Hermes Agent&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;定位&lt;/td&gt;
 &lt;td&gt;全平台个人助手&lt;/td&gt;
 &lt;td&gt;终端 Agent 框架 + 多 Agent 编排&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;语言&lt;/td&gt;
 &lt;td&gt;TypeScript&lt;/td&gt;
 &lt;td&gt;Python&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;记忆系统&lt;/td&gt;
 &lt;td&gt;内置&lt;/td&gt;
 &lt;td&gt;五层架构 + [[mempalace]]&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;扩展&lt;/td&gt;
 &lt;td&gt;ClawHub 社区&lt;/td&gt;
 &lt;td&gt;Skill 系统 + Kanban Pipeline&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;编排&lt;/td&gt;
 &lt;td&gt;单 Agent&lt;/td&gt;
 &lt;td&gt;多 Agent（orchestrator + worker）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="共存部署"&gt;共存部署
&lt;/h2&gt;&lt;p&gt;在同一台机器上同时运行 Hermes 和 OpenClaw。OpenClaw 使用独立的 [[mempalace]] 实例（/root/.mempalace/palace-openclaw/），避免 ChromaDB 并发写冲突。&lt;/p&gt;
&lt;h2 id="相关"&gt;相关
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[[hermes-agent]] — 直接竞品&lt;/li&gt;
&lt;li&gt;[[mempalace]] — 共享记忆系统（隔离实例）&lt;/li&gt;
&lt;li&gt;[[opencode]] — 终端编程助手（互补而非竞争）&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>OpenCode</title><link>https://blog.kalend.top/wiki/entities/opencode/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.kalend.top/wiki/entities/opencode/</guid><description>&lt;h1 id="opencode"&gt;OpenCode
&lt;/h1&gt;
 &lt;blockquote&gt;
 &lt;p&gt;开源终端编程助手，CLI + TUI 双模式，多 Provider 支持，MCP 生态扩展。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="概述"&gt;概述
&lt;/h2&gt;&lt;p&gt;OpenCode 是一个开源的终端编程助手（原 sst/opencode，现 anomalyco/opencode），提供命令行和 TUI 两种交互模式。核心设计理念是让开发者在终端中完成从编码到代码审查的全流程，同时支持多个 LLM Provider 无缝切换。&lt;/p&gt;
&lt;h2 id="核心特性"&gt;核心特性
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;特性&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;双 Agent 模式&lt;/td&gt;
 &lt;td&gt;Build Agent（执行）+ Plan Agent（规划），可切换&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;多 Provider&lt;/td&gt;
 &lt;td&gt;Claude、GPT、GLM、OpenRouter 等，运行时切换&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;MCP 集成&lt;/td&gt;
 &lt;td&gt;draw.io、数据库、浏览器等扩展能力&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;会话管理&lt;/td&gt;
 &lt;td&gt;会话恢复、并行 worktree 开发&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;代码审查&lt;/td&gt;
 &lt;td&gt;&lt;code&gt;opencode pr&lt;/code&gt; 原生 PR review&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="安装与使用"&gt;安装与使用
&lt;/h2&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;/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;npm i -g opencode-ai@latest
&lt;/span&gt;&lt;/span&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;brew install anomalyco/tap/opencode
&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;# 一次性任务&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;opencode run &lt;span class="s2"&gt;&amp;#34;添加单元测试&amp;#34;&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;&lt;span class="c1"&gt;# TUI 交互模式&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;opencode
&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;# PR 审查&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;opencode pr
&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;~/.config/opencode/config.json&lt;/code&gt; 或项目级 &lt;code&gt;opencode.json&lt;/code&gt;&lt;/p&gt;
&lt;h2 id="生态工具"&gt;生态工具
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;GStack&lt;/strong&gt;: 产品方法论工具&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OhMyOpenCode&lt;/strong&gt;: 工程增强工具&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;MCP Servers&lt;/strong&gt;: &lt;code&gt;@drawio/mcp&lt;/code&gt; 等社区 MCP 服务器&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="与-hermes-agent-的关系"&gt;与 [[hermes-agent]] 的关系
&lt;/h2&gt;&lt;p&gt;OpenCode 作为编程专用 Agent，可以与 [[hermes-agent]] 的编排能力结合。Hermes 通过 &lt;code&gt;delegate_task&lt;/code&gt; 可以将编码任务委派给 OpenCode 执行，形成「Hermes 规划 + OpenCode 编码」的协作模式。专题规划中也考虑了 &amp;ldquo;OpenCode + Hermes 编排&amp;rdquo; 作为额外文章。&lt;/p&gt;
&lt;h2 id="与-openclaw-的区别"&gt;与 [[openclaw]] 的区别
&lt;/h2&gt;&lt;p&gt;[[openclaw]]（37.2万星）定位是全平台个人助手（微信/QQ等20+渠道），而 OpenCode 专注于终端编程场景。两者互补而非竞争。&lt;/p&gt;
&lt;h2 id="专题规划"&gt;专题规划
&lt;/h2&gt;&lt;p&gt;忞计划撰写 8 篇 OpenCode 专题文章，从入门到高级用法，覆盖安装配置、TUI 深度使用、多模型切换、MCP 生态、实战案例、并行开发等主题。&lt;/p&gt;
&lt;h2 id="来源"&gt;来源
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;2026-05-24 会话：OpenCode 专题规划&lt;/li&gt;
&lt;li&gt;2026-05-23 会话：OpenCode 与 Hermes Web UI 研究&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>自动记忆提取 (Auto Memory Extraction)</title><link>https://blog.kalend.top/wiki/entities/auto-memory-extraction/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://blog.kalend.top/wiki/entities/auto-memory-extraction/</guid><description>&lt;h1 id="自动记忆提取"&gt;自动记忆提取
&lt;/h1&gt;&lt;h2 id="定义"&gt;定义
&lt;/h2&gt;&lt;p&gt;AI Agent 在会话结束时自动从对话中提取值得长期记住的信息，分类存入向量数据库，实现跨会话的持久记忆。&lt;/p&gt;
&lt;h2 id="核心架构"&gt;核心架构
&lt;/h2&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;/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;对话结束 → on_session_end() → 后台线程
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├─ P2: 预取已有记忆 → 注入prompt（减少重复提取）
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├─ P0: 调用LLM提取 → JSON输出(persona/episodic/instruction)
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; ├─ P1: 向量去重 → ChromaDB相似度检查
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; └─ 存入MemPalace drawers
&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;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;类型&lt;/th&gt;
 &lt;th&gt;说明&lt;/th&gt;
 &lt;th&gt;存储wing&lt;/th&gt;
 &lt;th&gt;示例&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;persona&lt;/td&gt;
 &lt;td&gt;用户偏好、习惯、身份&lt;/td&gt;
 &lt;td&gt;user&lt;/td&gt;
 &lt;td&gt;喜欢暗色模式&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;episodic&lt;/td&gt;
 &lt;td&gt;具体事件和行动&lt;/td&gt;
 &lt;td&gt;episodic&lt;/td&gt;
 &lt;td&gt;完成博客主题迁移&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;instruction&lt;/td&gt;
 &lt;td&gt;工作流程、规则、方案&lt;/td&gt;
 &lt;td&gt;instruction&lt;/td&gt;
 &lt;td&gt;部署前先hugo &amp;ndash;minify测试&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="实施要点"&gt;实施要点
&lt;/h2&gt;&lt;h3 id="提取模型选择"&gt;提取模型选择
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;推荐：GLM-4-Flash&lt;/strong&gt; — 免费、3-7秒延迟、中文理解好&lt;/li&gt;
&lt;li&gt;不推荐GLM-4.7-Flash — 推理模型，28秒延迟&lt;/li&gt;
&lt;li&gt;不推荐本地模型 — RAM占用高、15-25秒延迟&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="去重阈值"&gt;去重阈值
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;ChromaDB cosine distance &amp;lt; 0.15（约92%相似度）&lt;/li&gt;
&lt;li&gt;范围：同wing内比较&lt;/li&gt;
&lt;li&gt;效果：同对话重复提取90%+被拦截&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="prompt-cachep2"&gt;Prompt Cache（P2）
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;提取前预取user和instruction wing的已有记忆&lt;/li&gt;
&lt;li&gt;注入prompt的&amp;quot;已知记忆&amp;quot;区&lt;/li&gt;
&lt;li&gt;上限15条、500字符，避免bloat&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="配置"&gt;配置
&lt;/h2&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-json" data-lang="json"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;// mempalace.json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&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;&amp;#34;auto_extract&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&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;&amp;#34;extract_model&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;glm-4-flash&amp;#34;&lt;/span&gt;&lt;span class="p"&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;&amp;#34;extract_base_url&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;https://open.bigmodel.cn/api/paas/v4&amp;#34;&lt;/span&gt;&lt;span class="p"&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;&amp;#34;extract_api_key&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;&amp;#34;&lt;/span&gt; &lt;span class="c1"&gt;// 留空则自动从环境变量GLM_API_KEY加载
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="p"&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;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;指标&lt;/th&gt;
 &lt;th&gt;值&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;提取延迟&lt;/td&gt;
 &lt;td&gt;3-7秒（后台异步）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;Token消耗&lt;/td&gt;
 &lt;td&gt;300-500/次&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;成本&lt;/td&gt;
 &lt;td&gt;¥0（免费模型）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;分类准确率&lt;/td&gt;
 &lt;td&gt;&amp;gt;90%&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;去重有效率&lt;/td&gt;
 &lt;td&gt;&amp;gt;90%&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;预估月成本&lt;/td&gt;
 &lt;td&gt;&amp;lt;¥0.5（10次/天）&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="适用场景"&gt;适用场景
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;有ChromaDB/MemPalace等向量存储的Agent系统&lt;/li&gt;
&lt;li&gt;支持MemoryProvider插件架构（on_session_end钩子）&lt;/li&gt;
&lt;li&gt;有免费LLM API可用（智谱GLM-4-Flash、Google Gemini Flash等）&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="扩展方向"&gt;扩展方向
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;记忆分层（未实施）&lt;/strong&gt;：温/冷/归档，按访问频率衰减。当前20条记忆无需分层，预估到1000+条再评估&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;知识图谱集成&lt;/strong&gt;：提取的记忆同步写入KG，支持关系查询&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;跨Agent共享&lt;/strong&gt;：多Agent共用同一MemPalace实例&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="相关概念"&gt;相关概念
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[[MemPalace]] — 本地向量记忆存储&lt;/li&gt;
&lt;li&gt;[[Memory Provider]] — Agent记忆插件接口&lt;/li&gt;
&lt;li&gt;[[ChromaDB]] — 嵌入向量数据库&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>