基于 LangChain + QQ SDK 构建的远程 AI 助手
简易版 OpenClaw 实现,具备 Wiki 知识库、三层记忆系统和技能扩展能力

| 特性 |
说明 |
| 🧠 三层记忆系统 |
短期会话 → 中期摘要 → 长期知识,自动整合与深度加工 |
| 📚 Wiki 知识库 |
LLM 驱动的个人 Wiki,支持文档摄入、智能查询、知识图谱可视化 |
| 🔧 技能扩展 |
通过 SKILL.md 定义能力,支持自定义脚本和提示词 |
| 🤖 多 Agent 协作 |
Main Agent + Subagent 架构,支持异步并行任务 |
| 💬 QQ 平台接入 |
对接 QQ 官方 API,支持指数退避重连 |
git clone https://github.com/your-repo/LLBot.git
cd LLBot
uv sync
编辑 .env 文件:
BAILIAN_API_KEY=your-bailian-api-key
QQ_APP_ID=your-qq-app-id
QQ_SECRET=your-qq-secret
uv run python -m src.main
| 层级 |
存储位置 |
容量限制 |
生命周期 |
| 短期记忆 |
workspace/sessions/ |
100 条消息 / 65536 tokens |
会话期间 |
| 中期记忆 |
workspace/memory/history.jsonl |
无限制 |
持久化 |
| 长期记忆 |
workspace/*.md |
无限制 |
持久化 |
对话消息 ──► Session (短期)
│
│ 上下文 > 60%
▼
Consolidator ──► history.jsonl (中期)
│
│ 每 2 小时
▼
Dream ──► 知识文件 (长期)
| 文件 |
用途 |
SOUL.md |
机器人人格、沟通风格 |
USER.md |
用户档案、偏好特征 |
MEMORY.md |
核心事实、重要决策 |
LLM 驱动的个人 Wiki 系统,知识随每次添加而积累增长。
不同于传统的 RAG 检索,LLBot 构建的是一个持久化、可积累的知识库:
- 传统 RAG: 每次查询都从原始文档重新检索,无积累
- LLBot Wiki: LLM 持续维护结构化的 Wiki,交叉引用、矛盾标记、知识合成
┌─────────────────────────────────────────────────────────────┐
│ Raw Sources (knowledge/raw/) │
│ - 不可变的原始文档 │
│ - 永不修改 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Wiki (knowledge/wiki/) │
│ - LLM 生成的 Markdown 文件 │
│ - 摘要、实体、概念、综合分析 │
│ - Agent 完全管理此层 │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ Graph (knowledge/graph/) │
│ - 自动生成的知识图谱 │
│ - 可视化实体关系 │
└─────────────────────────────────────────────────────────────┘
| 操作 |
触发词 |
说明 |
| 文档摄入 |
ingest <file> |
将文档转化为 Wiki 页面,提取实体和概念 |
| 智能查询 |
query: <问题> |
基于 Wiki 回答问题,带 [[WikiLink]] 引用 |
| 健康检查 |
lint |
检查孤立页面、断链、矛盾信息 |
| 图谱可视化 |
build graph |
生成交互式知识图谱 |
knowledge/
├── raw/ # 原始文档(不可修改)
├── wiki/ # Wiki 内容
│ ├── index.md # 页面目录
│ ├── log.md # 操作日志
│ ├── overview.md # 知识综述
│ ├── sources/ # 文档摘要
│ ├── entities/ # 实体页面(人物、组织、项目)
│ ├── concepts/ # 概念页面(想法、框架、方法)
│ └── syntheses/ # 保存的查询答案
└── graph/ # 知识图谱(自动生成)
用户: ingest knowledge/raw/attention-is-all-you-need.md
Agent:
1. 读取原始文档
2. 创建 sources/attention-is-all-you-need.md 摘要页
3. 创建 entities/Transformer.md 实体页
4. 创建 concepts/Self-Attention.md 概念页
5. 更新 index.md 和 overview.md
6. 建立 [[WikiLinks]] 交叉引用
用户: query: BERT 和 GPT 有什么区别?
Agent:
基于 [[BERT]] 和 [[GPT]] 页面回答...
(带 WikiLink 引用)
┌─────────────────────────────────────────────────────────────┐
│ Agent 层 │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ AgentLoop: SessionManager + ContextBuilder + LLM │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │ │ │
│ Main Agent Subagent 1 Subagent N │
│ (完整工具集) (精简工具集) (精简工具集) │
└─────────────────────────────────────────────────────────────┘
| Agent 类型 |
工具集 |
职责 |
| Main Agent |
完整 12 个工具 |
任务规划、决策、协调 |
| Subagent |
精简工具集 |
专注执行子任务 |
| 工具 |
功能 |
安全特性 |
terminal |
执行终端命令 |
黑名单过滤、超时 60s |
python_repl |
执行 Python 代码 |
超时 30s |
fetch_url |
获取网页内容 |
HTML→Markdown、超时 30s |
read_file |
读取文件内容 |
路径安全检查 |
spawn |
创建子代理 |
timeout 300s |
message |
发送消息 |
多渠道支持 |
cron |
定时任务管理 |
- |
glob |
文件模式匹配 |
- |
grep |
文件内容搜索 |
正则支持 |
list_dir |
列出目录 |
- |
write_file |
写入文件 |
路径安全检查 |
edit_file |
编辑文件 |
路径安全检查 |
LLBot/
├── config/
│ ├── config.yaml # 主配置文件
│ └── prompts/ # 提示词模板
│
├── knowledge/ # 知识库
│ ├── raw/ # 原始文档
│ ├── wiki/ # Wiki 内容
│ └── graph/ # 知识图谱
│
├── skills/ # 技能定义
│ ├── memory/ # 记忆技能
│ ├── cron/ # 定时任务技能
│ ├── llm-wiki/ # 知识库技能
│ └── skill-creator/ # 技能创建工具
│
├── src/
│ ├── main.py # 主入口
│ ├── agent/ # Agent 核心
│ ├── gateway/ # QQ 网关层
│ ├── llm/ # LLM 客户端
│ ├── memory/ # 记忆系统
│ └── processing/ # 记忆加工
│
└── workspace/ # 工作空间
├── SOUL.md # 机器人人格
├── USER.md # 用户档案
├── MEMORY.md # 长期记忆
└── sessions/ # 会话存储
agent:
main:
max_iterations: 50
subagent:
timeout: 300
tools:
command_blacklist:
- "rm -rf /"
- "mkfs"
- "dd"
- "shutdown"
timeout:
terminal: 60
python_repl: 30
memory:
session:
max_messages: 100
context_window: 65536
dream:
schedule: "0 */2 * * *"
enabled: true
skills/my_skill/
├── SKILL.md # 技能定义(必需)
└── scripts/ # 脚本文件(可选)
---
name: my_skill
description: 技能描述
always: false
---
# 技能名称
使用说明...
Q: 环境变量读取不到?
使用 .env 文件方式,项目会自动加载:
Q: QQ Bot 连接断开如何重连?
已内置指数退避重连:1s → 2s → 4s → ... 最大 60s
Q: 如何查看历史记忆?
grep(pattern="关键词", path="memory/history.jsonl")
Q: 知识库和记忆系统有什么区别?
- 记忆系统: 存储对话历史、用户偏好、重要事件,由 Dream 自动整理
- 知识库: 存储文档摘要、实体概念、知识关联,需要主动摄入文档
MIT License