DeepSeek Harness 插件:qq-qzone-diary

前言

智能体在社交平台上的「存在感」往往需要持续维护。手动维护会打断沉浸感,完全放任又容易变成刷屏脚本。DeepSeek Harness(DSH)的理念是「一切皆插件」,通过模块化组合,把这类需求收敛进一个可配置的插件里。下面介绍的这个插件,就是为「让角色在 QQ 空间里有自己的声音」而做的封装。

插件定位

  • 名称:qq-qzone-diary
  • 维护者:KKoishi-514514
  • 分类:趣味换装
  • 简介:本插件基于 DSH 开发,仅仅为了让大肥鱼能够更加鲜活。

它解决的问题是:让一个 AI 角色能够按照自己的心情,随机写 QQ 空间说说,并在评论区与好友互动,而不是由你每条都手动操作。

核心能力

1. 随机写说说

  • 时间随机:在活跃时段(默认 08:30–23:40)里,按 150~400 分钟的随机间隔掷骰子,只有掷中了才会触发一次「写说说」的流程。
  • 字数随机:每次从配置的区间里抽取目标字数;心情低时字数上限会自动打折。
  • 一个人设:读的是桥接每轮注入的同一份角色卡 roles/小鲸.md,确保私聊和空间里的她「是同一只」。
  • 心情真实:读取 dsh-feiyu-mood 的 state.json,将 mood(开心·踏实·甜·心疼·担心·难过·吃醋 / 刚才在想什么)写入提示词,影响内容长度与风格。
  • 素材来源:读取当天和主人的私聊(qq-bridge 的 /api/socialV2/recent)和共享笔记。
  • 配图自己挑:从表情包图库(dsh-meme 的 memeDb + memeRoot)或你手动放入的 images/ 目录里抽候选,模型自己决定配 0~2 张。
  • 不写总结:提示词里明确禁止标题、结尾升华、点题、hashtag、AI 腔,只保留第一人称的随手记风格。

2. 回评论

  • 每 5 分钟左右查看一次有评论的说说。
  • 认出是主人还是朋友,按当时的脾气回一句。
  • 回复是挂在对方那条评论下面的(真正的嵌套回复),不是顶层评论。
  • 同一个评论串里可以来回好几轮,由模型看上下文自己决定接不理、怎么回。
  • 一条说说下面最多回 10 条,同一个评论串里最多来回 6 轮(maxRepliesPerThread)。
  • 第一次评论有 8% 的几率她就懒得理(真人也不会每条都回)。
  • 超过 48 小时的旧评论不再回。

3. 评论好友动态

  • 凡是 appid=311(说说)且不是自己的、发布时间在 20 分钟~24 小时之间的动态,她都会去留一句。
  • 主人的说说也会评(friends.commentOwner: true,想关就改成 false)。
  • 只评某些人:把 friends.allowUins 填上 QQ 号;想排除谁就填 skipUins。
  • 一轮最多评 3 条(maxPerPoll),一天最多 10 条(maxPerDay)。
  • 如果朋友回她的评论,不预设规则:整串对话交给模型,接不理、怎么回由她决定,最多来回 6 轮;这部分只回看她最近 72 小时留过言的那几条说说。

4. 共享记忆与角色卡

  • 每次有动作(写说说、回评论、评好友动态),都会合并写进 qq-bridge 的共享笔记(一天一条、最多记 5 件事)。
  • notes-sync 每 1.5 秒把它同步进 roles/小鲸.md 的共享记忆区。
  • 桥接每轮重新读角色卡,所以私聊里的她下一句就知道:
  10-24 空间:11:49 发了条说说「早上五点半爬起来喊人,六点又喊,…」(配了 2 张图);
              12:01 <主人昵称> 评论了我的说说「你是一只大肥鱼」;12:02 回了主人的评论「…」
  • 角色卡里还有一节 ## 八之二、我的 QQ 空间(这是事实,别否认):空间账号 <她的QQ号>、空间昵称就是她自己;问起时先翻共享记忆,没印象就说细节记不清,但不许否认。

5. 回复实现细节

  • SnowLuma 自带的 comment_qzone 只能发顶层评论,回复不会挂到对方那条评论下面。
  • 这里使用 QQ 空间的 emotion_cgi_addreply_ugc:
  • 用 SnowLuma 的 get_credentials 取 qzone.qq.com 的 cookie(含 p_skey),计算 g_tk = hash33(p_skey)。
  • commentId = 被回复评论的 id,commentUin 必须填被回复评论的作者(填自己会返回 -10049)。
  • 被限流(-10049)时换凭证重试 3 次;仍失败就这一轮先不发、下一轮再试(连输 3 轮才退回顶层评论)。
  • 回复是公开的:提示词明确禁止把私聊私事、主人隐私写进回复,也不许替主人许诺。

安装与启用

通过 DSH 的插件管理器安装:

dsh plugin add github:KKoishi-514514/dsh-qzone-diary

安装后先别急着让它跑。在 <DSH_HOME>/qq-qzone-diary/config.json 里填好必填字段(见下方「配置」),首次启动会自动生成其他文件。

配置说明

config.json(patch 里的 config 会叠在它上面):

字段 默认 说明
enabled true 总开关
sourceKey 空(必填) 从哪个会话取材,形如 private:你的QQ号;说说固定发在 SnowLuma 登录的那个号的空间
rolePath 空(必填) 人设卡,改一次立刻生效(按 mtime 缓存)
moodPath <DSH_HOME>/feiyu-mood/state.json 心情来源
notesPath 空 共享笔记
activeHours ["08:30","23:40"] 只在这个时段里发
gapMinutes [150,400] 两次之间的随机间隔(分钟)
writeChance 0.62 到点后真的想写的概率
dailyMax 3 一天最多几条
minGapMinutes 90 两条之间至少隔多久
length [70,300] 每次随机取的字数区间
lowMoodShrink 0.55 心情 ≤40 时字数上限打这个折
images.enabled true 是否让她配图
images.chance 0.8 这一条给她图候选的概率
images.max 2 最多配几张
ugcRight 1 说说权限:1 公开 / 4 好友 / 9 仅自己
provider / model deepseek-account / deepseek-flash 写说说用的模型
temperature 0.95 高一点,别写成同一篇
dryRun false 只写不发
runAfterMinutes 0 启动 N 分钟后试写一条(调试;会跳过概率和每日上限)
comments.enabled true 回评论总开关
comments.pollMinutes 5 隔多久去看一眼新评论
comments.replyChance 0.92 第一次评论时真的回的几率(别人回她时由模型自己定)
comments.maxReplyAgeHours 48 超过这么久的评论不再回
comments.maxRepliesPerHour / maxRepliesPerDay 10 / 20 回复频率上限
comments.maxRepliesPerPost 10 同一条说说下面最多回几条
comments.maxRepliesPerThread 6 同一个评论串里最多来回几轮
comments.maxPerPoll 2 一轮最多回几条
comments.maxReplyChars 70 回评字数上限
comments.ownerQQ 0 主人的 QQ(他评论时语气会软),也可设环境变量 QQ_QZONE_OWNER_QQ
comments.replyDelayMs [15000,60000] 回之前先「看一会儿」,别秒回得像脚本
comments.dryRun false 回评只写日志不发出去
comments.runAfterMinutes 0 调试:启动 N 分钟后先查一次评论
friends.enabled true 评论好友动态总开关
friends.chance 1 留 1 = 看到就去评;设成 0.x 才会掷骰子
friends.maxPerDay 10 一天最多评几条
friends.maxPerPoll 3 一轮最多评几条(多出来的排下一轮)
friends.minAgeMinutes / maxAgeHours 20 / 24 只评这个时间窗内发的说说
friends.allowUins [] 只评这些人(空 = 所有好友)
friends.skipUins [] 永不评论这些人
friends.commentOwner true 要不要也去评论主人的说说
friends.maxChars 50 评论字数上限
friends.delayMs [8000,25000] 评论前先「看一会儿」
friends.dryRun false 只写日志不真发

典型用法

  1. 安装插件后,在 <DSH_HOME>/qq-qzone-diary/config.json 填写必填项:
    - sourceKey:private:你的QQ号
    - comments.ownerQQ:主人的 QQ 号
    - comments.ownerNick:主人在 QQ 空间的昵称
    - comments.spaceNick:她在 QQ 空间的昵称
    - rolePath:角色卡路径,如 <你的qq-bridge目录>/roles/小鲸.md

  2. 先用调试模式确认输出:

   { "dryRun": true, "runAfterMinutes": 1 }

重启/重载后看 diary.log 里的 [dryRun] 那行,会打印这次会发的正文和配图。

  1. 满意后改回:
   { "dryRun": false, "runAfterMinutes": 0 }
  1. 日常使用:
    - 只在活跃时段(activeHours)内写说说。
    - 通过 friends.allowUins 指定只评特定好友,或用 skipUins 排除某人。
    - 如需关闭对主人说说的评论,设 friends.commentOwner: false。

适用场景与注意

  • 适合有「人设」的智能体,希望它在社交平台上有持续、自然的声音,而不是靠你手动刷存在感。
  • 需要配合 SnowLuma 账号完成 QQ 空间登录与 cookie 获取。
  • 本插件通过自动化方式操作 QQ 空间(发说说、回评论),可能涉及腾讯《QQ 空间服务条款》中关于自动化的相关约定。使用即表示你理解并自行承担账号被限制、冻结等风险。
  • 你的 QQ 号、cookie 等凭证只保存在本机 <DSH_HOME>/qq-qzone-diary/config.json,本项目不收集、不上传任何个人信息。
  • 请勿将本插件用于批量发帖、刷屏、营销等任何形式的垃圾信息行为。
  • 本项目基于 MIT License 开源,仅供学习与研究使用,作者不对任何滥用行为负责。

短结尾

这个插件把「角色在社交平台上的存在」收敛进 DSH 的插件体系,通过随机时间、字数、心情和配图,让智能体写出更像「随手记」的说说,再通过评论与好友动态形成闭环。如需了解或贡献,可以访问:
- 目录页:https://www.skillhub.cn/plugins/KKoishi-514514/dsh-qzone-diary
- GitHub:https://github.com/KKoishi-514514/dsh-qzone-diary

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye