# DSH 原生抖音插件

1.3 源码提供 DSH 原生“设置 → 刷抖音”页面，插件版通过设置按钮操作；对话式操作保留给独立软件。兼容工具目录为原生 v10、32 个 douyin_* 工具，旧维护命令仍保留。源码、SDK 测试、当前 DSH 加载和真实抖音效果分别验收，不能互相替代。

## 安装到正在使用的 DSH

2026-10-16 已在 DSH Desktop 2.0.17、内部 DSH 核心 0.2.0-rc.2 中核对“设置 → 刷抖音”。安装路径以你正在使用的那一份 DSH 为准；同时装有多个版本时，应核对路径与版本。插件需要 Windows、Edge、Node.js 22.13+ 和本仓库依赖，不需要独立软件、QQ 服务或另一个 DSH 后台。

本机目前保留一个既有 file URI 后端入口，当前 SDK 能从它找到相邻 package.json 中的客户端声明，原生设置页已成功加载。继续使用这一入口无需迁移或重启；不要再叠加一个标准 bundle。以下流程供首次安装或本人选择迁移时使用。

在仓库目录执行检查：

~~~powershell
# 在克隆后的 dsh-douyin-agent 仓库根目录执行
pnpm install --frozen-lockfile
$dshInstallDirectory = 'C:\Apps\DSH Desktop' # 替换为实际安装目录
.\install-native.ps1 -DshRoot $dshInstallDirectory
~~~

检查不会改配置或打开桌面窗口。首次安装或选择迁移时，确认目录正确，完全退出这份 DSH，再执行：

~~~powershell
.\install-native.ps1 -DshRoot $dshInstallDirectory -Install
~~~

安装脚本使用明确目录内的 DSH CLI，添加本地标准 bundle，保留安装前 profile 配置副本；成功后仅移除旧安装器管理的全局 douyin-browser 区块，避免两次注册。其他版本或机器可传 -DshRoot 指定已核实的安装目录。源码路径需保留，移动后须重新安装链接。脚本不强制结束进程、不自动重启、不修改其他插件，不删除登录、记忆或发送收据。

重新打开同一目录的 DSH，在“设置”左侧找到“刷抖音”。标准 bundle 的 package.json、cordis.bundle.yml 和 client.js 共同提供入口，适合新安装；现有可用 file URI 也可继续保留。工具加载成功本身不能证明设置页已出现，安装后应分别核对页面、日志及实际工具目录。本次未执行标准 bundle 迁移，安装器因 DSH 正在运行而在修改配置前停止。

## 在原生设置页使用

1. 在 DSH 本身的模型设置中配置提供商；进入“刷抖音 → 基础设置”，从两个下拉框选择提供商和模型，保存。模型来自 DSH 已配置目录，目录为空时先在 DSH 的“模型”页配置。这里不重复填写主模型 Key。观看、问候与私信回复使用所保存的路由，所选视频模型必须支持图片。
2. 在“人格与兴趣”填写大肥鱼的表达风格、身份和兴趣起点，点击保存。未保存的草稿不被状态刷新覆盖；外部人格/兴趣发生变化时会提示版本冲突，保留草稿。先停止观看、问候和私信回复再修改。自动生成区仍按实际观看证据更新。
3. 点击“打开抖音”，在专用 Edge 由本人登录或完成验证。按钮不调用模型，不开始计时，准备页会暂停。已有自主观看时只显示既有页面，不重启它。
4. 设置允许时段和单轮分钟数，保存后点击“开始有限轮次”，再点击“开始自主观看”。单轮请求预算独立设置。停止观看会暂停视频；结束轮次会使两个入口都不能继续这轮。
5. 按需打开“静默观看”、自主分享、自动续火花或自主评论。开关与启动是独立操作，不会因为保存设置就开始无限运行。
6. 在“观看日报”生成或读取当日 Markdown。每次有限自主观看结束后也会尝试生成；日报不启动新观看、不增加模型调用。

页面同时提供私信许可名单与回复启停、自主分享许可与额度、音频开关与后端。首次读取联系人由本人点击，最多保存两位已验证为已关注、非群聊的好友。默认关闭的外发功能不会因安装、打开页面或保存人格自行开启。

| 子栏目 | 设置内容 |
| --- | --- |
| 基础设置 | DSH 提供商与模型下拉、共享人格 |
| 视频观看 | 允许时段、有限轮次、观看启停、静默 |
| 好友互动 | 主动问候、分享、许可好友与自动回复 |
| 公开评论 | 总开关、每日与单轮额度、待核对记录 |
| 音频与密钥 | 音频开关、后端、MiMo／MiniMax Key 输入框 |
| 观看日报 | 生成、选择日期与读取 |

问候许可保存后仍需点击开始；模型未保存、许可未开启或草稿未保存时，按钮下会显示具体原因。停止按钮仅在服务运行时可用。保存模型、许可或 Key 都不会自动发消息。

## 时间、静默与请求预算

时段固定为 Asia/Shanghai，每日1–16个窗口，支持23:00-01:00，全天写00:00-24:00。单轮1–1440分钟，默认10分钟。实际截止为允许窗口结束和本轮开始加时长中的较早者；保存更长时长、重开页面、停止再启动都不延长当前轮。程序重启不恢复自主循环，不能自动开启下一轮。

自主观看默认每轮30次模型请求，可设1–100；同轮停止重开不清零，软件与插件每日合计最多200次。公开评论正文另占一次模型请求，也扣同一预算。时间或任一请求上限先到即停止。软件手动任务的步数/工具次数/超时另有设置，不改变 DSH 外层任务预算。

静默开启后，对受管视频页持续静音，不改用户音量、不主动置前，核对全窗口都是受管页且无登录验证时尝试最小化。关闭恢复本组件改动的静音状态，不主动弹出窗口；要显示时点击“打开抖音”。这仍是有窗口 Edge，不是 headless；不伪造页面可见性，最小化后是否持续播放以实际进度为准。无法核对窗口归属时只静音，并回报未隐藏原因；跨入口共享开关在各自下一次视频操作时跟随。

## 人格、兴趣与日报共用

软件和插件沿用 runtime-location.json 的同一 memoryDir/memoryDbPath：

| 位置 | 内容 |
| --- | --- |
| memoryDir/persona/role-card.md | 手编人格与受管生成区 |
| memoryDir/persona/state.json | 作品观察、实际播放进度与行为证据、兴趣 |
| memoryDir/reports/videos/YYYY-MM-DD.md | 按上海日期汇总的视频日报 |
| memoryDbPath | 共享 SQLite 记忆数据库 |
| stateDir/video-policy.json、video-sessions.json | 时段与有限轮次 |
| stateDir/watch-mode.json、native-model.json | 共用静默开关、原生模型路由（不含Key） |
| stateDir/spark-*、comments-*、share-* | 各自许可、预算、运行协调与收据 |

位置记录默认在 %USERPROFILE%/.dsh/douyin-browser/runtime-location.json。已有安装保留登记的记忆目录，新机器默认使用 %USERPROFILE%/.dsh/douyin-browser/memory；以页面回读为准，不应另复制一套或通过删配置“修复”路径。

主题识别不等于喜欢。喜好依据实际媒体进度、观看比例、持续停留、快划及已确认分享计算，证据不足保持待观察；代理自己的偏好不能当用户偏好。人格手编正文只由本人保存，模型不能改许可、联系人、时间或现实承诺。人格保存有版本检查，保留自动生成区。

日报只读取留存的视频观察事实，列出实际标题、作者、规范链接、可核采样时长和互动；来源仅核本机账号可见，未独立验证对外公开性或链接仍可播放。注明记录覆盖范围，不把累计兴趣当今日新喜欢。它不读取人格正文、私信、QQ，不调用模型。相同输入幂等；本人手改报告后不会自动覆盖，需保留旧稿再处理冲突。

## 私信、续火花、分享与评论

- 私信：仅处理已保存许可名单的启动后新消息，启动时建立基线。方向不明、消息变化、已有人工回复或草稿、身份或发送结果不确定时跳过/暂停；不自动重发。默认每日40次回复请求，最多512 token，带“自动回复”标记。只提供当前联系人相关消息和手编人格风格，不带其他联系人或QQ历史。
- 续火花：默认关闭，独立保存时段并点击启动。默认09:00-22:00、每天合计2次，可设1–2；每位许可好友每天最多尝试一次。按手编人格生成短问候，带“自动问候”标记。当天已有可靠发出互动就跳过；日期不明、待回复或结果不确定时不发/暂停。送达不等于已核实平台火花续上。
- 自主分享：默认关闭，日上限默认3次，可设1–20。大肥鱼在有限观看里自己挑当前已观察作品和现有许可好友，发官方作品卡片，不发人格、私人记忆或文字链接。同作品/同好友不重发。
- 自主评论：默认关闭，每日默认3次（1–20），每轮默认1次（1–3）。大肥鱼决定是否评论；另一次请求仅依据当前视频的实际画面、标题和作者生成正文，不提供人格、兴趣、联系人或私信。最多200字，不含@、链接或私人数据。不强迫每条评论，同作品永久去重。

外发次数在预留后扣除，失败、重启或人工核对不退款。发送结果不确定时暂停；本人在抖音检查原收据后，才能在页面标记已确认/未发送，不触发重试。最终短输入占锁时保存关闭可能返回忙，必须看到成功回读才算关闭。

评论发布目前要求当前作品已有可识别的官方评论输入区和按钮；缺失时提示手动打开评论区，不猜测坐标或提交成功。只有新本人评论编号、精确正文、同一作品及稳定发出回读才确认。合成页面通过不等于当前抖音DOM已适配，真实评论尚待单独验收。

## 可选音频与富媒体

音频可不接入；关闭时无需 MiMo/MiniMax Key。本地 Whisper 是可选本地对白转写；MiMo、MiniMax 是可选云端后端，不是 DSH 主模型的必需配置。插件填写入口为“设置 → 刷抖音 → 音频与密钥”：分别填写 MiMo API Key 或 MiniMax API Key，点击对应保存按钮。留空沿用原有值；界面只显示已配置状态及配置来源，不回显 Key。保存共用本机媒体 `.env`（明文），与独立软件即时共用，不自动开启音频或调用云端；使用云后端还需本人选择后端并保存启用设置。进程同名环境变量优先，页面会提示覆盖状态。依赖与限制见 [media/README.md](../media/README.md)，保存开关不下载模型或安装运行环境。

表情和分享卡片可采样实际画面；分享视频仍受视频时限约束。封面不等于看完整条，少量帧不等于听懂声音。未支持的普通图片、收到的语音等类型不能假称已理解。

## 维护接口与来源

兼容的32项工具：打开/搜索3项，播放与画面7项，显式记忆2项，许可私信6项，时限/媒体3项，手动转发提示1项，人格/兴趣2项，自主观看3项，续火花3项，日报2项。插件日常使用原生设置按钮；工具用于内部与兼容维护，不要求用户复制工具名或发对话。

旧 CLI 的 video-policy、session-start、session-end 和 media-enable 等仍保留，仅用于本人维护；用法由本仓库 douyin.ps1 分派，不要求在 DSH 对话输入命令。旧热加载辅助包保留供维护，不能在标准bundle外另注册同名目录；前端模块发现与后端热加载分别检查。GPT/DSH 合作使用上级 bridge.ps1 并遵守轮数/尝试预算，不能新建任务绕过耗尽预算。

安装与设置、日报流程参考 [c1overzz/dsh-bili-scroll](https://github.com/c1overzz/dsh-bili-scroll) 的MIT项目，具体固定版本、复用边界及续火花候选核查见 [reuse.md](reuse.md)。没有打包其B站MCP、Python或定时字幕阅读逻辑。浏览器复用Playwright；原生接口使用正确DSH已装SDK；三份实际内置的可选媒体社区源码及许可证见 [../THIRD_PARTY_NOTICES.md](../THIRD_PARTY_NOTICES.md)。

## 当前验收边界

2026-10-16 完整回归共 443 项：436 通过、0 失败、7 项可选检查跳过；原生 SDK 定向检查 45／45 通过。在当前正确 DSH 2.0.17 中，原生设置页已实际挂载，能读取共享人格、时间、许可与媒体设置。本轮没有调用真实模型、打开抖音或执行任何发送，未改变既有设置。实际最小化播放、当前抖音评论 DOM 和收到新消息后的自动回复仍未验证；SDK 的 32 项目录检查不等于独立读取了当前进程的全部工具目录。详细命令、历史失败和边界见 [verification/1.3.md](verification/1.3.md)。下方历史实测只用于保留证据，不扩写为新版通过。

## 验收记录

历史 v8／1.2.0 的预算、行为偏好和自主分享按针对性测试记录，未将旧 17／22 项实机结果扩写为新版实测。软件启动新增受控本机导航的有限重试和去敏诊断，旧错误成功后归档，但真实 `ERR_FAILED(-2)` 成因仍未确定。caret 截图修复只在临时页面验证，不能称真实抖音所有截图故障已消失。完整结果以 [desktop/VERIFICATION.md](../desktop/VERIFICATION.md) 为准。

在 `douyin-browser` 仓库根目录运行：

```powershell
node --test verification/dsh-plugin.test.mjs verification/native-launch-command.test.mjs
```

上一版 v6 原生适配测试 25／25 通过，真实使用本机 schema、ToolRuntime、Cordis Loader、DynamicCordisRunnerService 沙箱、SystemPrompt 和 LocalAttachmentStore。保留旧 17 项、旧 v5／22 项及旧满目录升级，覆盖 include 卸载失效、原位升级、异常回滚、活动状态、临时条目清理和实际附件回读；另核对 watch 服务路由及人格变量每次组装刷新、重复附加保护与释放。测试使用独立 Context，写入的配置、附件及 fixture 均在系统临时目录；控制器和模型返回使用替身，没有操作当前 DSH 进程或发模型请求。

1.1.0 软件界面合成与许可证测试 12／12 通过，包含两个临时 Edge 流程；当时根目录与 desktop 完整回归实际运行 237 项，230 项通过、0 项失败、7 项可选检查跳过，用时约 19.7 秒。1.1.0 的 `win-unpacked` 已实际打包回读，随包 Node 24.17.0、SQLite 3.53.0、27 项工具及 persona／watch 模块可导入，没有 DSH 运行包。

v7 原生 SDK 的原有 25 项与命令新增 7 项合计 32／32 通过，均使用独立测试 Context，不调用真实模型或当前 DSH 进程。1.1.1 UI 完整测试 15／15 通过，其中新增输入外观 1／1、打开入口及音频 Key 合成流程 1／1；一键打开后端 6／6、相关回归 32／32 通过。它们不代表真实抖音、云端凭据或 v7 原生命令实机可用性已验收；最终完整计数和软件包证据以 [desktop/VERIFICATION.md](../desktop/VERIFICATION.md) 为准。下列 17／22 项历史实机结果不计为新增工具或自主模型循环已通过。

真实视频联合验收通过，见 `verification/native-live-workdir/native-plugin-receipt.json`：模型搜索、开作品、收到图片附件并暂停。整体聊天热加载曾因旧动态包冲突失败，回执保留；追加授权验收通过了真实联系人、状态及两人会话读取，旧版原生 17 项工具范围已实际核对。

旧桥任务 `d1d836bf-a85f-487c-925c-a8bd82579e23` 热升级失败，原 `remove` 未卸载配置中的 `include:douyin-browser` 条目，随后创建新版发生同名冲突。原始失败保留在 `verification/native-rich-workdir/native-rich-receipt.json`。用户明确追加 1 轮／1 次后，任务 `461ff7a2-5741-41bb-85c9-92b6e82bc71e` 使用原文 v5 helper 运行成功，刷新目录完整 22 项，真实状态和许可会话读取通过。辅助包保持运行，其他插件未动，没有自动追加预算。

上述 v5 轮次的指定表情经真实 DSH image content block 进入模型；Codex 从原生日志核对 ref，并独立读取持久 JPEG，尺寸 138×138、4355 字节、SHA256 与 ref 一致。两位会话均返回 `orderMode=relative` 和已核实最新端标记；音频为 `enabled=false`，视频轮次仍结束，转发入口只提示本人操作。执行回执与独立复核在 `verification/native-rich-workdir/recheck-20261015/`，桥状态保留 `needs_review`，不写成自动 accepted。

当前 Inspect 未提供 Loader 条目的直接导出，helper 的 console JSON 也未落入可回读日志；v5 版本以逐字 helper 中的活动状态/URI/完整目录断言及真实调用核对，没有把运行态 URI 字符串标作独立读取结果。

2026-10-15 早前还单独核查了桌面启动：用户截图中的 `Failed to load plugins` 来自已装 `dsh-web-ui-notify@0.1.6`。该扩展要求核心 `0.1.7-rc.2+`，当时 Desktop 2.0.11 内置核心为 `0.1.5-rc.2`，缺少它直接订阅的 `uiSession.sessionStatus`。本机备份 profile 后，仅从启用的 bundles 移除该通知扩展，保留依赖文件；重新启动后，实际窗口的会话列表和输入框恢复，错误页消失。这是旧安装状态的诊断，不描述本次 2.0.17 的核心版本。抖音插件不依赖该通知扩展。工具后端验收与桌面启动验收分别记录，不能仅凭后端 health 判断界面可用。

真人私信发送已做一条本人授权的明确功能测试：`confirmed=true` 且二次读取 `persisted=true`，见 `verification/chat-human-send-live.json`。这证明该次发送与回读，不证明收到新消息后的自动模型回复已由真人触发。

真实表情和分享卡片的精准截取、公开 URL 解析通过；一张精确表情截图已送入真实 DeepSeek 并生成回复，没有向真人发送，见 `verification/chat-rich-api-live.json`。两位联系人真实只读回查确认时间顺序、最新端及消息 ID 稳定，见 `verification/chat-chronology-readonly-live.json`。2026-10-15 又单独完成上述 DSH 原生表情附件验收；图文仍只到封面、元数据和 URL。

真实 API、DSH 两个专用抖音页到期后由后台检查暂停通过，观测延迟为 2652 毫秒（约 2.65 秒），原策略已恢复，见 `verification/video-limits-live.json`；这是本次观测值，不保证零延迟。Whisper 本地合成 WAV、WebM 对白转写通过，实际猫咪视频已采到 3 秒音轨但没有有效对白，ASR 准确性未验；MiMo/MiniMax 云联调未做，音频默认关闭。

真人作品卡片转发已执行一次本人授权的点击；初始自动确认未通过，随后只读打开实际发出的卡片，精确核实公开作品 ID 为 `7579432563794584933`，没有再次发送。证据分别为 `verification/video-forward-human-live.json` 与 `verification/video-forward-post-readback.json`。2026-10-15 的原生转发工具实测仅覆盖人工授权提示分支，没有再发送；该次回查不代表自动回复循环已验收。
