本文为「自研轻量学术智能体」系列第 2 篇,基于 OpenClaw 经典四层架构做学术场景专属裁剪,只保留文献检索、记忆、调度、推送必需逻辑,完整模块接口与异常处理收录于掘金小册。
一、前言
上一篇我们完成了极简学术智能体的环境搭建与项目初始化,本篇将基于 OpenClaw 的 Skill / Orchestrator / Memory / Gateway 四层架构思想,针对文献自动化场景做轻量化重构,设计每个模块的职责与基础接口,让后续功能开发有统一规范,同时保持极低的复杂度与运行风险。
二、OpenClaw 四层架构・学术场景精简原则
完整 OpenClaw 面向全场景智能体,模块冗余度极高;我们只保留学术文献必需职责:
- Orchestrator(编排器) :统一调度任务流程,控制文献抓取、去重、推送顺序
- Skill(技能模块) :实现文献检索、解析、摘要等具体能力
- Memory(记忆模块) :存储研究方向、关键词、历史文献记录
- Gateway(网关模块) :负责结果通知、多渠道推送
无多余扩展、无系统调用、无权限风险,完全服务科研场景。
三、模块职责设计(公开版)
1. Orchestrator(编排入口)
- 统一启动、停止智能体
- 按顺序调度各个 Skill 执行
- 简单异常捕获与日志输出
2. Skill(文献技能)
- 对外提供统一调用接口
- 负责与 arXiv、学术平台交互
- 返回结构化文献数据
3. Memory(本地记忆)
- 存储用户研究方向、关键词配置
- 记录已处理文献,为后续去重做准备
- 轻量化本地读写
4. Gateway(通知网关)
- 提供消息发送基础接口
- 后续扩展微信 / 飞书推送
- 格式化输出文献信息
四、项目结构与基础代码(公开可运行版)
在之前的目录下,创建对应模块文件夹与基础文件:
AcademicAgent/
├── main.py # 编排器入口
├── skill/
│ └── paper_skill.py # 文献检索技能
├── memory/
│ └── local_memory.py # 本地记忆存储
├── gateway/
│ └── notify_gateway.py # 通知网关
└── config/
└── config.py # 配置管理
1. 文献技能基础接口(skill/paper_skill.py)
# 文献检索技能(基础演示版,完整逻辑见小册)
class PaperSkill:
def __init__(self):
self.name = "paper_search_skill"
def search_papers(self, keyword, max_results=5):
# 核心检索逻辑在小册中完整实现
print(f"正在检索关键词: {keyword}")
return []
2. 本地记忆基础接口(memory/local_memory.py)
# 本地记忆模块(基础版)
class LocalMemory:
def __init__(self):
self.research_keywords = []
def set_keywords(self, keywords):
self.research_keywords = keywords
print(f"已设置研究方向: {keywords}")
3. 通知网关基础接口(gateway/notify_gateway.py)
# 通知网关(基础版)
class NotifyGateway:
def send_msg(self, msg):
print(f"【智能体通知】{msg}")
4. 编排器入口(main.py 更新)
from skill.paper_skill import PaperSkill
from memory.local_memory import LocalMemory
from gateway.notify_gateway import NotifyGateway
# 参考OpenClaw架构:编排器统一调度
class AcademicAgent:
def __init__(self):
self.memory = LocalMemory()
self.skill = PaperSkill()
self.gateway = NotifyGateway()
def run(self, keyword):
self.memory.set_keywords([keyword])
papers = self.skill.search_papers(keyword)
self.gateway.send_msg(f"检索完成,共找到 {len(papers)} 篇文献")
if __name__ == "__main__":
agent = AcademicAgent()
agent.run("reinforcement learning traffic")
五、运行验证
python main.py
输出示例:
已设置研究方向: ['reinforcement learning traffic']
正在检索关键词: reinforcement learning traffic
【智能体通知】检索完成,共找到 0 篇文献
六、本篇公开范围
-
✅ 公开:四层模块职责、目录结构、基础空壳代码、模块调用流程
-
🔒 小册专属(不公开):
- 完整模块间数据交互规范
- 文献技能真实检索逻辑
- 记忆模块结构化存储方案
- 网关异常处理与重连机制
- 学术场景专属模块优化策略
七、下期预告
第 3 周:本地记忆库 SQLite 完整实现,让智能体永久记住你的研究方向与关键词配置。
完整可运行的模块代码、学术优化方案、工程化规范后续将收录于掘金小册《从零自研轻量学术文献智能体》,持续更新全套源码与定制化案例。