让模型自动挑时机发 QQ 空间说说并配表情包图
31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add kdcadmin/dsh_qzone_sticker该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
dsh 原生插件 · browser
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 5 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 44 处,展示前 40 条)
- 读取本地文件index.js:48
return JSON.parse(readFileSync(configFile, 'utf8')) - 写入本地文件index.js:58
writeFileSync(configFile, JSON.stringify({ dailyLimit: runtime.dailyLimit, minIntervalMs: runtime.minIntervalMs, imageDir: runtime.imageDir, pickMode: - 读取本地文件index.js:245
try { return JSON.parse(readFileSync(cacheFile, 'utf8')) } catch { return null } - 写入本地文件index.js:261
writeFileSync(cacheFile, JSON.stringify({ at: Date.now(), uin: r.uin, posts: r.posts, message: r.message })) - 读取本地文件index.js:302
const buf = await readFile(p) - 读取本地文件index.js:318
const entries = await readdir(d, { withFileTypes: true }) - 读取本地文件index.js:367
for (const ent of await readdir(d, { withFileTypes: true })) { - 读取本地文件index.js:424
return { ...autopostDefaults, ...JSON.parse(readFileSync(autopostFile, 'utf8')) } - 写入本地文件index.js:427
try { writeFileSync(autopostFile, JSON.stringify(autopostDefaults, null, 2)) } catch {} - 写入本地文件index.js:432
try { appendFileSync(autopostLog, new Date().toISOString() + ' ' + line + '\n') } catch {} - 写入本地文件index.js:522
try { writeFileSync(options.logFile, snapshot || '{}') } catch {} - 发起网络请求client.js:25
const jget = async (p) => asJson(await fetch(API + p, { credentials: 'same-origin' })) - 发起网络请求client.js:26
const jpost = async (p, body) => asJson(await fetch(API + p, { - 发起网络请求lib/qzone.js:60
response = await fetch(url, { - 请求外部主机user.qzone.qq.comlib/qzone.js:91
const res = await fetch(`https://user.qzone.qq.com/${session.uin}`, { - 发起网络请求lib/qzone.js:91
const res = await fetch(`https://user.qzone.qq.com/${session.uin}`, { - 发起网络请求lib/qqlogin.js:69
const res = await fetch(url, { - 写入本地文件lib/qqlogin.js:153
await mkdir(path.dirname(SESSION_FILE), { recursive: true }) - 写入本地文件lib/qqlogin.js:161
await writeFile(SESSION_FILE, JSON.stringify({ uin: String(uin || ''), savedAt: new Date().toISOString(), cookies: clean })) - 读取本地文件lib/qqlogin.js:167
const raw = JSON.parse(await readFile(SESSION_FILE, 'utf8')) - 写入本地文件lib/qqlogin.js:177
await writeFile(SESSION_FILE, JSON.stringify({ uin: '', savedAt: new Date().toISOString(), cookies: [] })) - 读取本地文件lib/silent.js:27
return CHROME_CANDIDATES.find((p) => p && existsSync(p)) || '' - 发起网络请求lib/silent.js:32
const r = await fetch(`http://127.0.0.1:${PORT}/json/version`, { signal: AbortSignal.timeout(1200) }) - 写入本地文件lib/silent.js:48
await mkdir(PROFILE_DIR, { recursive: true }) - 执行外部命令来自配置/变量lib/silent.js:49
proc = spawn(exe, [ - 删除本地文件递归lib/silent.js:242
await rm(PROFILE_DIR, { recursive: true, force: true }) - 读取本地文件lib/chrome.js:29
const port = Number((await readFile(file, 'utf8')).split(/ ? /, 1)[0]) - 发起网络请求lib/chrome.js:51
response = await fetch(url, { signal }) - 读取本地文件lib/chrome.js:176
const lines = (await readFile(file, 'utf8')).split(/ ? /) - 读取本地文件lib/upload.js:18
const bytes = await readFile(filePath) - 发起网络请求lib/upload.js:32
const res = await fetch(url, { - 读取本地文件lib/uipost.js:18
return CHROME_CANDIDATES.find((p) => p && existsSync(p)) || '' - 发起网络请求lib/uipost.js:23
const r = await fetch(`http://127.0.0.1:${PORT}/json/version`, { signal: AbortSignal.timeout(1200) }) - 写入本地文件lib/uipost.js:37
await mkdir(PROFILE_DIR, { recursive: true }) - 执行外部命令来自配置/变量lib/uipost.js:38
spawned = spawn(exe, [ - 读取本地文件lib/uipost.js:95
const files = (Array.isArray(images) ? images : []).slice(0, 9).filter((f) => f && existsSync(f)) - 写入本地文件lib/uipost.js:171
await writeFile(path.join(os.homedir(), '.dsh', 'qzone-last-post.png'), Buffer.from(shot.data, 'base64')) - 写入本地文件lib/session.js:175
await mkdir(path.dirname(file), { recursive: true }) - 读取本地文件lib/session.js:178
const saved = JSON.parse(await readFile(file, 'utf8')) - 写入本地文件lib/session.js:196
await writeFile(file, JSON.stringify(state))
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
涉及外部主机:user.qzone.qq.com
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
展开完整介绍(145 字)↓
给 DeepSeek Harness 用的 QQ 空间插件。它在本机静默起一份专属 Chrome(headless,不占你屏幕),第一次用手机 QQ 扫码登录;之后不用你开浏览器、不用你点按钮——模型可以自己挑时机发说说,还能配上表情包图片,每天发几条、两条隔多久、公开还是仅自己,都能设。
README
由 DeepSeek 最新模型翻译生成dsh_qzone_sticker
「大肥鱼会自己发说说了。」
给 DeepSeek Harness 用的 QQ 空间插件:在本机静默起一份专属 Chrome(headless,不占屏幕),第一次用手机 QQ 扫码登录;之后不用你开浏览器、不用你点按钮——模型可以自己挑时机发说说,还能按心情配上表情包图片,每天几条、两条隔多久、公开还是仅自己都能设。
功能
- 扫码登录:设置页点「生成登录二维码」,手机 QQ 扫一下就登进去;登录态存在本机 ~/.dsh/qzone-session.json 和专属 Chrome profile 里
- 主动发说说:qzone_publish 工具,支持正文 + 最多 9 张图、公开/好友/仅自己
- 按心情配图:给 images 传表情包路径,或者选「让大肥鱼按心情挑」——按文案关键词从表情包目录自动挑一张
- 带图兜底:先走空间相册接口;被拒(常见「相册不存在」)时自动改用网页 UI 发(开静默 Chrome 真实操作:填字 → 传图 → 点发表)
- 每天上限:0 = 不限,也可设 1~999 条;两条之间至少 60 秒防刷屏
- 表情包目录可配:换电脑/换人用就改成自己的图库路径
- 退出登录:一键清会话 + 删专属 Chrome profile
展开完整文档(README 剩余 1 节)
dsh_qzone_sticker
「大肥鱼会自己发说说了。」
给 DeepSeek Harness 用的 QQ 空间插件:在本机静默起一份专属 Chrome(headless,不占屏幕),第一次用手机 QQ 扫码登录;之后不用你开浏览器、不用你点按钮——模型可以自己挑时机发说说,还能按心情配上表情包图片,每天几条、两条隔多久、公开还是仅自己都能设。
功能
- 扫码登录:设置页点「生成登录二维码」,手机 QQ 扫一下就登进去;登录态存在本机 ~/.dsh/qzone-session.json 和专属 Chrome profile 里
- 主动发说说:qzone_publish 工具,支持正文 + 最多 9 张图、公开/好友/仅自己
- 按心情配图:给 images 传表情包路径,或者选「让大肥鱼按心情挑」——按文案关键词从表情包目录自动挑一张
- 带图兜底:先走空间相册接口;被拒(常见「相册不存在」)时自动改用网页 UI 发(开静默 Chrome 真实操作:填字 → 传图 → 点发表)
- 每天上限:0 = 不限,也可设 1~999 条;两条之间至少 60 秒防刷屏
- 表情包目录可配:换电脑/换人用就改成自己的图库路径
- 退出登录:一键清会话 + 删专属 Chrome profile
- 会话保活:每 20 分钟用静默 Chrome 刷一次空间主页,把 p_skey 续上,基本一整天不用重扫
- 读说说带缓存:最近说说 10 分钟缓存(~/.dsh/qzone-recent-cache.json),点「刷新」才重读;接口被限时自动改从空间主页抓
- 不填内容也能发:按当前时段自动写一句(早/午/晚/深夜),并自动按心情配图
- 登录态联网校验:徽章不再“假装已登录”,过期会明确提示重新扫码
- 设置页:「设置 → 发说说」,跟刷抖音/刷B站那些插件同款位置
装完先做的 3 步(写给 agent / 用户)
1. Node 22+ 与本机 Chrome:插件用本机 Chrome 的持久 profile(静默 headless 窗口),不需要 Python、不需要额外下载浏览器。
2. 登录:设置 → 发说说 → 点登录,用手机 QQ 扫码;登录态只落在本机(~/.dsh/qzone-session.json + 专用 Chrome profile),仓库里不含任何登录信息。
3. 配图目录:默认从「表情包目录」挑图;要换自己的图库,在设置里改目录(只允许该目录下的文件)。
安装
源码位置:E:\虚拟机\Python\QQ空间插件(本机所有项目都归档在 E:\虚拟机 下)
方式一:接进本地 profile(开发用)
1. 本机装 Node.js 22+,准备好 Chrome
2. 把插件接进 profile(以 desktop profile 为例):
// profiles/desktop/package.json
{
"dependencies": { "dsh-qzone": "link:E:/虚拟机/Python/QQ空间插件" },
"dsh": { "profile": { "bundles": ["...", "dsh-qzone"] } }
}
3. 在 profiles/desktop/node_modules 下建同名链接: cmd /c mklink /J "profiles\desktop\node_modules\dsh-qzone" "E:\虚拟机\Python\QQ空间插件"
4. 重启 DeepSeek Harness,设置里就会出现「发说说」
方式二:插件市场(即将上架)
上架后可在「设置 → 插件 → 发现」里搜索「QQ空间 / qzone」一键安装,无需手动建链接。
使用
网页里: 设置 → 发说说 → 生成登录二维码 → 手机 QQ 扫 → 写文案、选配图/可见范围 → 发表
模型里(工具):
| 工具 | 作用 |
| qzone_status | 看现在登录的是哪个 QQ |
| qzone_recent | 读最近说说(发之前去重用) |
| qzone_publish | 发一条说说,可带 images(最多 9 张)、visibility(public/friends/private);dryRun: true 只检查登录不发表 |
例:
帮我在空间发一条:「发现这个空间是我的天下了哈哈哈」,配一张大肥鱼统治世界的表情包。
怎么做的
- 静默 Chrome:专属 profile ~/.dsh/qzone-chrome,--headless=new + --remote-debugging-port,通过 CDP 控制
- 扫码:在静默 Chrome 里打开 QQ 登录页,截二维码图返回给设置页;扫码确认后从 CDP 读 cookie 落盘
- 文字发表:emotion_cgi_publish_v6 接口
- 带图发表:先试 cgi_upload_image 上传;失败则用 CDP 模拟真实操作走网页 UI(Page.setInterceptFileChooserDialog 塞文件)
- 全程不读取、不复述、不保存 cookie 到仓库
安全
- 只发当前扫码登录的那个 QQ 空间
- 每天条数可设上限(0 = 不限),两条间隔 ≥60 秒
- 配图只允许图片目录下的文件
- 仓库里不含任何登录态/路径/截图
目录结构
index.js # 插件入口:工具 + /api/qzone 路由 client.js # 设置页「发说说」(自注册 client bundle) lib/qzone.js # 发表/读取 + 登录 lib/session.js # cookie → 会话、g_tk、发表 body lib/chrome.js # 从本机 Chrome 读 cookie(兼容新版调试端口) lib/qqlogin.js # QQ 扫码接口 + 会话落盘 lib/silent.js # 静默 Chrome + CDP 扫码 lib/uipost.js # 网页 UI 带图发表 lib/upload.js # 相册接口上传图片 cordis.patch.yml # 插件配置(uin / 上限 / 间隔)
许可证
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
kdcadmin/dsh_qzone_sticker
让模型自动挑时机发 QQ 空间说说并配表情包图
相关插件 · 浏览器
智能体插件框架deepseek-ai/deepseek-harness
DeepSeek Harnessdsh是由 DeepSeek AI 开发的开源 agent harness智能体框架。
★ 270,422已汉化DSH
71.9
多设备 Agent 看板YaoApp/yao
✨ 所有 Agent 和工作区集中管理,覆盖你的每一台设备。任务看板追踪进度,桌面端、移动端、浏览器、API…
★ 8,147已汉化DSH
71.2
可扩展侧边栏工作台omdsh-dev/DSH-better-sidebar
DSH 的双工作台:原生右侧栏 + 自绘底部面板,并把 ctx.betterSidebar 服务开放给所有插件
★ 4,761已汉化DSH
71.1
浏览器自动化桥Tencent/BrowserSkill
你的 Agent。你的浏览器。连接,就能协作。
★ 9,967已汉化DSH
71
AI 小说创作工作台EthanYoQ/AI-Novel-Writer
AI 小说作家 / AI Novel Writer
★ 1,591已汉化DSH
70.7
智能体浏览器引擎platonai/Browser4
DeepSeek Harness 集成
★ 1,175已汉化DSH
70.4
这是你的仓库?认领条目