这一节讨论的是系统设计,不是具体命令。读的时候可以同时抓住两个维度:第一,一份资料进入胶囊系统以后,会按什么流程被处理;第二,每个动作分别由 Hermes 和飞书承担什么职责。流程用来说明动作顺序,分层用来说明职责边界。
7.1 先按流程理解资料处理过程
一份资料进入胶囊系统以后,大致会经过下面这条线:
用户提交资料
↓
Hermes 接收并做入口判断
↓
Hermes 抽取正文,生成标准化证据
↓
飞书保存证据页
↓
飞书多维表格记录索引和处理状态
↓
Hermes 阅读证据,判断主题和资料关系
↓
Hermes 更新主题页、概念页或综合页
↓
飞书保存更新后的 Wiki 页面
这条流程里,Hermes 和飞书不是并列替代关系。Hermes 负责做判断,飞书负责保存判断结果和中间状态。
比如用户丢进来一篇关于 Embedding 的文章。Hermes 先把正文抽出来,整理成可以核对的 Markdown。飞书保存这份证据页,多维表格记录来源、状态、证据页链接和目标主题。接着 Hermes 阅读证据,判断这篇资料是否补充“Embedding 向量”主题页,是否涉及“向量空间”“余弦相似度”这些概念页。最后,Hermes 改写对应的 Wiki 页面,再把结果保存回飞书。
这里最重要的是:流程不能停在“保存资料”。如果只把文章存进飞书,那只是换了一个收藏夹。胶囊系统真正要做的,是让这份资料进入主题演化。
7.2 再按分层明确职责边界
流程表达的是动作顺序,分层表达的是职责边界。
把胶囊系统放到 Hermes + 飞书里,可以先这样分:
| 层 | 飞书负责什么 | Hermes 负责什么 |
|---|---|---|
| 交互层 | 作为可选入口,比如飞书频道、消息和文档入口 | 作为主网关,接收用户资料和指令 |
| 证据层 | 保存标准化后的证据页 | 抽取正文,清理噪音,生成 Markdown 证据 |
| 索引层 | 用多维表格记录来源、状态、证据页和目标主题 | 读取和更新索引,决定下一步处理动作 |
| 理解层 | 提供证据页和索引记录给 Hermes 读取 | 判断主题、观点、重复、冲突和可引用场景 |
| 演化层 | 保存主题页、概念页和综合页 | 融合新内容,校正旧判断,维护页面结构 |
| 内化层 | 展示主题索引、当前判断和知识页 | 在写作、方案和问答中调用这些知识页 |
这张表不是为了把系统拆得很复杂,而是为了避免职责混乱。
飞书不是大脑。不要期待飞书替我们理解资料。飞书最擅长的是保存和展示:文档、知识库、多维表格、权限、协作、搜索。它应该承担的是工作空间和数据承载层。
Hermes 也不是数据库。不要让 Hermes 把所有状态都记在对话里。Hermes 的优势是理解和执行:它能阅读证据,判断关系,调用 CLI,更新飞书里的页面和表格。它应该承担的是 Agent 维护层。
这个分工如果没有定清楚,后面很容易变成一堆临时脚本:今天把资料写进一个文档,明天把摘要丢进另一个表格,过几天又不知道哪份资料已经处理过。胶囊系统要长期使用,就必须让每一层都有稳定位置。
7.3 飞书承载哪些东西
飞书在这套方案里主要承担四类东西。
云文档和知识库保存证据与 Wiki
证据页、主题页、概念页、综合页,都适合放在飞书云文档或飞书知识库里。
证据页保存的是标准化后的正文。网页可以转成 Markdown,PDF 可以抽取正文,音频可以先转写成文字。只要这份文本足够完整,后面还能回到来源核对,它就可以作为证据层的主要材料。
主题页、概念页和综合页则是演化层的产物。它们不是原文,也不是摘要,而是 Hermes 持续维护出来的 Wiki 页面。用户可以直接在飞书里阅读这些页面,Hermes 也可以继续修改它们。
这就是飞书的第一个价值:它让证据和 Wiki 都有一个可见、可读、可协作的位置。
多维表格管理资料状态
资料一多,只靠文档目录是不够的。
胶囊系统需要知道每一份资料从哪里来,证据页在哪里,当前处理到哪一步,是否参与主题演化,最后影响了哪个主题页。这些信息适合放在飞书多维表格里。
第一版索引表可以先保留这些字段:
| 字段 | 作用 |
|---|---|
| 标题 | 资料的可读名称 |
| 来源类型 | URL、PDF、音频、图片、纯文本等 |
| 原始链接 | 回到来源的地址 |
| 证据页 | 飞书证据文档或知识库路径 |
| 入库时间 | 资料进入系统的时间 |
| 处理状态 | 待处理、已入库、已理解、已演化、不被采纳等 |
| 主题 | Hermes 判断出来的目标主题 |
| 参与演化 | 这份资料是否被主题页采纳 |
| 目标主题页 | 它影响了哪个主题页 |
| 判断理由 | 被采纳或不被采纳的简要理由 |
这个表不是为了好看,而是为了让系统可管理。
比如一份资料被判断为“不被采纳”,它可以不再进入主题演化,但索引层仍然要留下轻量记录。以后同一份资料再次进入,Hermes 才知道它已经处理过,不需要重新完整执行一遍。
搜索和目录帮助 Hermes 找资料
飞书本身有搜索能力,知识库也有目录结构。第一版可以先利用这些能力,不必一开始就做复杂的向量数据库。
Hermes 要更新一个主题页时,通常需要先找到相关证据、旧主题页、概念页和索引记录。飞书的搜索、知识库目录和多维表格筛选,都可以为 Hermes 提供候选材料。
当然,飞书搜索不能替代 Hermes 的理解。搜索只能帮 Hermes 找到可能相关的页面,真正判断“这份资料和旧主题是什么关系”,仍然要由 Hermes 完成。
权限和协作交给飞书
知识系统如果只在本地目录里,很快会遇到协作和权限问题。
飞书本来就有用户、群组、文档权限、知识库空间和协作编辑能力。用飞书承载证据和 Wiki,可以少处理很多非核心问题。用户要看某篇主题页,可以直接打开飞书文档;要和别人协作,也可以通过飞书权限来控制。
这也是本教材选择飞书的重要原因之一。我们要讨论的是胶囊系统,不是重新开发一个文档协作平台。
7.4 Hermes 承担哪些判断
飞书负责保存,但保存只是前半段。
胶囊系统真正的难点,是判断资料和知识结构之间的关系。这部分要由 Hermes 承担。
入口判断
Hermes 收到资料以后,先判断它是什么类型:URL、文件、图片、音频,还是一段普通文字。不同类型需要不同的抽取方式。
同时,Hermes 还要做入口去重。比如同一个 URL、同一个文件、同一条消息,能在入口拦住就不要继续处理。入口去重只处理确定重复,不负责判断内容是否重复。内容是否有新增价值,要等理解层和演化层处理。
证据整理
Hermes 要把资料整理成证据页。
网页要去掉导航、广告、评论和按钮;PDF 要抽取正文;音频要先转写;图片要 OCR。整理后的证据页应该尽量像一份干净的 Markdown 文本,而不是一堆抓取噪音。
这一步如果做不好,后面理解层就会被污染。证据页里混进太多无关内容,Hermes 后面提取观点、判断主题、更新页面都会受到影响。
关系理解
证据进入飞书以后,Hermes 要重新读取它,判断它和现有知识结构的关系。
这里至少要回答几个问题:
| 判断 | 说明 |
|---|---|
| 它属于哪个主题 | 是否进入已有主题,还是需要新建主题 |
| 它补充了什么 | 是否提供了新例子、新边界、新解释 |
| 它重复了什么 | 是否只是换一种说法重复已有内容 |
| 它冲突了什么 | 是否修正或挑战了旧页面里的判断 |
| 它可以用在哪里 | 以后适合进入哪类写作、方案或回答 |
理解层的产物不一定要写成一篇文章。它更像 Hermes 做出的处理判断。后面的演化层会根据这些判断,决定怎么改主题页。
主题演化
主题演化是 Hermes 最重要的职责。
Hermes 不能把新资料简单追加到主题页末尾,也不能把每篇文章都写成一篇摘要。它要重新阅读旧主题页,把新资料融合进去。该补充的补充,该删掉的重复表达删掉,该修正的边界修正掉。
比如“Embedding 向量”主题页原来只讲了“文本会变成向量”。后来新增资料讲到“向量空间”“语义相似度”“余弦相似度”。Hermes 应该把这些内容融合进原来的结构,让主题页变成一篇更完整的知识文章,而不是在末尾追加几段新增资料。
主题页最后应该保持一种状态:用户打开它时,看到的是当前最好的版本。
规则执行
Hermes 做这些判断时,不能只靠当前对话里的感觉。
胶囊系统需要一份明确的规则文件,告诉 Hermes 什么时候保存证据,什么时候更新索引,什么时候新建主题页,什么时候只更新概念页,什么时候判定资料不被采纳。
这份规则可以写进 Skill,也可以写成项目里的规则文档。后面真正执行时,Hermes 必须先读取规则,再处理资料。否则系统很容易前后不一致。
7.5 两者怎样交接
Hermes 和飞书之间的交接,不能靠记忆。
每一步都应该有可以检查的中间结果。资料进入以后,要有证据页;证据页生成以后,要有索引记录;Hermes 做出理解判断以后,要能更新处理状态;主题页被改写以后,要能回到飞书里看到最终页面。
可以把交接关系理解成这样:
Hermes 接收资料
↓
飞书保存证据页
↓
飞书多维表格记录状态
↓
Hermes 读取证据和索引
↓
Hermes 改写 Wiki 页面
↓
飞书保存最新页面
这里有一个很重要的原则:Hermes 的每次判断,都应该尽量落到飞书里的某个文件或字段上。
比如“这份资料不被采纳”,不能只停留在对话里。它应该写入多维表格的处理状态和判断理由。比如“这份资料补充了 Embedding 的向量空间解释”,也不能只停留在对话里。它应该体现在主题页的改写结果里,同时在索引层留下目标主题页。
这样做以后,即使对话中断,下一次 Hermes 也能从飞书里的证据页、索引表和 Wiki 页面继续处理。
7.6 第一版先打通主线
这一节讲的是系统设计,但第一版实现不需要一开始就铺得很大。
第一版只需要把几件事完成:
-
用户能向 Hermes 提交一篇 URL 文章。
-
Hermes 能抽取正文,并把证据页写进飞书。
-
飞书多维表格能记录这份资料的来源、状态、证据页和目标主题。
-
Hermes 能判断这篇文章属于哪个主题。
-
Hermes 能把有价值的内容融合进对应主题页。
-
用户能在飞书里看到证据页、索引记录和更新后的主题页。
只要这条线成立,Hermes + 飞书实现胶囊系统的基本形态就成立。后面再增加 PDF、音频、图片、飞书频道入口、搜索增强和自动维护,才有意义。
7.7 ■ 学点英语
| 中文 | English | 音标 | 说明 |
|---|---|---|---|
| 存储层 | Storage Layer | /ˈstɔːrɪdʒ ˈleɪər/ | 负责保存数据和文件的系统层 |
| 理解层 | Understanding Layer | /ˌʌndərˈstændɪŋ ˈleɪər/ | 负责解释内容、提取关系和生成回答的系统层 |
| 职责划分 | Responsibility Split | /rɪˌspɑːnsəˈbɪləti splɪt/ | 把存储、理解和执行等职责分给不同系统 |
| 系统边界 | System Boundary | /ˈsɪstəm ˈbaʊndəri/ | 系统内部能力和外部依赖之间的边界 |