207 lines
11 KiB
Markdown
207 lines
11 KiB
Markdown
# CreatorHub 内部技术探索方案
|
||
|
||
> 状态:历史探索记录,不再作为当前产品范围与验收依据。
|
||
> 当前权威入口:[需求细化与验收标准](../plan01.md)。冲突以该文档及使用者最新确认为准;以下“本轮”“当前”均指 2026-08-27 的旧探索阶段。
|
||
> 旧阶段 A 仅离线 Mock,不等于新计划 G0/G1;旧“仅自有账号”、自动动作排除项和逐次草稿确认不限制新计划中的公开可访问/已授权竞品采集及按策略自动响应。人工发送仍逐次确认。
|
||
> 本文中的 RBAC、Secret Manager 等历史设想不构成本期新增系统要求;实际部署与现有认证见[部署说明](../deployment.md),不因新开发目标而宣称旧认证已移除。
|
||
> 日期:2026-08-27
|
||
> 上游参考快照:`3441293738/creatorhub@11df1389ee557169bb2381e5ea08de96f14f80c7`
|
||
|
||
## 1. 定位
|
||
|
||
CreatorHub 是一个**内部、非公开**的多账号运行环境与运营任务技术实验台,只处理团队自有或已获明确授权的账号。
|
||
|
||
阶段 A 采用单用户模式,只用于验证账号隔离、任务幂等、停止和审计等核心能力。多用户协作、账号负责人、RBAC 和职责隔离后续另行规划,不属于当前实现或验收范围。
|
||
|
||
当前目标不是形成对外产品承诺,而是回答三个工程问题:
|
||
|
||
1. 多账号 Profile、运行时和网络出口能否稳定隔离并可复现;
|
||
2. 账号、单用户确认、任务和执行证据能否形成最小可审计闭环;
|
||
3. 平台页面、登录态或运行环境变化时,系统能否及时观测、停止并安全恢复。
|
||
|
||
判断标准是实验可复现、凭据不泄露、账号不串用、任务不重复、异常可停止;不以“通过平台检测”或“降低封禁率”作为指标。
|
||
|
||
## 2. 探索范围
|
||
|
||
### 纳入本轮
|
||
|
||
- 1 个本地 workspace;
|
||
- 团队自有或有明确授权记录的测试账号;
|
||
- 指纹 Chromium 与系统 Chrome 的运行时接入、版本固定和 Profile 隔离;
|
||
- 受管网络出口的绑定、健康观测和失败关闭;
|
||
- 账号台账、凭据引用和状态;
|
||
- 草稿、单用户显式确认、队列、执行结果、暂停和审计;
|
||
- 授权沙箱中的兼容性矩阵、黑盒观测和停止条件。
|
||
|
||
### 暂不纳入
|
||
|
||
- 公众注册、多租户 SaaS、计费、客服和 SLA;
|
||
- 多用户协作、账号负责人、RBAC 和职责隔离;
|
||
- 市场推广、外部客户承诺和规模化部署;
|
||
- 自动评论、批量私信、自动关注、刷量和未授权数据采集;
|
||
- 验证码或设备校验绕过、私有签名、逆向接口、TLS/JA3/指纹伪装;
|
||
- 平台提示异常后通过换代理、换设备、换身份或自动重试继续执行。
|
||
|
||
这些边界保护实验账号、凭据和数据,也避免把不可验证的规避假设写成工程需求。
|
||
|
||
## 3. 五个领域的优先级
|
||
|
||
P0 是首轮验证必需,P1 仅在 P0 通过后开展。
|
||
|
||
| 领域 | P0 | P1 | 本轮停止线 |
|
||
| --- | --- | --- | --- |
|
||
| 运行环境 | 每账号独立 Profile;运行时版本固定;单实例占用锁;环境变更留痕;浏览器崩溃可见 | 升级灰度、备份恢复、跨 OS 兼容矩阵 | Profile 串用、版本漂移、设备校验或未知挑战页 |
|
||
| 网络出口 | 账号稳定绑定;连通性与认证观测;出口失效时禁止静默直连;凭据脱敏 | 容量、延迟、可用率和成本统计 | 出口地址/地区异常变化、认证失败、网络策略不明确 |
|
||
| 账号池 | 自有/授权标记;平台账号唯一键;凭据只存引用;状态和撤销 | 标签、归档、登录态健康 | 授权不明、账号映射冲突、凭据进入日志 |
|
||
| 单用户确认 | 草稿显式确认;确认版本锁定;紧急停机;追加式审计 | 多用户、负责人和 RBAC 另行规划 | 确认版本不一致、无法确认操作者 |
|
||
| 任务编排 | capability allowlist;幂等键;单次提交;暂停/取消;明确结果证据;`needs_confirmation` | 排期、失败分类、人工恢复和只读健康看板 | 403/429、验证码、设备校验、平台警告、结果不确定 |
|
||
|
||
## 4. 最小系统形态
|
||
|
||
```text
|
||
React/Vite 内部管理台
|
||
│
|
||
▼
|
||
模块化单体控制面 ─── Postgres
|
||
│
|
||
▼
|
||
一个持久任务 Worker
|
||
│
|
||
├─ 官方能力连接器
|
||
└─ 受控浏览器执行器
|
||
|
||
Secret Manager / OS Keyring 只保存凭据,数据库仅存引用。
|
||
```
|
||
|
||
本轮不拆微服务、不引入通用工作流引擎。Postgres 的唯一约束、事务和行锁足以完成幂等、租约和状态推进。
|
||
|
||
### 最小实体
|
||
|
||
- `social_account`, `credential_ref`
|
||
- `runtime_profile`, `network_exit`, `environment_binding`
|
||
- `content_draft`, `confirmation`, `operation_task`, `execution_attempt`
|
||
- `observation_event`, `audit_event`
|
||
|
||
任务状态:
|
||
|
||
`draft → pending_confirmation → confirmed → queued → executing → succeeded / failed / needs_confirmation / policy_hold / cancelled`
|
||
|
||
`needs_confirmation` 与 `policy_hold` 只能由当前用户核验后处理,不自动重试。
|
||
|
||
## 5. 授权沙箱威胁模型
|
||
|
||
### 资产
|
||
|
||
- 账号凭据、Cookie/token、Profile 与本地存储;
|
||
- 草稿、媒体、私信或其他账号数据;
|
||
- 单用户确认版本和执行证据;
|
||
- 网络出口凭据与环境观测数据。
|
||
|
||
### 高层威胁与控制
|
||
|
||
| 威胁 | 可观测现象 | 系统控制 |
|
||
| --- | --- | --- |
|
||
| Profile 或账号串用 | 当前账号标识与任务账号不一致 | 执行前双重校验、每账号锁、立即停机 |
|
||
| 凭据泄露 | 日志/错误/导出中出现敏感字段 | Secret 引用、结构化脱敏、敏感字段扫描 |
|
||
| 环境兼容性漂移 | 浏览器版本、启动结果、页面能力或登录态变化 | 固定版本、记录变更、按兼容矩阵回归;不猜测检测机制 |
|
||
| 网络出口漂移 | 出口健康、地址或地区标签变化 | 稳定绑定、变更确认、失败关闭;不自动换出口继续 |
|
||
| 重复或错误写入 | 重复任务、账号/草稿/确认版本不一致 | 唯一幂等键、版本锁定、一次提交、结果核验 |
|
||
| 平台挑战或限制 | 验证码、设备校验、403/429、警告、未知阻断页 | 暂停账号和相关任务,保存最小证据,交当前用户手工核验 |
|
||
| 浏览器/UI 变化 | 元素缺失、导航异常、成功证据缺失 | 连接器隔离、明确超时、进入 `needs_confirmation` |
|
||
|
||
威胁模型只记录外部可见信号、影响和停止策略,不记录平台内部检测项猜测、规避参数或可操作绕过步骤。
|
||
|
||
## 6. 兼容性观测方案
|
||
|
||
### 记录维度
|
||
|
||
- 平台与场景:登录、只读同步、草稿准备、受控发布;
|
||
- OS、浏览器后端、运行时版本、Profile 标识;
|
||
- 网络出口的内部标签与健康状态,不记录可复用凭据;
|
||
- 开始/结束时间、任务状态、浏览器退出码、页面可用性;
|
||
- 平台返回的通用状态分类:成功、认证失效、限流、挑战、未知;
|
||
- 当前用户、确认版本、停止原因和人工核验结论。
|
||
|
||
### 不记录
|
||
|
||
- 平台检测脚本、私有接口、签名材料或 Cookie 拼装方式;
|
||
- TLS/JA3、Canvas、WebGL 等伪装参数与“通过率”;
|
||
- 验证码、设备校验或封禁后的规避路径;
|
||
- 可用于换身份、换地区或复现他人账号环境的敏感细节。
|
||
|
||
### 输出
|
||
|
||
每次实验只产出一条结构化记录和必要的脱敏截图/日志:输入版本、环境版本、预期、结果、停止原因、是否可复现。未知结果保留为未知,不推断平台检测逻辑。
|
||
|
||
## 7. 验证方案
|
||
|
||
### 阶段 A:离线闭环
|
||
|
||
范围:1 workspace、1 个内部用户、2 个虚拟账号、Mock 连接器、20 个任务。
|
||
|
||
阶段 A 仅验证单用户核心闭环;负责人、RBAC、多用户协作和职责隔离不属于本阶段验收。
|
||
|
||
验收:
|
||
|
||
- 单用户从账号配置、草稿、显式确认到 Mock 执行和审计回溯的核心闭环可重复验证;
|
||
- 20 个任务重复执行为 0;
|
||
- 账号、草稿或确认版本不一致时执行为 0;
|
||
- 暂停账号后 1 分钟内不再领取新任务;
|
||
- 日志、错误、导出中无密码、Cookie/token 和网络凭据;
|
||
- 每个结果都能回溯到账号、单用户确认版本和执行尝试。
|
||
|
||
阶段 B/C 仅保留后续验证门槛,本轮不实施、不接入真实平台;进入任一阶段前需重新规划并审查范围。
|
||
|
||
### 阶段 B:本地授权沙箱
|
||
|
||
范围:1 个平台、1 个自有测试账号、1 个固定 Profile、1 个受管出口;仅验证登录、只读页面、启动/停止和观测链路。
|
||
|
||
验收:
|
||
|
||
- 连续 10 次启动均命中同一账号与 Profile,无串用;
|
||
- 运行时或出口配置变化会阻止任务并要求当前用户确认;
|
||
- 浏览器崩溃、登录失效、挑战页和网络失败都能进入明确停止状态;
|
||
- 不通过自动刷新、重试、换出口或换环境消除异常。
|
||
|
||
### 阶段 C:受控写入
|
||
|
||
前提:阶段 A/B 通过;当前用户明确确认;连接器 capability 已核验。
|
||
|
||
范围:同一自有测试账号,5 个低风险草稿,逐次显式确认和原生平台核验。
|
||
|
||
验收:
|
||
|
||
- 重复写入、错账号写入、未确认写入均为 0;
|
||
- 5 次执行都有明确成功证据或进入 `needs_confirmation`;
|
||
- 任一停止条件出现即终止本阶段,不扩大样本。
|
||
|
||
## 8. 停止与恢复
|
||
|
||
### 立即停止条件
|
||
|
||
- 验证码、设备校验、平台警告、403/429 或未知挑战页;
|
||
- 账号、Profile、网络出口或确认版本不一致;
|
||
- 代理认证失败、出口异常变化或发生静默直连;
|
||
- 提交结果不确定、浏览器崩溃或成功证据缺失;
|
||
- 凭据泄露或跨账号数据出现。
|
||
|
||
### 恢复条件
|
||
|
||
只允许当前用户在原生平台/可见浏览器中完成核验,并记录原因与结论后恢复。恢复沿用原账号、原 Profile 和已确认环境;不得通过换代理、换设备、换身份、自动刷新或规避步骤推进实验。
|
||
|
||
## 9. 审查决策
|
||
|
||
- **通过**:定位、范围、五领域 P0、威胁模型、观测字段和停止条件获得确认,由工程师入库并拆阶段 A。
|
||
- **修改后通过**:仅调整内部实验规模、字段或职责,不放宽安全边界。
|
||
- **不通过**:目标依赖检测规避、验证绕过、私有签名、指纹伪装或换身份/出口继续执行。
|
||
|
||
## 10. 参考输入
|
||
|
||
- 上游仓库固定快照:<https://github.com/3441293738/creatorhub/tree/11df1389ee557169bb2381e5ea08de96f14f80c7>
|
||
- 上游能力说明:<https://github.com/3441293738/creatorhub/blob/11df1389ee557169bb2381e5ea08de96f14f80c7/README.md>
|
||
- 上游数据模型:<https://github.com/3441293738/creatorhub/blob/11df1389ee557169bb2381e5ea08de96f14f80c7/app/models.py>
|
||
- 上游 Profile/代理分配:<https://github.com/3441293738/creatorhub/blob/11df1389ee557169bb2381e5ea08de96f14f80c7/app/profiles.py>
|
||
- 上游风险控制:<https://github.com/3441293738/creatorhub/blob/11df1389ee557169bb2381e5ea08de96f14f80c7/app/risk.py>
|
||
|
||
上游根目录在该快照未发现明确许可证文件,因此本方案只参考公开产品行为和领域概念,不授权复制上游源码、测试或资源。
|