# 目标执行状态 · 调研 5 个开源内容工作台项目并生成分析文档 > 目标目录:`执行会话/目标-调研5个开源内容工作台项目并生成分析文档-5199a6/` > 台账(唯一权威):`tmp/supervise-inbox/tasks.json` | 目标:`tmp/supervise-inbox/goal.json` ## 一、目标与生命周期 - 目标:使用产品规划技能调研 5 个开源项目并生成分析文档。 - 生命周期:**进行中**。 - 项目 slug:`content-workbench`(按任务说明「建议值」,未经用户另行指定)。 ## 二、第 1 棒(已完成) - 会话:`[执行]-开源项目调研-5项目清单与初步定位`(id `52ace70a-bd4a-4201-a7b0-62237c092375`) - 做了什么:把 5 个仓库的**元数据 + README 全文 + 文件树**拉齐(GitHub 公开 REST API),产出「5 项目清单与初步定位」一份。 - 产物:`docs/pm/content-workbench/research/1b-竞品分析-5项目清单与初步定位.md` - 原始证据:`取证/api/`(`*.repo.json` / `*.README.md` / `*.tree.json` / `postsider.ATTRIBUTION.md.txt` 等)+ 取证脚本 `取证/_fetch_repos.py` - 取证时间:2026-10-07 16:13–16:17(CST) ### 第 1 棒的关键发现 1. **PostSider 是 Postiz 的 fork**(`postsider/ATTRIBUTION.md` 逐字自述,AGPL-3.0)⇒ 4、5 两项同源,合成一份分析。 2. **文到 AI 仓库不含业务源码**(README 明示闭源;全仓仅 5 个文件)⇒ 无法做源码级分析。 3. **许可分水岭**:Easel / OpenCreator = Apache-2.0;Postiz / PostSider = **AGPL-3.0**。 ## 三、第 2 棒(已完成) - 会话:`[执行]-[开源项目调研]-Postiz与PostSider同源双形态分析`(id `a41bb3a3-1015-4a1c-9269-1fd75f998cb7`) - 范围:按第 1 棒「四、下一棒该做什么」第 1 项 —— **Postiz + PostSider 同源双形态分析**(合成一份)。 - 产物:`docs/pm/content-workbench/research/1b-竞品分析-Postiz与PostSider同源双形态.md` - 本棒新证据:`取证/api/fork/`(19 件:`apps/mcp` README / 工具契约 / server.json / SDK / package.json / releases / 迁移证据等)+ `取证/api/fork/fork-diff.json`(差异量化,可复算) - 本棒新脚本:`取证/_fetch_fork_evidence.py`(补拉增量面)· `取证/_fork_diff.py`(两侧文件树差异量化) - 取证时间:2026-10-07 16:40–17:05(CST) ### 第 2 棒的关键发现(会改变后续棒次排期) 1. **改动量远不止"换牌"**(文件树级量化):两侧同路径文件 329 条,其中**逐字节相同仅 92**。PostSider 删掉 `apps/extension`(16)与 `libraries/react-shared-libraries`(57)、前端 `src/components` 293→78、**净增独立 MCP 包 `apps/mcp`(46 文件)**。 2. **工程化代差**:Prisma 由 `db push` 升级为**迁移体系**(0 → 26 条迁移);测试由 **0 → 94 个 `*.spec.ts`**(根级 jest 配置 2 → 16);后端路由 32→42、服务 19→28。 3. **PostSider 的增量面确实是 Agent 桥**:MCP 独立成包 `@postsider/mcp`、**19 个工具**(13 读 / 6 写,源码级双证:README + `tool-inventory.ts` 断言清单)、每工具四条风险注解;上游 Postiz 的 MCP **嵌在后端**(`chat/mcp.relay.service.ts`),走"托管 endpoint + 15 个 agent 连接器"路线。 4. **定价缺口已闭合**:Postiz Cloud $29 / $39 / $49 / $99 每月;PostSider $20 / $35 / $45 / $90 每月(均 7 天试用;**每档都含 API/SDK/MCP/Webhooks**)。 5. **新增未知项**:真 fork 点查不到(GitHub 上未标记 fork、无 parent 指针);改动**行数**未做(tree API 不给行数)—— 见 §七。 ## 四、第 3 棒(已完成) - 会话:`[执行]-[开源项目调研]-Easel深度分析`(id `a4993b72-040e-49db-beb4-375f5201ff61`,取自本会话 `$CODEBUDDY_SESSION_ID`) - 范围:按第 2 棒「五、下一棒该做什么」第 1 项 —— **Easel 深度分析**(`ZJU-REAL/Easel`,Apache-2.0)。 - 产物:`docs/pm/content-workbench/research/1b-竞品分析-Easel.md`(37,520 B / 294 行) - 素材:**只读复用**第 1 棒已拉的 `取证/api/easel.{repo.json,README.md,tree.json}`(⛔ 未重复下载)+ 旁证(只读)`参考资料/Easel_功能点与截图/` - 本棒新证据:`取证/easel/`(17 件:官方文档 4 份 `skill-function-mapping.md`/`SKILL-SPEC.md`/`prompt-stack.md`/`known-issues.md` + 配置契约 6 件 `AGENTS.md`/`SOUL.md`/`pyproject.toml`/`.env.example`/`CHANGELOG.md`/`openclaw.json5` + 2 个代表性 `SKILL.md` + releases/tags/languages/contributors)|`取证/easel.tree.stat.json` - 本棒新脚本:`取证/_easel_tree_stat.py`(文件树统计,可复算) - 取证时间:2026-10-07 17:06–17:19(CST);⚠️ `raw.githubusercontent.com` 通道不稳(多文件 `000` 失败)⇒ 改用 **GitHub `contents` API** 取正文,17 件全部成功。 ### 第 3 棒的关键发现 1. **主体是"技能库"不是"排期工具"**:全仓 1002 blob,**771 在 `skills/`**;`skills/openclaw/` **716 文件 / 114 个技能目录 / 114 个 `SKILL.md`**(源码级逐个数出);发布层只占 20/114。 2. **三层加载是硬机制**(`SKILL-SPEC.md` v0.3):Metadata 常驻 / Instructions 触发时 / Resources 按需,且**硬规定 `SKILL.md` ≤200 行、领域知识外置 `references/`**;**94 个技能写了溯源的 `EASEL-META.md`**。 3. **能力数字有三处不一致,实测以 114 为准**:文件树 114 / 能力地图正文 114 / 地图分层总览表相加 113(创作层列 51、正文实列 52)/ README 徽章 113(旧值);`CHANGELOG` 印证 112→113→114。 4. **治理是源码级的,不只是文档**:`content_guard.py`(出站内容敏感信息 fail-closed、退出码 7;AI 措辞仅告警)+ `persona_gate.py`(人设 <80 分只提醒不阻断)+ `validate_skills.py`/`validate_skill_commands.py`(**解析技能里的命令对照 argparse 检查漂移**)。 5. **发布路线=浏览器自动化,且自陈风险**:README 明写「谨慎自动发布到小红书」;`skill-xhs-publisher` 内置反检测参数并提示测试号/小流量/人工复核。**与 Postiz「官方 OAuth、不自动化」相反** ⇒ 同一条产品线不可混抄。 6. **本棒暴露两处待核**:① `CHANGELOG` 称 CI 跑 38 条技能自带测试,而实测 `skills/**/tests/` 仅 6 个文件 ⇒ 38 疑为用例数(**未核实**);② `SKILL-SPEC` 的 `test1.prompt/.expected` 约定在整树**零文件**(弃用)。均已写入产物 §十四。 ## 五、第 4 棒(已完成) - 会话:`[执行]-[开源项目调研]-OpenCreator深度分析`(会话名取自本棒派活原文;产物落点见下) - 范围:按第 3 棒「十四、下一棒建议」第 1 项 —— **OpenCreator 深度分析**(`krillinai/OpenCreator`,Apache-2.0,默认分支 `master`)。 - 产物:`docs/pm/content-workbench/research/1b-竞品分析-OpenCreator.md`(57,550 B / 约 430 行) - 素材:**只读复用**第 1 棒已拉的 `取证/api/opencreator.{repo.json,README.md,tree.top.json,tree.docs.json}`(⛔ 未重复下载) - 本棒新证据:`取证/opencreator/`(**76 件**:11 份分片文件树 + 62 份正文 + 3 份统计/日志) - 分片文件树 11 份:`.github` / `apps` / `assets` / `packages` / `resources` / `runtime` / `scripts` / `skills` / `template` / `docs/specs` / `docs`(递归)—— **逐片 `truncated=false`,整树完整**(第 1 棒 `recursive=1` 中断的缺口已闭合) - 正文 62 份:`AGENTS.md` · 根 `package.json`/`tsconfig.base.json`/`.env.example`/`pnpm-workspace.yaml`/`CONTRIBUTING.md` · `docs/`(Runtime 设计蓝图、Runtime API v1、`specs/` 图像 provider 设计、视觉组件规范、模板治理专文、计划任务运行手册与验收报告、superpowers 设计、中文 README 等 20 份)· `packages/protocol/src/*` **17 份契约源码** + `package.json` · `packages/skill-market/*` 5 份 · `skills/*` 8 份 · `runtime/krillinai/go.mod` · `apps/{daemon,web,desktop}/package.json` - 本棒新脚本:`取证/_opencreator_tree.py`(分片拉树)· `取证/_fetch_opencreator_docs.py`(正文批量拉取,**raw 优先、失败回落 contents API**)· `取证/_opencreator_tree_stat.py`(树统计 → `取证/opencreator/opencreator.tree.stat.json`,可复算) - 取证时间:2026-10-07 17:37–17:56(CST);⚠️ 本棒实测 `raw.githubusercontent.com` **60/61 成功**(1 件失败经 contents API 补齐)—— 与第 3 棒"raw 不稳"不同 ⇒ 该通道**随时刻波动**,脚本按双通道写。 ### 第 4 棒的关键发现 1. **路线与另 4 个项目全不同**:它是「**给创作者用的 Codex 外壳**」—— README 与设计文档双证「不重新实现 Agent loop / Skills runtime / MCP runtime」,只做**进程生命周期 + 事件归一化 + 持久化 + 调度 + UI**(`codex exec --json` + stdin prompt + stdout JSONL)。 2. **规模量级最大**:**2182 blob / 567 tree / 约 3.25 亿字节**(源码级统计);`apps/` 1264 文件(daemon 702 / web 437 / desktop 120 / harness 5);`.ts` 903 + `.tsx` 187 + `.go` 163;**测试文件 416 个**。 3. **创作侧是真资产**:`template/` **108 个模板条目**(image-generation 79 + video-generation 28 + cover-generator 1);**技能市场 52 条候选 / 10 个中文分类**,每条带**七项风险声明**(requiresLogin / requiresApiKey / externalWrite / readsLocalFiles / commercialLicenseReview / privateDataRisk / notes)。 4. **`packages/protocol` 契约包是精华**:`protocolVersion 0.1.0`、**provider 白名单 17 条**(其中 `codex-native` 与 `edge-tts` **零凭据**,且 `image.provider` **默认值就是 `codex-native`**)、**状态机 + `expectedRevision` + `idempotencyKey`** 三件套、专为"远端到底收没收"设 `unknown_remote_acceptance`/`abandoned_unknown` 两态。 5. **工程治理密度罕见**:仓根 `AGENTS.md`(13,063 B)=**验证分级铁律(P0/P1/P2)+"⛔ 不得过度验证"+"⛔ 不得用未执行的验证暗示无回归"** + Creator 面板单一实现铁律 + **Web/Desktop 一致性门禁(含构建产物哈希硬门)** + 完成声明门禁。 6. **已跑过一轮"专属会话"重构且留痕完整**:`Schedule ↔ Thread` 一对一(`schedule_task`)、旧 `parallel` 全转 `queue`、演练脚本 `pnpm release:verify-scheduled-task-upgrade`(9 条验证 + 幂等复验)、灰度 8 项;验收自评 **`PARTIAL / BLOCKED_ENV`**(仓库不含真实原生 Desktop Host)⇒ **对我方"多会话/机制类项目"参考价值最高的一份**。 7. **一处源码级留白**:`skillMarketCatalog`(已上架)与 `customSkills` **在源码里都是空数组** ⇒ "52 条有多少真上架"查不到(已入 §七缺口)。 ## 五之二、第 5 棒(已完成) - 会话:`[执行]-开源项目调研-文到AI项目分析`(id `1b5dce36-1d47-4661-b6e5-af6c7ad2e33e`) - 范围:目标说明 §二 清单第 2 项 `wendaoai/wendao-content-workbench`。 - 产物:`docs/pm/content-workbench/research/1b-竞品分析-文到AI.md`(31,523 B / 253 行) - 素材:只读复用第 1 棒 `取证/api/wendao.*`;本棒新增 `取证/wendao/`(20 件:官网/隐私政策/sitemap/script + GitCode 更新仓 `stable.json`/版本清单/树/releases 渲染页 + 各 API 读数) - 本棒新脚本:`取证/_fetch_wendao.py` - 取证时间:2026-10-07 18:07–18:10(CST) - 关键结论:**真闭源**(全仓 5 blob、`NOTICE.md` 声明 proprietary、`languages` 空对象)⇒ 只能按**文档级**调研;产品侧 13 天发 11 版(0.0.113→0.0.123);独立更新清单(四平台 + sha256 + 升级策略)+ 发布助手「只填充不代发」两条最可搬。 - 🔴 口径裁定(用户 2026-10-07 18:27 逐字):「文到AI 通过说明文档调研就行 不需要源码」⇒ 已写入目标说明 §六之二,**消解了第 5 棒留在 `NEED-USER.md` 的待裁项**。 ## 五之三、第 6 棒(已完成 · 本轮 · 收口) - 会话:`[执行]-开源项目调研-跨项目汇总对比`(id `47860f06-c51f-4c2a-b7ad-2a6362b8a675`) - 范围:**只做跨项目汇总对比文档**(验收判据第 3 条)。 - 产物:`docs/pm/content-workbench/research/1b-竞品分析-跨项目汇总对比.md`(40,392 B / 343 行) - 做法:**只读复核**前 5 棒产物 + 用 `取证/` 原始 JSON / 文件**复核读数**(未做新源码取证、未改写任何前棒产物);横向对比按主任务七维度(定位/形态/技术栈/许可/活跃度/功能覆盖/可借鉴点/风险)+ 同源单列 + 「对内容工作台方向的选型与借鉴结论」。 - 本棒复核发现的**跨棒冲突 4 条**(均以原始取证为准,详见汇总文档 §十一):① Easel 技能数 113→**114**;② Postiz 树「截断前」措辞有误(`tree_truncated=false`,**完整**);③ PostSider 连接器 33(README)vs **34**(`*.provider.ts` 实测);④ OpenCreator 模板条目 108(79/28/1)经原始树分片**复算吻合**,但派生件 `opencreator.tree.stat.json` 的 `template_entries_by_category` **全为 0(失真)**,须以原始分片为准。 - 取证时间:2026-10-07 18:31–18:5x(CST) ## 六、验收判据现状(与 `goal.json` 的 `acceptance_state` 对齐) - 单项目分析文档齐全(5 个项目全覆盖,Postiz 与 PostSider 同源合并为一份并写明差异)—— **过**(5 份文档覆盖 5 项目:总览 1 + Postiz/PostSider 合并 1 + Easel 1 + OpenCreator 1 + 文到 AI 1) - 每份含产品定位与功能清单与可借鉴点 —— **过**(第 1–5 棒产物均含三段) - 一份跨项目汇总对比文档 —— **过**(第 6 棒产物,本目标目录内) - 每份标注来源链接与取证时间 —— **过**(逐条标链接与取证时间,含本汇总文档) - 产物全部落在本目标目录内 —— **过**(6 份产物均在 `执行会话/目标-…-5199a6/docs/pm/content-workbench/research/`) ## 六之二、判据逐条自评(供检查会话复核 · 本轮新增) > 口径:`goal.json` 的 `acceptance_state` 五条,逐条给「过/未过 + 一句依据」。⛔ 不只写「已完成」。 1. **单项目分析文档齐全(5 项目全覆盖,Postiz 与 PostSider 同源合并为一份并写明差异)—— 过**。依据:`docs/pm/content-workbench/research/` 下 5 份文档分别覆盖 5 个项目;同源一份为 `1b-竞品分析-Postiz与PostSider同源双形态.md`,其 §二/§三写明 fork 关系与差异(文件树 329 同路径 / 92 逐字节相同)。 2. **每份含产品定位与功能清单与可借鉴点 —— 过**。依据:5 份文档各自设有「产品定位」「功能清单」「可借鉴点(按可搬性排序)」小节(汇总文档亦含 §五/§六/§九)。 3. **一份跨项目汇总对比文档 —— 过**。依据:本轮新增 `1b-竞品分析-跨项目汇总对比.md`(40,392 B),含七维度横向矩阵、同源单列、冲突复核、选型结论。 4. **每份标注来源链接与取证时间 —— 过**。依据:各文档末尾均列「来源链接 + 取证时间」表;本汇总文档 §十三列出 5 仓库链接与逐棒取证时间段。 5. **产物全部落在本目标目录内 —— 过**。依据:6 份产物与全部取证均在 `执行会话/目标-调研5个开源内容工作台项目并生成分析文档-5199a6/` 内;未写回 `交付物/`、`docs/`、工作区根。 ## 七、下一棒该做什么(**收口 → 仅剩非必须补强项,⛔ 本轮不顺手做**) > 目标 5 条判据已全部满足,**主线收口**。以下均为**可选补强**(部分属扩大取证面,须先问用户): 1. **Postiz ↔ PostSider 行级 diff**(clone 两侧 + `git diff --stat`):把第 2 棒的文件级量化升级为行级(成本:下载/时耗大)。 2. **OpenCreator 元数据面补齐**:拉 `releases`/`tags`/`contributors`/`languages` 四个 API(成本低)。 3. **Easel 114 个技能 `layer` 源码级分布**:批拉 114 个 `SKILL.md` frontmatter 统计(第 3 棒遗留项,成本中)。 4. **文到 AI 发布助手插件源码级核对**:下载官方插件包(124,890 B)核对(⚠️ 扩大取证面,须用户点头)。 5. **OpenCreator `docs/plans/` 10 份实施计划的「计划 vs 实现」抽样比对**(成本中高)。 ## 八、遗留的取证缺口(⛔ 不许猜,后续棒次或用户决定是否补) - **Postiz ↔ PostSider 的 fork 点**:GitHub 上 `lumizone/postsider` 未标记为 fork、无 parent 指针 ⇒ 用 API 求不到。 - **Postiz ↔ PostSider 的改动行数**:tree API 只给 blob sha、不给行数 ⇒ 第 2 棒只做到文件级量化;行级 diff 需 clone 两侧(耗时大,建议单列一棒并先问用户)。 - **PostSider「33 个活跃连接器」口径**:仓库 `*.provider.ts` 实数为 34、官网另写 "30+ networks" ⇒ 未逐条核对注册表。 - **PostSider 是否有托管(云)服务**:官网只给试用入口与自托管文档,未见独立托管定价/SLA 页 ⇒ 查不到。 - 各项目的用户量 / 下载量 / 营收:Postiz 自述 7M downloads(无口径),其余查不到;**Easel 亦查不到**(仓库无此口径,其项目主页 `zju-real.github.io/Easel/` 未访问);**OpenCreator 亦查不到**(`open-creator.ai` 主页本棒未访问,未拉 releases/tags)。 - **(第 3 棒新增)Easel 的 4 条待核**:① `CHANGELOG` 称 CI 跑 **38 条技能自带测试**,实测 `skills/**/tests/` 仅 **6 个文件**(均在 `skill-wechat-publisher`)⇒ 38 疑为**用例数**,**未逐条核对**;② 114 个技能的 `layer` **源码级分布未做**(层分布引用的是能力地图文档,而该表创作层 51 与正文实列 52 条不自洽);③ `SKILL-SPEC` 的 `test1.prompt`/`test1.expected` 约定在整树**零文件**(弃用,动机无记载);④ `.env.example` 的 `xhs-maas` / `agnes` 视频 provider **来源与可用性未核实**。 - **(第 3 棒新增)Easel 技能可用率无实测**:只做静态源码级取证,**未运行任何技能**。 - **(第 4 棒新增)OpenCreator 的 8 条待核**:① 商业与规模证据全缺(主页/定价/用户量/营收/发行节奏,未拉 `releases`/`tags`/`contributors`/`languages`);② **技能市场"上架态"口径未核实**(`skillMarketCatalog` 与 `customSkills` 源码里都是空数组,`catalog.ts` 的 `sourceCommit` 外部提交未访问);③ `docs/plans/` 10 份实施计划的**落地率未核**(计划口径 ≠ 已实现);④ 火柴人角色素材与 `contributors/*` 头像、`stickman-remotion/assets` 音频的**再分发许可未核**(仓内只有 Apache-2.0 一份 LICENSE);⑤ **真实运行证据为零**(未安装/未编译/未运行任何命令 ⇒ "十项工具可用""108 模板可跑"无实测支撑);⑥ `runtime/krillinai`(Go 引擎 183 文件)**只做结构与依赖级取证**,未读业务实现;⑦ GitHub `languages` 字节口径未取(本棒"语言构成"是**按文件数**的扩展名口径,⛔ 与官方字节口径不可混用);⑧ `docs/development/` 5 份、`ui-prototype-runtime-review.md`、`visual-component-guidelines.md`、`docs/plans/*` 正文**未逐份读**。