嫌 OpenClaw 太重?我花几天用 AI 手搓了个带“永久记忆”的通信 Agent
最近 AI 圈可谓是风起云涌,OpenClaw(小龙虾)的火热还没过去,主打伴随式成长与记忆的 Hermes Agent 又杀了出来!可以预见的是,未来这种 Agent 系统会越来越多。
这段时间,我也深入阅读了 OpenClaw 的源码,整理了它的系统架构和工程设计,包括 Gateway、多 Agent 协作等…
但看完后,我觉得它有些过于庞杂了:作为一个只想让 AI 帮我处理通信领域杂活、分析日志的科研人员/工程师,这套系统似乎太重了,而且它最大的痛点是——缺乏长期的本地记忆(原生偏向无状态调度)。
于是我决定:结合老师的通信课题方向,让 AI 帮我写一个 mini 版的 Hermes-Desktop!全程作为架构师指挥 AI 编写代码。结果系统不仅跑起来了,而且加入了硬核的 RAG 记忆和沙盒机制,过程里踩的坑、做的取舍,非常有意思。
先看个最终效果:我在桌面端输入了一句
“帮我排查一下今天这份 5G 接入失败的日志文件”
它就自动去读取了本地工作区的日志、调用了终端排查工具、分析了信令,并结合它大脑里自带的“通信专业知识库”,给我生成了一份割接方案模板:

这一切是怎么发生的呢?请大家跟着我的架构思路,继续往下看:
最终的项目结构
我们以终为始,先看看最终搭建出来的目录结构:
my_hermes_agent/├── backend/ # 后端核心引擎│ ├── main.py # 核心入口 (FastAPI + Pywebview 启动,960行)│ ├── ui.py # 桌面 UI 三栏工作台渲染层 (2053行)│ ├── llm_provider.py # 模型网关 (支持 DeepSeek/OpenRouter 等兼容)│ ├── react_engine.py # ReAct 推理编排 (CoT/ToT/多Agent模式)│ ├── workspace_mgr.py # 工作区管理 (去数据库化核心)│ ├── memory_manager.py # 会话历史与短期记忆│ ├── rag/ # ⭐ RAG 长期记忆语义检索模块 (~1348行)│ └── security/ # ⭐ 安全沙盒与操作审计模块 (~541行)├── workspace/ # 纯本地化运行时数据 (安全隔离)│ ├── agents/default/ # Agent 的 MEMORY.md 与 USER.md│ ├── skills/ # 通信垂直领域的内置 Skills│ ├── rag/ # hermes_memory.sqlite3 (记忆库)│ └── logs/ # tool_audit.jsonl (审计日志)└── pyproject.toml # uv 包管理与项目依赖
以前,想做点这种包含 RAG 和 Agent 的桌面程序,要么花钱用别人的平台,要么找程序员朋友帮忙搭一套。现在,你只需要会打字、懂架构设计、会描述需求,就能用 AI 拥有一个属于自己的科研/工作数字助理。
让我们一点点继续吧~
技术栈和功能规划
市面上的框架功能很全,多通道设计、渠道管理、权限检查… 不过从个人研究和领域落地的角度来说,没必要搞这么复杂。
我的需求其实很明确:一个极简的桌面工作台、必须能长记性(永久记忆)、数据必须绝对安全(纯本地文件)、并且要懂通信业务。
把需求拆解给 AI 后,我拍板了最终的技术底座:
-
核心框架: Python 3.11+ 、FastAPI (SSE 流式输出) -
桌面交付: Pywebview(不需要用户装任何环境,直接跑成桌面软件) -
数据存储: 去传统 MySQL,采用 纯本地 workspace 文件夹 + SQLite(仅用于 RAG 向量)。 -
模型支持: OpenAI 官方库兼容,深度适配 DeepSeek、Qwen 等国产最强模型。
说干就干,打开代码编辑器,把架构蓝图一丢,开启了极客模式。整个项目累计生成了约 8000 行 Python 代码。

一步一步,来看看我都做了哪些硬核改造:
一、 沉浸式桌面工作台与交互
我不需要一个简陋的黑框框。
我让 AI 打造了一个类似 ChatGPT 风格的玻璃拟态三栏工作台。最牛的是,它不再是粗糙的纯文本框:
-
左侧: 多会话管理与历史隔离。 -
中间: 实时流式聊天,支持图片 / PDF 上传。丢个 PDF 进去,它能自动抽取文本注入上下文。 -
右侧: 这是一个硬核的控制台。Agent 设定、通信 Skills、甚至是 ReAct 的最大推理步数都可以直接调整。

二、 灵魂核心:RAG 长期记忆系统
这是区别于普通套壳产品最核心的地方。普通的 Agent 重启后就像失忆了一样,但我的 Hermes-Desktop 拥有四层记忆机制:
-
Core Memory (核心记忆): MEMORY.md与USER.md,回复前直接注入,优先级最高。记录我的工作偏好。 -
Semantic Memory (语义记忆): 遇到专业的通信文档、项目文档,走 RAG 检索提取。默认加载了 BAAI/bge-small-zh-v1.5本地 Embedding 模型。 -
Episodic Memory (情景记忆): 历史对话会自动压缩成摘要并存入 SQLite 库中,它能记住我们上周聊过的某个 5G 基站参数。 -
Tool Memory (工具记忆): 工具日志摘要,防止大量无用报错塞满大模型。
这就是真正的“The agent that grows with you”。
三、 企业级护城河:安全沙盒 (Security Sandbox)
既然 Agent 可以自动执行代码和命令,那如果不小心把我的电脑系统删了怎么办?
为此,我专门设计了一个不依赖 Docker 的轻量级本地沙盒机制:
-
路径边界: 默认只允许 Agent 访问 workspace/目录,强行拦截读取.env、Cookie、系统盘等敏感路径。 -
命令风控: 终端命令分级执行( safe/review/blocked),高危命令直接拦截。 -
Diff Guard (写入保护): 最有意思的一点,Agent 修改文件前,不是直接覆盖,而是先生成 unified diff待我审批,审批通过后才执行,并且自动生成 Backup 备份!

四、 核心壁垒:通信专家 Skills 生态
工具是底层的“手脚”(比如读写文件、执行 Shell),而技能(Skills)是上层的业务 SOP(标准作业程序)。
为了贴合通信领域,系统启动时,我在默认工作区注入了以下核心 Skill:
-
telecom_agent_operating_principles.md(通信助理行为准则) -
ran_5g_lte_optimization.md(5G/LTE 无线网优化) -
core_network_diagnosis.md(核心网故障诊断) -
protocol_log_analysis.md(协议与日志分析)

有了这些,当我问它关于 5G 接入失败的问题时,它就不再是泛泛而谈的废话,而是会直接遵循 ran_5g_lte_optimization.md 里的专家级排查流,甚至去帮我执行终端排障脚本。
案例演示:一次真实的工程协作
光说架构太抽象了,来看看 Agent 是怎么干活的。
我在这套系统里加入了极其强大的“任务规划策略”。在右侧面板,我可以选择 CoT (思维链)、Plan-and-Execute (计划与执行) 甚至是 ToT (思维树)。
场景:排查网络日志并生成结论当我丢给它一个报错任务时,它会自动在后台调用“终端工具”。 你会发现,它的行为非常接近原生的 Claude Code:它会优先选择自己写脚本、调用终端工具去 grep 日志、查看 stdout 结果,在拿到真实数据后,再把结论总结出来反馈到聊天框!
整个过程,我只需要布置任务,剩下的分析、代码执行、容错,全由 Agent 引擎闭环完成。

结语:超越代码的工程洞见
好了,之前写架构解读,总有人说纸上谈兵。今天我虽然一行“业务代码”都没手敲,但亲自操刀指挥 AI 落地了这套将近 8000 行的架构,感触极深:
一、 评价与架构能力 > 编码能力你可以让 AI 写代码,但你必须懂架构。整个项目中,是否要用数据库?如何设计安全风控?采用什么 RAG 策略?这些高维度决策是 AI 无法替你做的。你和 AI 的关系,变成了架构师与高级程序员的配合。
二、 颗粒度对齐的艺术AI 经常会跑偏。怎么确认 AI 写的安全沙盒是真的生效了?这就需要你用测试用例(比如让它去删 C 盘)、检查 SQLite 数据落地情况,一步步把需求的颗粒度对齐。这也是新时代工程师的核心日常。
三、 垂直生态才是护城河不管是 OpenClaw 还是 Hermes,底层的 ReAct 原理大家都能抄。真正的壁垒在于“记忆系统”和“垂直领域的 Skills 生态”。一个沉淀了数月通信工程排障经验的 Agent 记忆库,是任何通用大模型都无法取代的无价之宝。
接下来,我准备进一步扩充通信领域的专属 Skill 库。
这个小小的 Hermes-Desktop,也许就是我们走向下一个通用人工智能时代的缩影。
夜雨聆风