From b6fec1037173e0995becec9957ab4712704d59f2 Mon Sep 17 00:00:00 2001 From: kang Date: Thu, 21 May 2026 15:20:33 +0800 Subject: [PATCH] auto-save 2026-05-21 15:20 (~2) --- .memory/worklog.json | 39 +++++++++++++++++++-------------------- docs/source-analysis.html | 28 ++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 20 deletions(-) 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 /healthgetRuntimeHealthModelTrace返回 models:ASR、asr_languageasr_base_urlasr_remote_enabledasr_local_fallback_enabledasr_audio_fallback_enabledfaster_whisper、本机 ASR、ASR fallback、翻译、GPT 改写、GPT 画面理解、产品视角识别 product_view、主图像模型 gpt-image-2、图片故障兜底 image_fallbacks、短时熔断状态 image_circuit、主体 6 视图模型链路、Azure OpenAI TTS、视频别名和 Seedance 服务商。当前 REWRITE_MODELAUDIO_REWRITE_MODELVISION_MODEL 默认使用 gpt-4o;如果旧环境变量仍写 gemini-*,后端会归一化回 GPT_TEXT_MODEL / REWRITE_MODEL。语音只走 Azure OpenAI TTS,models.voice_tts_paths 会回传当前尝试的语音路径,方便区分路径错误和语音服务不可用。前端所有当前主路径里会调用模型的按钮旁显示模型名,点击弹出小窗口查看模型链路和输入输出逻辑;不返回 API Key 或敏感凭证。 历史列表GET /jobslistJobs所有 job 精简列表(id/url/status/thumbnail/mtime…),按 state.json mtime 倒序。前端 URL 无 ?job= 时拉它回填全部历史;带 limit 可截断。 创建任务POST /jobscreateJob提交 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.jpgweb/app/agent/page.tsx快速出片页的唯一主接口。前端提交 TikTok 链接和最多 6 张产品图;后端创建 JobAgentRun,后台执行下载、产品图归一化、透明骨架主体参考复制、12 段镜头计划、视频生成、失败镜头自动重跑一次、审片接触表和 ffmpeg 最终合成。前端只轮询日志和结果,不直接拥有模型执行权。 重试下载POST /jobs/{id}/download/retryretryJobDownload用于 TK 链接下载失败且没有 video_url 的素材;清空错误、重新进入下载状态,并在后台再次执行 pipeline_download。上传视频不能重下载,需要重新上传文件。 上传视频POST /jobs/uploaduploadJob保存 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.pyAgentRun 状态机。后台固定 12 段约 1 分钟策略,执行下载、产品素材、主体参考、抽帧、镜头规划、视频生成、失败重跑、审片接触图和最终 mp4 合成;前端只显示实时终端和成片播放器。

+

影响:旧信息流复刻工作台仍保留给高级编辑;新页是“只看成品”的默认候选入口。后续描述该路径时应引用“一键出片终端 / AgentRun / agent-runs 接口”,不要再要求用户逐步处理关键帧、分镜和候选视频。

+
+

2026-05-21 · 工作台顶栏品牌文案调整