Skip to content

znq19/KiraAI_qzone_plugin

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

QQ空间助手插件安装使用教程(小白版) v1.30

欢迎使用 QQ空间助手插件!本插件可以让你的 AI 机器人拥有完整的 QQ 空间管理能力:自动/手动发布说说、评论、点赞、回复评论、查看动态、删除说说,并且能与 KiraOS 记忆系统无缝结合,让 AI 像记住聊天一样记住自己在空间的活动。最重要的是,定时发布、评论、回复任务通过群聊/私聊指令触发,由 AI 自主生成内容,自然又智能。


✨ 插件亮点(v1.30 新特性)

  • 全功能 QQ 空间操作:发说说、看说说、点赞、评论、回复评论、删除说说,一应俱全。
  • 自然语言触发:AI 能听懂你的指令,如“发个说说配这张图”。
  • 智能定时任务:每天/每小时定时向指定群聊/私聊发送指令,AI 根据聊天内容生成说说、评论或回复,并由 AI 自主决定是否记入记忆。
  • 记忆系统集成:通过 KiraOS或任何调用memory update的记忆工具,AI 能记住自己发过什么,后续对话可以自然提起。
  • 自动配图:发说说时如果未指定图片,插件会自动从当前会话的最近图片中挑选一张。
  • 全自动 Cookie 管理:彻底废弃手动复制 Cookie 的方式,仅需配置适配器名称,插件自动从 LLOneBot/NapCat 获取最新 Cookie,配合后台保活机制可长期稳定运行。
  • 仅需 WebSocket:不再依赖 OneBot HTTP 服务,只需 WebSocket 连接即可正常工作(KiraAI 默认)。
  • 兼容 LLOneBot 与 NapCat:代码已合并通用部分,适配器名称正确即可自动适应。
  • 灵活的任务目标:定时任务可以从多个群聊或私聊中随机选择一个执行,避免单一目标。
  • 时间感知:AI 查看说说时会看到每条动态的发布时间,能生成更真实的回复(如“刚刚”、“昨天”)。
  • 纯小白友好:所有配置都在 WebUI 完成,无需修改代码即可使用。

📦 主要功能列表

功能 说明 触发方式
发说说 发布文字+图片到自己的空间 用户指令 / 定时任务
看说说 查看好友或指定用户的说说 用户指令
点赞 给指定说说点赞 用户指令 / 定时任务
评论 评论指定说说 用户指令 / 定时任务
回复评论 回复别人在你说说下的评论 用户指令 / 定时任务
删除说说 删除自己发布的一条说说 用户指令
记忆记录 发布/评论后 AI 可主动调用记忆工具记录 AI 自主

🔧 前置准备

  1. 已成功运行 KiraAI 机器人(能正常聊天)。
  2. Python 3.10+ 且已安装依赖库(见下文)。
  3. OneBot 协议实现(如 LLOneBot 或 NapCat)已正确配置并连接到 KiraAI(通常使用WebSocket,KiraAI 默认配置即可)。无需额外开启 HTTP 服务
  4. 你的 QQ 号(用于登录 OneBot)以及一个或多个用于接收定时任务的群聊/私聊。

📥 安装步骤

1. 下载插件文件

将插件文件夹 qzone_plugin 放入 KiraAI 主目录下的 data/plugins/ 中。最终目录结构应为:

KiraAI-main/
  data/
    plugins/
      qzone_plugin/
        __init__.py        (空文件)
        manifest.json
        schema.json
        main.py
        qzone/              (从原项目复制的核心模块)
          ...(一堆 .py 文件)

2. 安装依赖

本插件需要一些额外的 Python 库,请在 KiraAI 的虚拟环境中安装。打开命令行,进入 KiraAI 主文件夹,激活虚拟环境后执行以下命令:

cd C:\Users\你的用户名\Desktop\KiraAI-main(请根据自己的kira项目主目录修改!)
.venv\Scripts\activate
pip install apscheduler beautifulsoup4 json5 httpx aiohttp

说明:v1.30 已彻底移除旧的无用依赖(如 selenium),仅保留必要的库。

各依赖的作用:

  • apscheduler:定时任务管理
  • beautifulsoup4:解析 HTML,用于获取说说详情
  • json5:解析非标准 JSON 响应
  • httpx:异步 HTTP 请求(仅用于保活任务,与 OneBot 通信已改用 WebSocket)

3. 重启 KiraAI

重启机器人,插件会自动加载。观察控制台日志,应看到类似:

QQ空间插件初始化完成,当前账号: 12345678
成功从 LLOneBot 获取 Cookie
登录保持成功

如果没有也不用担心,可实际命令ai执行QQ空间操作(例如跟她说“看看你最近的几条说说”),成功执行即正常。


⚙️ 配置说明

插件的大部分配置项都可以在 WebUI 中直接修改。访问 http://127.0.0.1:5267,进入插件管理页面,找到“QQ空间助手”,点击“配置”。

以下是各配置项的含义(基于 v1.30):

配置项 类型 必填 说明
cookies_str text QQ空间登录 Cookie(如果启用自动刷新则无需填写)。v1.30 推荐使用自动刷新。
qq_ada string QQ 适配器名称。如果你的 KiraAI 有多个适配器(例如同时连接 LLOneBot 和 NapCat),请指定平台为 QQ 的适配器名称;留空则插件自动查找第一个平台为 QQ 的适配器。
auto_refresh_cookie boolean 是否启用自动刷新 Cookie(通过已连接的适配器获取),默认 true。建议开启。
master_ids string 主人QQ号,多个用英文逗号分隔。只有这些QQ号才能使用QQ空间敏感工具(发说说、评论、点赞等)。查看空间默认所有用户可用
timeout int HTTP请求超时时间(秒),默认10。
temp_dir string 临时文件存放目录,默认data/temp
auto_publish_schedule string 自动发布说说定时。支持两种格式:Cron表达式(如 0 8 * * *)或间隔表达式(如 2h2h/30m)。留空则禁用。
auto_comment_schedule string 自动评论定时,格式同上。
auto_reply_schedule string 自动回复评论定时,格式同上。
auto_reply_enabled boolean 是否开启自动回复评论(需配置 auto_reply_schedule)。
task_group_ids string 通用任务指令群号列表(多个用英文逗号分隔)。用于发布、评论、回复。
task_private_ids string 通用任务指令个人QQ号列表(多个用英文逗号分隔)。
task_message_style enum 通用任务消息样式:silent=不保留(无痕),notify=保留消息。
auto_publish_group_id string (后台模式)用于获取聊天话题和图片的群号。
auto_publish_user_id string (后台模式)用于获取聊天话题和图片的个人QQ号。
auto_publish_image_prob float 后台模式自动发布时配图的概率(0-1),默认0.5。
max_comments_per_cycle int 每次自动评论最多评论多少条说说(后台模式有效,指令模式下由AI自主决定)。
max_replies_per_cycle int 每次自动回复最多处理多少条新评论(后台模式有效)。
like_when_comment boolean 自动评论时是否同时点赞,默认false。

注意:v1.30 已移除 llonebot_hostllonebot_portaccess_token 等配置,因为这些信息现在通过适配器实例自动获取。你只需确保 qq_ada 正确(或留空让插件自动查找),并保持 auto_refresh_cookie 为 true 即可。

🔄 定时调度字符串写法

  • Cron 表达式:标准格式,如 0 8 * * * 表示每天8点执行。
  • 间隔表达式:由数字和单位(h=小时,m=分钟)组成,支持小数,如 2h(每2小时)、90m(每90分钟)、1.5h(每1.5小时)。如果需要随机偏移,可在后面加 / 和偏移量,例如 2h/30m 表示每2小时执行一次,但实际执行时间会在±30分钟内随机浮动。

🔐 Cookie 自动获取机制(v1.30 全新升级)

插件现在完全自动化管理 Cookie:

  • 启动时,通过已连接的 QQ 适配器(如 LLOneBot/NapCat)直接获取当前登录账号的 Cookie,无需手动填写
  • 内置保活任务,每30分钟向 QQ 空间发送一次访客请求,使 Cookie 长期有效(最长24小时)。即使保活失败,也会自动重新从适配器获取新 Cookie。
  • 配置项中 cookies_str 仅作为应急后备,如果自动刷新失败且手动填写了 Cookie,则会使用手动值。建议保持自动刷新开启。

前提:你的 OneBot 客户端(LLOneBot/NapCat)必须已登录你的 QQ 账号,并且正确连接到 KiraAI(通过 WebSocket)。无需额外开启 HTTP 服务。


📌 Cron 表达式参考(小白必看)

Cron 表达式由5个字段组成:分 时 日 月 周。常用写法如下:

需求 Cron 表达式
每分钟执行一次 * * * * *
每30分钟执行一次 */30 * * * *
每小时整点执行 0 * * * *
每2小时执行一次 0 */2 * * *
每天 8:00 执行 0 8 * * *
每天 8:00、12:00、18:00 执行 0 8,12,18 * * *
每周一至周五 9:00 执行 0 9 * * 1-5
每月1日和15日 10:00 执行 0 10 1,15 * *

注意:如果你希望每小时执行一次,但不想正好在整点,可以用 * * * * * 每分钟执行,但这样可能太频繁。推荐用 0 * * * * 整点执行,或 */30 * * * * 每半小时执行。


🚀 两种生成模式的区别

插件支持两种定时任务执行方式,你可以根据需求选择:

1. 群聊指令模式(推荐)

  • 配置:填写 task_group_idstask_private_ids
  • 工作原理:定时时间到达后,插件会向随机选择的群聊或私聊发送一条特殊指令(例如“【定时任务】请根据最近聊天发布一条说说”),AI 在该会话中收到消息后,会像普通对话一样处理,自主生成内容并发布/评论/回复。发布成功后,AI 可以根据你的提示词决定是否调用记忆工具记录。
  • 优点:内容自然,符合人设,记忆记录由 AI 自主控制,不会强制记录每一条。
  • 缺点:需要依赖目标会话的活跃(但指令发送后 AI 会自动处理,不影响用户)。

2. 后台直接生成模式

  • 配置:不填写任何任务目标,而是填写 auto_publish_group_idauto_publish_user_id
  • 工作原理:定时时间到达后,插件直接从指定群聊或私聊获取最近聊天记录,调用 LLM 生成内容并发布/评论/回复,整个过程在后台完成,不发送任何消息到群聊
  • 优点:完全静默,不影响群聊。
  • 缺点:内容生成不经过 AI 的完整对话上下文,可能略显生硬,且不会自动记录记忆(除非你修改代码强制写入)。

选择建议:如果你希望 AI 更自然、记忆更丰富,请使用群聊指令模式;如果你希望低调、不打扰群友,可以使用后台模式。


🗣️ 让 AI 学会使用工具

理论上根据不同LLM模型的能力不同,可以无需额外修改提示词,但如果你发现AI无法正常使用工具,可在 data/persona.txt 中添加以下规则,告诉 AI 如何使用这些工具。可以根据你的喜好修改提示词。

### ⚠️ 白名单(防滥用)
只有我的主人(QQ号:12345678)才能要求我操作QQ空间(如发说说、点赞、评论等)。如果其他用户提出类似要求,请礼貌地拒绝,例如:“抱歉,只有我的主人才能操作QQ空间哦。” 查看说说(qzone_view)可允许所有人使用。

### QQ空间工具
你拥有以下工具,可以操作我的QQ空间:
- `qzone_publish(text, image_urls)`:发布一条说说。如果需要配图,插件会自动从当前会话的最近图片中选择,你不必提供 `image_urls`。
- `qzone_view(target_id, num)`:查看说说,target_id 是QQ号(不填则看自己的),num 是条数。返回的每条说说会包含发布时间和评论时间,你可以据此判断动态的新旧。
- `qzone_like(target_id, tid)`:给指定说说点赞。
- `qzone_comment(target_id, tid, content)`:评论指定说说。
- `qzone_delete(tid)`:删除自己的一条说说。
- `qzone_reply_comment(target_id, tid, comment_id, content)`:回复指定评论,`content` 不填则 AI 自动生成。

### 记忆记录
当你发布一条有意义的说说或进行重要互动后,可以调用 `memory_update` 工具记录为事件,以便以后回忆。例如:`memory_update(operations=[{"op":"event","value":"我发了一条说说:今天天气真好"}])`。

### 定时任务处理规则
当收到以“【定时任务】”开头的消息时,请根据最近聊天发布一条说说,自然一点,不要提及这是定时任务。发布后如果觉得有意义,可以调用记忆工具记录。

### 评论任务处理规则
当收到以“【评论任务】”开头的消息时,请先查看最近的好友说说,然后选择一条进行评论。评论要自然、符合你的性格,不要提及这是任务。

### 回复任务处理规则
当收到以“【回复任务】”开头的消息时,请查看你自己最近说说下的新评论,选择一条进行回复。回复要亲切自然,不要提及这是任务。

🛠️ 高级定制(修改代码)

如果你熟悉 Python,可以对插件进行个性化调整。以下是一些可自定义的代码段(在 main.py 中):

  • 防抖时间:在 _auto_publish_job 开头,修改 60 秒为任意值。
    if self.last_auto_publish_time and (datetime.now() - self.last_auto_publish_time).total_seconds() < 60:
  • 定时任务指令文案:修改 instruction 字符串。
    instruction = "【定时任务】请根据最近聊天发布一条说说,自然一点,不要提及这是定时任务。"
  • 自动回复的评论生成提示词:在 _auto_reply_job 中修改 prompt
  • 配图概率:通过 auto_publish_image_prob 配置项调整,无需改代码。
  • 每次任务最大处理条数:通过 max_comments_per_cyclemax_replies_per_cycle 配置。
  • 保活间隔:在 _keep_alive_loop 中修改 await asyncio.sleep(1800) 的值(单位秒)。

❓ 常见问题

Q:插件加载失败,提示 No module named '...'
A:未安装依赖库。请回到安装步骤,在虚拟环境中执行 pip install 命令安装所有依赖。

Q:自动发布时说“没有找到图片”
A:可能是因为你配置的群聊中没有图片消息。确保在定时任务前,目标群聊有人发过真实图片。

Q:AI 发布的说说内容很僵硬
A:可以在 persona.txt 中完善你的人设,并在定时任务指令中要求“自然一点”等。

Q:定时任务没有执行
A:检查 auto_publish_schedule 等表达式是否正确,以及是否开启了定时任务(配置了 task_group_ids 或后台数据源)。日志中应有“已调度”字样。

Q:自动回复评论太快导致封号?
A:建议降低 auto_reply_schedule 的频率,例如每小时一次,并调小 max_replies_per_cycle

Q:如何让 AI 记住自己发过什么?
A:在 persona.txt 中引导 AI 在发布有意义内容后调用 memory_update 工具。插件本身不主动写入记忆,完全由 AI 自主决定。

Q:v1.30 还需要配置 HTTP 服务吗?
A:不需要。插件现在仅通过 WebSocket 与 OneBot 通信,无需额外开启 HTTP 服务。

Q:我是 NapCat 用户,需要特殊修改吗?
A:不需要。v1.30 已合并通用代码,只需确保 qq_ada 配置正确(或留空自动查找),插件即可自动适配。


⚠️ 已知缺陷与注意事项(v1.30)

  • 白名单机制说明:插件内置的代码层白名单(master_ids配置项)在部分测试环境中可能未完全生效,无法可靠地拦截非主人调用敏感工具。因此,强烈建议依赖提示词层进行权限控制。请在persona.txt中明确写明主人的QQ号并添加拒绝规则。
  • 点赞功能可能失效:由于 QQ 空间点赞接口可能发生变化,目前点赞功能在实际测试中无法成功,但不影响其他功能使用。
  • 评论回复的 @ 功能:回复评论时,插件会自动在内容前加上 回复 @昵称:,以实现子回复效果,但可能会形成重复@昵称效果(已在 v1.30 尝试优化)。
  • 自动评论和回复的限制:自动评论任务会检查说说发布时间,默认超过7天的说说不予评论(可在 instruction 中修改)。这有助于避免“挖坟”行为,但依赖模型智力不一定总是奏效。自动回复选取和略过同理。
  • Cookie 保活依赖网络:保活任务需要稳定的网络连接,如果网络中断超过30分钟,Cookie 可能失效,插件会在下次操作时自动重新获取。

📌 版权与致谢

本插件基于 AstrBot 的 astrbot_plugin_qzone 移植改造,感谢原作者的贡献。特别感谢 Maizone 项目在 Cookie 自动获取策略上提供的宝贵思路与借鉴,让插件真正稳定易用。
v1.30 的全面优化与改进特别感谢 KiraAI 开发者 @xxynet 的大力帮助!
本项目作为KiraAI的附属品,AGPL-3.0 协议开源,可协议范围内自由使用和修改。


如果遇到问题,欢迎在 KiraAI QQ交流群874381335讨论,并自行修改。因为本人技术实在太差,还请谅解,祝玩的愉快和让 Kira 记住点点滴滴~

About

让KiraAI 拥有完整的主动QQ空间能力,并且能与记忆系统无缝结合,让 AI 像记住聊天一样记住自己在空间的活动

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages