diff --git a/.memory/worklog.json b/.memory/worklog.json
index 8f5c171..0b047ee 100644
--- a/.memory/worklog.json
+++ b/.memory/worklog.json
@@ -1,25 +1,5 @@
{
"entries": [
- {
- "files_changed": 2,
- "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-19 10:51 (~3)",
- "ts": "2026-05-19T02:54:32Z",
- "type": "session-heartbeat"
- },
- {
- "files_changed": 2,
- "hash": "3f716ea",
- "message": "auto-save 2026-05-19 10:56 (~2)",
- "ts": "2026-05-19T10:56:52+08:00",
- "type": "commit"
- },
- {
- "files_changed": 4,
- "hash": "0ddc08c",
- "message": "auto-save 2026-05-19 11:02 (~4)",
- "ts": "2026-05-19T11:02:18+08:00",
- "type": "commit"
- },
{
"files_changed": 2,
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-19 11:02 (~4)",
@@ -3223,6 +3203,25 @@
"type": "session-heartbeat",
"message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 1 项未提交变更 · 最近提交:auto-save 2026-05-21 15:09 (+1, ~3)",
"files_changed": 1
+ },
+ {
+ "ts": "2026-05-21T15:15:07+08:00",
+ "type": "commit",
+ "message": "auto-save 2026-05-21 15:15 (+2, ~3)",
+ "hash": "7bb4f3e",
+ "files_changed": 5
+ },
+ {
+ "ts": "2026-05-21T07:18:17Z",
+ "type": "session-heartbeat",
+ "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-21 15:15 (+2, ~3)",
+ "files_changed": 2
+ },
+ {
+ "ts": "2026-05-21T07:20:24Z",
+ "type": "session-heartbeat",
+ "message": "Codex 会话活跃 · 最近命令:codex · 分支 main · 2 项未提交变更 · 最近提交:auto-save 2026-05-21 15:15 (+2, ~3)",
+ "files_changed": 2
}
]
}
diff --git a/docs/source-analysis.html b/docs/source-analysis.html
index 850db27..263fb4c 100644
--- a/docs/source-analysis.html
+++ b/docs/source-analysis.html
@@ -716,6 +716,21 @@ api/main.py
subject_agent: SubjectAgentState,
storyboard_images?: StoryboardImage[],
product_refs?: ProductRefStateItem[]
+}
+
+
+
AgentRun
+
一键出片终端的后台状态机。它不替代 Job,而是持有一个 job_id 并记录终端日志、阶段、生成视频 ID、审片图和最终 mp4。
+
AgentRun {
+ id, job_id,
+ status: draft | queued | executing | reviewing | completed | failed,
+ stage, progress,
+ logs: AgentRunLog[],
+ video_ids: string[],
+ final_video_url,
+ contact_sheet_url,
+ error,
+ created_at, updated_at
}
@@ -994,6 +1009,7 @@ ProductRefStateItem {
| 运行配置 / 模型标注 | GET /health | getRuntimeHealth、ModelTrace | 返回 models:ASR、asr_language、asr_base_url、asr_remote_enabled、asr_local_fallback_enabled、asr_audio_fallback_enabled、faster_whisper、本机 ASR、ASR fallback、翻译、GPT 改写、GPT 画面理解、产品视角识别 product_view、主图像模型 gpt-image-2、图片故障兜底 image_fallbacks、短时熔断状态 image_circuit、主体 6 视图模型链路、Azure OpenAI TTS、视频别名和 Seedance 服务商。当前 REWRITE_MODEL、AUDIO_REWRITE_MODEL 和 VISION_MODEL 默认使用 gpt-4o;如果旧环境变量仍写 gemini-*,后端会归一化回 GPT_TEXT_MODEL / REWRITE_MODEL。语音只走 Azure OpenAI TTS,models.voice_tts_paths 会回传当前尝试的语音路径,方便区分路径错误和语音服务不可用。前端所有当前主路径里会调用模型的按钮旁显示模型名,点击弹出小窗口查看模型链路和输入输出逻辑;不返回 API Key 或敏感凭证。 |
| 历史列表 | GET /jobs | listJobs | 所有 job 精简列表(id/url/status/thumbnail/mtime…),按 state.json mtime 倒序。前端 URL 无 ?job= 时拉它回填全部历史;带 limit 可截断。 |
| 创建任务 | POST /jobs | createJob | 提交 TK 链接,后台开始下载;前端“开始”队列会在 downloaded 后自动触发音频解析。下载阶段默认不带 cookies;生产环境必须显式保持 YTDLP_COOKIES_FILE= 和 YTDLP_COOKIES_FROM_BROWSER= 为空,避免容器内误读被打进镜像的开发 api/.env。只有 TikTok 明确要求登录态时,才把宿主机 ./secrets/tiktok_cookies.txt 挂载进容器并设置 YTDLP_COOKIES_FILE=/run/secrets/tiktok_cookies.txt。生产容器没有 Chrome cookies 数据库,不能配置 YTDLP_COOKIES_FROM_BROWSER=chrome。 |
+
| 一键出片终端 | POST /agent-runs
GET /agent-runs/{id}
GET /agent-runs/{id}/final.mp4
GET /agent-runs/{id}/contact.jpg | web/app/agent/page.tsx | 快速出片页的唯一主接口。前端提交 TikTok 链接和最多 6 张产品图;后端创建 Job 与 AgentRun,后台执行下载、产品图归一化、透明骨架主体参考复制、12 段镜头计划、视频生成、失败镜头自动重跑一次、审片接触表和 ffmpeg 最终合成。前端只轮询日志和结果,不直接拥有模型执行权。 |
| 重试下载 | POST /jobs/{id}/download/retry | retryJobDownload | 用于 TK 链接下载失败且没有 video_url 的素材;清空错误、重新进入下载状态,并在后台再次执行 pipeline_download。上传视频不能重下载,需要重新上传文件。 |
| 上传视频 | POST /jobs/upload | uploadJob | 保存 source.mp4,然后同样进入下载完成状态;当前上传后也加入第一步队列,下载完成后自动解析音频。 |
| 删除输入视频 | DELETE /jobs/{id} | deleteJob | 从任务队列、URL 和磁盘 jobs/<id> 目录移除整个 job,包括源视频、关键帧、元素提取图和生成视频。 |
@@ -1139,6 +1155,18 @@ ProductRefStateItem {
变更记录
这个记录不是 git log 的替代品。它记录“产品理解发生了什么变化、影响了哪些源码、你以后描述需求时该怎么说”。后续每次改功能都要补一条。
+
+
+ 2026-05-21 · 新增一分钟二创出片终端
+ Agent
+ Pipeline
+
+
+
背景:用户希望默认不再进入多段人工链路,而是只提交 TikTok 链接和产品图,后台像 Codex 接管一样解决下载、规划、生成和合成问题,最终直接看成片。
+
改动:新增 web/app/agent/page.tsx 快速出片页和 api/main.py 的 AgentRun 状态机。后台固定 12 段约 1 分钟策略,执行下载、产品素材、主体参考、抽帧、镜头规划、视频生成、失败重跑、审片接触图和最终 mp4 合成;前端只显示实时终端和成片播放器。
+
影响:旧信息流复刻工作台仍保留给高级编辑;新页是“只看成品”的默认候选入口。后续描述该路径时应引用“一键出片终端 / AgentRun / agent-runs 接口”,不要再要求用户逐步处理关键帧、分镜和候选视频。
+
+