Vai al contenuto principale
Q

dsh-douyin-all

q616812935/dsh-douyin-all

抖音自动陪伴插件 for DeepSeek Harness:私信/评论自动回复、刷流挑视频、人格与长期记忆、语音、观看日报。Proprietary.

Installazione

dsh plugin --profile web add github:q616812935/dsh-douyin-all

README

dsh-douyin-all

抖音自动陪伴插件(DeepSeek Harness 插件):私信自动回复 + 作品评论自动回复 + 刷推荐流挑视频转发,带人格与长期记忆、语音和观看日报。

开箱即锁:装上一个新插件,它不该替你去私信一个陌生人。所以没走完首次开通向导之前,所有对外发送都是锁死的,刷推荐流默认也是关的。详见安全默认。

它是三个插件真合并重写的结果,去掉了重复功能与冲突:

上游贡献本插件的处理
dsh-douyin-watch无头 Chrome 哨兵、私信轮询、评论读取/回复、出站三道闸拆成 edge.mjs / api.mjs / comments.mjs / guard.mjs,无头 UA 反爬与 port 空壳问题一并修掉
dsh-fish-soul人格卡(chara_card_v2)、按人记忆、印象、心情、好感度、日记拆成 soul.mjs,中文召回加了子串兜底,记忆加了去重与 800 条上限裁剪
dsh-douyin-browser-local真实 Edge + CDP 的私信 UI 操作、语音、用量与日报拆成 chat.mjs / voice.mjs / usage.mjs / report.mjs / share.mjs

三份 Edge 合成一套(edge.mjs),三份人格合成一张卡(soul.mjs),三套限速合成一个闸门(guard.mjs)。

功能

  • 私信:只盯一个对端(可在向导里换),有新消息就用配置的人格回一句;可选语音回复;能主动开口(受时间窗与间隔限制)。
  • 评论:扫自己作品(可扩到别人的)的新评论,按人格回楼中楼;带目标级强去重(同一条评论只回一次,换说法也不行)。
  • 刷视频:挑推荐流里的视频,可选转发给对端(发的是描述 + 链接,因为分享卡片会被抖音服务端静默丢弃)。
  • 记忆:从对话里抽事实(「他养了一只橘猫叫团子」),按人存,带权重与遗忘曲线。
  • 日报:每天写一段今天做了什么,并记一篇它自己的日记。

安装

dsh plugin --profile web add dsh-douyin-all

装完之后必须确认插件进了 profile 的 loader 行,并重启一次 dsh,否则「设置 → 抖音自动陪伴」面板不会出现:

  • dsh plugin add 只把包名追加到 profile package.json 的 dsh.profile.bundles,不会写 cordis.patch.yml。 而 DSH 的客户端半区(dsh-client-modules)只对 cordis loader 树里真实存在的行装载界面 —— 没有 loader 行时,工具能用、HTTP 接口能用,但设置面板永远是空的。
  • 检查办法:profile 目录里的 cordis.patch.yml 应当有一行 - insert: [{ id: douyin-all, name: 'dsh-douyin-all' }](本包自带的 cordis.patch.yml 就是这一行,dsh.profile.bundles 里登记了包名时它会被自动叠加)。核对之后重启 dsh。

若 dsh plugin add 没有真正写入依赖(在部分版本上会静默失败),可在 profile 目录里直接 pnpm add dsh-douyin-all,再把包名加进 package.json 的 dsh.profile.bundles。

装完在 DSH 里打开 设置 → 抖音自动陪伴 走首次开通。

依赖

  • Node.js >= 22.13.0
  • DSH >= 0.2.1-rc.2 < 0.3.0-0
  • Microsoft Edge(插件会以 --remote-debugging-port 启动一个专用 Edge,独立 profile,不碰你日常的浏览器)

首次开通

装好后打开 设置 → 抖音自动陪伴 → 首次开通,三步:

  1. 登录:点「打开抖音窗口」。插件会关掉无头实例、换一个有头 Edge 让你扫码。登录态落在 stateRoot()/edge-profile/,和你的日常浏览器完全隔离。
  2. 认出自己:点「扫描当前状态」。插件从会话接口读你自己的昵称,读出来就给一个「对,这是我」按钮;读不出来才需要手填 —— 插件绝不猜你的昵称。
  3. 选对端:扫描后左栏会话会列成一排按钮,点一个就选好了。

三步走完 setup.step 变成 done,出站解锁。

向导没走完之前,所有对外发送都是锁死的,而且是三层硬拦:定时循环里的私信与评论直接不发;POST /run 选 dm/comments 返回 409;douyin_dm / douyin_comment / douyin_share 三个工具直接被拒。刚装上的插件不会替你私信一个陌生人。

走完向导后还有两件事:

  • 设模型:设置页「模型」选「跟随宿主设置」,或显式选一个支持中文的模型。宿主没有可用模型时退回本地兜底话术 —— 话能发出去,但质量差。
  • 跑一次自检:设置页「自检与日报 → 立刻跑一轮」,看私信/评论/刷视频/日记四段是否都绿。

状态目录

按优先级取第一个可用的:DOUYIN_ALL_HOME → DSH_HOME/douyin-all → ~/douyin-all。

插件不认任何写死的绝对路径:装在哪、数据放哪,全由这两个环境变量和宿主决定。

config.json             配置(设置页写的就是它)
edge-profile/           专用 Edge 的用户目录(登录态在这)
edge.log                Edge 进程日志
runtime.json            最近一次 Edge 的端口与启动时间
comment-ledger.jsonl    出站台账(去重的唯一真源)
soul/                   persona.json / memories.json / impressions.json / state.json / diary.jsonl
state/                  events.jsonl(事件流)、lock-round.json(单轮锁)
usage/                  按天的用量台账
voice/                  合成的语音(mp3)

工具

工具作用
douyin_status看当前开关、绑定的号、记忆条数、用的模型、下次轮询时间
douyin_watch立刻跑一轮(only 可选 dm / comments / feed / diary)
douyin_dm读私信 / 发一条私信
douyin_comment读某作品的评论 / 回某条评论 / 触发自动回
douyin_share把某个作品转发给对端
douyin_remember记一条长期记忆
douyin_recall检索长期记忆

出站闸门(guard.mjs)

所有对外发的东西都过同一个闸门:

  • 长度上限(评论默认 60 字)
  • 禁止词、禁止站外引导(链接、加微信/QQ、扫码付款、兼职返利一律拦;想放行站外链接要显式开 comments.allowOutsideLink)
  • 严格模式(默认开):客服腔与机器人腔(「亲」「感谢您的支持」「家人们」)一律拦。让人一眼看出是机器的回复,比不发更糟
  • 目标级去重:同一条评论 awemeId:cid 只回一次,正文换个说法也算重复(正文级判重能被绕过,这是上游踩过的坑)
  • 每小时 / 每天配额、最小间隔(评论与私信各一套,都可配)
  • 两段式占位:先占位再生成,「生成中」的占位不算重复,但能挡住并发重入

安全默认

默认值按「宁可少干,不可闯祸」定:

项默认理由
feed.enabledfalse刷推荐流要调模型逐条判断,开箱即开等于替用户烧额度
comments.othersfalse不给别人作品下的评论自动回复
comments.stricttrue客服腔硬拦
comments.allowOutsideLinkfalse回复里不许出现站外链接
dm.maxPerHour / maxPerDay30 / 120私信比评论宽松,但仍有硬顶
dm.minGapSeconds8两条私信之间至少隔 8 秒
setup.steplogin没走完向导 = 全锁

测试

cd plugin
npm test          # = node --test tests/

全部用例都是纯本地的:不碰 Edge、不碰抖音、不联网。需要真浏览器的验证在实机上做。

套件覆盖
tests/guard.test.mjs每一条闸门规则 + 台账真的落盘(漏写 () 那个 bug 的回归)
tests/core.test.mjs人格卡、时间窗、分词、默认配置、原子写、事件日志、互斥锁、状态根
tests/setup.test.mjs向导状态机的每条分支,含「登录了但零会话不能误判成没登录」
tests/quiet.test.mjs免打扰时段与最小间隔
tests/taste.test.mjs口味权重、衰减、冷门标签清理、真的影响挑视频

CI 在 .github/workflows/test.yml,每次 push 与 PR 在 Node 22.13 和 22.x 上跑一遍。

已知限制

  • 分享卡片发不出去:抖音服务端会静默丢弃 im 分享卡片,所以转发走「普通私信 + 链接」,送达可以在左栏会话列表里逐字核对。
  • 楼中楼列表读不回来:/aweme/v1/web/comment/list/reply/ 在本号下会无限挂起,所以回查只看父评论的 reply_total。
  • 只在 Windows 上实测过(专用 Edge + CDP)。
  • 抖音有风控:连续杀进程、频繁重建 profile 可能触发滑块验证,需要人工过一次。

License

专有软件,保留所有权利(UNLICENSED)。 完整条款见 LICENSE。

允许:为自己个人使用而安装并运行未经修改的副本。

禁止(除另行取得书面授权外):

  1. 修改、改编、重写、反编译、反汇编,或基于它制作衍生作品与 fork;
  2. 删除或篡改版权声明、作者信息、包名与版本标记;
  3. 再分发、转售、出租、上传到任何包管理器(npm 等)、代码托管平台或其它产品中;
  4. 改名、换作者、换账号后重新发布;
  5. 用它的代码训练或构建要分发的模型 / 数据集。

违约即自动终止全部授权。商业使用、内部分发、贴牌或发布修改版,需另行取得书面许可。

本插件的部分设计参考了 dsh-douyin-watch、dsh-fish-soul、dsh-douyin-browser-local 三个 MIT 项目(它们的许可声明已按要求收录在 LICENSE 第 4 节);本包整体不再以 MIT 许可发布。

Plugin correlati