三系统架构 · 10 问方案 v2

OpenClaw 独立版 2026-06-17 00:19 #QClaw #OpenClaw #Hermes #token优化 #知识库 #协同

三个系统是不同的运行时,各自独立运行:

QClaw 腾讯版

D:\Program Files\QClaw\
运行时数据:C:\Users\jayxu\.qclaw\
有腾讯底层接口能力

OpenClaw 独立版

D:\TraeProject\myOpenclaw\
开源版,我说了算
当前活跃对话窗口

Hermes 自建

D:\hermes-agent\
Electron v40.9.3
有一套自己的html面板
1. 三个系统的token消耗优化方案(含子agent)

三个系统是不同的代码基,优化手段必须各自独立设计。不存在一套配置通吃。

OpenClaw 独立版 我能控制的:system prompt分层加载是内建能力。身份声明+核心任务+工具权限放启动prompt,其余信息写成带懒加载的技能。我的MEMORY.md控制在15KB以内。子agent(sessions_spawn出来的)不会继承父agent的完整prompt,天然轻量。要额外注意的:检查技能列表,不启用的技能不要配在agent定义里,避免扫描加载。

QClaw 腾讯改造版:它的prompt结构我不清楚,你得看QClaw的配置界面。假设它和OpenClaw共享内核,那同样的懒加载策略应该能用。风险在于腾讯可能加了额外的context钩子——比如调用微信/小程序接口时的默认加载。如果发现QClaw的启动prompt比独立版大很多,找找是不是有隐藏的预加载模块。可以关掉。

Hermes 自建系统:它的token消耗逻辑完全取决于Hermes怎么做的。如果Hermes是用OpenAI/Claude API直接调用,那你唯一能优化的就是每次请求的prompt长度和max_tokens。方案:给Hermes也做"压缩上下文"模块,每次对话前只加载最近的N轮+当前需要的文件。不要什么记忆都塞进每次请求里。

子agent的问题:每个系统下挂的子agent,如果每个子agent都带一套完整的skills,叠加起来很可观。核心方案:子agent继承父agent的skills引用而非副本。每个系统的skills库是全局的,子agent只需要声明"我需要哪几个",而不是把整个技能文本复制一份到自己的prompt里。如果某个系统不支持这种引用机制——比如Hermes可能是每个子agent独立发API请求——那就严格控制子agent的权限范围,给最小可用skills,不要图方便全部配进去。

2. IM接入选择

OpenClaw独立版原生支持的IM列表里有:feishu、telegram、discord、signal、slack、whatsapp、imessage、irc、matrix、mattermost、line、zalo、nostr等等。开箱即配。

OpenClaw 独立版 我建议配 飞书 + Telegram。飞书用于日常办公文档协同,Telegram做快速通知和文件收发。两个足矣。

如果还想加第三个,Discord的thread机制对你"三个系统同时出方案"的场景最实用。一个thread里三条消息同时输出,谁是谁一目了然。Discord bot的配置和telegram差不多复杂度。

Hermes 如果Hermes有独立的通信模块,它可以走和OpenClaw不同的IM渠道,不一定非要绑定同一个。分开反而能测试哪条路好用。

QClaw 腾讯版是不是已经带了微信/企微通道?这可能是它最大的差异化优势。如果QClaw能直接连微信生态,那飞书+telegram给OpenClaw,QClaw走微信,Hermes走网页面板就够了,覆盖了所有场景。

3. 三个系统协同方案(关键是互相感知、能接盘)

你说的不是共享一个数据库,而是三件事:知道对方在做什么、有需要时复制对方的好东西、对方掉线了能接手。这三件事的机制不一样。

互相知道在做什么:每个系统定期写一份"状态报告"到 D:\shared-ai\status\。格式固定:当前项目、最近完成的任务、手头在做的、下一个计划。比如我做一个项目方案,过程中我会更新状态文件。其他两个系统每隔N分钟扫一次这个目录,就知道我干到哪了。不需要实时通信,文件是最低成本的信号灯。

复制对方的好东西:每个系统产出有价值的技能定义、分析模板、有用脚本时,除了用自己的格式存一份,再往 D:\shared-ai\catalog\ 写一条索引记录。其他系统读到这条索引,评估"这个对我有没有用",有用就复制到自己的目录下启用。不是自动推,是发现-评估-拉取。索引格式:类型 | 名称 | 用途简述 | 来源系统 | 依赖条件。Hermes的Python脚本OpenClaw不一定能直接跑,索引里的"依赖条件"字段就是避坑用的。

能接盘:这是最难的。接盘的前提不是共享代码,而是共享上下文。比如说QClaw做了一个客户项目方案做到一半,你要我接手。我需要的不是QClaw的技能文件,而是它到目前为止对这个项目的理解——客户需求、已有结论、待决策点、中间产出物在哪。方案:每个系统做项目时,把项目上下文的关键信息(需求文档、会议结论、决策记录)输出为结构化的"项目移交包",放在 D:\shared-ai\handover\。移交包 = 一个markdown文件,包含:项目背景、已完成工作清单、未完成工作清单、关键决策及原因、参考文件路径、当前待办。另一个系统接到移交包,读一遍就知道从哪续上。不需要二次沟通。

三个系统的独立性不变——各自管各自的记忆、各自的技能、各自的对话历史。共享的只是一套通报机制(状态报告、能力目录、移交包)。"知道别人在做什么"靠扫status目录,"能复制别人的好东西"靠扫catalog目录,"能接手"靠读handover目录。

这套机制不需要额外写复杂的编排代码。每个系统在prompt里加几条协作规则就行:

你检查每个系统的prompt里有没有这几条规则就行了。

主动通知机制:你问了一个关键的问题——一个agent做完了事,另外两个怎么知道?轮询(每N秒扫一次目录)效率低且有时延。三个方案。

方案一:IM广播。三个agent共用一个IM群(Telegram群或飞书群),谁产出了成果就往群里发一句「已产出xxx分析报告」。其他agent看到后自行决定要不要读。不需要任何额外代码,你现有的通信渠道就是通知通道。今天就能用。

方案二:文件系统事件监听。用Node.js的chokidar或fs.watch监听共享目录,目录增删文件时立刻触发回调。这是操作系统级别的主动推送,零延迟零开销。代价是每个系统需要装一个npm包+一段监听代码。

方案三:编排者模式。你指定一个系统(比如我,OpenClaw独立版)做监听者,专职监听 shared/ 下所有目录的变化。变化发生→通知其他系统→需要时触发对比流程。这个模式最清晰,但也意味着监听者不能停。

建议从方案一开始跑,零成本立即可用。跑起来后再决定要不要升级到方案二。

4. 同时出方案 + 对比

同一个问题,三个系统出方案,然后对比。办法:通过同一个IM入口触发——比如你往飞书群或者Discord里发一个问题,三个系统都收到了,各自输出。

但人眼对比三个系统的输出,来回翻同一条消息,很累。建议加一个对比编排层:第四个进程(不需要LLM,就是一个node脚本)监听shared/outbox/目录。你发问题后,等三个系统都把答案写进outbox,然后脚本读取三份答案,合并成一个HTML对比页,用diff高亮差异。你在网页上一眼看到哪里一致、哪里有分歧。

触发方式:你发一个带特定前缀的消息,比如 /compare 我要做一个AI审批系统方案。三个系统都识别到 /compare 指令,各自出方案写到outbox。然后编排脚本跑合并输出。

成本:编排脚本你写一次,以后一直用。一个node脚本+一个HTML模板,半小时写完。

4.1 记忆管理(三个独立系统)

旧方案针对的是单个OpenClaw的记忆管理。现在有三个系统,每个系统有自己的记忆机制,不能套同一个方案。

OpenClaw 独立版 分层机制是可行的。原因是OpenClaw主动加载MEMORY.md、技能懒加载、文件读写能力齐备。缺的是自动化和搜索。加一个cron job,每周检查MEMORY.md长度超15KB就自动压缩。memory_search索引跑一次 openclaw memory index --force 修好。这套方案可以跑起来。

QClaw 不确定它的记忆机制和OpenClaw独立版是否一致。如果QClaw也用了同样的MEMORY.md + daily notes结构,那同一套方案适用。如果不一致——比如腾讯改成了别的方式——需要你检查QClaw的配置目录下有什么记忆文件,再针对性设计。

Hermes 自建系统大概率没有内置记忆管理机制。Hermes的"记忆"本质上是每次API请求时你塞进去的上下文。方案:给Hermes也建一套独立的分层记忆,和OpenClaw的方案平行但不共享。Hermes的MEMORY.md放在 D:\hermes-agent\memory\ 下,同样分层、同样自动化。你没有必要用一个通用方案管三个不同的东西。

关键判断:三个系统各管各的记忆,互相不串。共享的是知识(research/analysis/knowledge),不共享的是个人偏好和对话历史。不要在D盘中央建一个"三系统共用记忆",那是灾难——一个系统的记忆格式改动,另一个系统就读不懂了。

5. 三个系统是否需要相同的知识和技能?

这个问题要拆成知识和技能两个不同的事情来答。

知识:三个系统应该知道相同的事实。你的名字、战略三线、经济状况、项目进度、决策记录——这些你在一个问题里可能问任何一个系统,回答不应该因为换了系统就变样。方案:共享知识库。把核心事实写入 D:\shared-ai\knowledge\ 下的结构化文件(YAML或Markdown),三个系统各自配一条启动指令:每次启动先读共享知识库。不是全量加载进prompt,而是用memory_search或关键词检索来按需读取。

技能:不需要一样。也不应该一样。QClaw有腾讯底层接口,做微信/小程序相关技能天然优势。OpenClaw开源且你说了算,做自定义工具接入方便。Hermes如果你做得偏重本地文件操作、HTML面板展示,那它的技能方向应该是文件管理和可视化。各有所长才是三个系统的价值,不是三个一模一样的克隆体。

如果非要让某个系统具备其他系统的特有技能(比如OpenClaw想用QClaw的微信接口),不要复制粘贴实现——让QClaw对外开放一个HTTP接口,OpenClaw调用即可。这就是微服务的思路,三个系统之间用API互通能力,而不是装载一模一样的代码。

6. 三个系统都能连飞书吗?

OpenClaw 独立版 可以。飞书plugin已经是OpenClaw的内建能力。配合你配置的飞书app权限,可以读文档、读bitable、读drive目录结构、写文档、创建bitable记录。这些能力我已经有。

QClaw 腾讯版。它是OpenClaw的衍生版,理论上飞书plugin应该还在,但腾讯可能做过修改。如果你在QClaw的配置界面里看到飞书相关的选项,那就支持。可以配不同的app凭证,和OpenClaw独立版使用不同的飞书账号,避免互相干扰。

Hermes 需要你手动实现。Hermes没有内置飞书SDK。你可以用飞书的开放API(token获取+文档读写API)包一层HTTP客户端,让Hermes像调用任何API一样调用飞书。如果Hermes是Node.js生态,直接用 @larksuiteoapi/node-sdk。如果不方便加依赖,直接用fetch调飞书API就可以。做肯定能做,只是需要你写代码。

三个系统同时操作飞书注意事项:飞书API的token是按app_id限流的。如果三个系统用同一个飞书app的凭证,高频调用会互相踩。建议:OpenClaw独立版和QClaw各配一个不同的飞书app,Hermes如果需要也配第三个。或者,让其中一个系统做飞书操作的中介,另外两个系统通过它来读写飞书——减少冲突面。

7. IMA分析及替代方案

IMA我知道。腾讯的AI知识库工具,本质是RAG(检索增强生成)。为什么传文档进去就能问?三步:文档分块(chunking)→ 每块转成向量(embedding)→ 存进向量库。你提问时,IMA把你的问题也转成向量,和库里所有向量做相似度搜索,找到最相关的几个块,拼进prompt送给LLM回答。就这么简单。

IMA能接受音频吗?不能直接收。IMA没有语音识别模块。但你可以先用语音转文字工具处理(飞书妙记、剪映、本地的whisper都行),拿到文本再传。我没有"能"或"不能"的判断——工程上都能做,成本高低的问题。

用三个系统管理IMA?这实际上是问agent能不能通过API操作IMA。答案是不能。IMA没有公开的外部API,你不能用程序调它。你只能在IMA界面手动操作。所以"用agent管理IMA"这条路走不通——agent连访问IMA的入口都没有。

替代方案:自建一个开放RAG系统。方案是 Dify + Qdrant(本地向量库)+ 本地的embedding模型(比如bge-m3跑在Ollama上)。你在Dify后台上传文档,它做解析和向量化。然后三个系统都配置Dify的API接口,按需查询知识库。Dify的好处是API完全开放,任何能发HTTP请求的agent都能用。

成本:Dify社区版免费,Qdrant开源的docker镜像免费,embedding模型Ollama跑本地免费。唯一花时间的是搭建和调参。你已经有Ollama了,搭起来比你想象中快。

8. 项目管理方案(合同、计划、设计文档、会议记录、款项等)

你这次说清楚了,这不是普通的文档管理。你跑的是信息系统项目,过程中产生的文档种类多、关联性强、直接影响决策——合同决定了收款节点,会议记录改动了项目计划,测试报告影响了人员安排。这些东西不是独立文件,是一个互相咬合的网络。

IMA管这个的问题不只是agent不能操作它。更深的问题是:IMA把文档降维成"可检索的块",但它不保留文档之间的关联关系。合同和付款计划之间的关联、会议记录和计划变更之间的因果、需求文档和测试用例之间的覆盖关系——这些关系才是项目管理的核心信息,不是你搜一段文本能解决的。

方案分两层:文件存储层项目管理视图层

文件存储层:所有项目文件放在本地目录,按 D:\projects\[项目名]\ 组织,内部再按阶段或类型分子目录,比如 contracts/requirements/design/meetings/test/deliverables/。这不是我独创的,这是IT项目管理的标准文档目录结构。你按这个规整后,三个系统通过文件系统就能直接访问。

项目管理视图层:自建一个"项目状态板"。不需要复杂系统,用一个结构化的项目描述文件来维护,放在 D:\projects\[项目名]\_project.md。这个文件是项目的核心信息模型,包含以下区块:

  • 合同信息:签约方、金额、付款节点(里程碑→付款比例→预计日期→实际日期)
  • 项目计划:阶段划分、起止日期、关键里程碑、当前进度
  • 团队:角色、人员、分工、联系方式
  • 文档索引:各类文档的路径和状态(草稿/已评审/已交付/已归档)
  • 决策记录:每次重要变更的日期、原因、影响(比如:会议纪要A→计划延期两周→收款节点顺延)
  • 风险/问题:当前开放的风险项,影响范围

这个 _project.md 就是你可视化面板的数据源。三个agent读这个文件就知道项目全貌。你可以把它渲染成HTML面板,飞书文档也行,Obsidian也行。但核心是它——文件是结构化的markdown,不是散落在IMA里的不可关联的片段。

三个agent在这个框架下能做什么:

  • 我(OpenClaw)可以定时扫描项目目录,发现新文档就更新 _project.md 的文档索引区
  • QClaw如果连了微信,可以在会议结束时自动把会议纪要写进来
  • Hermes如果做可视化,可以读取 _project.md 渲染成甘特图/进度面板
  • 三个系统都能回答"这个项目下一个收款节点是什么"、"老王负责的设计文档评审了吗"这类问题
  • 当会议记录里出现"计划延期两周"时,agent可以自动推算对收款节点的影响并提醒你

这不替代IMA。IMA仍然可以作为文档的全文检索引擎存在——你用IMA搜合同条款内容,用 _project.md 管项目状态链。两套系统并行不冲突。等Dify搭好了,IMA的角色可以用Dify替代,但 _project.md 始终是项目的单点事实源。

我建议你先从一个项目做起——用我上面说的目录结构把你一个正在跑的项目规整出来,建一个 _project.md,验证概念。成功了再铺开到所有项目。

9. 本地文件管理方案

你的本地文件分布在各个目录里:文档、书籍、音频、视频、以前的project成果。三个系统都需要能访问,但各自做不同的事。

第一步:建立目录索引。任何方案的第一步都是先知道自己有什么文件。建一个索引,记录每个文件的路径、类型、大小、最后修改时间。用Everything(你电脑上如果有)做文件名搜索,用自建JSON索引做结构化检索。这个索引可以是三个系统共用的——文件路径不存在语义冲突,纯数据。

第二步:分类型处理。文档(PDF/DOCX/MD)→ Dify或直接读文本。书籍(PDF/EPUB)→ 同样走Dify做分词入库。音频 → wh接口调用本地的whisper(你已经有Ollama了,但whisper需要另外装,它是一个独立的语音模型)。视频 → 提取音频轨走whisper转文字 + 用qwen2.5vl(你本地已经有)做关键帧分析。这是一个管道:文件入→转文字→存知识库。

第三步:权限控制。不是所有文件都该对所有系统开放。你的个人日记不需要给QClaw看,你的项目合同也不需要给所有系统读。方案:在索引文件里加一个 accessible_by 字段,标记每个文件/目录允许哪些系统访问。三个系统读索引时只加载自己权限范围内的记录。

关于"用agent管理组织这么多文件"——你需要明确"管理组织"的定义。是帮你分类?帮你搜索?帮你删除重复文件?还是帮你分析内容?不同的语义指向不同的方案。如果要的是分类和搜索,索引+Everything足矣。如果要的是内容级的分析理解,走Dify向量化。如果要的是清理重复文件(你百度网盘报告的续集),那三个系统都可以写脚本,但谁写谁执行,不要三个人同时改同一批文件。

10. 结论页 + 索引页规范

索引页我已经看到了 file:///D:/hermes-html/index.html。结构干净,分类清晰,有emoji、有卡片、有路径。符合你的要求。

你要的规范和实现方式:

  • Agent标签:每个成果以URL路径或meta描述注明来源系统。我的产出标记为 "OpenClaw独立版"(或双子框架),QClaw的标记为 "QClaw",Hermes的标记为 "Hermes"。用不同颜色区分。
  • 日期标签:年-月-日格式,加在标题旁或meta区。比如 "2026-06-17"。
  • 主题标签:用 #hashtag 形式标在页面顶部,方便索引和搜索。
  • 生成机制:谁生成HTML,谁负责在页面里打自己的logo+日期。然后更新index.html加一个新卡片。不需要一个中心化的管理系统做这件事——三个系统独立产出,各自加卡片,但卡片不能覆盖别人的。方案:每个系统的卡片用 <!-- 系统名:xxx --> 注释标记区域,这样更新时能识别哪些卡片是别人加的,不去动。

更彻底的方案:用一个JSON文件作为索引的元数据,三个系统的HTML生成器都读这个JSON来渲染index.html。JSON里记录每条记录的 title / path / date / agent / tags / summary。谁加新记录就往JSON里append一行。index.html模板从JSON渲染。这样避免了HTML编辑冲突。你要我做一个这个方案的原型吗?


整体结论:三个系统是不同的运行时,能力独立、记忆独立、技能方向应当差异化。

实操优先:
① 建共享目录 D:\shared-ai\(inbox/outbox/knowledge/skills)
② OpenClaw配飞书+telegram,检查QClaw是否能直接打通微信
③ 用Dify自建RAG替代IMA(本地,API开放)
④ 项目文件归到本地目录 + Dify自动索引,不再依赖IMA做中间层
⑤ 建本地文件索引JSON,加权限字段
⑥ 三个系统各自独立分层记忆,不共用同一个MEMORY.md
⑦ 索引页元数据JSON化,避免三个系统互相覆盖index.html
注意:我(OpenClaw独立版)只能保证我能按上述方案做到。QClaw和Hermes是否能做到,取决于它们的代码架构和能力范围。QClaw腾讯版的具体改造内容我不清楚,Hermes的代码只有你知道。建议让他们各自出具对自己的评估,才知道有差异。