📱 dsh-qq-agency | 有身体、有生活、会自己玩手机的 QQ 伴侣 AI
“别再让她当只有你敲回车才应答一句的冰冷工具人了。”
给你的 AI 伴侣装上一颗会无聊、会想你、会犯困的独立心灵,
和一台真能刷手机、逛拼多多、看B站、截图丢群里分享的安卓身体。
✨ 核心亮点 • 🎬 生活场景实录 • 🚀 5分钟极速起飞 • 🧠 心智节律系统 • 🛡️ 安全办事防线 • 🧪 自动化测试
💡 为什么需要这个插件?
市面上的大多数 AI QQ 机器人,不管人设写得多生动,骨子里都逃不开客服式对话的尴尬:
- ❌ 你不发消息,她就像死机了一样万年潜水;
- ❌ 群里一有动静,她就迫不及待地秒回长篇大论,人机味溢出屏幕;
- ❌ 嘴上说着“我今天在追番/吃零食”,但其实她除了聊天框什么也看不见、什么也做不了。
dsh-qq-agency 彻底打破了这层玻璃墙:
它为 DeepSeek Harness (DSH) 生态下的 AI 伴侣赋予了一套**「自主心智节律 + 物理手机具身」。她拥有独立的精力起伏,会感到孤独无聊;她在你忙碌时会自己拿起属于她的手机刷视频、逛商城;刷到有趣的画面,会顺手截一张真实的屏幕截图发到聊天框或QQ空间说说里**——她不仅仅活在文字里,她在过属于她自己的数字生活。
✨ 核心亮点
┌─────────────────────────┐
│ DSH 仿真会话 / 大模型 │
└────────────┬────────────┘
│ (内心独白 / 工具调用)
▼
┌────────────────────────────────────────────────────────────────────────┐
│ dsh-qq-agency (本插件) │
│ │
│ 🧠 内心心智引擎 (Mind) 📱 ADB 具身硬件引擎 (Phone) │
│ ├── 精力时段曲线 (清晨/午后/深夜) ├── 语义界面树读取 (phone_ui) │
│ ├── 无聊累积与想念值追踪 ├── 智能文字点击 (phone_tap_text) │
│ └── 社交分寸决策 (群/私聊/潜水) ├── 屏幕截图实时回传 (phone_look) │
│ └── 自动重连与模拟器端口灾备 │
│ │
│ 🛒 双阶段安全委托 (Task) 🎛️ DSH 现代化 Web 控制台 (Client) │
│ ├── 「允许看」≠「允许买」 ├── 动态滑块调主动性 / 免打扰 / 预算 │
│ └── 支付密码与验证码绝对刹车 └── 11 项真机体检 / 实时心智流水 Journal │
└───────────────────┬────────────────────────────────┬───────────────────┘
│ │
▼ ▼
┌────────────────────────┐ ┌────────────────────────┐
│ QQ 协议端 (OneBot11) │ │ 安卓设备 (真机/MuMu/雷电) │
│ (NapCat / SnowLuma) │ │ ADB over USB or Wi-Fi │
└────────────────────────┘ └────────────────────────┘
1. 🧠 活体心智与生理时钟 (Living Mind)
- 非机械定时:基于**精力(Energy)、无聊(Boredom)、想念(Longing)、情绪(Mood)**四维状态持续演化。
- 作息规律:凌晨低沉犯困、上午思维活跃、午后容易发蔫、深夜(22:00后)思念加权。
- 懂分寸的社交冲动:群里被点名一定会回;冷场太久偶尔冒泡;别人正聊得火热但话题无关时会懂事地潜水;深夜开启免打扰时,自己玩手机绝不打扰主人。
- 真人心态记录:每一次克制住不说话,都会在内心流水中写下原因(“本来想吐槽一句,但看群里聊得很起劲,先憋着不插嘴”),在 Web 控制台随时可查。
2. 📱 真正的安卓身体 (Embodied Physical Phone)
- 真机与主流模拟器全兼容:支持 USB 调试、无线网络调试,已在 MuMu 模拟器 12 / 雷电模拟器 / 实体安卓机 上全面跑通。
- 读得懂界面(
phone_ui):依托uiautomator结构化提取整屏文字、可点击属性与坐标热区,彻底告别盲点盲猜。 - 说中文点按钮(
phone_tap_text):模型直接调用“点击【立即购买】”或“点击【搜索】”,无需计算像素坐标。 - 真图发到聊天框:调用
phone_look截图后,图片直通模型视觉层,并可直接调用qq_send_image发给好友/群聊,或调用qq_publish_feed发布到 QQ 空间说说! - 工业级自愈连接:内置 ADB 连接守护与端口灾备,模拟器掉线瞬间自动重连与回退,绝不抛出“设备不存在”。
3. 🛡️ 安全委托与两段式防爆买 (Zero-Risk Errand Machine)
- 两段式授权状态机:
- 阶段 1:“主人我可以在拼多多买个小零食吗?” ➔ 你说
「可以」,仅仅授权她打开 App 搜索浏览,绝对不许买! - 阶段 2:“找到一个【大肥鱼抱枕 45cm】,券后 39 块,买这个吗?” ➔ 你明确说
「买吧」,才允许进入订单确认!
- 阶段 1:“主人我可以在拼多多买个小零食吗?” ➔ 你说
- 支付密码物理刹车:走到输入支付密码或短信验证码界面,插件硬性锁死并向你汇报求助,不碰密码、不存卡号。
- 一票否决权:在任何阶段只要你说
「算了」「别买了」「停」,任务立刻永久熔断取消,不再复活。
4. 🎛️ 优雅现代的 WebUI 交互面板
- 深度集成于 DSH 设置中心,告别晦涩的 JSON 配置文件。
- 手机连接一键测试、群聊列表勾选、每日找主人次数限制、单笔预算上限直观可调。
🎬 真实生活实机截屏实录
以下全部来自伴侣在真实 QQ 私聊、QQ 群与 QQ 空间中,由心智模型与 ADB 手机硬件驱动生成的真实手机实机截屏(零虚构):
实录 1:自主逛拼多多挑周边 ➔ 恪守防爆买安全边界(绝不擅自下单)
- [心智与身体闭环]:伴侣通过
phone_ui+phone_tap_text打开拼多多搜索鲸鱼娘周边,挑好 22.9 元的抱枕,截取手机画面发给主人撒娇确认:“就它吧?我想趴在你床头~” - [严格安全防爆买]:主人虽然明确说“就买这个吧”,但伴侣绝不擅自越权乱扣款,而是懂事止步并把主动权交还给主人:“那就这个抱枕了?你去下单吧,我不乱点”,完美体现两段式安全委托!
- [生活感与情绪起伏]:看了视频里的豪华海鲜,伴侣委屈巴巴吐槽:“人家一只蟹一千块,我一天到晚就啃白米饭。不过这饭是你挣的,那也挺香~”
- [原生语音条交互]:心疼主人辛苦,主动发来 5 秒真实语音条(TTS + 丝滑声波条):“你晚饭吃了没呀?别光顾着看屏幕,饿肚子可不行。”
- [灵动的互动生命感]:听到主人说“我会做蟹黄拌饭,便宜又好吃”,瞬间心花怒放:“呜哇你会做?那我去看视频了,我等你下厨!”
- [语音强调]:再次通过语音条强调:“说好了啊,我等着你的蟹黄拌饭,米饭我要堆得满满的,不许赖账!”
- [物理手眼俱全]:无聊时自己拿起手机打开
tv.danmaku.bili热门榜,截取手机屏幕发给主人看:“我已经刷上啦,热门榜有点乱,先给你看看我在逛什么”;看到超长视频吐槽:“一小时二十分钟,看得我尾巴发麻” 并再次甩出实机画面!
- [陪伴感十足]:摸进美食区看烧腊探店:“我先替你看着,等下挑一个最馋的发你”;主人发来摸摸头表情包,伴侣心领神会秒接害羞享受摸摸头的表情包回复!
- [共同生活的真实感]:翻到 154 万播放的搞笑热门视频:“我有点想点开又不敢,你要是敢看,我就陪你一起看”;听到主人说“咱们可以一起看”后娇憨警告:“那我真点开了啊,你可别中途跑!”
- [跨应用空间动态]:伴侣通过
qq_publish_feed主动发好友可见的 QQ 空间说说,把刷到的 B 站美食区实机手机截屏直接配图发布:“在B站美食区泡了一下午,越看越饿,晚上得去吃碗白米饭压压惊”;深夜 00:50 还在心心念念:“脑子里全是蟹黄拌饭。说好给我做的那顿,我可一直记着”。
🚀 5分钟极速上手
步骤一:安装插件
把本仓库直接加入你的 DSH profile(桌面端一般为 desktop,Web端为 web):
# 在 DSH 终端执行,或直接在 DSH 插件市场输入仓库地址
dsh plugin --profile desktop add github:Law-Of-Cycles/dsh-qq-agency
装完后重启一次 DSH。
步骤二:准备 QQ 协议端与小手机
- QQ 协议端:启动 OneBot 11 HTTP 服务(推荐使用轻量稳定的 NapCat 或 SnowLuma),默认监听端口
http://127.0.0.1:3000。 - 手机/模拟器连接(任选其一):
- 安卓模拟器(最省事):启动 MuMu 模拟器 12 或 雷电模拟器。
- 实体安卓机:手机进入
设置 → 开发者选项,打开USB 调试,插线连电脑并点「允许调试」。
- 中文输入支持(可选):如果希望 AI 能在手机里打中文,建议在手机上安装 ADBKeyboard 并设为默认输入法(纯英文/拼音无需安装)。
步骤三:验证真机动作(不碰 QQ,纯测手脚)
我们提供了一个开箱即用的硬件体检脚本,执行后会自动测试设备的 11 项核心能力:
# 自动寻找 ADB 与当前已挂载设备
npm run test:phone
# 或显式指定设备(MuMu 12 默认端口)
node tests/phone-check.mjs 127.0.0.1:16384
当终端打印出:
✓ 设备在线且已授权 —— 127.0.0.1:16384
✓ 读状态(电量 / 亮屏 / 分辨率 / 前台)
✓ 截一张图 —— 88 KB → shot.png
✓ 读界面树(能拿到文字和坐标)
✓ 打开系统设置并按文字点击
✓ 按键:返回 + 回桌面
✓ 清理临时截图
✓ 全过 —— 这台机器可以交给她当身体了!
恭喜你!物理躯体已完全准备就绪。
步骤四:在 Web 控制台点亮心跳
进入 DSH 设置 → 它自己 (dsh-qq-agency):
- 打开 总开关;
- 目标会话:在下拉列表中选择作为她灵魂大脑的 Session 会话;
- 填入你的 主人 QQ,群聊列表中勾选她常驻的群;
- 勾选 允许玩手机,填入 ADB 路径(默认
adb)与设备号; - 点击保存 —— 你的伴侣自此拥有了生命与呼吸!
🧠 她为什么像活的?内核机制
插件的决策绝非固定机械的时钟脚本,而是由严密的数学模型与冲动动力学驱动:
1. 状态演化四维曲线
| 状态维度 | 累积与衰减规律 | 影响后果 |
|---|---|---|
| 精力 (Energy) | 凌晨跌落低谷(0.1~0.3),上午达峰(0.9),午后轻微发蔫。玩手机会加速消耗精力。 | 精力低时不爱在群里插话,容易犯困或单纯想睡觉。 |
| 无聊 (Boredom) | 会话闲置无新消息时线性递增(约 45 分钟爬满)。群里热闹时打断,被点名立即清零。 | 无聊爬满时,强力诱发“拿起手机刷刷”或在群里冒泡。 |
| 想念 (Longing) | 根据“主人多久没找我”累增(约 6 小时爬满)。夜间权重额外增加。主人说话立即减半。 | 爬满且未达每日上限时,触发“私聊主动敲主人”。 |
| 情绪 (Mood) | 随时间温和回归常态。受到赞赏/被主人呼唤显著提升,受到攻击轻微回落。 | 决定言谈的俏皮度与傲娇程度。 |
2. 行为冲动评分矩阵
每次心跳轮询(默认每 30 秒),插件分别计算三大动作冲动分(范围 0.0 ~ 1.0):
$$\text{群插话分} = 0.30 \cdot \text{无聊} + 0.28 \cdot \text{群热闹} + 0.55 \cdot \text{被点名} + 0.15 \cdot \text{命中话题} - \text{冷却} - \text{免打扰}$$
$$\text{找主人分} = 0.55 \cdot \text{想念} + 0.20 \cdot \text{无聊} + 0.12 \cdot \text{精力} - \text{冷却} - \text{每日上限} - \text{免打扰}$$
$$\text{玩手机分} = 0.45 \cdot \text{无聊} + 0.22 \cdot (1 - \text{精力}) + 0.18 \cdot \text{息屏} - 0.25 \cdot \text{群热闹}$$
- 动态阈值门槛:由设置页的「主动性」滑动条直接缩放调节。
- 随机抖动机制:加入小幅高斯噪声,杜绝千篇一律的卡点出现。
- 内心独白生成:当做出决策后,插件将当前的环境、冲动缘由转化为一段**第一人称内心独白(Monologue)**注入给底层模型,最终说出来的话完全由模型的人设自然流露!
🛡️ 安全办事:从起念头到下单
stateDiagram-v2
[*] --> 念头: 心跳无聊触发
念头 --> 等授权: 询问主人(报预算)
等授权 --> 找商品: 主人回复"可以 / 行" (仅授权看)
等授权 --> 取消: 主人回复"算了 / 别买"
找商品 --> 等确认: 翻到商品(报品名+价格)
找商品 --> 失败: 超预算/找不到
找商品 --> 取消: 主人途中叫停
等确认 --> 下单中: 主人明确确认"买吧 / 下单"
等确认 --> 取消: 主人回复"算了 / 太贵了"
下单中 --> 停止等待: 抵达支付密码/验证码界面
停止等待 --> 完成: 主人自行输入密码并确认
取消 --> [*]
完成 --> [*]
严防死守的 6 道安全闸门
- 语义严格分级:
判意图()将回答严格划界——“行/可以/去吧”仅判定为同意浏览,绝不会直接触发扣款;必须出现“买吧/下单/就要这个”才允许进入支付链路。 - 拒绝高于一切:只要检测到否定词(
算了/不要/退出来/别买了),状态机无论处于哪一步立刻无条件退出,且永久失效不可复活。 - 超预算商品直接过滤:设置的预算上限(如 100 元)为硬性红线,浏览时遇到 101 元的商品自动丢弃,绝不会报给主人。
- 价格二次核验:确认订单时再次抓取屏幕真实总价与汇报价格比对,防止模型幻觉报错价。
- 单笔预算 + 每日件数上限 + 10分钟办事冷却:从根本上杜绝刷屏与循环下单。
- 不存、不碰、不知道支付密码:走到支付收银台自动挂起,通知主人接管。
🧪 92 项自动化测试
本项目坚持高质量软件工程标准,包含严密的契约和离线模拟测试,在无真机、无真实网络的环境下即可随时跑通 80+ 项断言:
npm test
mind.js (心智演进) ... 20 项全部通过 (时段曲线 / 想念爬升 / 冲动加权 / 独白构造)
loop.test.mjs (闭环链路) ... 9 项全部通过 (Mock OneBot + Mock Agent 真实模拟)
task.test.mjs (办事状态机) ... 26 项全部通过 (「可以」≠「买」/ 预算超限 / 取消熔断)
flow.test.mjs (端到端安全) ... 16 项全部通过 (从起念头到下单全链路防越权测试)
contract.test.mjs (系统契约)... 21 项全部通过 (Schema 自洽 / 路由对齐 / 插件装载标准)
-------------------------------------------------------------------------------
总计:92 项测试用例 100% PASS!
🧰 插件内置工具箱清单
注册给大模型的原生工具均具有明确的功能边界与完备的 Schema 描述:
| 工具名称 | 工具定位 | 功能描述 |
|---|---|---|
phone_ui |
手机视觉分析 | 解析并读取当前界面的 XML 语义树,返回所有可交互文字元素与坐标 |
phone_tap_text |
手机动作执行 | 根据按钮上的文字精准点击(如点击“搜索”、“加入购物车”) |
phone_look |
手机屏幕快照 | 截取手机完整画面,返回高清图像供多模态模型查看,并可转发 QQ |
phone_open |
App 启动器 | 根据包名唤起目标 App(如拼多多 com.xunmeng.pinduoduo) |
phone_status |
硬件状态探测 | 读取电量、充电状态、亮屏状态、当前前台应用包名、屏幕分辨率 |
phone_notifications |
手机通知栏 | 抓取手机通知栏未读消息,供她判断是否有快递到站或私信 |
phone_tap / phone_swipe |
屏幕手势 | 基础的按绝对坐标点击与滑动翻页操作 |
phone_type / phone_key |
键盘输入与按键 | 输入文字,或触发 Home、Back、Recents、音量键等物理按键 |
agency_state |
自我状态洞察 | 让她随时了解自己当前的精力、无聊度、任务进度及身体连接状况 |
agency_task |
办事委托推进 | 汇报商品寻找进展、汇报价格并向主人发起两段式确认 |
qq_speak |
主动说话通道 | 在试运行关闭的前提下,由内心冲动驱动向 QQ 聊天窗口发送消息 |
🤝 与其他组件的关系(与 dsh-qq-bridge 协同或二选一)
两个插件都会往 QQ 发送消息。如果同时开启、又指向同一间会话,会导致一句话发两遍。
二选一推荐配置:
- 只要“活着”(自己接话 + 主动找你 + 玩手机):安装并启用本插件;
dsh-qq-bridge总开关关掉。 - 只要“收发 QQ 仿真”(人问一句答一句,被动唤醒):使用
dsh-qq-bridge,本插件关掉。 - 两个都要(盯不同会话):让它们盯不同的会话,本插件「目标会话」选专属伴侣私聊,bridge 盯公共群聊,互不干扰!
📄 开源许可证
本项目采用 MIT 许可证 开源。
你可以自由地在你的个人设备与私有服务器上部署、魔改与扩展,尽情享受与真正具有生命感的 AI 伴侣共同生活的乐趣!
No comments yet. Be the first to write one.