23 KiB
better-douyin 整合计划
状态:待排期;已按文档 review 修正,不代表功能实现或真实平台验收通过。
参考项目:https://github.com/anYuJia/better-douyin
待核实参考快照:commit
f534c66d61f541a526fa3f5251d32494aad758a8(原登记日期 2026-08-28,提交内容与日期均待核实)
1. 目标与文档职责
参考 better-douyin 的候选产品组织方式,补强 CreatorHub 已批准的竞品分析、素材处理、评论线索、人工发送、监听与自动响应流程。本计划只吸收功能思想和交互原则,不复制源代码、界面资源、提示词、品牌内容或私有协议实现。
本文是 plan01 的补充实施计划,不替代其业务范围、页面地图、规则或验收标准。第 4 节沿用 G0、G1.1 至 G1.6、G2、G3 的顺序;未在本文展开的账号、环境、代理等要求仍归属 plan01 对应阶段,不视为已经完成或排除。已有实现先核实并复用,不另建一套通用任务、规则或工作流系统。
本次文档修正完成标准:review 所列问题均有对应规则或验收入口;阶段与 plan01 一致;本地链接与验收编号有效;未核实的上游描述不写成事实。文档检查不能替代代码测试或平台验收。
2. 来源核验与边界
2.1 上游描述待核实
本轮 review 请求快照原文时遇到网络保护拦截,未能独立读取来源。原稿中的以下描述保留为待核实项,不能作为选型或能力结论:
- React 前端、Tauri mock bridge、Node mock backend、契约与模拟数据的具体构成;
- 真实抖音接口、登录会话、Cookie、签名、下载解析及验收证据是否公开;
- 私信恢复、创作者监控、下载、通知、AI、MCP 等功能与所引文件的对应关系;
- 许可证名称、商业使用限制及授权条件。
核验时应逐项记录指定快照的文件、原文依据,以及仅界面、契约、模拟实现或真实适配的区别。未核实前不称其为“经过验证”的实现,不以来源未读到推断功能不存在,也不作“缺失检查脚本”的结论。无论上游核验结果如何,都不能用其实现替代 CreatorHub 的真实平台证据。
2.2 许可证与独立实现
原稿登记的 Better Douyin Non-Commercial License 名称及限制尚未核实;不得仅凭名称断言许可范围。复用任何上游代码或资产前,必须核验对应快照的完整许可证及授权范围;不能确认覆盖拟议商业用途时,不得复用,须取得明确授权后另行确认。
本计划的默认边界不变:全部独立实现,不复制代码或资产。此边界不是对上游许可证已核验通过的声明。
2.3 CreatorHub 的固定边界
- 自动响应仅由大号收到的评论、点赞、转发、关注四类互动触发,遵循 A3 的有序单动作策略。推荐流、好友活动、创作者新增作品、
@等不新增为自动触发源;扩展须另行确认。 - 私信新消息只更新会话,不触发 AI 自动聊天;评论线索识别本身不自动发送。人工回复与私信逐次确认,不受自动冷却限制。
- 自有账号互动和私信必须使用后台真实事件监听,不能以固定轮询或 Mock 替代;作品、指标及一级评论按 C2/W1 固定计划采集。历史读取只按 A6 的恢复边界进行,不变成持续轮询入口;账号、环境和代理列表不主动探测实时状态。
- 控制面继续使用 Go,Docker/浏览器 gateway 使用 Python,界面复用 React/Refine/shadcn/ui 与现有布局。整合不引入 Tauri 桌面端、本地 MCP 或另一套管理界面,不改变已有部署方式。
- 真实写操作必须核对账号、目标和执行条件;明确区分成功、失败、结果不明。已经开始的自动写动作不自动重试,结果不明只核验,不自动补发。
- 抖音全部适用验收项通过前不进入小红书实现;能力不足必须提交证据并由用户裁决,不自行删项。
3. 候选参考与批准范围的映射
下列上游功能名称与文件位置均为待核实引用线索,不是已确认的功能归因;实施顺序以第 4 节为准。
| 候选参考 | CreatorHub 采用范围 | 待核实参考位置 |
|---|---|---|
| 私信恢复、历史基线、账号切换 | A6/M1 的后台监听、只读恢复与账号隔离;不自动聊天 | frontend/src/components/friends/、frontend/src/hooks/use-global-friends-im.ts |
| 统一自动化工作台 | 复用工作台与任务页,展示来源、执行号、策略、状态、错误和证据,不新增通用自动化编辑器 | frontend/src/components/automation/automation-view.tsx |
| 条件、去重与动作配置 | 仅采用 A3 有序单动作和 A5 冷却;关键词归 W2,指标阈值归 C3,不引入额外延迟或可配置多动作上限 | automation-settings-dialog.tsx、lib/ai-automation.ts |
| 创作者监控与作品发现 | C1/C2 的完整回溯、分页及独立指标计划;新作品只入列表,人工选取才下载 | lib/contracts.ts、automation-view.tsx |
| 下载状态与历史 | C4 的分步产物、失败重试与两次确认;不因参考功能追加暂停/恢复等未批准交互 | components/downloads/、hooks/use-downloads.ts |
| 通知分类、作品跳转、回复 | 区分互动事件、评论线索和私信展示;仅批准的四类互动可触发自动响应 | components/notices/notices-view.tsx、use-global-notice-monitor.ts |
| 搜索与链接解析 | 仅 C1 主页/可解析作品分享链接的解析预览、人工确认和稳定标识去重;不新增通用搜索或 UID 导入入口 | components/search/、components/link/link-view.tsx |
| AI 配置 | 仅已批准的转写、素材理解与仿写、主题/线索判断及无候选文本时的单次响应 | components/settings/settings-ai.tsx |
| 本地 MCP | 不整合 | components/settings/settings-mcp.tsx |
4. 实施阶段与完成标准
G0:证据与输入冻结
入口与工作:
- 对照
plan01第 8.7 节逐分项登记抖音能力:事件 ID、互动者 UID、目标、时间、基线、恢复范围、各动作及分页/媒体证据。缺可靠事件身份、UID、目标或真实监听证据即阻塞相应自动能力,不能用 Mock 通过。 - 相关 AI 功能开发前取得服务商、模型/版本、参数、提示要求、费用、脱敏样本及逐条预期和允许误差的批准;转写含清晰语音、背景音乐和无语音样本。不编造准确率或默认选用付费服务。
- 对照现有事件、动作、任务及产物记录补齐缺口,不另建独立通用契约。区分人工与自动来源,记录实际成功、失败或结果不明,不以状态命名转换改变结果含义。
- 将 2026-09-14 测试报告 与 证据 作为待复验基线,而非永远有效的现状声明:凭据解析和浏览器读取阻断归 G1.1;作品/评论分页和指标计划问题归 G1.2;素材处理、线索入口及 AI/转写配置问题归 G1.3;事件读取与恢复缺口归 G1.5。每项保存原用例、复验结果及新证据,修复未经复验不得视为前置能力已具备。
完成标准:plan01 G0、8.6、8.7 的输入与证据逐项登记;未批准或不支持项明确阻塞对应能力。来源核验未完成时,不使用上游事实作为实施依据;独立功能仍按 CreatorHub 自身证据判断。
G1.1:抖音账号与环境
入口:G0 对该阶段的输入已明确,测试账号及只读/可控写入样本已授权。
工作:按 A1/A2/E1/E2 完成账号资料、人工业务状态、同环境人工登录和身份核对、稳定指纹及代理。验证实际浏览器读取可用;账号、登录、环境状态分别展示。凭据或浏览器访问阻断未解决前,不启动依赖它们的真实采集或写入验收。
完成标准:AC-A1、AC-A2、AC-A3、AC-E1、AC-E2、AC-E3、AC-E4、AC-E5,以及 AC-U3 的账号/登录部分通过。账号封禁、注销、禁言的执行限制按 A1,不推测处罚状态或自动换账号、代理。
G1.2:抖音只读采集
入口:G1.1 已通过相关身份和浏览器读取检查;G0 已记录链接、稳定标识、分页及指标能力。
工作:
- 链接解析后展示平台、作者及稳定标识,人工确认才创建监测;首次默认回溯最近 30 天,按 C2 固定 UTC 窗口完整分页,支持中断续采,不能仅建立新作品基线而省略历史资料。
- 新作品默认每 30 分钟检查;既有作品继续独立更新指标,按发布时间后的 1/3/7/15/31/55……小时计划、24 小时间隔上限及满 30 天停止规则执行。暂停、恢复、设置变化、无可靠发布时间均遵循 C2,不补造历史指标。
- 爆款筛选遵循 C3:所有已填阈值同时满足,缺指标不填 0,允许真实指标下降。
- 自有与竞品最近回溯范围内作品的全部一级评论按 W1 定时补采、分页与去重,不采楼中楼,不用通知事件列表替代评论采集。
- 新作品只进入作品列表;未经人工选取,不创建下载、转写或仿写任务。
完成标准:AC-C1、AC-C2、AC-C3、AC-C4、AC-C5、AC-C6、AC-W1、AC-U1、AC-B4 通过;用超过一页的真实作品和评论验证范围完整性,采集失败与中断可追溯。
G1.3:抖音媒体与 AI
入口:G1.2 提供可核实作品/评论;G0 的 AI/转写服务、费用和质量样本已批准,实际调用配置及素材处理入口可用。不能将这些前置配置延至监听或私信完成之后。
工作:
- 固定流程:作品资料 → 人工选取素材 → 下载视频、提音轨、真实转写 → 人工确认仿写 → 可编辑标题与口播文案及保存。不自动下载、不自动发布。
- 每一步记录输入、产物、状态、尝试次数和具体错误;视频/音频须真实可读,转写不能用作品描述冒充。失败仅由人工重试失败步骤,复用成功产物;不使用空文件或 Mock 推进下游。
- 已确认无音轨/无说话内容是明确结果,可如实展示后确认仿写;下载或转写失败必须解决后才能仿写。结果不明先核验,不盲目重复调用;磁盘/配额不足明确失败,不自动删除素材。
- 线索固定按 W2 的“作品主题 AI → 评论包含/排除关键词 → 评论 AI”判断;原文子串匹配,不改变大小写或 Unicode。多规则只生成一个评论线索,保存当时依据;规则修改不改写历史,重新分析由用户明确选择范围。
- AI 只用于批准场景,失败、空内容、无法解析均显示真实错误,不伪造结果、不静默切换供应商。配置由控制面管理,不增加认证、租户或模型市场;凭据不进入前端日志、普通响应或证据。
完成标准:AC-C7、AC-C8、AC-C9、AC-C10、AC-W2、AC-W3、AC-U2、AC-U4、AC-U6、AC-B5、AC-B6 通过;质量按 G0 批准样本逐项验收,覆盖无语音、失败重试、重复点击、放弃仿写及文稿保存失败。
G1.4:抖音人工动作
入口:G1.1 的执行账号条件可用,G1.2/G1.3 的评论与线索入口可用;G0 已核实相关写动作及结果证据方式。
工作:
- 从评论或线索选择同平台账号、核对目标与实际文本、预览后逐次确认回复或私信。人工发送不受 A5 自动冷却限制,线索出现不自动发送。
- 提交前取得持久操作标识并固定账号、目标、文本;双击、请求重试、页面重开及进程重启沿用同一标识,服务端保证至多执行一次,不只靠禁用按钮。
- 同一执行账号的所有人工与自动写操作统一串行协调。真正写入前重新核对业务状态、登录身份、目标及启停条件;等待期间条件变化阻止未开始动作,已开始动作保留真实结果,不将停止冒充撤销。
- 结果不明只提供查询/人工核验并保存证据,不重用原操作再次发送。确需另发必须重新确认并生成新操作标识,记录与原操作的关系及原因。
完成标准:AC-W4、AC-W5、AC-B2 的人工部分通过,覆盖双击、重启、错误身份、禁言、等待期间条件变化和发送后响应丢失。此阶段私信发送通过,不代表完整会话已通过。
G1.5:抖音监听与自动响应
入口:G1.4 的真实写入及防重复路径可用;G0 已逐类验证四事件、五类动作、可靠事件身份与恢复边界。无候选文本的策略还依赖已批准且可用的 AI 配置及大号回复要求。
事件与恢复:
- 事件身份采用“平台+接收账号+平台稳定事件 ID”,或经真机证明跨重连/重启稳定且唯一的事件位置。普通翻页游标、昵称、时间/内容哈希不能替代。会话代际只用于拒绝旧会话或错误账号事件,不参与重置永久去重。
- 首次监听与每次重新启用先持久保存可信历史基线,再接收确定的新边界事件;保存所有事件的最小身份、边界分类和处理结论,包括未匹配、跳过、失败和结果不明。最小去重记录不随冷却到期删除,旧事件不因策略变化或重启再次执行。
- 断连和进程重启均核对持久基线与恢复位置;补偿默认只恢复记录和展示,不补发自动动作。断连期间或无法证明处于持续启用新边界内的事件列为迟到/待核验,不按“晚了几秒”或任意过期时间判断。恢复事件获准自动触发须先提交 G0 平台证据并取得用户批准;停用期间与启用前事件始终禁发。
- 无法证明恢复连续性时展示数据缺口,从重新确认的新边界开始;重复只更新原记录,不以重连成功声称无遗漏。队列溢出或解析失败也必须显示缺口/停止原因,不以丢弃事件后正常运行冒充完整。
- 后台监听不依赖页面打开;平台→后台监听与后台→页面更新分别验收,只选一种适合现有服务的页面推送方式。时间证据见第 6.2 节。
策略与冷却:
- 按 A3 管理同平台大小号归属、有序策略;四类大号收到的互动逐类验收,每次选第一条匹配且可用的策略,由一个小号执行一个动作。开始前不可用可检查下一条并记录原因;一旦开始不换号、换动作或自动重试。
- 五类动作是私信、回复评论、点赞评论/作品、关注互动用户、转发作品;点赞评论/作品分别验证。所有自动动作都要求互动者稳定 UID 和对应目标,不猜目标。未批准的事件和私信新消息不得触发自动聊天。
- 冷却范围固定为“平台+大号+互动用户 UID”,跨该大号所有小号、事件和动作共享;默认 24 小时且必须为正数。从选中小号、开始执行时原子占用,不能被并发穿透。
- 冷却及原到期时间持久保存,重启、重连、策略启停不能清空;失败、AI 失败、结果不明均保留已占名额,不换小号补发。修改冷却只影响新响应;到期仅允许新事件,人工发送例外。
- 文本按 A4 从非空候选中随机选择;候选为空才按大号统一要求调用 AI,不额外加人工审批。AI 失败、空内容或超长停止本次响应,不隐藏兜底、不截断强发。
- 执行前复核账号、关系、策略和目标,并复用 G1.4 的同账号协调。停用大号、策略、调整关系或账号状态变化应阻止未开始动作;恢复正常不自动重启受影响策略。
完成标准:AC-A4、AC-A5、AC-A6、AC-A7、AC-A8、AC-A9、AC-A10、AC-A11、AC-A12、AC-A13、AC-A14、AC-B1、AC-B2、AC-B3 全部通过。包括跨小号/跨动作并发、人工/自动竞争、冷却到期旧事件、重启、停用再启用及不明结果核验;不能以一次私信成功代替全部事件和动作。
G1.6:抖音私信及完整回归
入口:G1.1 至 G1.5 相关能力通过;完整私信历史范围和非文本事件能力已核实。
工作:复用工作台会话列表与消息详情,按所选已登录平台账号隔离消息、草稿与迟返请求;账号/会话切换提示未保存草稿。新消息仅更新展示,历史按平台可提供范围读取;非文本显示类型,断连可见。人工文本发送复用 G1.4,不自动聊天、不增加群聊或附件功能。
完成标准:AC-M1、AC-M2、AC-M3、AC-U5 通过;G1 所有片段及 plan01 第 8 节全部抖音适用验收项有通过证据后,才称抖音完整完成。局部界面、记录或阶段通过不能代替业务闭环;失败/阻塞项须解决或取得明确范围变更批准。
G2 / G3:小红书与整体回归
抖音完整验收通过后,小红书先独立重复 G0,再按 G1.1 至 G1.6 同范围实现和验证,不直接假定抖音事件/动作模型已证明小红书能力。差异和删项须用户批准。G3 验证两平台共存、账号隔离、失败恢复及无重复发送;全部适用项有证据,未通过项清零或获明确需求调整后才整体交付。
5. 界面与证据展示
- 沿用
plan01第 7.4 节页面地图;竞品、作品、素材、账号策略、评论线索、私信和任务各自保留明确职责,不另造统一推荐流或自动化大屏。 - 按来源、平台、账号、规则/策略、动作状态查询;人工与自动明确标识,目标、实际文本、执行号、冷却、错误和证据可查看。历史通知和私信展示不意味着授权自动发送。
- 业务结果可跳转任务和原作品/评论/会话;失败及结果不明不被列表隐藏,结果不明不显示重新发送按钮。自动冷却不能禁用合法人工发送。
- 加载、空、错误、禁用状态可区分;失败保留输入和已有数据。按 AC-U1 至 AC-U6 验证确认/取消、返回筛选分页、草稿切换、键盘与焦点,不以截图替代交互检查。
6. 验收与回归要求
6.1 自动检查
按受影响范围执行 AGENTS.md 的现有门槛,不以本文缩减检查:
- 非平凡行为先写在未修正实现时会失败的回归测试;单元测试覆盖率至少 65%。
- Go:
go test ./...、go vet ./...、go build ./cmd/control-plane;并发、生命周期或共享状态变化另执行go test -race ./...。 - Python gateway:
python3 -m unittest discover -s cmd -p 'test_*.py'、排除测试代码的同次覆盖率报告、Compose 构建及健康检查。 - Docker/Compose 变化另执行
docker compose config --quiet;不能用旧容器健康代替本次镜像构建和运行结果。 - 前端:从 lockfile 安装,执行仓库非交互测试和
npm --prefix web run build;工作台、动作、布局等变化补相应错误、禁用、确认/取消及重复提交交互检查。 - 记录实际执行与跳过项;仅修改本计划时检查本地链接、AC 编号、阶段对应及
git diff --check,不宣称通过上述代码或平台检查。
6.2 真实平台证据与时限
每个平台按 plan01 第 8.7 节逐分项记录能力与限制,按第 8 节 AC 保存输入、操作、预期、实际及脱敏证据。至少使用一个大号、两个小号及可控互动账号;只读样本与写入样本分开授权,不向无关用户发送测试消息。
每次真实写操作至少记录:
- 平台、接收账号/执行账号、目标 UID 及作品/评论/会话标识;
- 自动来源的稳定事件身份、边界分类、策略及冷却占用;人工来源的持久操作标识和确认记录,不强造一个平台触发事件;
- 实际内容、开始/结束时间、平台响应或页面证据、成功/失败/结果不明分类;
- 断连恢复、会话代际、账号切换及实际尝试情况;不明结果的核验记录、新确认操作与原操作的关联;
- 不记录密码、身份证、Cookie、代理凭据或无关完整私信。
监听与页面时限另记录平台事件时间(若提供)、系统接收、处理开始、已打开页面展示、动作结束,以及页面打开/连接状态:
- 监听正常时,系统接收至处理开始不超过 5 秒;相关页面已打开且连接正常时,接收至页面可见不超过 30 秒。不把 AI 或动作完成误作 30 秒承诺。
- 平台时间缺失则来源延迟记“不可测”,不填 0;后台处理快不证明平台投递及时。
- 关闭页面仍须后台监听;页面断连显示状态,离线/关闭不参与页面准时判定,也不标为准时通过;重开先读取持久结果再接更新。分别覆盖 AC-A13、AC-B3,并与 AC-B1/B2 的恢复、并发证据关联。
离线测试、Mock、任务入队、HTTP 200 和截图占位不能作为真实平台成功证据;供应商不可用、能力不支持或样本未批准均不得填写通过。
7. 风险与处理
- 平台能力或协议变化:显式失败、保留原因和数据缺口;不能用固定轮询、猜测身份或静默降级冒充真实监听。
- 事件重复与恢复:依靠跨会话稳定身份、持久基线及永久最小去重;恢复事件默认只展示,不扩大重试次数或任意时间窗口补发。
- 错误账号或重复发送:写入前重核、同账号协调、人工持久操作标识及自动共享冷却共同验证,不只检查界面按钮。
- 媒体/AI 依赖缺失:相关阶段入口保持阻塞,保留成功产物与具体失败步骤;不跳过人工确认、样本批准或真实输出核验。
- 来源与许可未核实:第 8 节仅保留待核实链接;不得复制资产,也不以未经核实的上游优缺点证明本项目质量。