前言¶
在 DeepSeek Harness(DSH)里接大模型,常见做法是「你问一句、它答一句」:会话结束,上下文就丢。要做长期陪伴、隔几天还能接上旧事,往往得自己拼记忆层、定时任务和多个聊天入口。ai-companion-engine 由维护者 LingYS-14 开源,归类为 DSH 生态中的记忆向插件:它定位成「可以长期运行的 AI 伙伴内核」,而不是通用聊天机器人框架——内置时间感、能量与睡眠节律、长期记忆与自主意图,并支持 QQ 与网页工作台两条通道,默认走 DeepSeek 的 OpenAI 兼容接口。
下面介绍它解决什么问题、核心能力、如何在 DSH 中启用,以及独立自治运行时与配置要点。
这是什么¶
AI Companion Engine(npm 包名 ai-companion-engine,当前版本 0.1.0,许可证 MIT)是一个带状态的陪伴内核:约每 5 分钟一个 tick,由内核自行判断要不要主动开口;能记住发生过的事,入睡后做记忆巩固;即使用户暂时不说话,自治循环仍在运行。
仓库地址:https://github.com/LingYS-14/ai-companion-engine
DSH 插件目录页:https://www.skillhub.cn/plugins/LingYS-14/ai-companion-engine
DSH 社区目录是独立站点,与 DeepSeek / 幻方无官方从属关系;选用插件前应在本地审阅源码与许可证。插件在当前 DSH 进程权限下运行,涉及 QQ 桥、本机数据目录与 API key 时,请按自己的安全策略配置。
核心功能¶
长期记忆¶
记忆侧采用 JSONL 写前日志(WAL)与 SQLite 索引,支持回忆、再巩固、遗忘与冷归档。这与「只把聊天记录塞进 context window」不同:状态与索引持久落在 ACE_DATA_DIR 所指向的数据目录中。
自主意图与时间节律¶
意图引擎在每个 tick 上竞争多种意图(如 reach_out、continue_thread、repair 等),并带有 30 分钟同类刹车、重复抑制,以及 lookahead「到点浮现」读侧(可通过环境变量关闭)。时间与节律模块包含事实化时间行、睡眠窗口、能量模型(清醒耗能、睡眠恢复),以及由真实作息采样得到的昼夜节律。
夜间功课¶
入睡后会自动执行鲜明度衰减(fade)、记忆整合(consolidate)、冷归档等维护流程;可选记录 dream shadow(仅审计文件,不入记忆,由 ACE_DREAM_SHADOW 控制)。
双通道与模型分层¶
- QQ:通过 OneBot v11 桥接入,与网页工作台共享同一份记忆与历史。
- 网页工作台:DSH Web 端提供
/soul面板与对话页。
对话走高质量档模型(默认 deepseek-v4-pro,thinking);自述、主动触达、学习摘要等走默认 flash 档(默认 deepseek-flash)。用量与缓存命中入账。端点默认为 https://api.deepseek.com,可用环境变量覆盖。
DSH 插件面¶
作为 DSH 插件接入后,工具面会出现 27 个 soul_* 工具,Web 端出现「工作台」页面(路径 /soul)。
工程与审计¶
仓库提供 11 道工程门禁(npm run gate):规格校验、注册表、分层边、写入者扫描、类型检查、全量测试(fast)等;README 称改动需过门禁并留台账。测试规模约为 286 个测试文件(以仓库当前结构为准)。
安装与启用¶
环境要求¶
- Node.js ≥ 20、npm
- 独立自治运行时在 Windows 上若使用隐藏启动器,需要 PowerShell 7(见 README「快速开始」)
先在仓库根目录完成依赖安装与构建:
npm install
npm run build
npm run test:fast # 全量测试(不含 nightly)
npm run gate # 11 道门禁(CI 用)
README 未提供 dsh plugin add github:… 一类的一行安装命令;作为 DSH 插件使用时,按官方步骤手动接入。
在 DSH 中作为插件运行¶
- 将本仓库放在任意目录,执行
npm install && npm run build。 - 把仓库中的
cordis.patch.yml复制到 DSH profile 的补丁目录,按文件内注释修改dataDir、characterId、displayName等。 - 重启 DSH。重启后工具面应出现
soul_*工具,Web 端出现工作台页面(/soul)。
QQ 桥相关参数在 cordis.patch.yml 的 qq 字段中配置,例如 enabled、dryRun、baseUrl、wsUrl、token、peer 等。
独立自治运行时(不依赖 DSH)¶
若只需后台常驻的内核,可不挂 DSH,使用自治脚本:
npm run start # 启动(Windows:隐藏窗口 powershell)
npm run stop # 停止
node scripts/autonomy/health.mjs # 健康检查
典型配置¶
所有配置均可用环境变量覆盖,前缀为 ACE_。常用项如下(摘自 README 配置表):
| 变量 | 说明 |
|---|---|
ACE_DATA_DIR |
数据目录(状态、记忆、日志) |
ACE_CHARACTER_ID |
角色 id(数据文件名的一部分) |
ACE_LLM_API_KEY |
模型 API key(亦可用 DPAPI 加密存放) |
ACE_LLM_BASE_URL |
OpenAI 兼容端点,默认 https://api.deepseek.com |
ACE_LLM_MODEL |
默认(flash)档模型,默认 deepseek-flash |
ACE_LLM_MODEL_PRO |
高质量档模型,默认 deepseek-v4-pro |
ACE_LLM_TIMEOUT_MS |
单次模型调用超时,默认 90000 |
ACE_DREAM_SHADOW |
是否记录 dream shadow |
ACE_LOOKAHEAD |
设为 0 关闭「到点浮现」读侧 |
API key 建议通过环境变量或 DPAPI 加密文件提供,不要写入版本库。QQ 桥仅连接你自行配置的 OneBot 实现;dryRun: true 时可只生成消息不发送。
更细的架构与运维说明见仓库内 docs/ARCHITECTURE.md、docs/DESIGN.md、docs/OPERATIONS.md、docs/SECURITY.md。
适用场景与注意¶
更适合谁
- 已在用 DSH,希望把「长期记忆 + 自主触达 + 节律」做成一个可审计的内核,而不是从零搭 agent 框架的开发者。
- 需要 QQ(OneBot v11)与网页工作台共用一套记忆与历史的个人或小团队场景。
- 愿意维护本机数据目录、模型 key,并接受 tick 驱动的自治行为(包括对方长时间不说话时仍可能主动开口)。
使用前务必注意
- 权限:插件随 DSH 进程运行,能访问你为
ACE_DATA_DIR、QQ 桥等配置的资源;安装前应通读源码,尤其是plugin/、qq/、autonomy/与补丁文件。 - 敏感脚本:README 明确警告,
scripts/下部分 Python 脚本用于对本机 QQ 客户端的内部实现做只读研究(含 frida、内存扫描等),不是产品功能,也不在必跑门禁范围内;请勿用于读取他人数据或未授权设备。二次分发时 README 建议删除或保留警告。 - 隐私:仓库不包含真实用户数据;
data/与dist/不入库。QQ 与模型调用均发生在你自己的环境里。
结尾¶
ai-companion-engine 把长期记忆 WAL、意图竞争、睡眠与能量模型、夜间记忆功课,以及 QQ / /soul 双通道收进一个 MIT 许可的内核,并给出 DSH 补丁接入路径与 11 道门禁。若你的痛点是「无状态的问答插件不够像长期在线的伙伴」,可以按 README 完成构建、放置 cordis.patch.yml 并重启 DSH,再从 soul_* 工具与工作台页面试跑。