AB
AiBoss站
project

ai-companion-kit - 给 AI 一副能操作手机的身体和一套拟人化聊天机制

ai-companion-kit 是维护者 pinganbbOvO 开源的双包工具集:companion 负责按人存储记忆、拟人化分条发送与唤醒判断,phone-mcp 通过 adb 提供 34 个 MCP 工具操作安卓设备。采用 MIT 许可,截至 2026-10-21 获 259 星标,尚无正式 release。

ai-companion-kit 是一个由两个可独立使用的子包组成的开源工具集,目标是补上通用 AI 助手的两块短板:一是「没有人味」——回复一次性倾泻、不分场合、记不住对话对象;二是「没有手」——无法操作手机上的 App 与界面。据项目自述,companion 负责角色卡、按人存储的记忆账本、拟人化发送节奏与唤醒策略,phone-mcp 则通过 adb 驱动真机或模拟器,提供点按、滑动、中文输入、截图、录屏等能力。它适合想搭建一个「记得住人、说话像人」的聊天机器人,或希望让模型直接操作安卓设备的开发者;两个包也可以只用其中一个。

维护者与状态

项目由 pinganbbOvO 维护,仓库创建于 2026-10-08,最后提交时间为 2026-10-19。截至 2026-10-21,仓库获得 259 个星标。目前尚无正式 release,也就是说没有可引用的版本号与发布包,使用方式以仓库内的源码与脚本为准。

主要能力

以下能力均据项目 README 自述整理,未经本站独立验证。

  • 按人存储的记忆账本:README 称记忆按「人」而非按会话存储,跨群聊与私聊共享同一条对话流,因此换了场合仍能认出同一个人。
  • 拟人化发送:Humanizer 模块控制打字时长、自动分条与条间停顿,README 举例说明深夜回复会变慢,避免「唰一下全出来」的客服感。
  • 唤醒与潜水判断:Waker 模块依据 @、被叫名字、提问、拍一拍、关键词、概率等条件决定是否发言,条件相互独立,支持在群里保持沉默。
  • 角色卡与体检:Role 模块把角色卡转成 system prompt,并提供「角色卡体检」命令,README 称其用于防止角色被写成客服手册。
  • 日记本:Diary 模块把「她自己的一天」与「关于你的事」分开存放,按天生成 Markdown 文件、以 JSONL 追加记录,并只把最近 3 条喂进上下文,避免日记变成第二本记忆账本。
  • 手机操作:phone-mcp 自述提供 34 个 MCP 工具,覆盖点按、滑动、中文输入、截图、录屏、连招,以及网易云音乐与 QQ 空间相关操作;支持一次调用执行一串动作并重复执行。

README 还列出了若干设计取向:每一层可单独使用、不绑定平台与模型(companion 只依赖 OpenAI 格式接口,phone-mcp 只依赖 adb)、数据以 JSON 与 JSONL 纯文本落盘、不确定的前置条件明确报错而非静默失败。

使用入口

仓库地址:ai-companion-kit。

据项目说明,不想接触命令行的用户可以下载仓库后进入 tools 文件夹,双击安装脚本,脚本会检查 Node、下载 qq-bridge、安装依赖并生成 config.json,最后打开记事本让使用者填写 QQ 号与网关令牌。脚本不会安装 DSH 或 SnowLuma,也不会修改现有文件。

只使用陪伴部分时,README 给出的流程是进入 packages/companion,复制配置模板与角色卡模板,填入 API key 与 QQ 号,先运行角色卡体检与离线 demo,再用干跑模式生成但不发送,最后才真正启动。只使用手机部分时,进入 packages/phone-mcp 安装依赖并运行自检以探测 adb 与设备,然后在 MCP 客户端中配置该服务器。

cd packages/companion
cp config.example.json config.json
cp role.example.md role.md
npm run check
node examples/demo.js
npm run dry
npm start

README 特别提示,真正启动这一步需要一个能连上 QQ 的 OneBot 实现,这一步没有一行命令可以完成。

许可与限制

项目采用 MIT 许可证。

README 明确写出的限制与风险包括:phone-mcp 交给 AI 的是真手机的完整操作权,不建议接入装有支付、银行类 App 的主力机,推荐使用模拟器或备用机;QQ 空间评论这类发出后无法撤回的操作,项目内置了限流,应予以保留;companion 会把对话存在本地 data 目录,除发送给模型的部分外数据不出本机;腾讯对 QQ 机器人存在风控,自动化频率过高会被限速甚至封号,README 称其限流参数是踩坑后调出来的,不建议为提高响应速度而调大。此外,安装脚本无法代劳的前置条件有两个:Node.js 与一个能连 QQ 的网关程序。