Pular para o conteúdo principal
L

dsh-qq-zone

lfelkeea/dsh-qq-zone

Publishes and reads QQ Zone posts through SnowLuma's OneBot qzone_* actions (SnowLuma 2.2+ signed in to QQ), and lets the agent understand images with a local vision model (OpenAI-compatible gateway) or Windows OCR.

Instalar

dsh plugin --profile web add github:lfelkeea/dsh-qq-zone

README

dsh-qq-zone

给 DSH 里的 QQ 机器人补两条能力:发 QQ 空间(说说 / 看图 / 点赞 / 评论 / 删)和识图(把图片交给视觉模型,或退回系统 OCR 读字)。

两条链路都复用你机器上已经有的东西,不需要再申请任何 key:

能力后端说明
QQ 空间SnowLuma 的 OneBot qzone_* 接口(默认 127.0.0.1:3000)用的是机器人自己登录的那个 QQ
识图DSH 本地 OpenAI 兼容网关(默认 127.0.0.1:8326)里的多模态模型网关会把 DSH 里所有可用 provider 聚成一个出口
兜底 OCRWindows 自带 WinRT OCR(Windows.Media.Ocr)视觉模型不可用时至少把图里的字读出来

安装

dsh plugin --profile desktop install github:LFELKEEA/dsh-qq-zone

或者本地开发时,把仓库链接进 profile(跟 dsh-peak-valley 一样的做法):

mklink /J "$env:USERPROFILE\.dsh\plugins\dsh-qq-zone" "D:\path\to\dsh-qq-zone"

然后在 ~/.dsh/profiles/<profile>/package.json 里加依赖与 bundle,重启 DSH。

工具

工具用途
qzone_publish发说说。content 必填;images 可传本地路径 / http(s) / base64:// / data:;permission 默认 public,可选 friends / private(仅自己)/ some(配 targetUins)/ hide
qzone_timeline看空间:source=mine(默认,我发的)或 source=feeds(好友动态),带 tid 方便后续操作
qzone_delete删一条自己的说说(要 tid)
qzone_like点赞 / 取消赞;好友的说说建议同时给 targetUin 与 abstime
qzone_comment评论说说(纯文字)
qzone_profile读 / 改空间昵称与签名(`mode=get
see_image看图:给本地路径 / http(s) / data: / base64:// / sha256: 附件 id,或直接给 QQ 消息 messageId;mode=describe(默认,理解画面+读字)或 mode=ocr(只认字)
vision_status诊断:本地网关通不通、有多少个能看图的模型、OCR 兜底可不可用

通常不用配置

顺序是「环境变量 → SurfCore 配置 → 已知位置 → 默认值」:

  • OneBot 端点:QZONE_ONEBOT_HTTP / QZONE_ONEBOT_TOKEN → SurfCore config.json 的 snowluma.httpUrl 与 accessToken(也会读 ~/.dsh/surfcore/config.json)→ http://127.0.0.1:3000
  • 视觉网关:DSH_OPENAI_GATEWAY_BASE / DSH_OPENAI_GATEWAY_PORT / DSH_OPENAI_GATEWAY_API_KEY → OPENAI_BASE_URL / OPENAI_API_BASE / OPENAI_API_KEY → ~/.dsh/openai-gateway/api-key → http://127.0.0.1:8326(地址带 /v1 也行,会自动抹掉)
  • SurfCore 配置不在默认位置时:SURFCORE_CONFIG=<路径>

环境要求

  • Windows(只有 OCR 兜底依赖系统;其余平台也能跑,只是没有 OCR)
  • DSH >=0.2.0-rc.1 <0.3.0 || >=0.2.1-rc.1 <0.3.0
  • SnowLuma 2.2+ 且已登录 QQ(qzone_* 是它提供的动作)
  • 想用识图:机器上要有一个 OpenAI 兼容网关。最常见的是第三方插件 dsh-our-free-model——它在 127.0.0.1:8326 把 DSH 里所有 provider 聚成一个出口,并把 key 写到 ~/.dsh/openai-gateway/api-key;也可以用 OPENAI_BASE_URL + OPENAI_API_KEY 直接指向 DeepSeek/任何兼容服务。不需要装或配置 dsh-vision-router——see_image 不经过它。
    • 一个网关都没有时,see_image 会自动退回 Windows OCR(只读文字、看不懂画面),vision_status 会说清缺什么。

在 QQ 会话里用它

DSH 的 QQ 对话 preset 带了一个工具白名单守卫(surfcore/qq-tool-restrict.mjs), 不在名单里的工具注册得进来、执行会被拒。要用本插件的工具,需要把名字加进那份 SAFE_EXACT(显式名字,不要用前缀通配):

qzone_publish qzone_timeline qzone_delete qzone_like qzone_comment qzone_profile see_image vision_status

排错

现象原因与处理
onebot-unreachableSnowLuma 没跑 / QQ 掉线 / 端口不是 3000。vision_status 与 GET http://127.0.0.1:3000/get_login_info 都能验证
onebot-unauthorized令牌不对,或连到了别的账号(机器人号 / 个人号端口不同)
onebot-action-missingSnowLuma 太老,没有 qzone_* 动作
onebot-rejected + retcodeQQ 侧拒绝:空间没开通、没有权限、内容被风控
no-vision-model本地网关里没有能看图的模型:装一个视觉 provider,或只用 mode=ocr
vision-backend-unavailable网关没起来(DSH 关掉它就没了),或模型上游报错
OCR 读不出字图里确实没字,或系统缺中文 OCR 语言包

测试

npm test

零运行时依赖;测试覆盖发现逻辑、OneBot 错误映射、图片输入(路径 / data URL / base64 / file:/// / sha256 附件)、视觉模型挑选与降级、工具注册与参数校验。

许可

MIT

相关

Plugins relacionados