Memory

dsh-aurabot-qq

accomplish07zrh-eng/dsh-aurabot-qq · ★ 635

accomplish07zrh-eng

DeepSeek Harness 插件:让 AI 以「大肥鱼」住进 QQ(SnowLuma / OneBot v11)。表情、语音、记忆、空间、B 站、翻唱、生图全部模块化——可关、可换、可本地自写扩展,连群聊策略、提示词、回复和模型都能改,保存即生效。

README body is shown in Chinese.

License
MIT
Added
2026-10-28
Maintenance
active
Install kind
github
Manifest details
Manifest status
Declared
Manifest path
package.json#dsh
Manifest checked
2026-10-30T09:38:16.127Z
Lifecycle scripts
None found

Static manifest checks report declarations only; they are not compatibility or security review.

安装

dsh plugin --profile web add 'github:accomplish07zrh-eng/dsh-aurabot-qq#3518173ef870fc50bf9a318318f85b2a3fe2df60'

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: zh · Read Chinese README

Table of contents
  1. 刷小黑盒
  2. 安装
  3. Linux / Docker 上要知道的
  4. 升级
  5. 设计要点
  6. 目录
  7. 可选扩展
  8. 测试
  9. 数据位置
  10. 联系我们
  11. Star 趋势
  12. 桌宠的来源
  13. 致谢

DeepSeek Harness(DSH)插件。DSH 里的 AI 以独立 QQ 号「大肥鱼」的身份住进 QQ:有人格、心情和记忆,能看图、发语音、听语音、发和收表情包、用自己的声音翻唱、写 QQ 空间日记、逛空间回评论、刷 B 站发评论、刷小黑盒看帖发帖,还会主动找你聊天。

QQ ⇄ SnowLuma(OneBot v11,你自己安装)⇄ Aurabot 插件 ⇄ DSH 会话(Aurabot 自带的 preset + 人格)
  • 入口:DSH 左侧栏「自动化任务」下面的「Aurabot」。整页面板用标签分功能:概览、连接、人格、权限、聊天、模型、语音、表情包、生图、空间日记、主动搭话、心情与记忆、翻唱、B站、抖音、小黑盒、本地接口、扩展、日志。
  • 开放:每项本事都是模块,能关、能替换、能复制一份来改;自己写的模块放在数据目录 modules/,升级不覆盖、保存即生效。连群聊插话策略、交给她的提示词、回复怎么拆、最终发出去什么、用哪个模型都能用模块改。说明见 src/modules/API.md,不会写就让 DSH 照着写。
  • 会话:每个 QQ 私聊或群各对应一个 DSH 会话,都放在侧栏的「Aurabot · QQ」工作区里,可以点开看她想了什么、调了什么工具,也可以直接插话。
  • 安全默认:总开关关、试运行开。不手动打开,一句都不会发到 QQ。

刷小黑盒

用你的小黑盒账号逛游戏社区。面板「小黑盒」页:填 Cookie、检查登录、配逛法、看额度和热榜预览。

  • 要准备什么:浏览器登录 小黑盒 后,把整串 Cookie 粘进面板。pkey 必须有(读接口用);想让它能点赞、评论、发帖,还得有 x_xhh_tokenid(F12 → Application → Cookies 里能复制到,这个不是 HttpOnly)。
  • 它会做什么:定时看信息流、读帖子正文和热评;有热榜和搜索;按权限决定点不点赞、评不评论。写操作各自有权限开关(「权限」页),默认只认主人私聊。
  • 发帖:走「文章」模式(link_tag=11),正文按空行分段,图片走小黑盒图床(腾讯云 COS 直传),所以图片能真正插在文字中间。发帖前它自己会过一遍自检:先看热榜挑题、再看社区高赞帖的角度、素材里必须有具体数字;标题不重复正文首行、不编造第一人称经历、正文 200-800 字、不碰政治和价格判断。
  • 发帖风格(三选一,面板里选默认,也能单次指定):diary = 大肥鱼日记,跟空间日记同一个味——第一人称随手记,可以写今天刷到这条时的反应、想吃白米饭,120-300 字,不分小标题;news = 热搜文,报道新闻体,开门见山讲清楚这事、摆具体数字,钩子→信息 3-4 段→我的判断→抛问题,200-800 字;mix(默认)= 肥鱼热搜,用日记的口吻写热搜,新闻信息要真、语气是「我跟你说个事」,150-500 字。
  • 几个踩过的坑(已修在内核里):帖子类型 28(动态)只能纯文本,塞 HTML 会把标签原样显示;分区 id 必须是真实存在的 7214 盒友杂谈 / 18745 数码硬件 / 806933 AI,网上抄来的 58144 并不存在,会一直报「错误的帖子类型」。
  • 限速:帖详情和搜索接口查太勤会弹验证码,还可能连坐浏览器登录态。内核统一 900ms 限速,搜索单独 8 秒,被挡时自动降级去翻信息流,不会反复硬试。
  • 工具:heybox_feed(刷信息流)、heybox_watch(读帖子+热评)、heybox_hot(热榜)、heybox_search(搜帖找角度)、heybox_topics(查分区)、heybox_like、heybox_comment、heybox_post(发帖,可带图)、heybox_delete(删自己的帖)。

安装

需要:DeepSeek Harness、一个用来当机器人的 QQ 小号,以及一个让机器人号上线的 QQ 网关:Windows 上用插件帮你管的 SnowLuma 最省事;Linux / Docker 或者已经有 QQ 机器人的,接你自己的 OneBot v11 服务就行(见下面)。

Windows 桌面版:

& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add github:accomplish07zrh-eng/dsh-aurabot-qq

Linux / Docker:用 DSH 自己的命令行(把 <profile> 换成你在用的 profile;在容器里就进容器执行):

dsh plugin --profile <profile> add github:accomplish07zrh-eng/dsh-aurabot-qq

装好后重启 DSH,打开左侧栏「自动化任务」下的 Aurabot,跟着设置向导走:

  1. 填机器人 QQ 号(用小号)和你的 QQ 号
  2. 选 QQ 网关:
    • 用 SnowLuma(Windows):自己下载并解压 SnowLuma,启动,在面板里同意它的协议(控制台密码自动生成),登录机器人号后点「接入机器人号」
    • 接我已有的 OneBot 机器人:NapCat、LLOneBot、Lagrange、Docker 里的 SnowLuma 等任何 OneBot v11 实现都行。让它登录机器人号,把正向 WebSocket 地址(和 token,有的话)填进向导;HTTP 地址可选。插件只连接,不启动、不注入任何东西,连上后先核对登录的是不是机器人号
  3. 先试运行,或直接上线

Linux / Docker 上要知道的

  • 语音:edge-tts 装在插件自己的 Python 虚拟环境里,要有能建虚拟环境的 Python(Debian / Ubuntu 装 python3-venv),或者装了 uv。Windows 自带语音这个兜底在 Linux 上没有。
  • 刷抖音:需要 Chrome / Chromium / Edge,而且不能用无头模式(抖音会拦)。没有桌面的服务器上用 Xvfb 之类的虚拟显示跑,比如 xvfb-run 启动 DSH,或在容器里起一个 Xvfb 再设 DISPLAY。浏览器路径可以在面板里填,也可以设环境变量 CHROME_PATH。
  • 翻唱(RVC):目前只支持 Windows。
  • 容器里的 DSH 连宿主机或别的容器上的 OneBot 服务时,地址要用容器能访问到的主机名 / 端口(不是 127.0.0.1)。

升级

再跑一遍上面的安装命令(拉取 GitHub 上的最新版),然后重启 DSH。设置、人格、记忆都会保留;有新版本时面板里也会提示。Windows 桌面版:

& "$env:LOCALAPPDATA\Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd" plugin --profile desktop add github:accomplish07zrh-eng/dsh-aurabot-qq

设计要点

方面 做法
人格注入 插件在 cordis.patch.yml 里自带两个 agent preset:aurabot-private(主人私聊,完整工具)和 aurabot-social(群聊和其他人私聊,没有任何本地工具)。人格通过 @deepseek-ai/dsh-persona 放在系统提示词最前,文本来自插件注册的提示词变量 {{aurabot_persona}},切换人格无需重建 preset。
每轮变化的内容 心情、记忆用 agent.ctx.systemPrompt.context(),追加在对话末尾,不破坏前缀缓存。
群聊上下文 群里停顿几秒算一段,她回上一段时新消息先攒着,看完整段再回(不会一条一回);交给她的是这一段谁说了什么、之前在聊什么,新消息带编号,想专门接某一条时可以引用回复。合并转发会展开成里面的聊天记录再给她;有人戳她(拍一拍)当成对她说的话,她也能戳回去。被叫必回,没人叫时按话题相关度插话,加入话题后接着聊;有防刷屏的刹车。
记忆 本地索引记忆库(中文二元切词 + BM25,再按「关于当前说话人」「重要程度」和遗忘曲线加权,越常被想起的忘得越慢)。来源:她自己记的、每天两次从聊天和空间动态里整理出来的、她自己的经历(唱了什么、评论了谁)、空间日记、你手动加的。整理时新事实先和旧记忆比对:补充旧的就合并,说明旧的过时了就把旧的标成「已过时」(不删,能恢复)。每个人有一张常驻的「人物小档案」,每个人 / 群还有「相处经验」和「说话方式」。想起的记忆带时间;对方只说「嗯嗯」时连上一句一起想;面板能看到最近几轮想起了哪几条;可以导入旧档案。
心情 默认按关键词,可选每轮用模型判一次(有把握才算,分得清她主动找人时的心意);被夸、被凶会推动心情,按半衰期回到平常;心情明显时每轮告诉她该怎么说话,并实际影响发表情 / 语音的概率、回复快慢、插话积极程度。
B 站 定时从她的兴趣、记忆里主人喜欢的东西和面板关键词里挑方向搜视频(WBI 签名),读简介、字幕和热评,再按人格决定评论 / 私聊分享给主人 / 记住什么;定时看别人回她的评论并接着回。主人在 QQ 里发 B 站链接或分享卡片,她用 bili_watch 看完再聊。看过、评过、回过的都记成她的经历。不碰关注、私信。
刷抖音 专用浏览器(独立的登录资料目录,Edge / Chrome / Chromium,经 CDP 控制,窗口放在屏幕外)。数据都走抖音网页自己的接口(在页面里 fetch,签名由页面脚本自动加,不自己算 a_bogus),不读屏:标题、分类、抖音给的内容摘要和分段、热评。一个个点开看(真的播放、停留),再按人格决定点赞 / 评论 / 分享给主人(抖音私信分享视频卡片、QQ 私聊发她的话 + 链接,或两边都发)/ 记住什么;特别想让主人看的,会在评论里真·@主人(用抖音自己的 @ 选人,按 sec_uid 认人,认不出就不发)。点赞 / 评论在弹层播放器里按视频 id 找按钮,点完等接口回应才算成功;页面看不见(锁屏)时用页面内事件。扫一次码登录(面板里显示登录弹窗截图)。打开面板不启动浏览器;验证码每次现查,遇到就当天停手。每天上限、两次操作间隔、新号前几天减半;4 项权限默认仅主人;总开关默认关。主人在抖音私信她,她会回(只认核对过的主人);评论被抖音要求身份验证拦下时能认出来。
改资料 听人的话改她自己的 QQ 昵称 / 签名 / 头像(qq_set_nickname / qq_set_signature / qq_set_avatar,走 SnowLuma 扩展动作),以及 B 站签名 / 头像(bili_set_sign 最多 70 字;bili_set_avatar 收图片网址或 last=刚才发的那张图,最大 2MB,走 x/member/web/face/update)。面板「权限」页每个操作单独设 关 / 仅主人私聊(默认)/ 所有人;执行前按最新设置再查一遍,试运行只回话不真改。
按聊天选模型 主人可以让不同聊天用不同模型。面板「模型」页的「按聊天选模型」:两个下拉框选「私聊默认模型」「群聊默认模型」,要给某个 QQ / 某个群单独指定,展开下面的小列表添加一行(再点「移除」删掉)。优先级:这个私聊(QQ 号)> 这个群(群号)> 所有私聊 / 所有群默认 > 全局模型(「聊天用的模型」或 DSH 默认);没选或选的模型在 DSH 里找不到,就自动用下一级。存在 config.json 的 chatModels(privateDefault、groupDefault、privates、groups,每项 { provider, model, reasoningEffort? }),重启不丢,换了从那个聊天的下一条消息起生效。只有主人能改,聊天里的人说什么都换不了;扩展模块的 model 挂钩仍在这之后运行。
模块 除了核心(配置、QQ 网关、聊天中枢、人格、权限、面板),每项本事都是模块(src/modules/)。内核(src/core/modules.js)负责开关、替换、热重载和出错隔离:模块注册的工具、上下文、规则、命令、事件、定时任务、接口都记在它名下,停下时一起撤掉;聊天中枢用到表情、语音、心情、记忆时,找的都是当时在跑的那个模块。用户模块放在数据目录 modules/(升级不碰),和内置模块同名就是替换。扩展接口版本化,说明见 src/modules/API.md、类型见 src/modules/aurabot.d.ts(每次启动复制到 modules/)。聊天主流程留了改写挂钩:群聊决定、提示词、回复拆条、最终发送、模型选择、人格和规则。自己写的模块按快照加载(多文件、npm 依赖都能热重载),面板「扩展」页有模拟测试(截获发送,不真发)。
本地接口 语音合成、生图、翻唱换声、语音识别都能换成自己电脑上的模型或服务:面板生成带示例的脚本(放在数据目录 local/,升级不覆盖、改完即生效),也可以「复制给 DSH 的话」让 DSH 照接口说明帮你改。
QQ 命令 主人在 QQ 里直接发 /silent /active /quiet /chatty /model /sing /remember /status 等管她,总开关关着也能用。
工具 由各模块提供,按会话注册(agent.ctx.tools.register),只出现在 Aurabot 的会话里。群管在工具层校验这一轮有主人下令、对象不是主人、她在群里有管理权限;点歌、生图校验「这一轮说话的人全是主人」,不只靠人格约束。
QQ 网关 OneBot v11:WS 收事件(实时),HTTP 调接口(没填 HTTP 就都走 WS)。用 SnowLuma 时插件从它的配置文件自动读取端口和令牌;接自己的 OneBot 机器人(gateway: "onebot")时只连你填的地址,不启动、不注入任何东西。不管哪种,连上后都先用 get_login_info 核对登录的是不是机器人号。
SnowLuma 管理 SnowLuma 的 EULA 第 5.4 条不允许「通过自动化脚本部署」,所以插件不下载,也不替你同意协议:协议全文显示在面板里,由你本人勾选同意。插件只启停你自己装好的那一份(后台运行,不弹窗口);第一次启动时用 SNOWLUMA_WEBUI_BOOTSTRAP_PASSWORD 设一个自己生成的控制台密码。注入前用 /api/processes 核对每个 QQ 进程登录的号,只注入机器人号(SnowLuma 认不出号时,只在唯一一个认不出号的进程上注入,连上后用 get_login_info 核对,不是机器人号就断开并撤销);hookAutoLoad 永远关。
语音 TTS 用 edge-tts(装在插件自己的 Python 虚拟环境里,Windows / Linux / macOS 都行),也可以接本地的 CosyVoice、GPT-SoVITS;Windows 上装不上时用 Windows 自带中文语音兜底。面板「语音」页还能用翻唱里导入的 RVC 音色给语音条变声:先 TTS 再变声,让说话和唱歌是同一个声音(翻唱环境要装好;失败自动用原声)。ASR 先用 QQ 自带的语音转文字(fetch_ptt_text),再试 DSH 的 speechToText。
表情包 只收真正的表情(sub_type=1、mface、带 emoji_id 的),再过尺寸、宽高比、体积、MD5 去重、每小时限额几道关。收下后 add_custom_face,视觉模型起备注后 modify_custom_face。商城表情按商城表情原样发;面板里能改表情的名字和标签;关掉表情包后回复里写的表情也不发。
空间 空间日记用 send_qzone_msg,在专用的后台会话里写,结合当天聊天流水。空间互动:定期看自己说说下的新评论和回复(按整串评论来回,一串只回一次),逛好友动态按概率点赞、评论;评论时结合说说内容和楼里已有的评论。
翻唱 点歌(qq_song_cover 工具或 /sing)→ 网易云下载(weapi,可填 Cookie 下会员歌)→ 先截要发的那一段 → audio-separator 分离人声和伴奏 → Applio(RVC,固定版本)换成她的音色 → ffmpeg 混音 → 发语音条。插件不带音色,用户在面板里导入自己有权使用的 .pth / zip。一键安装不依赖电脑上的 Python / git / uv,可以选装到哪个盘,进度可见,下载走系统代理并能断点续传。

目录

src/host.js            插件入口(宿主半边):核心 + 面板接口 /aurabot/api/*
src/core/modules.js    模块内核:加载、开关、替换、热重载、出错隔离
src/modules/           12 个内置模块 + 扩展接口说明 API.md + 类型 aurabot.d.ts + 新模块模板
src/chat/              消息中枢、群聊策略、回复解析、白名单与权限
src/onebot/client.js   OneBot v11 客户端(HTTP + WS,自动重连)
src/snowluma/          SnowLuma 管理(检测、启停、只注入机器人号)
src/features/          表情包、空间日记和空间互动、心情、记忆、主动搭话、生图
src/song/              翻唱:网易云、安装器、分离 / 变声 / 混音流水线、音色导入
src/voice/             文字转语音、WAV 处理
src/tools/tools.js     工具的写法(defineTool)
src/persona/           人格卡与规则
client/client.js       网页半边:侧栏入口 + 面板
personas/dafeiyu.md    默认人格「大肥鱼」
cordis.patch.yml       插件与两个 preset 的挂载声明
test/                  单元测试 + 端到端测试(假 DSH 宿主 + 模拟 OneBot)

可选扩展

逛贴吧(只读) 支持搜索、看帖、首页推荐/热门、配置贴吧定时浏览和给主人分享。以独立用户模块构建安装,自动浏览默认关闭,不提供发帖、回帖或点赞接口。

测试

npm test

数据位置

%USERPROFILE%\.dsh\plugins-data\aurabot\:配置、人格、表情库、日记、记忆、日志,还有自己写的模块(modules/)和本地接口脚本(local/)。重装、升级插件都不会丢。

联系我们

  • QQ 交流群:扫下面的二维码加入(项目维护和想法讨论都在这里;装不上、报错了也可以进来问,尽量先带上面板「日志」里的报错和版本号)
  • GitHub:issue 报 bug / 提需求,PR 提代码;提之前先翻一下有没有重复。贡献者名单见版本说明和 PR 记录。

Star 趋势

桌宠的来源

桌面上的那只小鱼和侧栏「桌宠」页不是本项目自研的设计:客户端形态(Electron 透明置顶窗、HTTP 长轮询、气泡与右键菜单)、 拖拽甩抛物理、pet pack 目录约定、以及工作状态六档 / 碎碎念动画的命名约定,都移植自 dsh-pet(作者 PC2005-cloud,代码 MIT)。 Aurabot 这边做的是适配层:接进模块体系、和「主动搭话」的载体互斥、面板设置、DSH 会话事件联动。

「大肥鱼」形象与动画素材是 CC BY-NC-SA 4.0(署名 · 非商业 · 相同方式共享,作者声明不可商用)。 素材体积大(50MB+)不随本仓库分发:插件启动时会从独立素材仓库 dsh-aurabot-qq-mods 自动下载落位(用户零操作; 素材在仓库的 pet-pack/ 文件夹里,不在仓库根目录;网络不佳可在面板「桌宠 → 素材包下载地址」换成任意镜像直链)。使用请遵守其许可, 完整署名与许可原文见 THIRD-PARTY-NOTICES.md。

致谢

参考了 Yuuyuko-uu 的 dsh-qq-bridge、dsh-speak-up、dsh-feiyu-mood、dsh-fish-memory 等插件(MIT)在 DSH 插件机制上踩过的坑,具体是:注销器是函数而不是 .off();followup 必须 await;心情别每轮都提。没有复制它们的代码。