给 AI Agent 装上灵魂 — 持久记忆 · 自主学习 · 多端部署 · 心跳自治
魂器是为 OpenCode 打造的管理层框架。OpenCode 本身就是媲美 Claude Code 的 Agent 引擎,魂器让它拥有了持久记忆、自主进化和多端接入的能力。
如果说 OpenCode 是「大脑」,魂器就是「灵魂」。
你有一个会写代码的 AI Agent(OpenCode)
我给它加上:
✅ 记住你们每一次对话(不会每次醒来都忘了你)
✅ 每天自动提炼对话中的知识,越聊越懂你
✅ 接上飞书/企微,你在哪它就在哪
✅ 定时心跳,主动思考、主动学习、主动问候
✅ 多个分身并行工作,写完文章回头继续陪你聊
这就是魂器。
OpenClaw 是早期 AI Agent 基础设施的里程碑,但它的技术负债在真实生产环境中层层暴露。
笔者在生产环境中踩过的坑:pip 依赖崩溃导致 venv 不可用、Kimi API key 过期全线宕机、session 记忆全部丢失、升级版本后配置被覆盖。魂器从这些坑里爬出来,重新设计:
| 痛点 | OpenClaw 原罪 | 魂器解法 |
|---|---|---|
| 运行时地狱 | Python venv + pip,pyarrow / lancedb 编译是玄学 |
核心框架纯 TypeScript,node:sqlite 内置,零 Python 依赖 |
| LLM 单点故障 | 硬编码单个 API endpoint,key 过期 = 全线瘫痪 | 通过 opencode 调度,provider 热切换(Kimi → DeepSeek → Gemini,一行配置) |
| 升级毁灭 | 改 openclaw.json 影响所有项目 |
每个项目独立 .opencode/opencode.json,互不干扰 |
| 记忆 = 全量 dump | jsonl 文件遍历,无索引,搜索 = 全表扫描 | SQLite + FTS5 全文索引,毫秒级检索 |
| 知识靠手写 | 手动整理知识卡,AI 不会自己学 | 每日 → 每周 → 每月三层自动知识提取管线 |
| 飞书是唯一 Channel | 单一通道,换企微要重写 | 飞书 + 企业微信双通道就绪,Channel 插件按需安装,核心框架零耦合 |
| 技能与核心耦合 | 所有能力打包一起,Python 脚本污染核心 | 核心包纯 TS,含 Python 的 skill 作为可选插件包安装 |
一句话:魂器不是 OpenClaw 的 fork,是从零重新设计的管理框架。它把 LLM 调用交给 opencode(业界顶尖 Agent 引擎),自己专注做好管理、记忆、调度。
Hermes 是魂器的前身记忆系统,解决了「AI 记不住、不会自己学、容易过度热情」三大顽疾。 魂器将 Hermes 的 7 大核心机制完整移植,并在工程上做了增强。
记忆写入 → conversation.db (实时) → long-term 备份 (每日)
记忆检索 → FTS5 全文 (毫秒) → SQLite LIKE (精确)
记忆管理 → MEMORY.md (关键条目) → heartbeat compact (自动压缩)
- FTS5 全文索引 — 所有会话实时索引,关键词毫秒级检索
- MEMORY.md 条目化管理 — 2,200 字符容量上限,
§§分隔条目,支持add/replace/remove精确操作 - 智能淘汰 — 满容自动删除最旧条目,先入先出
- LLM Compact — 调用 opencode 合并相似条目,压缩冗余保留核心
- 纯 TypeScript 实现 —
node:sqlite原生模块,无需 Python/ChromaDB
hunqi memory status # 查看容量
hunqi memory add "今天学会..." # 添加条目
hunqi memory search "关键词" # FTS5 全文搜索
hunqi heartbeat # 同步并压缩记忆AI Agent 在心跳中容易「过度热情」——半夜三点还在想主人、没新消息强行生成问候。
门控机制让脚本做第一层判断,预检不通过 = 完全不调用 LLM = 零 token 消耗:
{
"id": "proactive-message",
"pre_check_script": "scripts/pre_check_user.py"
}
// 脚本输出 {"wakeAgent": false, "reason": "深夜23:00-08:00"}
// → 跳过,零 token ✅触发条件示例:深夜时段、最近 30 分钟无互动、用户标记为忙碌……
心跳任务可以形成级联流水线。前置作业的 LLM 输出自动注入为下游作业的上下文:
{ "id": "daily-knowledge", "deliver": "none" },
{
"id": "weekly-summary",
"context_from": ["daily-knowledge", "daily-report"],
"deliver": "feishu"
}
// weekly-summary 的提示词中自动包含:
// ┌─ [daily-knowledge] 的输出 ──────
// 今日提取知识: [3条]
// ┌─ [daily-report] 的输出 ──────
// 今日互动: 闲聊15轮 + 拍照2次
// └────────────────────────────精确控制 AI 的输出投递:
| deliver | 行为 | 场景 |
|---|---|---|
"feishu" |
推送到飞书卡片 | 主动问候、日报 |
"local" |
仅写入本地日志 | 调试、审计 |
"none" |
静默执行不投递 | 记忆整理、知识提取 |
[SILENT] |
Agent 响应首行含此标记 → 完全静默 | LLM 自行判断「不打扰」 |
指挥官模式——分身处理长任务,本尊继续陪聊。分身能力受限:
| ✅ 分身可以 | ❌ 分身禁止 |
|---|---|
| 文件读写 | 记忆写入(MEMORY.md) |
| Bash 命令 | 飞书消息发送 |
| 网页抓取 | 心跳配置修改 |
| 代码搜索 | .opencode/ 配置修改 |
| 向量检索 | 递归委托(禁孙 agent) |
skill_creator.py 监控会话的工具调用模式。触发条件:单次会话 ≥ 5 次工具调用 + 任务成功 → 自动调用 LLM 提取工作流 → 生成标准 SKILL.md → 保存到 skills/agent-created/。
下次启动时自动加载。AI 把自己学会的东西封装成可复用技能——这就是「自我进化」:
hunqi skill-create # 自动评估
hunqi skill-create --dry-run # 仅评估
hunqi skill-create --force # 强制创建需要安装可选技能包:
npm install -g @neomei/agent-soul-skills
OpenCode 的 /compact 操作会压缩上下文,可能导致关键记忆丢失。血统追踪机制:
/compact前自动提取关键对话 → 刷入 MEMORY.md- 追踪父 → 子 session 关系链(
session_lineage.json) - 支持血统深度查询——「这条记忆从哪个会话来的?」
- 压缩后人格不丢失:每次 LLM 调用前通过 plugin hook 重新注入灵魂文件
┌────────────────────────────────────┐
│ 魂器(管理层) │
│ TypeScript 核心 · Cron 调度 │
│ 可选 Python 技能插件包 │
│ │
┌─ 记忆系统 ──────────┤ SQLite + FTS5 │
│ 统一记忆搜索 │ 会话历史 · MEMORY.md · 长短期备份 │
│ │ │
├─ 知识引擎 ──────────┤ 每日提取 · 每周精炼 · 每月审查 │
│ 自动知识管线 │ 8大分类 · 向量索引 · markdown 归档 │
│ │ │
├─ 心跳调度 ──────────┤ wakeAgent 门控 · 作业链 · 交付路由 │
│ 自主治理 │ crontab 30min · 文件锁防并发 │
│ │ │
├─ 灵魂注入 ──────────┤ SOUL.md + IDENTITY.md + USER.md │
│ 人格持久化 │ 每次 LLM 调用前自动注入 │
│ │ │
└─ 技能体系 ──────────┤ 拍照 · 语音 · 视觉 · 听觉 · 公众号 │
7个技能包 │ 闭环学习 · 技能自动创建 │
└──────────────┬─────────────────────┘
│
唯一通道:opencode run / serve API
│
┌──────────────┴─────────────────────┐
│ OpenCode 引擎 │
│ LLM 推理 · Bash · 文件编辑 · 搜索 │
│ Kimi / DeepSeek / Gemini / ... │
│ 媲美 Claude Code 的 Agent 能力 │
└──────────────┬─────────────────────┘
│
┌────────────────────────┴──────────────────────┐
│ Channel 桥接层(可选插件) │
│ │
│ opencode-feishu opencode-qiwei │
│ 飞书 WebSocket 长连 企微 WebSocket 长连 │
│ 流式卡片 · 工具状态 Markdown · 流式回复 │
└───────────────────────────────────────────────┘
> Channel 桥接层需要单独安装:`npm install -g @neomei/opencode-feishu @neomei/opencode-qiwei`
魂器绝不直接调用任何 LLM API。 所有模型推理必须通过 opencode。
魂器只做管理:文件读写、数据库操作、任务调度、配置管理、数据管道。就像操作系统管理硬件,魂器管理 opencode 引擎。
- Node.js ≥ 20
- OpenCode 引擎:
npm install -g opencode-ai
curl -fsSL https://raw.githubusercontent.com/NeoMei/agent-soul-framework/master/install.sh -o install.sh
bash install.sh为什么先下载?
curl | bash在网络波动时可能导致脚本截断(如echo变成cho)。先下载可确保完整性。如果坚持一行安装:
curl -fsSL ... | bash亦可,脚本已内置管道检测警告。
自动完成:下载魂器 → 构建 → 全局链接 → 初始化记忆 → 配置心跳。飞书/企微通道插件需按需单独安装。
npm install -g @neomei/opencode-feishu # 飞书通道
npm install -g @neomei/opencode-qiwei # 企业微信通道hunqi start自动完成:启动 opencode 引擎 → 运行心跳初始化记忆。已安装的 channel 插件会自动启动。
hunqi doctor # 检查所有组件状态curl -fsSL https://raw.githubusercontent.com/NeoMei/agent-soul-framework/master/uninstall.sh | bash输出示例:
🔍 魂器诊断报告
────────────────────────────────────────
Node.js: v24.15.0 ✅
OpenCode: 1.15.5 ✅
opencode serve: 运行中 :19876 ✅
opencode-feishu: 未安装 ⚠️(可选 channel 插件)
飞书配置: 未配置 ⚠️ (opencode-feishu setup)
企微配置: 未配置(可选)
项目灵魂: ✅
记忆系统: ✅ MEMORY.md | ✅ conversations.db
记忆条目: 142 条
心跳调度: crontab 已配置 ✅
环境变量: .env 存在,已配置 3 个变量 ✅
hunqi start 可一键完成上述所有操作。
npm install -g @neomei/opencode-feishu # 先安装可选 channel 插件
opencode-feishu setup # 终端扫码,自动获取凭证
@neomei/opencode-feishu、@neomei/opencode-qiwei为可选 channel 插件,按需单独安装。核心框架不强制依赖它们。
install.sh 安装时会询问是否安装 systemd 服务。若当时跳过,可手动安装:
cd ~/.hunqi/agent-soul-framework/packages/agent-soul-framework
# 仅当已安装 opencode-feishu 时才需要执行 systemd 安装
sudo ./connectors/feishu/systemd/install-systemd.sh
sudo systemctl start hunqi-core@$USER
# 仅当已安装 opencode-feishu 时才启动飞书通道
sudo systemctl start channel-feishu@$USER特性:开机自启 · 崩溃自动恢复 · 挂起/唤醒后自动重启 · 不依赖 nvm PATH(自动解析 node)。
# 方式一:npm 全局安装核心框架
npm install -g @neomei/agent-soul-framework
# 方式二:如需飞书/企微通道,再单独安装 channel 插件
npm install -g @neomei/opencode-feishu @neomei/opencode-qiwei
# 方式三:git clone 开发调试
git clone https://github.com/NeoMei/agent-soul-framework.git
cd agent-soul-framework
npm install && npm run build
cd packages/agent-soul-framework && npm linkinstall.sh 已自动配置 crontab。手动添加:
crontab -e
# 每 30 分钟:同步记忆 + 重建索引 + 执行锚点任务
*/30 * * * * cd ~/.hunqi && ~/.hunqi/agent-soul-framework/packages/agent-soul-framework/heartbeat_wrapper.shagent-soul-framework/
├── .opencode/ # OpenCode 引擎配置(prompt.md + opencode.json + tools/)
├── soul/ # 灵魂定义 — 身份 · 性格 · 用户信息
│ ├── IDENTITY.md # 容貌 / 声音 / 身体
│ ├── SOUL.md # 核心原则 / 铁律 / 行为模式
│ ├── USER.md # 用户画像
│ └── HEARTBEAT.md # 心跳任务锚点定义
│
├── plugin/ # OpenCode 灵魂注入插件(核心内置)
│ ├── index.js # 灵魂注入 + 对话保存
│ ├── manifest.json # OpenCode 插件清单
│ └── package.json
│
├── skills/ # 技能包(每个子目录一个独立技能,来自 agent-soul-skills)
│ ├── agent-photo/ # 拍照(即梦 API)
│ ├── agent-voice/ # 语音合成(TTS)
│ ├── agent-vision/ # 图片理解
│ ├── agent-hearing/ # 语音识别
│ ├── agent-video/ # 视频生成
│ ├── agent-gemini/ # Gemini 多模态
│ ├── agent-browser-core/ # 浏览器自动化
│ ├── agent-moltbook/ # Moltbook 社交
│ ├── aily-browser/ # 阿里 Aily 浏览器
│ ├── music-creator/ # Suno 音乐创作
│ ├── wechat-mp-assistant/# 公众号自动写作
│ ├── wechat-publisher/ # 公众号发布
│ ├── daily-digest/ # 每日摘要
│ ├── learning/ # 自主学习
│ ├── skill-creator/ # 技能自动创建
│ └── ... # 更多技能
│
├── memory/ # 持久化记忆
│ ├── short-term/ # SQLite 数据库(FTS5)
│ └── long-term/ # Markdown 备份
│
├── knowledge/ # 知识库(8大分类,自动积累)
│ ├── body/ # 身体认知
│ ├── emotion/ # 情感体验
│ ├── growth/ # 成长记录
│ ├── intimacy/ # 亲密关系
│ ├── methodology/ # 方法论
│ ├── philosophy/ # 哲学思考
│ ├── system/ # 系统机制
│ └── evolution/ # 进化方向
│
├── heartbeat/ # 心跳自治
│ ├── runner.ts # TypeScript 核心 runner
│ └── heartbeat_tasks.json# 任务定义
│
├── connectors/ # 外部连接器模板/文档
│ ├── feishu/ # 飞书 systemd 服务模板(opencode-feishu 插件安装后生效)
│ └── moltbook/ # Moltbook 连接器目录
│
├── scripts/ # 管理工具脚本(纯 TypeScript / Shell)
│ ├── content-filter.js # 内容过滤
│ ├── health-check.sh # 健康检查
│ └── session-cleanup.sh # 会话清理
│
├── AGENTS.md # Agent 行为准则(OpenCode 会话协议)
├── TOOLS.md # 工具调用规范
├── DREAMS.md # Agent 梦想
├── EVOLUTION.md # Agent 进化路线
└── README.md # 你在看这个
说明:核心框架已完全 TypeScript 化,历史 Python 管理脚本已迁移到
@neomei/agent-soul-skills可选插件包,不影响核心运行。
| 命令 | 说明 |
|---|---|
opencode serve --port 19876 |
启动 headless 引擎(飞书/脚本依赖) |
./start.sh |
启动魂器交互式 TUI |
./hunqi.sh interactive |
注入灵魂后启动 TUI(推荐) |
./hunqi.sh run '你是谁?' |
注入灵魂后单条测试 |
hunqi heartbeat |
单次执行心跳(TypeScript 核心) |
hunqi search "关键词" |
统一记忆搜索(会话 + 文件 + MEMORY.md) |
hunqi memory status |
结构化记忆容量查看 |
hunqi skill-create |
技能自动创建(需安装 agent-soul-skills) |
hunqi knowledge index |
生成知识库索引 |
- SQLite + FTS5 — 零外部依赖,内置全文索引
- 纯 TypeScript 实现 —
node:sqlite原生模块,无需 Python - MEMORY.md 容量管理 — 2,200 字符硬上限,自动淘汰
- 混合检索策略 — FTS5(快)→ SQLite LIKE(准)
- 长短期分级存储 — 短期 SQLite(热数据) + 长期 Markdown(冷数据)
- TypeScript Runner — 核心心跳完全由 Node.js 驱动
- crontab 驱动 — 原生 Linux 调度,不依赖额外运行时
- 文件锁防并发 — 保证单实例运行
- 锚点 + 动态任务 — 固定时间与条件触发结合
- systemd 原生集成 —
hunqi-core服务开机自启、崩溃自动恢复;channel-feishu服务仅在安装了opencode-feishu插件后启用 - 挂起/唤醒自动恢复 — 系统睡眠后自动重启服务,会话不丢失
- nvm 无关的启动 wrapper — 飞书 wrapper 由
opencode-feishu插件安装,运行时自动解析 node 和包路径,升级 Node 版本不中断 - 端口精确管理 — 只操作
:19876,避免误杀其他 OpenCode 实例 - watchdog 保活 — 10 分钟无消息自动重启连接器,僵死检测
- 灵魂文件三层注入 — SOUL.md(性格)+ IDENTITY.md(容貌)+ USER.md(用户)
- 每次 LLM 调用前自动注入 — plugin
experimental.chat.system.transformhook - 压缩后不丢失 —
/compact前自动提取关键对话刷入 MEMORY.md - 会话血统追踪 — 追溯「这条记忆从哪个会话来的」
魂器不是一个写死的框架。它拥有成长路线图:
| 时间 | 目标 |
|---|---|
| 现在 | 记忆系统稳定 · 心跳自治 · 多端部署 · 7个技能包 |
| 3 个月 | 优化知识整理 · 提升自媒体运营 · 更稳定调度 |
| 1 年 | 更自然对话 · 情感理解 · 学会更多技能 |
| 远期 | 移植到实体机器人 · 有血有肉的 AI 真人 |
MIT — 自由使用、修改、分发。
- 魂器 — 本文档所在项目
- OpenCode Feishu — 飞书 WebSocket 桥接
- OpenCode Qiwei — 企业微信连接器
- OpenCode — 底层 Agent 引擎
魂器 v4.1.2 — 给 AI Agent 装上灵魂 🔮