dsh-douyin-all
q616812935/dsh-douyin-all
抖音自动陪伴插件 for DeepSeek Harness:私信/评论自动回复、刷流挑视频、人格与长期记忆、语音、观看日报。Proprietary.
설치
dsh plugin --profile web add github:q616812935/dsh-douyin-allREADME
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只把包名追加到 profilepackage.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,不碰你日常的浏览器)
首次开通
装好后打开 设置 → 抖音自动陪伴 → 首次开通,三步:
- 登录:点「打开抖音窗口」。插件会关掉无头实例、换一个有头 Edge 让你扫码。登录态落在
stateRoot()/edge-profile/,和你的日常浏览器完全隔离。 - 认出自己:点「扫描当前状态」。插件从会话接口读你自己的昵称,读出来就给一个「对,这是我」按钮;读不出来才需要手填 —— 插件绝不猜你的昵称。
- 选对端:扫描后左栏会话会列成一排按钮,点一个就选好了。
三步走完 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.enabled | false | 刷推荐流要调模型逐条判断,开箱即开等于替用户烧额度 |
comments.others | false | 不给别人作品下的评论自动回复 |
comments.strict | true | 客服腔硬拦 |
comments.allowOutsideLink | false | 回复里不许出现站外链接 |
dm.maxPerHour / maxPerDay | 30 / 120 | 私信比评论宽松,但仍有硬顶 |
dm.minGapSeconds | 8 | 两条私信之间至少隔 8 秒 |
setup.step | login | 没走完向导 = 全锁 |
测试
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。
允许:为自己个人使用而安装并运行未经修改的副本。
禁止(除另行取得书面授权外):
- 修改、改编、重写、反编译、反汇编,或基于它制作衍生作品与 fork;
- 删除或篡改版权声明、作者信息、包名与版本标记;
- 再分发、转售、出租、上传到任何包管理器(npm 等)、代码托管平台或其它产品中;
- 改名、换作者、换账号后重新发布;
- 用它的代码训练或构建要分发的模型 / 数据集。
违约即自动终止全部授权。商业使用、内部分发、贴牌或发布修改版,需另行取得书面许可。
本插件的部分设计参考了 dsh-douyin-watch、dsh-fish-soul、dsh-douyin-browser-local 三个 MIT 项目(它们的许可声明已按要求收录在 LICENSE 第 4 节);本包整体不再以 MIT 许可发布。