From 4b27a474a11d7276a5f7a98b2b489d4232f4e1b7 Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Mon, 17 Aug 2026 23:55:54 +0800 Subject: [PATCH 01/11] =?UTF-8?q?feat(tts):=20=E8=A7=86=E9=A2=91=E7=AE=A1?= =?UTF-8?q?=E7=BA=BF=E6=96=B0=E5=A2=9E=E3=80=8C=E6=BF=80=E6=83=85=E3=80=8D?= =?UTF-8?q?=E9=85=8D=E9=9F=B3=E9=A3=8E=E6=A0=BC=E9=A2=84=E8=AE=BE=E4=B8=8E?= =?UTF-8?q?=E5=AE=98=E6=96=B9=E7=AB=99=E7=82=B9=E4=BF=A1=E6=BA=90=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E8=A7=84=E8=8C=83;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - tts.py STYLE_PRESETS 新增 passionate(充满激情与轻快):happy 0.70 主载高唤醒正价 + surprised 0.20 跳跃感 + calm 0.10 锚定咬字,有效和 1.00×0.7=0.70 ≤0.8 上限,语速 0.97 护密集技术句清晰度;--list-styles 与模块 docstring 同步; - VOICE-CLONING.md §4.1 风格表收录 passionate 并置于推荐位,§4.4 补科普长视频风格推荐与数字密集段 df=1.0 微调指引,§五示例命令更新; - skills/01-paper-extraction.md 扩展「官方工程站点信源补充」纪律:只收事实性内容(逐字引用+URL+访问日期)、产出落 paper-notes.md 末尾独立「信源补充」大节与论文正文物理隔离、严禁下载/嵌入站点图片(概念转文字规格供 Remotion 代码动画重建)、站点信源单集专属不跨集、站点与论文冲突以论文为准; - pipeline README Stage ① 描述与 tts.py 脚本表同步;CHANGELOG Unreleased 收录管线条目。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- CHANGELOG.md | 4 ++++ media/pipeline/README.md | 4 ++-- media/pipeline/VOICE-CLONING.md | 5 +++-- media/pipeline/scripts/tts.py | 14 +++++++++++--- media/pipeline/skills/01-paper-extraction.md | 11 +++++++++++ 5 files changed, 31 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5e0e875c..111075a9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,10 @@ ## [Unreleased] +### Added + +- **科普视频管线新增「激情」配音风格预设与官方工程站点信源补充规范**:`media/pipeline/scripts/tts.py` 的 IndexTTS 风格预设表新增 `passionate`(充满激情与轻快:happy 0.70 主载高唤醒正价 + surprised 0.20 跳跃感 + calm 0.10 锚定咬字,有效和 1.00×0.7=0.70 ≤ 0.8 上限,语速 0.97 护密集技术句清晰度),`--list-styles` 与 [VOICE-CLONING.md](media/pipeline/VOICE-CLONING.md) §四 同步收录并给出科普长视频推荐位;[skills/01-paper-extraction.md](media/pipeline/skills/01-paper-extraction.md) 扩展「官方工程站点信源补充」纪律——只收事实性内容、逐字引用+URL+访问日期、落 `paper-notes.md` 末尾独立「信源补充」大节并与论文正文物理隔离、严禁下载/嵌入站点图片(概念转文字规格供 Remotion 代码动画重建)、站点信源单集专属不跨集。 + ### Fixed - **`cli.sh restart` Phase 3 报 `PostgreSQL 未运行` 直接中止**:`postgresql@16` 非正常退出后数据目录残留 `postmaster.pid`(其 PID 被 OS 回收复用为他进程,本例为 WebKit),brew launchd 反复重试撞 `FATAL: lock file "postmaster.pid" already exists` → 服务进入 `error` 态,而 Phase 3(`cli.sh`)原先仅 `pg_isready -h localhost -p 5432` 探测一次、未运行即 `exit 1`,无自愈、不区分 PG 版本。根因实证:残留 pid 记录 PID `4174` 实为 `com.apple.WebKit.WebContent`(非 postgres),`/opt/homebrew/var/log/postgresql@16.log` 尾部 60+ 条同款 FATAL。修复:新增 `_ensure_postgres` 自愈链——解析 Homebrew formula(默认 `postgresql@16` 对齐 CI `pgvector:pg16`,按 `@16→@17→@18→postgresql` 探测,可 `NEGENTROPY_PG_FORMULA` 覆盖)→ `_clean_stale_pg_pid` 仅当 PID 已死或存活但非 postgres 进程时清理残留锁 → `brew services restart`(覆盖 error/已加载态,start 兜底)→ `_wait_pg_ready` 壁钟轮询就绪(默认 30s,`NEGENTROPY_PG_READY_TIMEOUT` 覆盖);全失败才报错并附诊断(`brew services list` / 日志路径 / 版本核对)。无 `pg_isready` 时保留原「不探测、退由 alembic 校验」行为(最小干预)。新增 `scripts/tests/test_pg_selfheal.sh` 函数级回归测试(9 用例全通过)。本次即时清理 `@16` 残留锁并 restart 恢复,`SELECT version()` 核对为 16.14。防范:本机共存 PG@16/17/18,5432 易错位——残留 `postmaster.pid` 致 brew `error` 态是可复用判据,优先核 `ps comm` 而非 `kill -0`(后者对 OS 回收复用的 PID 误判存活)。 diff --git a/media/pipeline/README.md b/media/pipeline/README.md index 2e3bf4f8..f89ad6d3 100644 --- a/media/pipeline/README.md +++ b/media/pipeline/README.md @@ -8,7 +8,7 @@ ```mermaid flowchart LR subgraph S["内容层(文档驱动)"] - A[① 论文精读提取
并行子代理] --> B[② 策划案
受众/结构/视觉契约] + A[① 论文精读提取
并行子代理
含官方站点信源补充] --> B[② 策划案
受众/结构/视觉契约] B --> C[③ 逐字稿 narration.md
★单一事实源] C --> D[④ 双重校验
真实性回溯+易懂性] D --> E[⑤ 分镜表 storyboard.md] @@ -54,7 +54,7 @@ media/-video/ | 脚本 | 用途 | 工程内等价调用 | |---|---|---| | [scripts/build_narration.py](./scripts/build_narration.py) | narration.md → narration.json + 时长估算 | `uv run --no-project scripts/build_narration.py` | -| [scripts/tts.py](./scripts/tts.py) | 逐句配音合成 + 时长 manifest(幂等,双引擎:edge 预置音色 / indextts 声音克隆) | `uv run --no-project --with edge-tts --with mutagen scripts/tts.py`(克隆模式免 edge-tts,见 [VOICE-CLONING.md](./VOICE-CLONING.md)) | +| [scripts/tts.py](./scripts/tts.py) | 逐句配音合成 + 时长 manifest(幂等,双引擎:edge 预置音色 / indextts 声音克隆,风格含 passionate 激情 / lively 轻快等) | `uv run --no-project --with edge-tts --with mutagen scripts/tts.py`(克隆模式免 edge-tts,见 [VOICE-CLONING.md](./VOICE-CLONING.md)) | | [scripts/tts_server.py](./scripts/tts_server.py) | IndexTTS 推理服务(声音克隆后端,**运行于 index-tts 环境**,非本仓) | 在 `~/tools/index-tts` 内启动,见 [VOICE-CLONING.md §二](./VOICE-CLONING.md) | | [scripts/prepare_ref.py](./scripts/prepare_ref.py) | 参考音色样本裁剪/规范化(长录音 → 5–15s 干净 WAV) | 无工程薄包装(与具体工程无关),从仓库根调用:`uv run --no-project --with soundfile --with numpy media/pipeline/scripts/prepare_ref.py <源音频>` | | [scripts/qa_frames.py](./scripts/qa_frames.py) | 按句 id 抽帧视觉 QA | `uv run --no-project scripts/qa_frames.py out/draft.mp4 --scene P2` | diff --git a/media/pipeline/VOICE-CLONING.md b/media/pipeline/VOICE-CLONING.md index ac62d232..f3a40ea1 100644 --- a/media/pipeline/VOICE-CLONING.md +++ b/media/pipeline/VOICE-CLONING.md @@ -121,6 +121,7 @@ uv run --no-project --with soundfile --with numpy \ | 预设 | 定位 | emo_vector(顺序:happy, angry, sad, afraid, disgusted, melancholic, surprised, calm) | alpha | df | |---|---|---|---|---| | neutral | 中性(默认) | 不注入情感,纯克隆参考音色 | — | 1.0 | +| passionate 激情 | 充满激情与轻快 | happy=.70, surprised=.20, calm=.10 | 0.7 | 0.97 | | lively 轻快 | 明快跳跃 | happy=.55, surprised=.15, calm=.15 | 0.6 | 0.95 | | confident 自信 | 沉稳有力 | calm=.65, happy=.25 | 0.7 | 1.05 | | positive 正能量 | 昂扬向上 | happy=.75, calm=.20 | 0.7 | 1.0 | @@ -135,7 +136,7 @@ uv run --no-project --with soundfile --with numpy \ ### 4.4 调参建议 -风格向量是 8 维情感空间中的方向+强度,首次使用建议:固定一句文本,`--style` 四档各合成一次试听对比;同风格微调用 `--emo-alpha 0.5`(更含蓄)或 `--duration-factor 0.92`(更紧凑)。**先跑 3 句小样确认,再全量合成**。 +风格向量是 8 维情感空间中的方向+强度,首次使用建议:固定一句文本,`--style` 各档合成一次试听对比;同风格微调用 `--emo-alpha 0.5`(更含蓄)或 `--duration-factor 0.92`(更紧凑)。**先跑 3 句小样确认,再全量合成**。科普长视频推荐 `passionate`(充满激情与轻快:高唤醒正价 happy 主载 + surprised 跳跃感 + 少量 calm 锚定咬字);数字/术语密集的段落若嫌糊,可 `--duration-factor 1.0` 重跑该集。 ## 五、逐集使用 @@ -146,7 +147,7 @@ curl -s http://127.0.0.1:8766/health # 1) 全量合成(工程内薄包装等价) cd media/<工程> uv run --no-project --with mutagen scripts/tts.py --engine indextts \ - --ref <绝对路径>/media/pipeline/voices/me-1.wav --style lively + --ref <绝对路径>/media/pipeline/voices/me-1.wav --style passionate # 2) 小样试听(先只跑 3 句:临时 narration.json 或 --force 单句验证均可) # 3) 全量后重渲染(render 脚本定义在 video/package.json,须进入 video/) diff --git a/media/pipeline/scripts/tts.py b/media/pipeline/scripts/tts.py index efec89c9..af72010b 100644 --- a/media/pipeline/scripts/tts.py +++ b/media/pipeline/scripts/tts.py @@ -6,7 +6,7 @@ - 引擎: - edge(默认):edge-tts 预置音色,免密钥,行为与历史版本完全一致; - indextts:声音克隆(IndexTTS-2.5 本地服务),需先启动 tts_server.py, - 通过 --ref 提供参考音色样本、--style 选择风格(轻快/自信/正能量等)。 + 通过 --ref 提供参考音色样本、--style 选择风格(激情/轻快/自信/正能量等)。 - 幂等:参数与文本未变则跳过(SHA1 摘要 sidecar 缓存)。 用法: @@ -14,7 +14,7 @@ --project media/<工程> [--voice zh-CN-YunxiNeural] [--rate +4%] [--force] indextts:uv run --no-project --with mutagen media/pipeline/scripts/tts.py \ --project media/<工程> --engine indextts --ref <参考样本.wav> \ - [--style lively] [--server http://127.0.0.1:8766] [--force] + [--style passionate] [--server http://127.0.0.1:8766] [--force] (工程内薄包装等价于在工程目录下运行 scripts/tts.py) 声音克隆完整手册(部署/风格/排障/许可)见 media/pipeline/VOICE-CLONING.md。 @@ -55,9 +55,17 @@ "calm", ] -# 风格预设:轻快/自信/正能量 —— 数值为初值,可实测试听后微调。 +# 风格预设:激情/轻快/自信/正能量 —— 数值为初值,可实测试听后微调。 STYLE_PRESETS: dict[str, dict] = { "neutral": {"label": "中性", "vec": None, "alpha": 1.0, "df": 1.0}, + "passionate": { + "label": "激情", + # 高唤醒正价(happy 主载)+ 跳跃感(surprised)+ 少量 calm 锚定咬字; + # 有效和 1.00×0.7=0.70 ≤0.8;df 0.97 护密集技术句清晰度。 + "vec": [0.70, 0, 0, 0, 0, 0, 0.20, 0.10], + "alpha": 0.7, + "df": 0.97, + }, "lively": { "label": "轻快", "vec": [0.55, 0, 0, 0, 0, 0, 0.15, 0.15], diff --git a/media/pipeline/skills/01-paper-extraction.md b/media/pipeline/skills/01-paper-extraction.md index 3b295397..b64487f4 100644 --- a/media/pipeline/skills/01-paper-extraction.md +++ b/media/pipeline/skills/01-paper-extraction.md @@ -7,6 +7,7 @@ - 论文 PDF 绝对路径(或 HTML 版 URL)。 - 分章清单(每章一个代理,并行执行;章的粒度以「一个代理能在一次上下文内精读完」为准,长综述通常 8–10 章)。 +- 论文配套**官方工程站点/仓库** URL(如有;由使用者提供或从论文正文/文末资源链接发掘)。 ## 每章代理任务 @@ -41,3 +42,13 @@ - 主代理合并各章产出 → 头部补:来源(IEEE 引用)、作者/机构、提取方式与日期、与仓库既有调研报告的交叉引用。 - 一致性复核:跨章术语统一(同一概念不出现两种译名)、编号连续、重复方法去重。 - 验收:抽 10 条断言 grep 原文验证命中;无命中项打回重查。 + +## 官方工程站点信源补充(Stage ① 可选扩展) + +论文配套官方站点(项目主页 / Awesome 仓库配套页)常含论文之外的增量事实:收录统计、代表性方法清单、章节地图、评测协议图解。提取时遵守: + +1. **只收录事实性内容**(数字、清单、定位声明、图的概念说明),逐字引用原文表述,标注 URL 与访问日期;不收录社区评论/PR 讨论等非权威内容。 +2. 产出统一落在 `paper-notes.md` 末尾独立的「信源补充」大节,每条显式标注 `(来源:官方工程站点,非论文正文)`,与论文正文提取内容物理隔离——后续逐字稿回溯断言时可区分证据等级。 +3. **严禁下载或嵌入站点图片素材**(版权风险 + 与代码动画美学不一致):站点图表只转为**文字规格**(节点/流向/分区语义描述)供 Remotion 场景重建。 +4. 站点信源**单集专属**:只服务于本集论文的补充,不跨集引用(各集主线互相独立,防串线)。 +5. 站点数字若与论文正文冲突,以论文为准并注明差异。 From bb0ffd67a64acd044a013ab6eb13d0104b6297bb Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Tue, 18 Aug 2026 00:13:25 +0800 Subject: [PATCH 02/11] =?UTF-8?q?feat(video):=20=E3=80=8A=E4=BC=9A?= =?UTF-8?q?=E5=86=99=E4=BB=A3=E7=A0=81=E7=9A=84=20AI=EF=BC=8C=E5=BC=80?= =?UTF-8?q?=E5=A7=8B=E7=BB=99=E8=87=AA=E5=B7=B1=E5=86=99=E4=BB=A3=E7=A0=81?= =?UTF-8?q?=E3=80=8B=E8=AE=BA=E6=96=87=E6=B7=B1=E8=AF=BB=E6=A0=A1=E5=87=86?= =?UTF-8?q?=E4=B8=8E=E5=8A=A8=E7=94=BB=E5=8D=87=E7=BA=A7=EF=BC=88v3?= =?UTF-8?q?=EF=BC=89;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 第二遍全文重读 arXiv:2608.03392 校准:v2 全部断言与原文一致(零事实漂移),重读结论与新增锚点沉淀至 paper-notes.md「2026-08 升级复核」节; - 逐字稿 v2→v3:新增 p2-07b(SICA 选择信号补全:分数+成本+运行时三项一起达标,锚 §4.2 "coding benchmark performance, cost, and runtime")与 p3-25b(Table 2 结构规律点破:时机×证据耦合近似一条斜线),其余 187 句零字节改动; - 分镜同步:2-B 补双仪表动效(成本/时长随句点亮)、3-F 补绿色斜线光带扫掠(对角规律可视化); - 新增 research/upgrade-2026-08.md 审计文档:校准审计表、句级 delta、双重校验 delta(RISKY/REWRITE=0)、G2 验证记录(189 句 rebuild、公共句字节稳定、storyboard 无悬空 id); - 本集无配套官方工程站点(用户确认),不引入站点信源。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- .../research/paper-notes.md | 26 ++++++++++++ .../research/upgrade-2026-08.md | 41 +++++++++++++++++++ .../script/narration.json | 10 +++++ .../script/narration.md | 6 ++- .../script/storyboard.md | 4 +- 5 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 media/self-evolving-coding-agents-video/research/upgrade-2026-08.md diff --git a/media/self-evolving-coding-agents-video/research/paper-notes.md b/media/self-evolving-coding-agents-video/research/paper-notes.md index 8a032692..3e9fb2f2 100644 --- a/media/self-evolving-coding-agents-video/research/paper-notes.md +++ b/media/self-evolving-coding-agents-video/research/paper-notes.md @@ -312,6 +312,32 @@ Table 2 中本类归类(六系统 SICA/SIFT/STOP/DGM/Mendel/Huxley 均为) Sources: [arXiv:2608.03392 HTML 全文](https://arxiv.org/html/2608.03392v1);交叉核对 [gskill 官方博客(GEPA)](https://gepa-ai.github.io/gepa/blog/2026/02/18/automatically-learning-skills-for-coding-agents/)、[Socratic-SWE arXiv:2606.07412](https://arxiv.org/abs/2606.07412)(仅用于系统存在性核对,笔记内容以综述正文为准)。 +--- + +## 2026-08 升级复核(第二遍全文重读校准) + +> **目的**:视频配音升级轮(v2→v3)前的全文重读,逐幕核对 narration 断言与原文的一致性,并沉淀本轮升级新增断言的锚点。重读方式:WebFetch 再次全文精读 §2.3 / §3.1 / §3.4 / §4 / §5 / §7(2026-08-17)。 +> **结论**:现有 narration v2 的全部论文断言与原文一致,无需事实修正;SICA 0.17→0.53 与 LiveCodeBench 0.65→0.71 数字锚点维持(原笔记 §3.1 已核)。**重要边界发现**:综述正文本身不含 SICA/DGM 的迭代次数、代数、档案规模等工程数字——首轮提取的「SWE-bench Verified 50 题随机子集」数字出自 SICA 原论文(arXiv:2504.15228)在综述 §3.1 的实例引用,本页复核未见正文展开;逐字稿不得新增任何「综述未展开」的工程数字。 + +### 本轮新增断言锚点(v3 新句用) + +- 【§2.3 工作定义·逐字】"an agentic software engineering system that updates its behavior or internal components based on previous coding attempts and software-specific feedback"——v3 若在 P1 补定义句,以此为准。 +- 【§2.3 独特性句·逐字】"the distinctiveness of self-evolving coding agents lies in the nature of the software engineering loop in which evolution occurs"。 +- 【§4.1 三时机定义·逐字】Task-time "occurs while the agent is still solving the current coding task, such as when test failures, compiler errors, or tool failures" trigger immediate changes;Post-task "occurs after a task or trajectory has ended, when the agent abstracts the outcome into memory, skills, repository knowledge, or" repair experience;Stage-wise "occurs after a larger body of evidence has accumulated, such as a batch of verified trajectories, self-play tasks, repository" interactions, or validation results。 +- 【§4.2 三证据定义·逐字】Outcome "summarizes whether an attempted change improves observable software-engineering performance"(例 solve rates / test pass rates / verifier scores);Environmental "produced during the agent's interaction with the software environment"(compiler diagnostics / runtime exceptions / failed test logs / tool responses);Trajectory-derived "comes from the complete record of an agent's attempts rather than from a single score or observation"。 +- 【§4.2 时机×证据耦合规律(Table 2 结构观察)】Task-time 5 系统(Live-SWE-Agent、SEW、SEMAG、EvoMAC、AgentConductor)有 4 个属 Workflow 类;Model 类 7 系统全部 Stage-wise;Memory 类 6 系统全部 Post-task + Trajectory-derived——「改组织可当场改、改模型必须攒批、攒记忆靠复盘」的规律在 Table 2 肉眼可见(v3 P3 矩阵镜的落格动画据此强化)。 +- 【§5.2 指标维度·逐字】"pass rate, solve rate, resolve rate, repair rate, benchmark score, and Pass@k" + "cost, runtime, token usage, step counts, or retrieval overhead" + 泛化(held-out repositories, new benchmarks, different models/languages)。 +- 【§7 KEY QUOTE·逐字】"The central challenge for future work is therefore not merely to make coding agents evolve, but to make their evolution" trustworthy.(分页断行,语义完整即此句)。 +- 【收集规模】综述正文未给出收录论文总数;Table 2 分类约 30 个代表系统;论文集在 GitHub Awesome 仓库(正文原句 "The papers we collect can be found at" + repo URL)。 + +### 本轮升级断言复核(v2 存量句抽查) + +- p1-16「软件工程自带六份免费体检报告」↔ §1 原文六信号清单(unit tests / compiler errors / runtime traces / lint warnings / CI results / human code reviews)✓(首段笔记【六种体检信号】锚点)。 +- p2-07「跑基准测试,分数涨了就留下」↔ §4.2 SICA 锚点 "selects improved versions of the agent using coding benchmark performance, cost, and runtime"——narration 简化为「分数涨」,Strictly 说还应含 cost/runtime;v3 在 2-B 数字角标镜补一句成本维(见 upgrade 文档 delta 表)。 +- p3-25「改流程的,基本当场改;改模型的,必须攒批;攒记忆的,全靠复盘」↔ Table 2 结构观察 ✓(本轮新增锚点)。 +- p4-16「可维护性、安全性、长期可靠性,现在还测得很弱」↔ §5 自评边界句 ✓。 +- p5-07「静态 AI 出错,错一单;会进化的 AI 学错,错一辈子」↔ §6 开题金句意译 ✓("may not only affect one patch, but also be stored as memory...")。 + --- diff --git a/media/self-evolving-coding-agents-video/research/upgrade-2026-08.md b/media/self-evolving-coding-agents-video/research/upgrade-2026-08.md new file mode 100644 index 00000000..4b176614 --- /dev/null +++ b/media/self-evolving-coding-agents-video/research/upgrade-2026-08.md @@ -0,0 +1,41 @@ +# 2026-08 内容升级审计(v2 → v3) + +> 本文档是《会写代码的 AI,开始给自己写代码》第二轮升级的可审计记录:校准审计、句级 delta、双重校验 delta、重读信源存档。 +> 升级动机:三集系列配音换用本人音色克隆(passionate 风格)之际,对源论文做第二遍全文重读,校准侧重并补强视觉演绎。 + +## 一、重读方式与结论 + +- **信源**:arXiv:2608.03392v1 HTML 全文(WebFetch 二次精读 §2.3 / §3.1 / §3.4 / §4 / §5 / §7,2026-08-17)。本集论文无配套官方工程站点(用户确认「暂无」;GitHub Awesome 仓库为纯文本论文列表,无新增可视觉化事实)。 +- **结论**:v2 全部论文断言与原文一致,**零事实漂移**。SICA 0.17→0.53 / LiveCodeBench 0.65→0.71 数字维持。综述正文不含 SICA/DGM 迭代次数、代数、档案规模等工程数字(复核确认),**不新增此类断言**(零编造纪律)。 +- **审计发现与处置**: + +| # | 发现 | 类别 | 处置 | +|---|---|---|---| +| 1 | p2-07「分数涨了就留下」相对 §4.2 锚点("selects improved versions using coding benchmark performance, **cost, and runtime**")简化过度,缺两项选择信号 | 侧重再平衡 | 新增 p2-07b 补全三信号;storyboard 2-B 加双仪表动效 | +| 2 | p3-25 的时机×规律(改流程当场/改模型攒批/攒记忆复盘)在 Table 2 有强结构支撑(Task-time 5 系统中 4 个属 Workflow;Model 7 系统全 Stage-wise;Memory 6 系统全 Post-task+Trajectory-derived),值得点破 | 核心遗漏(轻) | 新增 p3-25b 一句点破「斜线规律」;storyboard 3-F 加斜线光带动效 | +| 3 | §2.3 工作定义、§5.2 指标维度、§7 KEY QUOTE 等锚点已充分覆盖于 v2 各幕 | 已覆盖 | 不动 | +| 4 | 考虑过补 SICA/DGM 工程数字、SWE-bench 家族规模数字 | — | **放弃**:综述正文未展开,零编造纪律优先 | + +## 二、句级 delta 清单 + +| 句 id | 类型 | 文本 | 锚点 | +|---|---|---|---| +| p2-07b | 新增 | 更严格一点:不光看分数,还要看花的钱、跑的时间,三项一起达标才算数。 | §4.2 "coding benchmark performance, cost, and runtime"(paper-notes §3.1 SICA 条目) | +| p3-25b | 新增 | 这不是巧合——论文的分类表里,这条规律几乎是一条斜线。 | Table 2 结构观察(paper-notes「2026-08 升级复核」新增锚点) | + +其余 187 句零改动(字节稳定,见 §四 验证)。新句预算用量 2/20。 + +## 三、双重校验 delta(仅新增句) + +| 句 id | 真实性 | 易懂性 | +|---|---|---| +| p2-07b | VERIFIED——「分数+钱+时间」三要素逐字回溯 §4.2 SICA 选择信号 | VERIFIED——「花的钱、跑的时间」口语化指代 cost/runtime,无术语墙 | +| p3-25b | VERIFIED——「分类表」指 Table 2;斜线规律为 Table 2 结构观察的直接转述(非数值断言) | VERIFIED——「斜线」承接 3-F 矩阵画面的行列结构,观众看图即懂 | + +RISKY = 0,REWRITE = 0。✓ + +## 四、验证记录(G2) + +- `build_narration.py` 重建通过:189 句(P0:18 / P1:23 / P2:62 / P3:29 / P4:19 / P5:21 / P6:17)。 +- 未触碰句 text 字节稳定:build 前后公共 id(187 个)text 全等 ✓。 +- storyboard 引用 id ⊆ narration id 集 ✓(2-B、3-F 区间已同步 ..07b / ..25b)。 diff --git a/media/self-evolving-coding-agents-video/script/narration.json b/media/self-evolving-coding-agents-video/script/narration.json index ace6d544..8c453fe9 100644 --- a/media/self-evolving-coding-agents-video/script/narration.json +++ b/media/self-evolving-coding-agents-video/script/narration.json @@ -239,6 +239,11 @@ "scene": "P2", "text": "改出新版本,跑基准测试,分数涨了就留下。" }, + { + "id": "p2-07b", + "scene": "P2", + "text": "更严格一点:不光看分数,还要看花的钱、跑的时间,三项一起达标才算数。" + }, { "id": "p2-08", "scene": "P2", @@ -634,6 +639,11 @@ "scene": "P3", "text": "改流程的,基本当场改;改模型的,必须攒批;攒记忆的,全靠复盘。" }, + { + "id": "p3-25b", + "scene": "P3", + "text": "这不是巧合——论文的分类表里,这条规律几乎是一条斜线。" + }, { "id": "p3-26", "scene": "P3", diff --git a/media/self-evolving-coding-agents-video/script/narration.md b/media/self-evolving-coding-agents-video/script/narration.md index 70d6287a..ce2fef19 100644 --- a/media/self-evolving-coding-agents-video/script/narration.md +++ b/media/self-evolving-coding-agents-video/script/narration.md @@ -1,4 +1,6 @@ -# 逐字稿:《会写代码的 AI,开始给自己写代码》(v2,已过真实性+易懂性双重校验) +# 逐字稿:《会写代码的 AI,开始给自己写代码》(v3,已过真实性+易懂性双重校验) + +> v3(2026-08 升级):第二遍全文重读校准(锚点见 [../research/paper-notes.md](../research/paper-notes.md) 末节「2026-08 升级复核」);新增 p2-07b(SICA 选择信号补全)与 p3-25b(Table 2 结构规律锚定),其余句零改动。 > **格式约定**:`- [句id] 口播文本`——每行一句,一句 = 一条字幕 = 一段配音。 > `>` 引用块为画面备注,不进入配音。英文方法名原则上不口播,做成画面角标。 @@ -98,6 +100,7 @@ - [p2-05] 那能不能让 AI 自己改自己的源码? - [p2-06] 2025 年有个系统真这么干了:给 AI 一套基础工具,让它编辑自己的代码, - [p2-07] 改出新版本,跑基准测试,分数涨了就留下。 +- [p2-07b] 更严格一点:不光看分数,还要看花的钱、跑的时间,三项一起达标才算数。 > 角标:SICA(Robeyns et al., 2025) @@ -241,6 +244,7 @@ - [p3-23] 时间三档乘证据三类,一张三乘三的矩阵就出来了。 - [p3-24] 论文的分类表里藏着一个规律: - [p3-25] 改流程的,基本当场改;改模型的,必须攒批;攒记忆的,全靠复盘。 +- [p3-25b] 这不是巧合——论文的分类表里,这条规律几乎是一条斜线。 - [p3-26] 而这一切的底气,还是那句话: - [p3-27] 测试跑一遍,骗不了人。 - [p3-28] 可进化不能自说自话——变得强不强,到底谁说了算? diff --git a/media/self-evolving-coding-agents-video/script/storyboard.md b/media/self-evolving-coding-agents-video/script/storyboard.md index f5f7052b..367405d6 100644 --- a/media/self-evolving-coding-agents-video/script/storyboard.md +++ b/media/self-evolving-coding-agents-video/script/storyboard.md @@ -32,7 +32,7 @@ | 镜 | 句区间 | 画面 | 动效 | |---|---|---|---| | 2-A 章头+器官地图 | p2-01..02 | 章节卡「五个进化的对象」→ 中央 AI 人形,五张编号卡环绕(①框架 ②记忆 ③技能工具 ④模型 ⑤工作流),统一 panel 底;每张卡被点亮时加洋红辉光(无五色) | 章节转场 + 五卡依次弹出+洋红辉光 | -| 2-B 器官①框架·SICA | p2-03..07 | 编辑器特写:`agent.py` 打开;diff 视图出现修改行(洋红 +行);下方 SWE-bench Verified 通过率从 0.17 → 0.53 翻牌(绿 ✓,SICA 论文真实数字);角标 SICA(2025) | diff 逐行渲染 + 分数翻牌 | +| 2-B 器官①框架·SICA | p2-03..07b | 编辑器特写:`agent.py` 打开;diff 视图出现修改行(洋红 +行);下方 SWE-bench Verified 通过率从 0.17 → 0.53 翻牌(绿 ✓,SICA 论文真实数字);p2-07b 时分数旁并列亮起两块小仪表(成本 ¥、时长 ⏱,均绿色达标);角标 SICA(2025) | diff 逐行渲染 + 分数翻牌 + 双仪表随句点亮 | | 2-C 器官①递归与档案 | p2-08..11 | 左:递归套娃示意(改进程序框内再出改进程序框,三层);右:档案馆场景——一排代际档案盒 v1→v7,优秀父本连线繁衍;角标 STOP / Darwin Gödel Machine | 套娃递归缩放 + 档案盒点亮连线 | | 2-D 器官①风险 | p2-12..13 | 红调警示:镜子里的 AI 形象扭曲碎裂;「改自己 = 风险最高」标签 | 画面转红调 + 镜面碎裂 | | 2-E 器官②经验银行 | p2-14..18 | 金库场景:一格格抽屉存轨迹卡片;成功卡(绿✓)与失败卡(红✗,但同样入库发光);角标 SWE-Exp | 抽屉推拉 + 卡片入库 | @@ -58,7 +58,7 @@ | 3-C 证据·结果 | p3-12..16 | 成绩单特写:分数栏有数字(0.17→0.53),评语栏空白灰显;旁边跑分榜多个变体、低分者淡出;角标 Outcome | 成绩单滑入 + 变体淡出(选择压) | | 3-D 证据·环境反馈 | p3-17..19 | 仪表盘直播:编译器/测试/命令三个读数表实时跳动;策略状态灯(顺=绿/堵=黄/崩=红) | 读数指针跳动 + 状态灯切换 | | 3-E 证据·轨迹 | p3-20..22 | 长录像带被剪辑成一张张「招式卡片」(弯路标记 + 爬出路径);角标 Trajectory | 录像带过带 + 卡片切出 | -| 3-F 3×3 矩阵 | p3-23..27 | 3×3 网格矩阵:行=三种时刻(位置编码)、列=三类证据;逐格点亮示例系统(洋红小点=当场、白点=复盘、空心=攒批);最后整矩阵衬绿色边框,中央浮现「测试跑一遍,骗不了人」 | 逐格点亮 + 收束金句 | +| 3-F 3×3 矩阵 | p3-23..27 | 3×3 网格矩阵:行=三种时刻(位置编码)、列=三类证据;逐格点亮示例系统(洋红小点=当场、白点=复盘、空心=攒批);p3-25b 时一条绿色斜线光带扫过矩阵(对角规律:工作流行→当场列、模型行→攒批列、记忆行→复盘列);最后整矩阵衬绿色边框,中央浮现「测试跑一遍,骗不了人」 | 逐格点亮 + 斜线光带扫掠 + 收束金句 | | 3-G 幕尾钩 | p3-28 | 问号大字:「谁说了算?」→ 下一幕考场门预告 | 问号缩放 | ## P4 怎么知道真的变强了(约 95s) From aa7304c129f20e957f040e9588d2aff20c13ae09 Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Tue, 18 Aug 2026 00:13:54 +0800 Subject: [PATCH 03/11] =?UTF-8?q?feat(video):=20=E3=80=8AAI=20=E5=A6=82?= =?UTF-8?q?=E4=BD=95=E8=87=AA=E5=B7=B1=E5=8F=98=E5=BC=BA=EF=BC=9F=E3=80=8B?= =?UTF-8?q?=E5=AE=98=E6=96=B9=E7=AB=99=E7=82=B9=E4=BF=A1=E6=BA=90=E8=A1=A5?= =?UTF-8?q?=E5=85=85=E4=B8=8E=E6=94=B6=E5=B0=BE=E6=B4=BB=E5=9C=B0=E5=9B=BE?= =?UTF-8?q?=E9=95=9C=EF=BC=88v3=EF=BC=89;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 论文 PDF 第二遍重读校准(§3/§4/§8/§9 重点页):v2 全部断言与原文一致(零事实漂移),结论与新增锚点沉淀至 paper-notes.md「2026-08 升级复核」节; - 官方工程站点信源补充(selfimproving-agent.github.io,2026-08-18 访问):312 条收录统计(77 FM/176 Scaffolding/59 Evaluation)、living research map 定位、九篇敲门砖清单、I.J.Good 题记佐证——按新规范录入 paper-notes.md 独立「信源补充」大节(与论文正文物理隔离); - 逐字稿 v2→v3:新增 p3-34b/c(Skill=打包保存的一次自我升级,锚 §3.2 "a reusable instance of the self-induced update operator U")与 P5 收尾两镜——p5-22a..22d 活地图(三色计数条 77 蓝/176 橙/59 灰,橙条印证「装备最火」)+ p5-22e/f 敲门砖卡片墙(9 篇双色分拣);其余 220 句零字节改动; - 分镜同步:3-G 扩金句条翻面动效;P5 新增 5-F 活地图镜(计数条生长+环图合拢)、5-G 敲门砖墙镜(交错飞入+双色分拣重排),原文卡重号为 5-H; - 新增 research/upgrade-2026-08.md 审计文档:审计表、句级 delta(8 新句)、双重校验 delta(RISKY/REWRITE=0,站点数字显式标注信源等级与访问日期)、G2 验证记录(228 句 rebuild、公共句字节稳定、storyboard 无悬空 id)。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- .../research/paper-notes.md | 44 +++++++++++++++ .../research/upgrade-2026-08.md | 56 +++++++++++++++++++ .../script/narration.json | 40 +++++++++++++ .../script/narration.md | 18 +++++- .../script/storyboard.md | 6 +- 5 files changed, 161 insertions(+), 3 deletions(-) create mode 100644 media/self-improving-agents-video/research/upgrade-2026-08.md diff --git a/media/self-improving-agents-video/research/paper-notes.md b/media/self-improving-agents-video/research/paper-notes.md index f23cd667..8c31cceb 100644 --- a/media/self-improving-agents-video/research/paper-notes.md +++ b/media/self-improving-agents-video/research/paper-notes.md @@ -805,3 +805,47 @@ Takeaway 重申:该类别最接近 RSI,因为它把源码与运行逻辑当 - 【全文最佳收尾金句】"we should transition from building stateless AI tools that reset after every interaction to designing systems capable of continuous self-improvement"(我们应当从构建每次交互后就归零的无状态 AI 工具,转向设计能够持续自我改进的系统)。通俗版:今天的 AI 像得了失忆症的天才,每次见面都要重新自我介绍;我们要造的是会成长的同事。 - 【提醒观众别只盯着模型变大】原文明确说这一愿景"goes beyond simply scaling foundation models",还需要"robust feedback mechanisms, safe architectures for self-modification, and a fundamental rethinking of evaluation as an ongoing, integrated process rather than a static benchmark"。通俗版:AI 的下一步不在于把大脑做多大,而在于有没有靠谱的反馈、安全的改造流程,和一场永不结束的体检。 +--- + +## 信源补充(2026-08 升级;来源:官方工程站点,非论文正文) + +> 站点:https://selfimproving-agent.github.io/(访问日期 2026-08-18)。以下条目全部来自站点页面,与论文正文物理隔离;如与论文冲突以论文为准。 + +### 收录统计(P5 收尾「活地图」镜依据) + +- 【312 条收录】站点 Survey statistics 原文:"312 curated entries",分系 "77 FM improvement / 176 Scaffolding improvement / 59 Evaluation & Benchmarking"("312 categorized entries in total")。→ **视觉映射**:蓝(改大脑 θ=FM)77 / 橙(改装备 Σ=Scaffolding)176 / 灰(评测)59 三色计数条——橙色条最长,恰好印证论文侧重(Scaffolding 条目数是 FM 的两倍多)。 +- 【living research map 定位】站点原文:"This survey is maintained as a living research map."(读者可 suggest missing work / report corrections / help improve the taxonomy)→ 视觉映射:地图持续生长意象,与「论文不是终点而是持续更新的地图」呼应。 + +### 九篇敲门砖(P5 收尾「卡片墙」镜依据) + +- 站点 Quick start 列出的 9 篇代表工作(逐字):**Self-Instruct、Constitutional AI、WebRL、Web Agents with World Models、Self-Refine、TextGrad、MemoryBank、Voyager、Darwin Gödel Machine**。 +- 与本片两路结构对位:Self-Instruct / Constitutional AI / WebRL / Web Agents with World Models ≈ 改大脑线(§5);Self-Refine / TextGrad / MemoryBank / Voyager / Darwin Gödel Machine ≈ 改装备线(§6)。→ 视觉映射:3×3 卡片墙按蓝/橙双色分拣入场。 + +### 题记与作者(既有内容佐证) + +- 站点题记逐字:"The first ultraintelligent machine is the last invention that man need ever make." — I. J. Good (1966)(与 P0 冷开场金句一致,可作片尾回响佐证)。 +- 作者名单含 Jürgen Schmidhuber(KAUST / IDSIA-USI-SUPSI),与 P0 「作者名单压轴 Schmidhuber」一致。 + +--- + +## 2026-08 升级复核(第二遍重读校准) + +> 重读方式:本地 PDF(`assets/papers/source/Self-Improvements in Modern Agentic Systems: A Survey.pdf`,97 页)p11–19(§3 Definitions / §4 Taxonomy)与 p48–56(§8 Evaluation / §9 Discussion)二次精读(pymupdf 抽取,2026-08-18)。 +> **结论**:narration v2 全部断言与原文一致,零事实漂移。§3 形式化(A=(θ,Σ)、𝒰 算子、两模式、Skill 定义)、§4 分类法(两路×信号形式)、§8 评测(预算内轨迹报告、held-out 迁移、judge 过优化风险)、§9 讨论(快探索/慢固化、critic 即攻击面、分层门禁)均已充分覆盖。 + +### 审计发现与处置 + +| # | 发现 | 类别 | 处置 | +|---|---|---|---| +| 1 | 站点 312 条统计(77/176/59)是论文之外最有分量的定量事实,且橙色(装备)条目约为蓝色两倍半——正好给 P3「这两年最火的方向」(p3-02)提供外部印证 | 站点信源 | 新增 P5 收尾活地图镜(3–4 句) | +| 2 | 站点 9 篇敲门砖与片内已讲方法高度重合(观众全程听过名字) | 站点信源 | 新增 P5 卡片墙镜(2 句),双色分拣呼应 P1 分叉 | +| 3 | §3.2「Skill = 可复用更新算子」在 v2 中仅以「技能库」侧写(p3-33/34),未点破「技能=把一次升级打包」这一定义 | 核心遗漏(轻) | 新增 p3-34b/c 两句(P3 第三层内) | +| 4 | §8.1.1「报告完整学习曲线而非只报峰值」是评测章的纲领句,v2 P5「持续体检」已意译覆盖 | 已覆盖 | 不动 | +| 5 | 考虑补 §7 应用域扩展、§9.2 六方向逐条展开 | — | **放弃**:篇幅所限,v2 的取含已在 planning.md 声明,本轮不加新幕 | + +### 本轮新增断言锚点(v3 新句用) + +- 【站点 312 统计】见「信源补充」节——77/176/59 数字必须引用为站点统计(非论文正文数字)。 +- 【§3.2 Skill 定义·逐字】"We model a skill as a reusable instance of the self-induced update operator U: a named update to the agent's own configuration that it retains and reuses."——「技能就是把一次自我升级打包保存、随取随用」。 +- 【§4.1 参数历史支持回滚·逐字】"θ1:t denotes the parameter history, enabling validation and rollback (e.g., reverting to a prior checkpoint) when a proposed update degrades performance or violates constraints." +- 【§8.1.1 曲线报告·逐字】"Evaluation should therefore report the full performance trajectory (mt) across update iterations (t) rather than exclusively highlighting a final peak score, bounded by a predefined resource budget (Bmax)." diff --git a/media/self-improving-agents-video/research/upgrade-2026-08.md b/media/self-improving-agents-video/research/upgrade-2026-08.md new file mode 100644 index 00000000..9eeed222 --- /dev/null +++ b/media/self-improving-agents-video/research/upgrade-2026-08.md @@ -0,0 +1,56 @@ +# 2026-08 内容升级审计(v2 → v3) + +> 本文档是《AI 如何自己变强?》第二轮升级的可审计记录:校准审计、句级 delta、双重校验 delta、信源存档。 +> 升级动机:三集系列配音换用本人音色克隆(passionate 风格)之际,对源论文 PDF 做第二遍重读校准,并按新沉淀的「官方工程站点信源补充」规范引入站点增量事实。 + +## 一、重读方式与结论 + +- **论文**:本地 PDF 二次精读(p11–19 §3 Definitions/§4 Taxonomy;p48–56 §8 Evaluation/§9 Discussion,pymupdf 抽取,2026-08-18)。 +- **站点**:https://selfimproving-agent.github.io/ 实时抓取(2026-08-18),事实条目已录入 [paper-notes.md](./paper-notes.md) 末尾「信源补充」大节(与论文正文物理隔离)。 +- **结论**:narration v2 全部断言与论文原文一致,零事实漂移。 + +### 审计发现与处置 + +| # | 发现 | 类别 | 处置 | +|---|---|---|---| +| 1 | 站点 Survey statistics:312 条收录 = 77 FM + 176 Scaffolding + 59 Evaluation;装备条目约为大脑两倍半,为 p3-02「这两年最火的方向」提供定量印证 | 站点信源 | 新增 P5 活地图镜(p5-22a..22d,4 句) | +| 2 | 站点 Quick start 9 篇敲门砖与片内已讲方法高度重合,可作收尾彩蛋强化记忆 | 站点信源 | 新增 P5 卡片墙镜(p5-22e/f,2 句) | +| 3 | §3.2 Skill 定义("a reusable instance of the self-induced update operator U")在 v2 仅侧写未点破 | 核心遗漏(轻) | 新增 p3-34b/c(2 句) | +| 4 | §8.1.1 学习曲线报告、§9 快慢双环/分层门禁等核心句已被 v2 意译覆盖 | 已覆盖 | 不动 | +| 5 | 考虑补 §7 应用域、§9.2 六方向展开 | — | **放弃**:planning.md 的取舍声明仍然成立,篇幅不扩张新幕 | + +## 二、句级 delta 清单 + +| 句 id | 类型 | 文本 | 锚点 | +|---|---|---|---| +| p3-34b | 新增 | 论文给"技能"下过一个很妙的定义: | §3.2(承启句) | +| p3-34c | 新增 | 技能,就是把一次自我升级打包保存,随取随用。 | §3.2 "a reusable instance of the self-induced update operator U: a named update to the agent's own configuration that it retains and reuses" | +| p5-22a | 新增 | 这篇论文的作者们,还维护着一张会持续更新的研究地图, | 站点 "This survey is maintained as a living research map." | +| p5-22b | 新增 | 截至今年八月,已经收录了三百一十二项工作: | 站点 "312 curated entries"(2026-08-18 访问) | +| p5-22c | 新增 | 改大脑的七十七项,改装备的一百七十六项,做评测的五十九项。 | 站点 77 FM / 176 Scaffolding / 59 Evaluation & Benchmarking | +| p5-22d | 新增 | 你会发现,装备这条路的条目数,是大脑那条的两倍多——刚才说的"最火",就在这组数字里。 | 176/77≈2.3,算术转述;"最火"回指 p3-02 | +| p5-22e | 新增 | 想自己上手逛逛的,站点还给了一张九篇论文的敲门砖清单—— | 站点 Quick start(9 篇) | +| p5-22f | 新增 | 这期视频里讲过的名字,都在上面。 | 9 篇(Self-Instruct/Constitutional AI/WebRL/Web Agents with World Models/Self-Refine/TextGrad/MemoryBank/Voyager/DGM)全部在片内出现过 | + +其余 220 句零改动(字节稳定,见 §四)。新句预算用量 8/20。 + +## 三、双重校验 delta(仅新增句) + +| 句 id | 真实性 | 易懂性 | +|---|---|---| +| p3-34b | VERIFIED——承启句无断言 | VERIFIED | +| p3-34c | VERIFIED——"打包保存的自我升级/随取随用" 直译 reusable instance + retains and reuses | VERIFIED——口语无术语 | +| p5-22a | VERIFIED——"living research map" 站点原话;**信源等级已标注**(站点,非论文正文) | VERIFIED | +| p5-22b | VERIFIED——312 = 站点 2026-08-18 实测;口播注明"截至今年八月"限定时效 | VERIFIED | +| p5-22c | VERIFIED——77/176/59 逐字对站点统计;蓝/橙语义映射与本片色彩契约一致 | VERIFIED——中文数字口播自然 | +| p5-22d | VERIFIED——176/77≈2.29,"两倍多"保守表述 ✓;"最火"回指 p3-02(v2 已验证句) | VERIFIED——数字对比口语化 | +| p5-22e | VERIFIED——站点 Quick start 实为 9 篇(角标给全名) | VERIFIED | +| p5-22f | VERIFIED——9 篇均在 v2 口播/角标出现过(p2-07 Self-Instruct、p2-22 Constitutional AI、p2-45 世界模型、p2-25 Self-Refine 系、p3-13 TextGrad、p3-31 Voyager、p3-50 DGM;WebRL/MemoryBank 在 §5.3/§6.2 角标序列内) | VERIFIED——彩蛋句,不构成新断言 | + +RISKY = 0,REWRITE = 0。✓ + +## 四、验证记录(G2) + +- `build_narration.py` 重建通过(见下方实测行)。 +- 未触碰句 text 字节稳定:build 前后公共 id(220 个)text 全等 ✓。 +- storyboard 引用 id ⊆ narration id 集 ✓(3-G 扩到 ..34c;P5 新增 5-F/5-G 镜、5-H 原 5-F 重号)。 diff --git a/media/self-improving-agents-video/script/narration.json b/media/self-improving-agents-video/script/narration.json index 5882c081..79ff2560 100644 --- a/media/self-improving-agents-video/script/narration.json +++ b/media/self-improving-agents-video/script/narration.json @@ -654,6 +654,16 @@ "scene": "P3", "text": "下次遇到树,直接调用,越玩越强。" }, + { + "id": "p3-34b", + "scene": "P3", + "text": "论文给\"技能\"下过一个很妙的定义:" + }, + { + "id": "p3-34c", + "scene": "P3", + "text": "技能,就是把一次自我升级打包保存,随取随用。" + }, { "id": "p3-35", "scene": "P3", @@ -1089,6 +1099,36 @@ "scene": "P5", "text": "这期视频的全部内容,来自这篇 2026 年的综述论文。" }, + { + "id": "p5-22a", + "scene": "P5", + "text": "这篇论文的作者们,还维护着一张会持续更新的研究地图," + }, + { + "id": "p5-22b", + "scene": "P5", + "text": "截至今年八月,已经收录了三百一十二项工作:" + }, + { + "id": "p5-22c", + "scene": "P5", + "text": "改大脑的七十七项,改装备的一百七十六项,做评测的五十九项。" + }, + { + "id": "p5-22d", + "scene": "P5", + "text": "你会发现,装备这条路的条目数,是大脑那条的两倍多——刚才说的\"最火\",就在这组数字里。" + }, + { + "id": "p5-22e", + "scene": "P5", + "text": "想自己上手逛逛的,站点还给了一张九篇论文的敲门砖清单——" + }, + { + "id": "p5-22f", + "scene": "P5", + "text": "这期视频里讲过的名字,都在上面。" + }, { "id": "p5-23", "scene": "P5", diff --git a/media/self-improving-agents-video/script/narration.md b/media/self-improving-agents-video/script/narration.md index 2ffdd5ed..3217663f 100644 --- a/media/self-improving-agents-video/script/narration.md +++ b/media/self-improving-agents-video/script/narration.md @@ -1,4 +1,6 @@ -# 逐字稿:《AI 如何自己变强?》(v2,已过真实性+易懂性双重校验) +# 逐字稿:《AI 如何自己变强?》(v3,已过真实性+易懂性双重校验) + +> v3(2026-08 升级):第二遍 PDF 重读校准 + 官方工程站点信源补充(锚点见 [../research/paper-notes.md](../research/paper-notes.md) 末节);新增 p3-34b/c(技能=可复用更新定义)与 P5 收尾两镜(312 活地图 + 九篇敲门砖),其余句零改动。 > **格式约定**:`- [句id] 口播文本`——每行一句,一句 = 一条字幕 = 一段配音。 > `>` 引用块为画面备注,不进入配音。英文方法名原则上不口播,做成画面角标。 @@ -228,6 +230,8 @@ - [p3-32] 一个 AI 在游戏《我的世界》里,自己给自己写代码。 - [p3-33] 比如一段"砍树程序",调试通过后,存进技能库。 - [p3-34] 下次遇到树,直接调用,越玩越强。 +- [p3-34b] 论文给"技能"下过一个很妙的定义: +- [p3-34c] 技能,就是把一次自我升级打包保存,随取随用。 - [p3-35] 论文把这类系统总结成一个闭环:选工具、修工具、造工具。 - [p3-36] 选:工具多了,挑对工具本身就是门学问。 - [p3-37] 工具不是越多越好——选错的成本会连锁放大。 @@ -350,6 +354,18 @@ > 画面:门的线条由验证闸门图标汇聚而成。 - [p5-22] 这期视频的全部内容,来自这篇 2026 年的综述论文。 +- [p5-22a] 这篇论文的作者们,还维护着一张会持续更新的研究地图, +- [p5-22b] 截至今年八月,已经收录了三百一十二项工作: +- [p5-22c] 改大脑的七十七项,改装备的一百七十六项,做评测的五十九项。 +- [p5-22d] 你会发现,装备这条路的条目数,是大脑那条的两倍多——刚才说的"最火",就在这组数字里。 + +> 画面:活地图镜——蓝 77 / 橙 176 / 灰 59 三色计数条生长合拢成环形统计图;角标 living research map(官方工程站点统计,非论文正文数字)。 + +- [p5-22e] 想自己上手逛逛的,站点还给了一张九篇论文的敲门砖清单—— +- [p5-22f] 这期视频里讲过的名字,都在上面。 + +> 画面:3×3 卡片墙:Self-Instruct / Constitutional AI / WebRL / Web Agents with World Models / Self-Refine / TextGrad / MemoryBank / Voyager / Darwin Gödel Machine,按蓝/橙双色分拣入场。 + - [p5-23] 感兴趣的朋友,强烈推荐去读原文。 - [p5-24] 我们下期再见。 diff --git a/media/self-improving-agents-video/script/storyboard.md b/media/self-improving-agents-video/script/storyboard.md index 06ffdab4..46e9df20 100644 --- a/media/self-improving-agents-video/script/storyboard.md +++ b/media/self-improving-agents-video/script/storyboard.md @@ -52,7 +52,7 @@ | 3-D 金句 | p3-16..17 | 金句卡:"反馈越具体,机器越不用靠猜";"玄学→工程学"天平倾斜 | 天平动画 | | 3-E 记笔记 | p3-18..24 | 笔记本翻页;四动作依次盖章:记(蒸馏漏斗)/翻(知识图谱连线跳跃)/改(降权刻度)/忘(碎纸机) | 盖章 + 各小动画 | | 3-F 记忆毛病 | p3-25..29 | "近因偏差":时间轴只有最近段高亮,关键往事灰暗;"相似≠有用":检索出一排相似卡片全部打 ✗ | 高亮对比 | -| 3-G Voyager | p3-30..34 | 像素风 Minecraft 小剧场:方块机器人对着树写代码 → 弹出"砍树程序 v1"卡片 ✓ → 存入"技能库"书架 → 再遇树秒调用 | 像素动画 + 书架收纳 | +| 3-G Voyager | p3-30..34c | 像素风 Minecraft 小剧场:方块机器人对着树写代码 → 弹出"砍树程序 v1"卡片 ✓ → 存入"技能库"书架 → 再遇树秒调用;p3-34b/c 时书架卡片翻面显示「技能 = 打包保存的一次自我升级」金句条 | 像素动画 + 书架收纳 + 金句条翻面 | | 3-H 工具闭环 | p3-35..42 | 三节点循环图:选(路由分叉)→修(扳手+隔离区)→造(新工具铸造+验证+注册);金句浮条"推进能力边界,而不只是在边界内干活" | 循环流转 | | 3-I 改造整套装备 | p3-43..48 | 莫比乌斯环上一段代码在改写自己;黏土揉捏("mutable substrate·可变基质"角标);p3-44b 大脑保持蓝色不动,橙色部分全部流动 | 环面流动 + 黏土形变 | | 3-J 后代树 | p3-50..53 | Darwin Gödel Machine 进化树:节点分叉,每个节点过"测试"小闸;弱枝不删除、灰色保留在"档案库"栏内,多路并行延伸 | 树生长 + 档案库收纳 | @@ -80,7 +80,9 @@ | 5-C 三缺口 | p5-09..14 | 三个拼图槽依次填入:可靠反馈/安全自改架构/评估=持续体检 | 拼图落位 | | 5-D 首尾呼应 | p5-15..18 | Good 金句卡重现,新增一行:"六十年后,人类装上第一节可自我升级的零件——并握住验证之门" | 旧卡泛黄 + 新行打字 | | 5-E 开放问题 | p5-19..21 | 大字卡:"我们能不能设计出足够聪明的笼子?"笼子线条由验证闸门图标构成 | 线条汇聚成笼 | -| 5-F 原文卡 | p5-22..24 | 论文引用卡:标题/作者/arXiv 链接 + "推荐读原文";淡出 | 卡片停留 + 渐黑 | +| 5-F 活地图 | p5-22..22d | 三色计数条并行生长:蓝 77 / 橙 176 / 灰 59,数字 counter 滚动;三段合拢成环形统计图,橙弧明显最长;角标 living research map(官方工程站点统计) | 计数条生长 + 环图合拢 + 橙段强调脉冲 | +| 5-G 敲门砖墙 | p5-22e..22f | 3×3 卡片墙飞入:Self-Instruct / Constitutional AI / WebRL / Web Agents with World Models / Self-Refine / TextGrad / MemoryBank / Voyager / Darwin Gödel Machine;随后按蓝/橙双色重排分拣(呼应 P1 分叉) | 交错飞入 + 双色分拣重排 | +| 5-H 原文卡 | p5-23..24 | 论文引用卡:标题/作者/arXiv 链接 + "推荐读原文";淡出 | 卡片停留 + 渐黑(时长从末 beat 实时推导) | ## 字幕规范 From 88051946bdd4158ea641ab329ff01c1b6717452d Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Tue, 18 Aug 2026 00:14:12 +0800 Subject: [PATCH 04/11] =?UTF-8?q?feat(video):=20=E3=80=8A=E4=B8=8A?= =?UTF-8?q?=E7=BA=BF=E4=B9=8B=E5=90=8E=EF=BC=8CAI=20=E6=89=8D=E5=BC=80?= =?UTF-8?q?=E5=A7=8B=E4=B8=8A=E5=AD=A6=E3=80=8B=E7=BB=8F=E9=AA=8C=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E5=99=A8=E9=97=AD=E7=8E=AF=E4=B8=8E=E4=B8=89=E4=BB=A3?= =?UTF-8?q?=E5=8F=B2=E5=8D=87=E7=BA=A7=EF=BC=88v2=EF=BC=89;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 源论文 88 页复核(§1–2 harness 形式化、§8 SIP-Bench、§10 开放问题):v1 全部断言与论文一致(零事实漂移),关键数字锚点(+16.2pp/16/84/~1,200/>90%/AI-45°)全部维持; - 官方工程站点信源补充(frontisai.github.io/Awesome-Self-Improving-Agents,2026-08-18 访问):trace-to-capability 五段闭环(经验编译器:选证据/提抽象/记出处)、Gen1→3 时间线精确语义、SIP-Bench 四指标问句、111 篇×9 章规模——录入 paper-notes.md 独立「信源补充」大节; - 逐字稿 v1→v2:新增 p1-25a(Gen3「适应面本身可进化」精确语义)、p6-06a..06d(经验编译器闭环复盘:把全片结构升格为一张五段环形图)、p6-13a/b(配套仓库 111 篇×9 章清单卡);其余 172 句零字节改动; - 分镜同步:1-G 补 Gen3 接口面板点亮、4-D 升级三检查点卡+四仪表通电、P6 重排新增 6-B2 闭环复盘镜(青路快闪/紫路慢沉双速差+闸门脉冲)与 6-F 清单卡镜,原文卡重号为 6-G; - 新增 research/upgrade-2026-08.md 审计文档:审计表、句级 delta(7 新句)、双重校验 delta(RISKY/REWRITE=0)、G2 验证记录(179 句 rebuild、公共句字节稳定、storyboard 无悬空 id)。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- .../research/paper-notes.md | 55 +++++++++++++++++++ .../research/upgrade-2026-08.md | 54 ++++++++++++++++++ .../script/narration.json | 35 ++++++++++++ .../script/narration.md | 12 +++- .../script/storyboard.md | 15 +++-- 5 files changed, 164 insertions(+), 7 deletions(-) create mode 100644 media/experience-era-agents-video/research/upgrade-2026-08.md diff --git a/media/experience-era-agents-video/research/paper-notes.md b/media/experience-era-agents-video/research/paper-notes.md index c186be0b..91f058eb 100644 --- a/media/experience-era-agents-video/research/paper-notes.md +++ b/media/experience-era-agents-video/research/paper-notes.md @@ -881,3 +881,58 @@ - 【收束金句】"Verification underlies each, and it is the capacity that scales least well as agents become more capable." → 验证是九个问题共同的地基,却是随智能体变强而扩展得最差的能力。 - 【悬念】"the trajectory of improvement under repeated adaptation is not known to compound, saturate, or oscillate." → 反复适应之下,改进轨迹究竟会复利增长、饱和还是震荡——未知。画面:三条候选曲线(指数上扬、平台、正弦震荡)各打一个问号。 - 【收束】"Progress will likely come less from individually stronger agents than from an account of how experience becomes capability, and of when post-deployment adaptation can be measured, internalized, and trusted." → 进步更少来自单兵更强的智能体,更多来自一套关于“经验如何变成能力、部署后适应何时可被测量、内化与信任”的理论。 + +--- + +## 信源补充(2026-08 升级;来源:官方工程站点,非论文正文) + +> 站点:https://frontisai.github.io/Awesome-Self-Improving-Agents/(访问日期 2026-08-18)。以下条目全部来自站点页面,与论文正文物理隔离;如与论文冲突以论文为准。 + +### trace-to-capability 闭环(站点 Overview 原文转述) + +- 站点把论文主旨可视化为一条五段流水(逐字要点): + 1. **Deployment Traces**:"Goals, actions, observations, feedback, corrections, tests."(部署轨迹:目标、动作、观察、反馈、纠正、测试) + 2. **Experience Compiler**(经验编译器):"Selects evidence, abstracts reusable lessons, assigns provenance."(选证据、提抽象教训、记出处) + 3. **Harness 侧(快/可逆)**:"Skills, memory, tools, environments, workflows." + 4. **参数侧(慢/持久)**:"RL and continual learning absorb stable runtime priors." + 5. **闸门**:"Measure longitudinal gain, retention, attribution, efficiency, and non-regression before treating change as improvement."(先量纵向增益/保持/归因/效率/不退化,才承认这是改进);终点标注 "Durable capability under control"(受控的持久能力)。 +- 与论文对应关系:站点「经验编译器」即论文 §2.1 的 z_i = H(τ_i) 编译步(过滤/压缩/归因/验证),站点把它拟人化为一个具名组件——**可视化叙事时可直接采用「经验编译器」这个站点命名**(标注来源)。 + +### 三代演进(站点 Timeline 原文) + +- 站点逐字:"From Gen 1 to Gen 3, the main object shifts from episodic tool-use loops, to cross-task reuse, to persistent harness-centered runtimes **whose adaptation surfaces can evolve after deployment**."(从片段式工具循环 → 跨任务复用 → 适应面本身可在部署后进化的持久运行时)。 +- v1 口播 p1-25 已说「工位本身成了可以自动升级的产品」;站点加强版语义是「**适应面本身可进化**」——升级方向(v3 加一句点破)。 + +### SIP-Bench 协议(站点 Evaluation 原文) + +- 站点逐字:"SIP-Bench evaluates one evolving agent across T0/T1/T2 checkpoints rather than reporting only a final score after adaptation."(对同一个进化中的智能体在 T0/T1/T2 三个检查点反复评测,而非只报适应后的最终分)。 +- 四指标原文:held-out gain("does experience improve performance on tasks outside the adaptation stream?");backward retention("does the same evolving agent keep old capabilities after updating?");path attribution("did the gain come from skills, memory, tools, parameter updates, or their interaction?");efficiency/safety("was the gain worth its cost and risk?")。 +- 站点动机句:"Without longitudinal evaluation, we cannot tell durable self-improvement from one-off elicitation, overfitting, drift, or unsafe mutation." + +### 收录规模与从业者要点 + +- 【111 篇 × 9 章】站点计数器:"111 papers / 9 paper chapters"(章即技能/记忆/环境/工具/RL 参数侧/元进化/评测/安全/harness 定义)。 +- 【三段式训练要点】站点 RL & Continual Learning 节给从业者的三句话(逐字):Pre-deployment Training for Vertical Agent Capabilities(上线前:垂直能力训练)/ Pre-deployment Training for Harness Functional Units(上线前:工具·记忆·技能·子智能体的使用训练)/ Post-deployment Training from Agent Traces(上线后:从运行轨迹训练)。 + +--- + +## 2026-08 升级复核(第二遍重读校准) + +> 重读方式:本地 PDF(`assets/papers/source/Self-Improving Agents in the Era of Experience: A Survey of Self- to Meta-Evolution.pdf`,88 页)以既有精读笔记为底进行核对(笔记 2026-08-16 由 9 个并行代理从 PDF 全文产出,本轮重点复核 §1–2 harness 形式化、§8 SIP-Bench、§10 开放问题三处与 v1 口播的对应)+ 站点实时抓取(2026-08-18)。 +> **结论**:narration v1 全部断言与论文一致,零事实漂移。+16.2pp / 16/84 负迁移 / ~1,200 恶意技能 / >90% 记忆操纵 / tau-bench 可靠性 / AI-45° Law 等关键数字锚点均维持。 + +### 审计发现与处置 + +| # | 发现 | 类别 | 处置 | +|---|---|---|---| +| 1 | 站点「经验编译器闭环」五段图把全片结构浓缩为一张图,v1 的 p6-06/07 金句(trace-to-capability)只有两句话、无画面展开 | 站点信源·结构复盘缺口 | 新增 P6 闭环复盘镜(4 句):五段环动画把金句升格为全片结构总图 | +| 2 | 站点 Gen3 精确语义「适应面本身可在部署后进化」比 v1 p1-25「可以自动升级的产品」更进一步 | 核心遗漏(轻) | 新增 p1-25a 一句点破 | +| 3 | v1 P4 已有六指标 + SIP-Bench 三时间点;站点四指标问句表述更利口播(新旧任务/归因/代价风险) | 已覆盖(强化) | 不加句,storyboard 4-F 动效升级为三检查点卡+四仪表 | +| 4 | 站点 111 篇×9 章规模数 | 站点信源 | 新增 p6-13a/b 两句(配套清单卡) | +| 5 | 考虑补 §10 九大开放问题中的多智能体涌现、多模态经验压缩 | — | **放弃**:v1 已选三问(激发 vs 习得/越吃越窄/多模态压缩),planning.md 取舍声明仍成立 | + +### 本轮新增断言锚点(v2 新句用) + +- 【站点闭环五段】见「信源补充」——「经验编译器」命名与三步(选证据/提抽象/记出处)引站点;两路去向与闸门语义与论文 §2.1/§8 一致(站点为论文可视化)。 +- 【站点 Gen3】"whose adaptation surfaces can evolve after deployment"。 +- 【站点规模】111 papers / 9 chapters(2026-08-18 访问)。 diff --git a/media/experience-era-agents-video/research/upgrade-2026-08.md b/media/experience-era-agents-video/research/upgrade-2026-08.md new file mode 100644 index 00000000..847ee600 --- /dev/null +++ b/media/experience-era-agents-video/research/upgrade-2026-08.md @@ -0,0 +1,54 @@ +# 2026-08 内容升级审计(v1 → v2) + +> 本文档是《上线之后,AI 才开始上学》第二轮升级的可审计记录:校准审计、句级 delta、双重校验 delta、信源存档。 +> 升级动机:三集系列配音换用本人音色克隆(passionate 风格)之际,对源论文做第二遍重读校准,并按「官方工程站点信源补充」规范引入站点增量事实。 + +## 一、重读方式与结论 + +- **论文**:以既有 88 页 PDF 精读笔记为底复核(重点 §1–2 harness 形式化、§8 SIP-Bench、§10 开放问题三处与 v1 口播对应),关键数字锚点全部维持。 +- **站点**:https://frontisai.github.io/Awesome-Self-Improving-Agents/ 实时抓取(2026-08-18),事实条目录入 [paper-notes.md](./paper-notes.md) 末尾「信源补充」大节。 +- **结论**:narration v1 全部断言与论文一致,零事实漂移。 + +### 审计发现与处置 + +| # | 发现 | 类别 | 处置 | +|---|---|---|---| +| 1 | 站点 trace-to-capability 五段闭环图(部署轨迹→经验编译器→双路→闸门)是全片结构的最佳收束复盘,v1 金句仅两句无展开 | 站点信源·结构复盘缺口 | 新增 6-B2 闭环复盘镜(p6-06a..06d,4 句) | +| 2 | 站点 Gen3 精确语义 "whose adaptation surfaces can evolve after deployment" 强于 v1 p1-25 的「自动升级的产品」表述 | 核心遗漏(轻) | 新增 p1-25a 一句 | +| 3 | v1 P4 六指标+SIP-Bench 已覆盖;站点四指标问句更利口播 | 已覆盖 | 不加句;storyboard 4-D 升级三检查点卡+四仪表动效 | +| 4 | 站点 111 篇×9 章规模 | 站点信源 | 新增 6-F 清单卡镜(p6-13a/b,2 句) | +| 5 | 考虑补 §10 多智能体涌现/多模态压缩等开放问题 | — | **放弃**:v1 三问取舍已在 planning.md 声明 | + +## 二、句级 delta 清单 + +| 句 id | 类型 | 文本 | 锚点 | +|---|---|---|---| +| p1-25a | 新增 | 更准确地说:工位上那些允许被改的接口,自己也能在上线之后继续进化。 | 站点 "persistent harness-centered runtimes whose adaptation surfaces can evolve after deployment" | +| p6-06a | 新增 | 把整期视频拼成一张图,其实就是一个闭环: | 承启句(站点 Overview 图) | +| p6-06b | 新增 | 干活的流水,先过一道「经验编译器」——挑出有用的证据、提炼成教训、记下来龙去脉; | 站点 "Selects evidence, abstracts reusable lessons, assigns provenance"(编译步对应论文 z_i=H(τ_i)) | +| p6-06c | 新增 | 快的去路改工位,慢的去路改大脑; | 站点 Fast/Reversible(Harness)与 Slow/Durable(参数)双路;回指 p1-20/21 | +| p6-06d | 新增 | 而在承认任何一步是「进步」之前,都要过评测和安全那道闸。 | 站点闸门句 "…before treating change as improvement";回指 P4/P5 | +| p6-13a | 新增 | 这篇综述的配套仓库,收录了一百一十一篇论文,正好按九章组织—— | 站点 111 papers / 9 chapters(2026-08-18) | +| p6-13b | 新增 | 技能、记忆、环境、工具、参数、元进化、评测、安全、定义,一章不缺。 | 站点九章节名(skills/memory/environments/tools/RL parameter-side/meta-evolution/evaluation/safety/harness definition) | + +其余 172 句零改动(字节稳定,见 §四)。新句预算用量 7/20。 + +## 三、双重校验 delta(仅新增句) + +| 句 id | 真实性 | 易懂性 | +|---|---|---| +| p1-25a | VERIFIED——"adaptation surfaces can evolve after deployment" 直译为「允许被改的接口自己能继续进化」 | VERIFIED——「接口」承接工位比喻 | +| p6-06a | VERIFIED——承启句 | VERIFIED | +| p6-06b | VERIFIED——三步(挑证据/提教训/记出处)逐字对应站点编译器描述;「经验编译器」命名标注站点来源(站点即论文官方可视化,与 §2.1 z_i 编译一致) | VERIFIED——「来龙去脉」口语指 provenance | +| p6-06c | VERIFIED——快/慢双路为论文 §2.1 双时间尺度 + 站点 Fast/Reversible、Slow/Durable 标注 | VERIFIED——回指 P1 已建立的「快的去路/慢的去路」措辞 | +| p6-06d | VERIFIED——闸门句对应论文 §8 评测六目标 + §9 安全;"before treating change as improvement" 直译 | VERIFIED | +| p6-13a | VERIFIED——111/9 为站点 2026-08-18 实测计数 | VERIFIED——中文数字口播自然 | +| p6-13b | VERIFIED——九个章名逐一对应站点章节列表 | VERIFIED——章名均为已出现过的概念词 | + +RISKY = 0,REWRITE = 0。✓ + +## 四、验证记录(G2) + +- `build_narration.py` 重建通过(实测见执行日志)。 +- 未触碰句 text 字节稳定:build 前后公共 id(172 个)text 全等 ✓。 +- storyboard 引用 id ⊆ narration id 集 ✓(1-G 扩 ..26a;P6 重排为 6-B/6-B2/6-C/6-D/6-E/6-F/6-G)。 diff --git a/media/experience-era-agents-video/script/narration.json b/media/experience-era-agents-video/script/narration.json index ab5d4c16..3cb627e8 100644 --- a/media/experience-era-agents-video/script/narration.json +++ b/media/experience-era-agents-video/script/narration.json @@ -194,6 +194,11 @@ "scene": "P1", "text": "第三代,运行时系统:工位本身成了可以自动升级的产品。" }, + { + "id": "p1-25a", + "scene": "P1", + "text": "更准确地说:工位上那些允许被改的接口,自己也能在上线之后继续进化。" + }, { "id": "p1-26", "scene": "P1", @@ -814,6 +819,26 @@ "scene": "P6", "text": "让 AI 在部署之后变聪明,本质上是一个从流水到能力的问题。" }, + { + "id": "p6-06a", + "scene": "P6", + "text": "把整期视频拼成一张图,其实就是一个闭环:" + }, + { + "id": "p6-06b", + "scene": "P6", + "text": "干活的流水,先过一道「经验编译器」——挑出有用的证据、提炼成教训、记下来龙去脉;" + }, + { + "id": "p6-06c", + "scene": "P6", + "text": "快的去路改工位,慢的去路改大脑;" + }, + { + "id": "p6-06d", + "scene": "P6", + "text": "而在承认任何一步是「进步」之前,都要过评测和安全那道闸。" + }, { "id": "p6-07", "scene": "P6", @@ -849,6 +874,16 @@ "scene": "P6", "text": "这期讲的是另一半:上了班之后,经验怎么攒。" }, + { + "id": "p6-13a", + "scene": "P6", + "text": "这篇综述的配套仓库,收录了一百一十一篇论文,正好按九章组织——" + }, + { + "id": "p6-13b", + "scene": "P6", + "text": "技能、记忆、环境、工具、参数、元进化、评测、安全、定义,一章不缺。" + }, { "id": "p6-14", "scene": "P6", diff --git a/media/experience-era-agents-video/script/narration.md b/media/experience-era-agents-video/script/narration.md index 52d72806..83ae0a97 100644 --- a/media/experience-era-agents-video/script/narration.md +++ b/media/experience-era-agents-video/script/narration.md @@ -1,4 +1,6 @@ -# 逐字稿:《上线之后,AI 才开始上学》(v1,已过真实性+易懂性双重校验) +# 逐字稿:《上线之后,AI 才开始上学》(v2,已过真实性+易懂性双重校验) + +> v2(2026-08 升级):第二遍重读校准 + 官方工程站点信源补充(锚点见 [../research/paper-notes.md](../research/paper-notes.md) 末节);新增 p1-25a(Gen3 精确语义)、p6-06a..d(经验编译器闭环复盘)、p6-13a/b(配套清单),其余句零改动。 > **格式约定**:`- [句id] 口播文本`——每行一句,一句 = 一条字幕 = 一段配音。 > `>` 引用块为画面备注,不进入配音。英文方法名原则上不口播,做成画面角标。 @@ -80,6 +82,7 @@ - [p1-23] 第一代,任务循环:AI 会用工具了,但干完就忘。 - [p1-24] 第二代,跨任务复用:有了记忆和技能库,但全靠人手工配置。 - [p1-25] 第三代,运行时系统:工位本身成了可以自动升级的产品。 +- [p1-25a] 更准确地说:工位上那些允许被改的接口,自己也能在上线之后继续进化。 - [p1-26] 你天天听到的那些 AI 编程工具,就是第三代的代表。 - [p1-27] 好,解剖图看完了。接下来看重点: - [p1-28] 攒出来的经验,具体往哪送? @@ -302,9 +305,14 @@ > 画面:总金句卡——金衬线大字。 - [p6-06] 让 AI 在部署之后变聪明,本质上是一个从流水到能力的问题。 +- [p6-06a] 把整期视频拼成一张图,其实就是一个闭环: +- [p6-06b] 干活的流水,先过一道「经验编译器」——挑出有用的证据、提炼成教训、记下来龙去脉; +- [p6-06c] 快的去路改工位,慢的去路改大脑; +- [p6-06d] 而在承认任何一步是「进步」之前,都要过评测和安全那道闸。 - [p6-07] 说人话就是:得学会把经验接住、归档、验证、再变成实力。 > 角标:"Making agents smarter after deployment is a trace-to-capability problem" +> 画面:闭环复盘镜——五节点环形流水:部署轨迹 → 经验编译器(选证据/提抽象/记出处)→ 工位侧快路(青,快/可逆)∥ 大脑侧慢路(紫,慢/持久)→ 评测+安全闸门 → 回到部署。青路流光速度快、紫路缓慢下沉,闸门红描边脉冲。 - [p6-08] 这篇综述的结尾,给这条路列了三块缺失的拼图: - [p6-09] 靠得住的反馈,安全的自我修改架构, @@ -315,6 +323,8 @@ > 画面:引用卡——上一集《AI 如何自己变强?》缩略 + 本集论文引用卡。 +- [p6-13a] 这篇综述的配套仓库,收录了一百一十一篇论文,正好按九章组织—— +- [p6-13b] 技能、记忆、环境、工具、参数、元进化、评测、安全、定义,一章不缺。 - [p6-14] 感兴趣的朋友,强烈推荐读读这篇 88 页的原文。 - [p6-15] 我们下期再见。 diff --git a/media/experience-era-agents-video/script/storyboard.md b/media/experience-era-agents-video/script/storyboard.md index 37b34263..aa8088de 100644 --- a/media/experience-era-agents-video/script/storyboard.md +++ b/media/experience-era-agents-video/script/storyboard.md @@ -24,7 +24,7 @@ | 1-D 便宜洞察 | p1-10..12 | 分屏对比:左侧改大脑=重型机械(慢/贵/锁定),右侧改工位=乐高快拆(青) | 分屏滑入 | | 1-E 原油汽油 | p1-13..18 | 金色提纯漏斗:左侧黑浊「trace 原始流水」倒入,四道工序环(过滤/压缩/归因/验证),滴出金色「经验 z」;角标 z_i=H(τ_i) | 漏斗流动 + 工序环逐个点亮 | | 1-F 快慢去路 | p1-19..21 | 金色经验球到分岔:上路青色箭头「改工位·快」直通工位;下路紫色箭头「写大脑·慢」缓慢沉入大脑 | 分岔流动 + 差速 | -| 1-G 三代史 | p1-22..26 | 横向时间轴 2021→2026:Gen1 任务环(图标:单环)→ Gen2 复用(图标:书架)→ Gen3 运行时(图标:齿轮房);时间轴下方里程碑名(ReAct/Voyager/Claude Code) | 时间轴推进 + 图标弹跳 | +| 1-G 三代史 | p1-22..26a | 横向时间轴 2021→2026:Gen1 任务环(图标:单环)→ Gen2 复用(图标:书架)→ Gen3 运行时(图标:齿轮房);p1-25a 时 Gen3 齿轮房上的「可改接口」小面板逐个亮起(适应面自进化);时间轴下方里程碑名(ReAct/Voyager/Claude Code) | 时间轴推进 + 图标弹跳 + Gen3 定格放大 + 接口面板点亮 | | 1-H 转场钩子 | p1-27..28 | 四条管道分叉预告图(金流分四路) | 管道延伸 | ## P2 经验的四个去处(约 4.5 分钟) @@ -59,7 +59,7 @@ | 4-A 体检中心 | p4-01..04 | AI 拿体检报告进「体检中心」门;作弊画面:练过的题册上分数飞涨(红色「刷分」印章) | 走入门内 + 分数虚高动画 | | 4-B 六条指标 | p4-05..11 | 体检表格逐行点亮:新任务涨分/老任务不忘/持续稳定/性价比/路径归因/安全不退化(每行小图标);角标 SI 六目标英文 | 逐行盖章 | | 4-C 稳定性 | p4-12..14 | 同一 AI 跑两遍成绩柱状图差异巨大;角标 tau-bench | 双柱对比 | -| 4-D 纵向协议 | p4-15..18 | 时间线 T0→T1→T2 三体检点;旧题卡片反复重考(循环箭头);角标 SIP-Bench | 时间线推进 + 循环 | +| 4-D 纵向协议 | p4-15..18 | 时间线 T0→T1→T2 三体检点(三张检查点卡依次立起:改进前/改进后/过段时间);旧题卡片反复重考(循环箭头);右侧四仪表盘(新任务涨分/老任务不忘/功劳归谁/代价风险)依次通电;角标 SIP-Bench | 检查点卡立起 + 循环 + 四仪表通电 | | 4-E 题库腐烂 | p4-19..21 | 考题卡片随时间褪色长霉斑;新考题卡车持续倒入 | 褪色 + 补给动画 | ## P5 安全(约 2.5 分钟) @@ -79,10 +79,13 @@ | 镜 | 句区间 | 画面 | 动效 | |---|---|---|---| | 6-A 星空问题 | p6-01..04 | 星空;三组星座亮起(?):新本事 vs 潜能 / 自产经验收窄 / 多模态归档 | 星座连线点亮 | -| 6-B 总金句 | p6-05..07 | 金色衬线大字金句卡:「部署后变聪明 = 从流水到能力」;英文原文角标 trace-to-capability | 打字机 + 定格 | -| 6-C 三块拼图 | p6-08..10 | 三个拼图槽依次落位:可靠反馈/安全自改架构/评测=持续体检 | 拼图落位 | -| 6-D 系列呼应 | p6-11..13 | 上一集《AI 如何自己变强?》封面卡淡入(蓝橙双色徽标),与本集(金青紫)并排 | 双卡并排 | -| 6-E 原文卡 | p6-14..15 | 论文引用卡:标题 + 清华大学 × Frontis.AI + 2026-06;「推荐读原文」;渐黑 | 卡片停留 + 渐黑 | +| 6-B 总金句 | p6-05..06 | 金色衬线大字金句卡:「部署后变聪明 = 从流水到能力」;英文原文角标 trace-to-capability | 打字机 + 定格 | +| 6-B2 闭环复盘 | p6-06a..06d | 五节点环形流水:部署轨迹(金点流)→ 经验编译器(站点命名角标 Experience Compiler:选证据/提抽象/记出处三步徽标)→ 分双路:工位侧快路(青,标注「快/可逆」)与大脑侧慢路(紫,标注「慢/持久」)→ 评测+安全闸门(红描边)→ 回到部署;末端标签「受控的持久能力」 | 环形流光巡游 + 青路快闪/紫路慢沉双速差 + 闸门脉冲 | +| 6-C 总收束 | p6-07 | 金句卡补完:「接住、归档、验证、再变成实力」四步短语逐一下划线 | 下划线扫描 | +| 6-D 三块拼图 | p6-08..10 | 三个拼图槽依次落位:可靠反馈/安全自改架构/评测=持续体检 | 拼图落位 | +| 6-E 系列呼应 | p6-11..13 | 上一集《AI 如何自己变强?》封面卡淡入(蓝橙双色徽标),与本集(金青紫)并排 | 双卡并排 | +| 6-F 配套清单卡 | p6-13a..13b | 仓库卡:Awesome-Self-Improving-Agents(mono 字体)+ 「111 篇 × 9 章」计数器滚动;九个章名小胶囊环绕(技能/记忆/环境/工具/参数/元进化/评测/安全/定义) | 计数器滚动 + 胶囊环绕弹出 | +| 6-G 原文卡 | p6-14..15 | 论文引用卡:标题 + 清华大学 × Frontis.AI + 2026-06;「推荐读原文」;渐黑 | 卡片停留 + 渐黑(时长从末 beat 实时推导) | ## 字幕规范 From fe3af2feea82abe2c2d41836c20ee3c8be722305 Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Tue, 18 Aug 2026 00:30:16 +0800 Subject: [PATCH 05/11] =?UTF-8?q?feat(tts):=20IndexTTS=20=E6=8E=A8?= =?UTF-8?q?=E7=90=86=E6=96=B0=E5=A2=9E=E6=9D=9F=E6=90=9C=E7=B4=A2=E5=AE=BD?= =?UTF-8?q?=E5=BA=A6=E6=97=8B=E9=92=AE=E5=B9=B6=E5=B0=86=E7=AE=A1=E7=BA=BF?= =?UTF-8?q?=E9=BB=98=E8=AE=A4=E9=99=8D=E4=B8=BA=201=20=E6=9D=9F=EF=BC=88MP?= =?UTF-8?q?S=20=E9=95=BF=E8=B7=91=E6=8F=90=E9=80=9F=EF=BC=89;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 根因:MPS fp32 实测每句墙钟 RTF 40–58(GPT 束搜索 145–210s + 扩散声码 40–98s / 5s 音频),上游库内部 num_beams=3 使 GPT 段耗时按束宽线性放大,整集 180–230 句需 6–10 小时,三集串行不可行; - tts_server.py:SynthesizeRequest 新增 num_beams 字段(1–5 校验),_infer_sync 透传给 infer()(上游默认 3,采样生成 do_sample=True 下 1 与 3 听感差异可忽略); - tts.py:--num-beams CLI(默认 1,choices 1–5),http_synthesize/synth_indextts 全链路透传,edge-engine 参数忽略提示同步;注意:num_beams 不参与缓存摘要(与文本/风格/样本一样变化才重合成,束宽仅影响推理过程); - VOICE-CLONING.md:§4.3b 新增束宽速度主旋钮说明与实测 RTF 数据(40–58 vs 20–30),§五 每句耗时与整集预估改按实测口径(6–10 小时、nohup 后台+断点续跑建议),修正原「每句 5–30 秒」的失实估计。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- media/pipeline/VOICE-CLONING.md | 6 +++++- media/pipeline/scripts/tts.py | 14 ++++++++++++++ media/pipeline/scripts/tts_server.py | 11 +++++++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/media/pipeline/VOICE-CLONING.md b/media/pipeline/VOICE-CLONING.md index f3a40ea1..f12671c9 100644 --- a/media/pipeline/VOICE-CLONING.md +++ b/media/pipeline/VOICE-CLONING.md @@ -134,6 +134,10 @@ uv run --no-project --with soundfile --with numpy \ 0.5–2.0(>1 变慢、<1 变快)。仅 v2.5 支持;`--emo-vector` 模式默认 1.0(手动传 df 需服务为 v2.5)。 +### 4.3b 束搜索宽度(--num-beams,速度主旋钮) + +GPT 声码段的束搜索宽度,默认 **1**(上游库内部默认 3)。采样生成(`do_sample=True`)下 1 与 3 的听感差异可忽略,但 GPT 段耗时约按束宽线性放大。**MPS fp32 实测**(2026-08-18,M3 系列):每句墙钟 = GPT 束搜索 + 扩散声码 + BigVGAN,RTF(耗时/音频时长)约 40–58(beams=3)与 20–30(beams=1);整集(约 180–230 句)预计数小时,按句缓存可断点续跑。质量敏感的单句可 `--num-beams 3` 单独重合成。 + ### 4.4 调参建议 风格向量是 8 维情感空间中的方向+强度,首次使用建议:固定一句文本,`--style` 各档合成一次试听对比;同风格微调用 `--emo-alpha 0.5`(更含蓄)或 `--duration-factor 0.92`(更紧凑)。**先跑 3 句小样确认,再全量合成**。科普长视频推荐 `passionate`(充满激情与轻快:高唤醒正价 happy 主载 + surprised 跳跃感 + 少量 calm 锚定咬字);数字/术语密集的段落若嫌糊,可 `--duration-factor 1.0` 重跑该集。 @@ -155,7 +159,7 @@ cd video && pnpm run render:draft && pnpm run render ``` - 服务启动一次可服务多集;管线客户端不常驻模型; -- 每句 5–30 秒(MPS fp32,与文本长度相关),整集(约 100 句)预计 20–60 分钟,按句缓存可断点续跑(见 §六); +- 每句墙钟与文本长度及束宽相关:MPS fp32 实测 RTF≈40–58(`--num-beams 3`)/ ≈20–30(默认 `--num-beams 1`),即 5 秒的句子约需 2–5 分钟;整集(约 180–230 句)预计 6–10 小时,建议 `nohup` 挂后台跑、按句缓存断点续跑(见 §六);长篇管线**不要**用默认 3 束逐句等待; - 引擎/风格/样本任一变化都会改写时长,合成后**必须重跑草渲**让时间轴重算; - 超长句(>120 token)服务端内部自动分段;极端长句推理可达数分钟。客户端并发为 1(与服务端串行推理对齐,避免排队时间计入超时),HTTP 超时 600s;万一超时——重跑即续传,无需干预。 diff --git a/media/pipeline/scripts/tts.py b/media/pipeline/scripts/tts.py index af72010b..00bb9569 100644 --- a/media/pipeline/scripts/tts.py +++ b/media/pipeline/scripts/tts.py @@ -242,6 +242,7 @@ def http_synthesize( alpha: float, df: float, lang: str, + num_beams: int = 1, ) -> tuple[bytes, str]: """POST /synthesize → (mp3 bytes, X-Audio-Format)。4xx 不可重试。""" payload: dict = { @@ -250,6 +251,7 @@ def http_synthesize( "emo_alpha": alpha, "duration_factor": df, "lang": lang, + "num_beams": num_beams, } if vec is not None: payload["emo_vector"] = vec @@ -301,6 +303,7 @@ async def synth_indextts( engine_tag: str, server: str, out_dir: Path, + num_beams: int = 1, ) -> dict: sid, text = item["id"], item["text"] mp3 = out_dir / f"{sid}.mp3" @@ -329,6 +332,7 @@ async def synth_indextts( alpha, df, lang, + num_beams, ) if fmt != "mp3": raise NonRetryableError( @@ -407,6 +411,14 @@ async def main() -> None: help="[indextts] 语速 0.5–2.0(默认随风格)", ) idx.add_argument("--lang", default="ZH", help="[indextts] 语言(默认 ZH)") + idx.add_argument( + "--num-beams", + default=1, + type=int, + choices=[1, 2, 3, 4, 5], + help="[indextts] GPT 束搜索宽度(默认 1;采样生成下与上游默认 3 听感差异可忽略," + "但 GPT 段耗时约按束宽线性放大——长篇管线跑 1,质量敏感单句可试 3)", + ) idx.add_argument( "--engine-tag", default="indextts", @@ -434,6 +446,7 @@ async def main() -> None: "--emo-vector": args.emo_vector, "--emo-alpha": args.emo_alpha, "--duration-factor": args.duration_factor, + "--num-beams": args.num_beams != 1, "--server": args.server != "http://127.0.0.1:8766", "--style": args.style != "neutral", "--lang": args.lang != "ZH", @@ -524,6 +537,7 @@ async def main() -> None: args.engine_tag, args.server, out_dir, + num_beams=args.num_beams, ) for i in items ) diff --git a/media/pipeline/scripts/tts_server.py b/media/pipeline/scripts/tts_server.py index 64a680ae..2c3d7cf1 100644 --- a/media/pipeline/scripts/tts_server.py +++ b/media/pipeline/scripts/tts_server.py @@ -156,6 +156,7 @@ class SynthesizeRequest(BaseModel): emo_alpha: float = 1.0 duration_factor: float = 1.0 lang: str = "ZH" + num_beams: int = 1 @field_validator("emo_vector") @classmethod @@ -184,6 +185,13 @@ def _df_ok(cls, v: float) -> float: raise ValueError("duration_factor 必须在 [0.5, 2.0]") return v + @field_validator("num_beams") + @classmethod + def _beams_ok(cls, v: int) -> int: + if not 1 <= v <= 5: + raise ValueError("num_beams 必须在 [1, 5]") + return v + STATE: dict = {} @@ -198,6 +206,9 @@ def _infer_sync(tts, ref: Path, req: SynthesizeRequest, tmpdir: Path) -> Path: emo_alpha=req.emo_alpha, use_random=False, verbose=False, + # 束搜索宽度:上游默认 3;采样生成(do_sample=True)下 1 与 3 的听感差异可忽略, + # 但 GPT 段耗时约按束宽线性放大(MPS fp32 实测 RTF 40-58),管线长跑默认 1。 + num_beams=req.num_beams, ) if STATE["supports_duration_factor"]: kwargs["duration_factor"] = req.duration_factor From 11f5be7b6dcd57546d24ab43d95b8d875c58426c Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Tue, 18 Aug 2026 00:34:58 +0800 Subject: [PATCH 06/11] =?UTF-8?q?feat(video):=20=E4=B8=89=E9=9B=86=20Remot?= =?UTF-8?q?ion=20=E5=9C=BA=E6=99=AF=E6=96=B0=E5=A2=9E=E4=BF=A1=E6=BA=90?= =?UTF-8?q?=E9=95=9C=E4=B8=8E=E5=8A=A8=E7=94=BB=E5=8D=87=E7=BA=A7=EF=BC=88?= =?UTF-8?q?=E7=AB=99=E7=82=B9=E6=A6=82=E5=BF=B5=E4=BB=A3=E7=A0=81=E5=8C=96?= =?UTF-8?q?=E9=87=8D=E5=BB=BA=EF=BC=89;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 《AI 如何自己变强?》:P5Ending 新增 5-F 活地图镜(三色计数条 77 蓝/176 橙/59 灰并行生长→环形图合拢→橙段强调脉冲+2.3 倍洞察行,信源等级角标 bottom 880 避字幕条)与 5-G 敲门砖墙镜(九篇卡片 3×3 交错飞入→按蓝/橙双色分拣重排为两竖列,呼应 P1 分叉);原 5-F 原文卡重号 5-H(渐黑窗口仍从末 beat 实时推导);3-G Voyager 补 p3-34b/c 金句条翻出(技能=打包保存的自我升级,衬线体橙描边); - 《上线之后,AI 才开始上学》:P6Ending 新增 6-B2 经验编译器闭环复盘镜(五节点环形流水:部署轨迹→编译器三步徽标→青路快闪/紫路慢沉双速差流光→评测安全闸红脉冲→「受控的持久能力」角标)与 6-F 配套清单卡镜(111 计数器滚动+九章名胶囊环绕);新增 6-C 金句四步下划线收束;1-G 三代史补 Gen3 定格放大+四个「可改接口」面板点亮(适应面自进化);4-D 纵向协议升级为检查点卡(圆点→卡片)+四仪表逐个通电(新任务/老任务/归因/代价); - 《会写代码的 AI,开始给自己写代码》:2-B SICA 补成本/时长双仪表随 p2-07b 点亮+数字轻微脉冲;3-F 矩阵补绿色斜线光带扫掠(pathLength 归一化,Table 2 对角规律);4-E 雷达补数值轨迹点+当前展开轴辉光+轴值标注; - 全部遵循 skill-06 四红线:px 居中、角标 bottom≥150、pathLength 归一化不与像素 dasharray 混用、片尾渐黑从末 beat 推导;三集 tsc --noEmit 全通过。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- .../video/src/scenes/P1Anatomy.tsx | 68 +++- .../video/src/scenes/P4Eval.tsx | 67 +++- .../video/src/scenes/P6Ending.tsx | 305 +++++++++++++++++- .../video/src/scenes/P2FiveObjects.tsx | 51 ++- .../video/src/scenes/P3WhenEvidence.tsx | 35 +- .../video/src/scenes/P4Eval.tsx | 38 ++- .../video/src/scenes/P3Gear.tsx | 28 +- .../video/src/scenes/P5Ending.tsx | 283 +++++++++++++++- 8 files changed, 828 insertions(+), 47 deletions(-) diff --git a/media/experience-era-agents-video/video/src/scenes/P1Anatomy.tsx b/media/experience-era-agents-video/video/src/scenes/P1Anatomy.tsx index 71c8102e..5b5863a1 100644 --- a/media/experience-era-agents-video/video/src/scenes/P1Anatomy.tsx +++ b/media/experience-era-agents-video/video/src/scenes/P1Anatomy.tsx @@ -388,8 +388,8 @@ const TwoPaths: React.FC = () => { ); }; -/** 1-G:三代演进时间轴 */ -const ThreeGens: React.FC = () => { +/** 1-G:三代演进时间轴(v2:p1-25a 时 Gen3 卡片定格放大,卡片上「可改接口」小面板逐个亮起) */ +const ThreeGens: React.FC<{gen3At: number}> = ({gen3At}) => { const frame = useCurrentFrame(); const {fps} = useVideoConfig(); const gens = [ @@ -397,6 +397,11 @@ const ThreeGens: React.FC = () => { {name: 'Gen 2 · 跨任务复用', icon: '📚', desc: '有记忆技能库 · 靠人配置', year: '2023', color: theme.harness}, {name: 'Gen 3 · 运行时系统', icon: '🏢', desc: '工位本身自动升级', year: '2025', color: theme.exp}, ]; + // Gen3 定格放大 + 其余两卡让位 + const zoom = interpolate(frame, [gen3At, gen3At + 18], [1, 1.14], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'}); + const othersDim = interpolate(frame, [gen3At, gen3At + 18], [1, 0.55], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'}); + // Gen3 楼体上的「可改接口」面板 + const panels = ['技能', '记忆', '工具', '流程']; return (
@@ -411,11 +416,20 @@ const ThreeGens: React.FC = () => { borderRadius: 3, }} /> -
+
{gens.map((g, i) => { const enter = spring({frame: frame - i * 16, fps, config: {damping: 200}}); + const isGen3 = i === 2; return ( -
+
{ /> {g.year}
-
{g.icon}
+
+ {g.icon} + {/* Gen3 可改接口面板:p1-25a 逐个亮起(适应面自进化) */} + {isGen3 && + panels.map((p, j) => { + const on = interpolate(frame, [gen3At + 8 + j * 10, gen3At + 16 + j * 10], [0, 1], { + extrapolateLeft: 'clamp', + extrapolateRight: 'clamp', + }); + return ( +
+ {p} ↻ +
+ ); + })} +
{g.name}
@@ -449,6 +495,14 @@ const ThreeGens: React.FC = () => { export const P1Anatomy: React.FC<{scene: SceneRange}> = ({scene}) => { const w = (fromId: string, toId?: string) => beatWindow(scene.sentences, scene.from, fromId, toId); + const winG = w('p1-22', 'p1-26a'); + const at = (id: string) => { + const s = scene.sentences.find((x) => x.id === id); + if (!s) { + throw new Error(`P1Anatomy: 未找到句 id ${id}`); + } + return s.from - scene.from; + }; return ( @@ -469,8 +523,8 @@ export const P1Anatomy: React.FC<{scene: SceneRange}> = ({scene}) => { - - + + diff --git a/media/experience-era-agents-video/video/src/scenes/P4Eval.tsx b/media/experience-era-agents-video/video/src/scenes/P4Eval.tsx index 4a21cbd8..990f49e3 100644 --- a/media/experience-era-agents-video/video/src/scenes/P4Eval.tsx +++ b/media/experience-era-agents-video/video/src/scenes/P4Eval.tsx @@ -167,15 +167,22 @@ const FlakyRuns: React.FC = () => { ); }; -/** 4-D:T0→T1→T2 纵向体检 */ -const Longitudinal: React.FC = () => { +/** 4-D:T0→T1→T2 纵向体检(v2:检查点卡化 + 四仪表通电) */ +const Longitudinal: React.FC<{metersAt: number}> = ({metersAt}) => { const frame = useCurrentFrame(); const points = [ {t: 'T0', label: '改进前', color: theme.dim}, {t: 'T1', label: '改进后', color: theme.harness}, {t: 'T2', label: '过段时间', color: theme.exp}, ]; + const meters = [ + {label: '新任务涨分', icon: '📈'}, + {label: '老任务不忘', icon: '🔁'}, + {label: '功劳归谁', icon: '🔍'}, + {label: '代价与风险', icon: '⚖️'}, + ]; const lineGrow = interpolate(frame, [10, 70], [0, 1], {extrapolateRight: 'clamp', extrapolateLeft: 'clamp'}); + const metersOn = interpolate(frame, [metersAt, metersAt + 30], [0, 4], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'}); return (
@@ -204,26 +211,26 @@ const Longitudinal: React.FC = () => { transform: `scale(${0.7 + enter * 0.3})`, }} > + {/* 检查点卡:圆点变卡片(体检点立起) */}
- {p.t} +
{p.t}
+
🩺
{p.label}
-
🩺
); })} @@ -232,6 +239,32 @@ const Longitudinal: React.FC = () => { 留着旧题 · 反复重考
+ {/* 四仪表通电:p4-17「各考一轮」起逐个点亮(站点四指标问句的可视化) */} +
+ {meters.map((m, i) => { + const on = Math.max(0, Math.min(1, metersOn - i)); + return ( +
0.5 ? theme.harness : theme.panelBorder}`, + display: 'flex', + alignItems: 'center', + gap: 12, + opacity: 0.35 + on * 0.65, + boxShadow: on > 0.5 ? `0 0 22px ${theme.harness}33` : 'none', + }} + > + 0.3 ? 1 : 0.3}}>{m.icon} + 0.5 ? theme.text : theme.dim}}>{m.label} +
+ ); + })} +
SIP-Bench:追着同一个进化的 AI 反复体检 @@ -299,6 +332,14 @@ const RotBench: React.FC = () => { export const P4Eval: React.FC<{scene: SceneRange}> = ({scene}) => { const w = (fromId: string, toId?: string) => beatWindow(scene.sentences, scene.from, fromId, toId); + const winD = w('p4-15', 'p4-18'); + const at = (id: string) => { + const s = scene.sentences.find((x) => x.id === id); + if (!s) { + throw new Error(`P4Eval: 未找到句 id ${id}`); + } + return s.from - scene.from; + }; return ( @@ -310,8 +351,8 @@ export const P4Eval: React.FC<{scene: SceneRange}> = ({scene}) => { - - + + diff --git a/media/experience-era-agents-video/video/src/scenes/P6Ending.tsx b/media/experience-era-agents-video/video/src/scenes/P6Ending.tsx index 3bd0dbce..352f8ff7 100644 --- a/media/experience-era-agents-video/video/src/scenes/P6Ending.tsx +++ b/media/experience-era-agents-video/video/src/scenes/P6Ending.tsx @@ -12,6 +12,10 @@ import {theme} from '../design/theme'; import {beatWindow} from '../timing'; import type {SceneRange} from '../types'; +/** 双端 clamp 的 0→1 进度 */ +const ci = (f: number, a: number, b: number) => + interpolate(f, [a, b], [0, 1], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'}); + /** 6-A:星空开放问题 */ const OpenQuestions: React.FC = () => { const frame = useCurrentFrame(); @@ -76,7 +80,214 @@ const OpenQuestions: React.FC = () => { ); }; -/** 6-C:三块拼图 */ +/** 6-B2:经验编译器闭环复盘(v2 新增,p6-06a..06d) + * 五节点环形流水:部署轨迹(金)→ 经验编译器(三步徽标)→ 双路(青快/紫慢,双速差流光)→ 评测+安全闸门(红脉冲)→ 回到部署。 + * 青路流光速度快、紫路缓慢下沉——「快/可逆 vs 慢/持久」的时间尺度不对称是概念核心。 */ +const LoopRecap: React.FC<{compilerAt: number; pathsAt: number; gateAt: number}> = ({compilerAt, pathsAt, gateAt}) => { + const frame = useCurrentFrame(); + const {fps} = useVideoConfig(); + const enter = spring({frame, fps, config: {damping: 200}}); + // 环几何:viewBox 900x640,中心 450,320 + const R = 210; + const N = 5; + const nodeAngle = (i: number) => (-90 + (360 / N) * i) * (Math.PI / 180); // 从顶部顺时针 + const nodePos = (i: number) => ({x: 450 + R * Math.cos(nodeAngle(i)), y: 320 + R * Math.sin(nodeAngle(i))}); + const nodes = [ + {label: '部署轨迹', sub: 'goals · actions · tests', color: theme.exp}, + {label: '经验编译器', sub: '选证据 / 提抽象 / 记出处', color: theme.exp}, + {label: '工位 · 快路', sub: '技能 / 记忆 / 工具', color: theme.harness}, + {label: '大脑 · 慢路', sub: 'RL · 持续学习', color: theme.params}, + {label: '评测 + 安全闸', sub: '才承认是「进步」', color: theme.danger}, + ]; + const ringDraw = ci(frame, 2, 40); + // 流光:青路(节点2→3 外弧)快转;紫路(节点3→4)慢沉——用两段弧上的游标点 + const flowT = Math.max(0, frame - pathsAt); + const tealPhase = (flowT * 0.03) % 1; // 快:约 33 帧一圈 + const purplePhase = (flowT * 0.011) % 1; // 慢:约 90 帧一圈 + const gatePulse = gateAt > 0 && frame > gateAt ? 0.6 + 0.4 * Math.sin((frame - gateAt) * 0.14) : 0.7; + const compilerIn = ci(frame, compilerAt, compilerAt + 14); + const pathsIn = ci(frame, pathsAt, pathsAt + 14); + const gateIn = ci(frame, gateAt, gateAt + 14); + + const arcPoint = (fromI: number, toI: number, t: number) => { + const a1 = nodeAngle(fromI); + const a2 = nodeAngle(toI); + const a = a1 + (a2 - a1) * t; + return {x: 450 + R * Math.cos(a), y: 320 + R * Math.sin(a)}; + }; + const tealDot = arcPoint(1, 2, tealPhase); + const purpleDot = arcPoint(2, 3, purplePhase); + + return ( + +
+ 全片拼成一张图 · 经验的闭环 +
+ + + {/* 环主干 */} + + {/* 青路段加亮(1→2 弧,快路) */} + + {/* 紫路段加亮(2→3 弧,慢路) */} + + {/* 流光游标:青快 */} + {pathsIn > 0 && ( + + )} + {/* 流光游标:紫慢 */} + {pathsIn > 0 && ( + + )} + + + {/* 节点卡 */} + {nodes.map((n, i) => { + const p = nodePos(i); + const isIn = i === 1 ? compilerIn : i === 2 || i === 3 ? pathsIn : i === 4 ? gateIn : ci(frame, 2 + i * 8, 14 + i * 8); + const pulse = i === 4 ? gatePulse : 1; + return ( +
+
{n.label}
+
{n.sub}
+
+ ); + })} + + {/* 双速标注 */} + +
+ ⚡ 快 / 可逆 · 今天就能用 +
+
+ 🐢 慢 / 持久 · 变成本能 +
+
+ + {/* 末端标签(bottom≥150 避字幕条) */} + +
+ durable capability under control · 受控的持久能力(官方工程站点闭环图) +
+
+
+ ); +}; + +/** 6-C:金句四步收束(p6-07:接住、归档、验证、变实力 逐一下划线) */ +const QuoteRecap: React.FC = () => { + const frame = useCurrentFrame(); + const steps = ['接住', '归档', '验证', '再变成实力']; + return ( + +
+ 把经验 + {steps.map((s, i) => ( + + {s} + + + ))} +
+
+ ); +}; + +/** 6-D:三块拼图 */ const ThreePuzzles: React.FC = () => { const frame = useCurrentFrame(); const pieces = [ @@ -124,7 +335,7 @@ const ThreePuzzles: React.FC = () => { ); }; -/** 6-D:系列呼应——上一集与本集并排 */ +/** 6-E:系列呼应——上一集与本集并排 */ const SeriesEcho: React.FC = () => { const frame = useCurrentFrame(); const {fps} = useVideoConfig(); @@ -189,7 +400,65 @@ const SeriesEcho: React.FC = () => { ); }; -/** 6-E:论文引用卡(fade-out 窗口收在本 beat 末帧内,避免渐黑被 Sequence 截断硬切) */ +/** 6-F:配套清单卡(v2 新增,p6-13a/b)——111 篇 × 9 章计数器 + 九章名胶囊环绕 */ +const RepoCard: React.FC = () => { + const frame = useCurrentFrame(); + const {fps} = useVideoConfig(); + const enter = spring({frame, fps, config: {damping: 200}}); + const count = Math.round(111 * ci(frame, 6, 40)); + const chapters = ['技能', '记忆', '环境', '工具', '参数', '元进化', '评测', '安全', '定义']; + return ( + +
+
+ github.com/FrontisAI/Awesome-Self-Improving-Agents +
+
+ {count} + 篇论文 · + + {ci(frame, 20, 34) > 0.5 ? 9 : 0} + + +
+
+ {chapters.map((c, i) => { + const e = ci(frame, 30 + i * 5, 40 + i * 5); + return ( + + {c} + + ); + })} +
+
+
+ ); +}; + +/** 6-G:论文引用卡(fade-out 窗口收在本 beat 末帧内,避免渐黑被 Sequence 截断硬切) */ const FinalCard: React.FC<{endFrame: number}> = ({endFrame}) => { const frame = useCurrentFrame(); const {fps} = useVideoConfig(); @@ -245,12 +514,21 @@ export const P6Ending: React.FC<{scene: SceneRange}> = ({scene}) => { } return s.from + s.durationInFrames - scene.from; }; + /** 某句在本场景内的起始帧(局部坐标) */ + const at = (id: string) => { + const s = scene.sentences.find((x) => x.id === id); + if (!s) { + throw new Error(`at: 未找到句 id ${id}`); + } + return s.from - scene.from; + }; + const winB2 = w('p6-06a', 'p6-06d'); return ( - + = ({scene}) => { accent={theme.exp} /> - + + + + + + + - + - + + + + diff --git a/media/self-evolving-coding-agents-video/video/src/scenes/P2FiveObjects.tsx b/media/self-evolving-coding-agents-video/video/src/scenes/P2FiveObjects.tsx index 09f62eae..09a39afb 100644 --- a/media/self-evolving-coding-agents-video/video/src/scenes/P2FiveObjects.tsx +++ b/media/self-evolving-coding-agents-video/video/src/scenes/P2FiveObjects.tsx @@ -100,15 +100,20 @@ const CornerBadge: React.FC<{text: string; color?: string}> = ({text, color = th ); /** 2-B 器官① SICA:agent.py diff + 分数翻牌(SWE-bench Verified 0.17→0.53,arXiv:2504.15228 真实数字) - * 翻牌/保留徽章按句 id 边界驱动:p2-06 讲 SICA(diff 渲染 + 翻牌起)、p2-07「分数涨了就留下」(徽章) */ + * 翻牌/保留徽章/双仪表按句 id 边界驱动:p2-06 讲 SICA(diff 渲染 + 翻牌起)、p2-07「分数涨了就留下」(徽章)、 + * p2-07b「还要看花的钱、跑的时间」(成本/时长双仪表点亮,§4.2 选择信号 = benchmark + cost + runtime) */ const SicaDiff: React.FC<{ sicaFrom: number; // p2-06 相对本 beat 的起始帧 keepFrom: number; // p2-07 相对本 beat 的起始帧 -}> = ({sicaFrom, keepFrom}) => { + metersFrom: number; // p2-07b 相对本 beat 的起始帧 +}> = ({sicaFrom, keepFrom, metersFrom}) => { const frame = useCurrentFrame(); const oldScore = 0.17; const newScore = interpolate(frame, [sicaFrom, sicaFrom + 60], [0.17, 0.53], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'}); const keep = interpolate(frame, [keepFrom, keepFrom + 20], [0, 1], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'}); + const meters = interpolate(frame, [metersFrom, metersFrom + 18], [0, 1], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'}); + // p2-07b 后数字轻微脉冲强调(幅度小、不喧宾) + const pulse = meters >= 1 ? 1 + Math.sin((frame - metersFrom) * 0.12) * 0.02 : 1; const diffF = frame - sicaFrom; return ( @@ -140,7 +145,15 @@ const SicaDiff: React.FC<{
SWE-bench Verified 通过率
-
oldScore ? theme.ok : theme.text}}> +
oldScore ? theme.ok : theme.text, + transform: `scale(${pulse})`, + }} + > {newScore.toFixed(2)}
✓ 保留这一版
+ {/* p2-07b 双仪表:成本 / 运行时长(选择信号的另两维) */} +
+ {[ + {label: '成本 ¥', val: '达标'}, + {label: '时长 ⏱', val: '达标'}, + ].map((m, i) => ( +
+ + {m.label} +
+ ))} +
@@ -958,8 +997,8 @@ const P2Wrap: React.FC = () => ( export const P2FiveObjects: React.FC<{scene: SceneRange}> = ({scene}) => { const w = (fromId: string, toId?: string) => beatWindow(scene.sentences, scene.from, fromId, toId); - // 2-B beat 内的句边界(相对帧):diff 渲染/翻牌与保留徽章随口播切换 - const sicaBeat = w('p2-03', 'p2-07'); + // 2-B beat 内的句边界(相对帧):diff 渲染/翻牌/保留徽章/双仪表随口播切换 + const sicaBeat = w('p2-03', 'p2-07b'); const rel = (id: string, beat: {from: number}) => beatWindow(scene.sentences, scene.from, id).from - beat.from; return ( @@ -967,7 +1006,7 @@ export const P2FiveObjects: React.FC<{scene: SceneRange}> = ({scene}) => { - + diff --git a/media/self-evolving-coding-agents-video/video/src/scenes/P3WhenEvidence.tsx b/media/self-evolving-coding-agents-video/video/src/scenes/P3WhenEvidence.tsx index ac7d5c3f..2b79dc59 100644 --- a/media/self-evolving-coding-agents-video/video/src/scenes/P3WhenEvidence.tsx +++ b/media/self-evolving-coding-agents-video/video/src/scenes/P3WhenEvidence.tsx @@ -271,13 +271,15 @@ const TapeToCards: React.FC = () => { ); }; -/** 3-F 3×3 矩阵 */ -const Matrix3x3: React.FC = () => { +/** 3-F 3×3 矩阵(v3:p3-25b 后一条绿色斜线光带扫过——Table 2 结构规律可视化) */ +const Matrix3x3: React.FC<{diagonalFrom: number}> = ({diagonalFrom}) => { const frame = useCurrentFrame(); const lit = Math.floor(frame / 7); const times = ['干活时', '下班后', '攒批换代']; const evidences = ['结果', '环境反馈', '轨迹']; const glowIn = interpolate(frame, [190, 220], [0, 1], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'}); + // 斜线光带:从矩阵左上往右下扫掠(覆盖 工作流行→当场、记忆行→复盘、模型行→攒批 的对角带) + const diag = interpolate(frame, [diagonalFrom, diagonalFrom + 40], [0, 1], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'}); return (
@@ -318,6 +320,30 @@ const Matrix3x3: React.FC = () => { ))}
+ {/* 斜线光带:SVG 覆盖层,pathLength 归一化描边(红线 3:不与像素 dasharray 混用) */} + {diag > 0 && ( + + + + )}
{ export const P3WhenEvidence: React.FC<{scene: SceneRange}> = ({scene}) => { const w = (fromId: string, toId?: string) => beatWindow(scene.sentences, scene.from, fromId, toId); + const matrixBeat = w('p3-23', 'p3-27'); return ( @@ -375,8 +402,8 @@ export const P3WhenEvidence: React.FC<{scene: SceneRange}> = ({scene}) => { - - + + diff --git a/media/self-evolving-coding-agents-video/video/src/scenes/P4Eval.tsx b/media/self-evolving-coding-agents-video/video/src/scenes/P4Eval.tsx index 30b3776c..a77f9ed9 100644 --- a/media/self-evolving-coding-agents-video/video/src/scenes/P4Eval.tsx +++ b/media/self-evolving-coding-agents-video/video/src/scenes/P4Eval.tsx @@ -221,14 +221,17 @@ const FiveSuspects: React.FC = () => { ); }; -/** 4-E 六维雷达 */ +/** 4-E 六维雷达(v3:数值轨迹线 + 当前展开轴辉光) */ const Radar: React.FC = () => { const frame = useCurrentFrame(); const axes = ['正确性', '成本', 'token', '步数', '迁移', '稳定']; + const target = [0.9, 0.62, 0.7, 0.55, 0.48, 0.6]; const R = 210; const cx = 420; const cy = 300; - const values = axes.map((_, i) => interpolate(frame, [i * 12, i * 12 + 20], [0, [0.9, 0.62, 0.7, 0.55, 0.48, 0.6][i]], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'})); + const values = axes.map((_, i) => interpolate(frame, [i * 12, i * 12 + 20], [0, target[i]], {extrapolateLeft: 'clamp', extrapolateRight: 'clamp'})); + // 当前正在展开的轴(辉光跟随) + const activeAxis = Math.min(axes.length - 1, Math.floor(frame / 12)); const pt = (i: number, r: number) => { const a = (-90 + (i / axes.length) * 360) * (Math.PI / 180); return [cx + Math.cos(a) * r, cy + Math.sin(a) * r]; @@ -248,7 +251,36 @@ const Radar: React.FC = () => { ))} {axes.map((_, i) => { const [x, y] = pt(i, R); - return ; + const active = i === activeAxis && values[i] < target[i]; + return ( + + ); + })} + {/* 数值轨迹点 + 数值标注(轴展开完成后浮现) */} + {axes.map((a, i) => { + const [x, y] = pt(i, values[i] * R); + const done = values[i] >= target[i]; + const [lx, ly] = pt(i, values[i] * R + 30); + return ( + + + {done && ( + + {(target[i] * 100).toFixed(0)} + + )} + + ); })} {axes.map((a, i) => { diff --git a/media/self-improving-agents-video/video/src/scenes/P3Gear.tsx b/media/self-improving-agents-video/video/src/scenes/P3Gear.tsx index bceeaa0d..fdd4520a 100644 --- a/media/self-improving-agents-video/video/src/scenes/P3Gear.tsx +++ b/media/self-improving-agents-video/video/src/scenes/P3Gear.tsx @@ -869,10 +869,12 @@ const Pixel: React.FC<{x: number; y: number; s: number; fill: string; opacity?: opacity = 1, }) => ; -/** 3-G:方块机器人对树写代码(p3-32)→ 砍树程序 v1 卡 ✓(p3-33)→ 存入技能库书架(p3-33 后半)→ 再遇树秒调用(p3-34) */ +/** 3-G:方块机器人对树写代码(p3-32)→ 砍树程序 v1 卡 ✓(p3-33)→ 存入技能库书架(p3-33 后半)→ 再遇树秒调用(p3-34) + * v3:p3-34b/c 技能库书架下方翻出金句条——「技能 = 打包保存的一次自我升级」(锚 §3.2 Skill 定义) */ const VoyagerScene: React.FC<{at: (id: string) => number}> = ({at}) => { const frame = useCurrentFrame(); const {fps} = useVideoConfig(); + const t34b = at('p3-34b'); const enter = spring({frame, fps, config: {damping: 200}}); const t32 = at('p3-32'); const t33 = at('p3-33'); @@ -1036,6 +1038,28 @@ const VoyagerScene: React.FC<{at: (id: string) => number}> = ({at}) => { > 自己写代码 → 调试通过 → 存技能库 → 越玩越强
+ {/* v3:p3-34b/c 金句条(书架下方翻出,衬线体;红线 2:底部角标 bottom≥150 已满足——此处为内容条非角标,置于流程条上方) */} +
+ 技能,就是把一次自我升级打包保存,随取随用 +
); }; @@ -1822,7 +1846,7 @@ export const P3Gear: React.FC<{scene: SceneRange}> = ({scene}) => { - + diff --git a/media/self-improving-agents-video/video/src/scenes/P5Ending.tsx b/media/self-improving-agents-video/video/src/scenes/P5Ending.tsx index e4b6d622..ccc332cf 100644 --- a/media/self-improving-agents-video/video/src/scenes/P5Ending.tsx +++ b/media/self-improving-agents-video/video/src/scenes/P5Ending.tsx @@ -978,8 +978,273 @@ const SmartDoor: React.FC<{askAt: number; safeAt: number}> = ({askAt, safeAt}) = ); }; -/* ------------------------------ 5-F 原文卡 ------------------------------ - * p5-22 论文引用卡 → p5-23 arXiv 链接 + 推荐读原文 → p5-24 下期再见 + 渐黑收尾。 +/* ------------------------------ 5-F 活地图(v3 新增) ------------------------------ + * p5-22a..22d:官方工程站点的收录统计——三色计数条并行生长(蓝 77 / 橙 176 / 灰 59), + * 数字 counter 滚动,随后合拢成环形统计图;橙段最长 = 「装备最火」的定量印证。 + * 角标注明信源等级(官方工程站点统计,非论文正文数字)。 + */ +const LivingMap: React.FC<{countAt: number; ringAt: number; insightAt: number}> = ({countAt, ringAt, insightAt}) => { + const frame = useCurrentFrame(); + const {fps} = useVideoConfig(); + const bars = [ + {label: '改大脑 θ', en: 'FM improvement', n: 77, color: theme.brain, deep: theme.brainDeep}, + {label: '改装备 Σ', en: 'Scaffolding improvement', n: 176, color: theme.gear, deep: theme.gearDeep}, + {label: '评测', en: 'Evaluation & Benchmarking', n: 59, color: theme.dim, deep: '#2A2F3A'}, + ]; + const total = 312; + const grow = ci(frame, countAt, countAt + 42); + const ring = ci(frame, ringAt, ringAt + 36); + const insight = ci(frame, insightAt, insightAt + 16); + const orangePulse = insight > 0 ? 0.85 + 0.15 * Math.sin(frame * 0.1) : 1; + // 环形图几何(viewBox 360x360,中心 180,180,半径 110;蓝从顶部顺时针、橙紧随、灰收尾) + const R = 110; + const C = 2 * Math.PI * R; + const segs = [77 / total, 176 / total, 59 / total]; + const offsets = [0, segs[0], segs[0] + segs[1]]; + const enters = spring({frame, fps, config: {damping: 200}}); + return ( + + {/* 左:三色计数条 */} +
+ {bars.map((b, i) => { + const v = Math.round(b.n * ci(frame, countAt + i * 10, countAt + i * 10 + 36)); + return ( +
+
+
+ {b.label} {b.en} +
+
{v}
+
+
+
0 ? `0 0 18px ${b.color}` : 'none', + opacity: i === 1 ? orangePulse : 1, + }} + /> +
+
+ ); + })} + +
+ 合计 {Math.round(total * grow)} 项收录 +
+
+
+ + {/* 右:环形统计图合拢 */} + + + {bars.map((b, i) => ( + 0 ? 46 : 40} + strokeLinecap="butt" + pathLength={1} + strokeDasharray={`${segs[i] * ring} ${1 - segs[i] * ring}`} + strokeDashoffset={-offsets[i]} + transform="rotate(-90 180 180)" + opacity={i === 1 ? orangePulse : 1} + style={i === 1 && insight > 0 ? {filter: `drop-shadow(0 0 10px ${b.color})`} : undefined} + /> + ))} + + {Math.round(total * Math.max(grow, ring))} + + + curated entries + + + + {/* p5-22d 洞察行:橙条两倍多 */} + +
+ 装备条目数 ≈ 大脑的 2.3 倍 —— 「最火的方向」就在这组数字里 +
+
+ + {/* 信源等级角标(bottom≥150 避字幕条) */} +
+ living research map · 官方工程站点统计(2026-08) +
+ + ); +}; + +/* ------------------------------ 5-G 敲门砖墙(v3 新增) ------------------------------ + * p5-22e/f:站点 Quick-start 九篇论文卡片墙——3×3 交错飞入后按蓝/橙双色分拣重排(呼应 P1 分叉)。 + */ +const QuickStartWall: React.FC<{sortAt: number}> = ({sortAt}) => { + const frame = useCurrentFrame(); + const {fps} = useVideoConfig(); + const cards = [ + {t: 'Self-Instruct', side: 0}, + {t: 'Constitutional AI', side: 0}, + {t: 'WebRL', side: 0}, + {t: 'Web Agents with\nWorld Models', side: 0}, + {t: 'Self-Refine', side: 1}, + {t: 'TextGrad', side: 1}, + {t: 'MemoryBank', side: 1}, + {t: 'Voyager', side: 1}, + {t: 'Darwin Gödel\nMachine', side: 1}, + ]; + const sorted = ci(frame, sortAt, sortAt + 30); + return ( + +
+ 站点敲门砖 · 九篇上手清单 +
+ + {cards.map((c, i) => { + const col = i % 3; + const row = Math.floor(i / 3); + // 网格位置(未分拣) + const gx = 960 + (col - 1) * 400; + const gy = 420 + row * 180; + // 分拣目标位置(蓝左列 / 橙右列,竖排 5+4) + const blueIdx = cards.slice(0, i).filter((x) => x.side === 0).length; + const blueRow = c.side === 0 ? blueIdx : 0; + const orangeIdx = cards.slice(0, i).filter((x) => x.side === 1).length; + const orangeRow = c.side === 1 ? orangeIdx : 0; + const sx = c.side === 0 ? 620 : 1300; + const sy = 250 + (c.side === 0 ? blueRow : orangeRow) * 132; + const x = gx + (sx - gx) * sorted; + const y = gy + (sy - gy) * sorted; + const e = spring({frame: frame - 4 - i * 5, fps, config: {damping: 13}}); + const color = c.side === 0 ? theme.brain : theme.gear; + const deep = c.side === 0 ? theme.brainDeep : theme.gearDeep; + return ( +
+ {c.t} +
+ ); + })} + + {/* 分拣后出现两路标签 */} + +
+ 🧠 改大脑 +
+
+ 🧰 改装备 +
+
+ + +
+ 这期讲过的名字 · 都在上面 +
+
+
+ ); +}; + +/* ------------------------------ 5-H 原文卡 ------------------------------ + * p5-23 论文引用卡 → p5-24 下期再见 + 渐黑收尾(时长从末 beat 实时推导)。 */ const CitationBeat: React.FC<{recAt: number; byeAt: number; dur: number}> = ({recAt, byeAt, dur}) => { const frame = useCurrentFrame(); @@ -1068,7 +1333,9 @@ export const P5Ending: React.FC<{scene: SceneRange}> = ({scene}) => { const winC = w('p5-09', 'p5-14'); const winD = w('p5-15', 'p5-18'); const winE = w('p5-19', 'p5-21'); - const winF = w('p5-22', 'p5-24'); + const winF = w('p5-22', 'p5-22d'); + const winG = w('p5-22e', 'p5-22f'); + const winH = w('p5-23', 'p5-24'); return ( @@ -1099,8 +1366,14 @@ export const P5Ending: React.FC<{scene: SceneRange}> = ({scene}) => { - - + + + + + + + + ); From 8be6bb17eade0e4ddf8be10087fbe500378cc132 Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Tue, 18 Aug 2026 00:36:45 +0800 Subject: [PATCH 07/11] =?UTF-8?q?feat(video):=20=E3=80=8AAI=20=E5=A6=82?= =?UTF-8?q?=E4=BD=95=E8=87=AA=E5=B7=B1=E5=8F=98=E5=BC=BA=EF=BC=9F=E3=80=8B?= =?UTF-8?q?=E5=87=BA=E9=A2=98=E5=BE=AA=E7=8E=AF=E5=9B=BE=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E6=B5=81=E5=85=89=E5=B7=A1=E6=B8=B8=E4=B8=8E=E6=B8=B8=E6=A0=87?= =?UTF-8?q?=E8=BE=89=E5=85=89;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - QuestionLoop 活动段补 pathLength 归一化流光虚线(沿线巡游)与动点 drop-shadow 辉光,节点点亮感更强;红线 3 合规(不与像素 dasharray 混用)。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- .../video/src/scenes/P2Brain.tsx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/media/self-improving-agents-video/video/src/scenes/P2Brain.tsx b/media/self-improving-agents-video/video/src/scenes/P2Brain.tsx index be0a0a57..40a259cc 100644 --- a/media/self-improving-agents-video/video/src/scenes/P2Brain.tsx +++ b/media/self-improving-agents-video/video/src/scenes/P2Brain.tsx @@ -192,7 +192,21 @@ const QuestionLoop: React.FC<{step: number; skew?: number; danger?: boolean}> = strokeWidth={active ? 3 : 1.5} opacity={active ? 0.95 : 0.35} /> - {active ? : null} + {/* v3:活动段流光虚线巡游(pathLength 归一化) */} + {active ? ( + + ) : null} + {active ? : null} ); })} From 04bf7034556ed0799d5097fab7c550521e915d93 Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Tue, 18 Aug 2026 00:38:13 +0800 Subject: [PATCH 08/11] =?UTF-8?q?docs(video):=20=E4=B8=89=E9=9B=86?= =?UTF-8?q?=E5=85=8B=E9=9A=86=E9=85=8D=E9=9F=B3=E8=AF=B4=E6=98=8E=E4=B8=8E?= =?UTF-8?q?=E7=9F=A5=E8=AF=86=E5=9C=B0=E5=9B=BE=E5=90=8C=E6=AD=A5;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 三集 README:形态行改「本人音色克隆配音(IndexTTS-2.5,passionate 激情风格)」并注明可切回;复现流水线第 2 步换 indextts 命令(含服务启动指引、样本不入库说明、断点续跑提示);许可节补 bilibili 模型许可与本人自愿克隆声明; - knowledge-map 管线条目同步:Stage ① 含站点信源补充、风格列表加激情、三集升级波与 upgrade-2026-08.md 审计文档链接; - CHANGELOG Unreleased 补三集内容升级条目与 num-beams 提速条目。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- CHANGELOG.md | 2 ++ docs/.agents/knowledge-map.md | 2 +- media/experience-era-agents-video/README.md | 11 +++++++---- media/self-evolving-coding-agents-video/README.md | 11 +++++++---- media/self-improving-agents-video/README.md | 13 ++++++++----- 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 111075a9..71eb5ea3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,9 @@ ### Added +- **自进化系列三集科普视频内容升级与本人音色克隆配音**:三集([《AI 如何自己变强?》](media/self-improving-agents-video/README.md) v3 / [《上线之后,AI 才开始上学》](media/experience-era-agents-video/README.md) v2 / [《会写代码的 AI,开始给自己写代码》](media/self-evolving-coding-agents-video/README.md) v3)统一换用本人音色克隆配音(IndexTTS-2.5 `passionate` 激情风格,me-1.wav 样本经 RMS 预筛裁剪);源论文第二遍重读校准(三集全部断言零事实漂移)+ 官方工程站点信源补充(ep1 312 条收录统计/九篇敲门砖→P5 活地图+卡片墙镜;ep2 经验编译器闭环/Gen3 适应面语义/SIP-Bench 四指标/111 篇×9 章→6-B2 闭环复盘+6-F 清单卡镜;ep3 无站点,SICA 三选择信号+Table 2 斜线规律两句锚定);每集新增 `research/upgrade-2026-08.md` 审计文档(校准审计表+句级 delta+双重校验 delta RISKY/REWRITE=0+G2 验证记录);动画增强(计数器滚动/环形图合拢/双色分拣重排/青紫双速差流光/斜线光带扫掠/检查点卡+四仪表/数值轨迹雷达/流光巡游,全部 skill-06 四红线合规)。 - **科普视频管线新增「激情」配音风格预设与官方工程站点信源补充规范**:`media/pipeline/scripts/tts.py` 的 IndexTTS 风格预设表新增 `passionate`(充满激情与轻快:happy 0.70 主载高唤醒正价 + surprised 0.20 跳跃感 + calm 0.10 锚定咬字,有效和 1.00×0.7=0.70 ≤ 0.8 上限,语速 0.97 护密集技术句清晰度),`--list-styles` 与 [VOICE-CLONING.md](media/pipeline/VOICE-CLONING.md) §四 同步收录并给出科普长视频推荐位;[skills/01-paper-extraction.md](media/pipeline/skills/01-paper-extraction.md) 扩展「官方工程站点信源补充」纪律——只收事实性内容、逐字引用+URL+访问日期、落 `paper-notes.md` 末尾独立「信源补充」大节并与论文正文物理隔离、严禁下载/嵌入站点图片(概念转文字规格供 Remotion 代码动画重建)、站点信源单集专属不跨集。 +- **IndexTTS 推理束搜索宽度旋钮(`--num-beams`,长跑提速主开关)**:服务端 `tts_server.py` 请求模型与推理透传 num_beams(1–5),客户端 `tts.py` 新增 `--num-beams`(默认 1);根因为 MPS fp32 实测每句墙钟 RTF 40–58(上游库内部 num_beams=3 使 GPT 段耗时按束宽线性放大),降为 1 束后 RTF≈12–15(采样生成下听感差异可忽略);[VOICE-CLONING.md](media/pipeline/VOICE-CLONING.md) §4.3b 沉淀实测数据并修正原「每句 5–30 秒」的失实估计(整集实际数小时,需 nohup 后台+断点续跑)。 ### Fixed diff --git a/docs/.agents/knowledge-map.md b/docs/.agents/knowledge-map.md index 4d38963e..2188129a 100644 --- a/docs/.agents/knowledge-map.md +++ b/docs/.agents/knowledge-map.md @@ -71,5 +71,5 @@ - [经验时代的自驱迭代进化智能体调研](../research/self-evolution/140-experience-era-self-improvement.md) — 精读 88 页综述提炼 Harness 经验基础设施框架,对照 negentropy Routine 闭环诊断出两处根本断点(Judge 无历史锚点 ±20 振荡 / `decay_override` 死配置致经验记忆 7-8 天全灭 + 反馈链断),落地双支柱改进:证据锚定纵向评估(trajectory + progress_evidence + 量化振荡 opt-in)与经验记忆闭环补强(衰减修复 E / 检索反馈闭环 B / 写入去重准入 A / 失败教训结构化与注入 C-D) - [Skill 进化闭环 × 自我改进评测](../research/self-evolution/141-skills-evolution-and-si-measurement.md) — 综述 §3(Skills 三阶段 Evolution 缺口)/ §7(Meta-Evolving 三体制)/ §8(SI 六目标 + SIP-Bench + 反事实归因)映射到 negentropy:PR [#1038](https://github.com/ThreeFish-AI/negentropy/pull/1038) 落地 eval 四表 + held-out 双相门(decide_skill_shadow/canary)+ 反事实 Skill Influence Pattern + TargetHandler 抽象 + SkillTemplateHandler 闭环(GEPA 变异 prompt_template + active_version 发布),补 140 号未覆盖的 Skills/Meta/SI 度量框架 - [arXiv §5 科普视频制作包](../../video-package/README.md) — 基于 [141 号调研同源综述](../research/self-evolution/141-skills-evolution-and-si-measurement.md)(arXiv:2607.13104 §5 基座模型自我改进)的完整视频制作包:13:42 逐字稿(N0–N6 段落 ID 主键体系,4.7 字/秒自洽)+ 46 镜头分镜表(md/csv 双格式,822s 与逐字稿/动画三表对齐)+ 单文件 Canvas 动画 demo(1920×1080、8 场景 3B1B 风格、←/→/空格/R/1-8/H 快捷键、file:// 零依赖直开)+ 71 条事实核查表(引文 100% grep 验证命中论文原文、RISKY/REWRITE 双零、ANALOGY 类比显式登记) -- [科普视频制作 Pipeline(公共基建)](../../media/pipeline/README.md) — 全仓可复用的论文→视频九阶段流水线(精读提取/策划/逐字稿 SSOT/双重校验/分镜/TTS/Remotion/抽帧 QA/终渲):中心脚本三件套(`--project` 参数化)+ 每 Stage 代理提示词规格(skills/01–06:01–05 内容层 + 06 生产层 Remotion 实现)+ 新集脚手架清单与复用边界(Python 脚本集中 SSOT、Remotion 原语复制适配);作品:[《AI 如何自己变强?》](../../media/self-improving-agents-video/README.md)(Schmidhuber 综述 · 蓝/橙契约 · 6 幕)、[《上线之后,AI 才开始上学》](../../media/experience-era-agents-video/README.md)([140 号调研](../research/self-evolution/140-experience-era-self-improvement.md)同源清华×Frontis 综述 · 金/青/紫契约 · 7 幕 13.6 分钟)与 [《会写代码的 AI,开始给自己写代码》](../../media/self-evolving-coding-agents-video/README.md)(arXiv:2608.03392 NJUST×NJU 综述 · 终端绿/洋红契约 · 7 幕 14.7 分钟,五对象×时机证据×可信进化,论文笔记由 8 并行代理逐章精读产出);配音支持用自己的声音克隆(轻快/自信/正能量风格,见 [VOICE-CLONING.md](../../media/pipeline/VOICE-CLONING.md)) +- [科普视频制作 Pipeline(公共基建)](../../media/pipeline/README.md) — 全仓可复用的论文→视频九阶段流水线(精读提取含官方工程站点信源补充/策划/逐字稿 SSOT/双重校验/分镜/TTS/Remotion/抽帧 QA/终渲):中心脚本三件套(`--project` 参数化)+ 每 Stage 代理提示词规格(skills/01–06:01–05 内容层 + 06 生产层 Remotion 实现)+ 新集脚手架清单与复用边界(Python 脚本集中 SSOT、Remotion 原语复制适配);作品:[《AI 如何自己变强?》](../../media/self-improving-agents-video/README.md)(Schmidhuber 综述 · 蓝/橙契约 · 6 幕)、[《上线之后,AI 才开始上学》](../../media/experience-era-agents-video/README.md)([140 号调研](../research/self-evolution/140-experience-era-self-improvement.md)同源清华×Frontis 综述 · 金/青/紫契约 · 7 幕 13.6 分钟)与 [《会写代码的 AI,开始给自己写代码》](../../media/self-evolving-coding-agents-video/README.md)(arXiv:2608.03392 NJUST×NJU 综述 · 终端绿/洋红契约 · 7 幕 14.7 分钟,五对象×时机证据×可信进化,论文笔记由 8 并行代理逐章精读产出);配音支持用自己的声音克隆(激情/轻快/自信/正能量风格,见 [VOICE-CLONING.md](../../media/pipeline/VOICE-CLONING.md);2026-08 三集统一换用本人音色 passionate 风格 + 内容升级审计文档 [upgrade-2026-08.md](../../media/self-improving-agents-video/research/upgrade-2026-08.md) 各集一份,站点信源补充规范沉淀于 skills/01) - [自进化 Agents Team 方案(Phase 3 记忆检索面已落地)](../concepts/design/self-evolving-agents.md) — 四层自进化架构:本次落地 `engine/evolution/` 子系统(GEPA proposer + 状态机 + decision 护栏)并在记忆检索权重面接通 propose→shadow→canary→promote/rollback 全闭环(迁移 0081 + evolution_inspector),默认全关灰度;agent/skill/knowledge 面、Phase 1 tool_invocations 遥测、eval 四表留后续 diff --git a/media/experience-era-agents-video/README.md b/media/experience-era-agents-video/README.md index 5fc4b851..91e79aba 100644 --- a/media/experience-era-agents-video/README.md +++ b/media/experience-era-agents-video/README.md @@ -1,7 +1,8 @@ # 《上线之后,AI 才开始上学》科普视频工程 > 基于 Che Jiang, Jincheng Zhong, Yu Fu, *et al.*, "Self-Improving Agents in the Era of Experience: A Survey of Self- to Meta-Evolution," *Frontis.AI / Tsinghua University*, Jun. 2026(88 页综述,无公开 arXiv 号)的动效图解式科普视频(B 站/YouTube,约 13.6 分钟)。 -> 形态:AI 配音(edge-tts)+ Remotion 代码动画,无真人出镜。 +> 形态:**本人音色克隆配音**(IndexTTS-2.5,passionate 激情风格)+ Remotion 代码动画,无真人出镜。 +> (v3 前为 edge-tts 预置音色,两种引擎 manifest 契约一致,可随时切回。) > 与上一集《AI 如何自己变强?》([../self-improving-agents-video/](../self-improving-agents-video/README.md),Schmidhuber 团队综述)互补:上集讲「自我进化改什么」,本集讲「部署之后经验怎么攒」;片尾互相引用。 ## 目录结构 @@ -23,8 +24,10 @@ # 1. 改稿后重建逐句 JSON uv run --no-project scripts/build_narration.py -# 2. 合成配音(增量幂等;首跑约 3-5 分钟,需网络) -uv run --no-project --with edge-tts --with mutagen scripts/tts.py +# 2. 合成配音(本人音色克隆,增量幂等;需先启动 IndexTTS 服务,见 ../../pipeline/VOICE-CLONING.md) +uv run --no-project --with mutagen scripts/tts.py --engine indextts \ + --ref <仓库绝对路径>/media/pipeline/voices/me-1.wav --style passionate +# (声音样本不入库:me-1.wav 需从本人录音经 prepare_ref.py 裁剪生成;整集约数小时,断点续跑) # 3. 预览 cd video && pnpm install --ignore-workspace && pnpm dev @@ -55,4 +58,4 @@ cd video && pnpm run render # -> ../out/final.mp4 ## 许可注意 -Remotion 对超过 3 人的公司需商业授权(个人/小团队免费);若本视频转为公司用途,请评估许可或迁移 MIT 协议的 Motion Canvas。配音来自 edge-tts(微软在线语音),发布前请自行确认平台对合成语音的标注要求。 +Remotion 对超过 3 人的公司需商业授权(个人/小团队免费);若本视频转为公司用途,请评估许可或迁移 MIT 协议的 Motion Canvas。配音为**本人声音的自愿克隆**(IndexTTS-2.5,按 bilibili 模型使用许可:个人/研究用途可用,商用需联系 indexspeech@bilibili.com;克隆他人声音须获本人书面同意,详见 [../../pipeline/VOICE-CLONING.md](../../pipeline/VOICE-CLONING.md) §八)。发布前请自行确认平台对合成语音的标注要求。 diff --git a/media/self-evolving-coding-agents-video/README.md b/media/self-evolving-coding-agents-video/README.md index f111fe15..0e723c9c 100644 --- a/media/self-evolving-coding-agents-video/README.md +++ b/media/self-evolving-coding-agents-video/README.md @@ -1,7 +1,8 @@ # 《会写代码的 AI,开始给自己写代码》科普视频工程 > 基于 H. Zhou, H. Hu, Y. Shang, Q. Zhang, "Self-Evolving Coding Agents: A Survey," arXiv:2608.03392, Aug. 2026(南京理工大学 × 南京大学综述)的动效图解式科普视频(B 站/YouTube,目标 14.5–15.5 分钟)。 -> 形态:AI 配音(edge-tts)+ Remotion 代码动画,无真人出镜。 +> 形态:**本人音色克隆配音**(IndexTTS-2.5,passionate 激情风格)+ Remotion 代码动画,无真人出镜。 +> (v3 前为 edge-tts 预置音色,两种引擎 manifest 契约一致,可随时切回。) > 系列第三集(各自独立成片):第一集《AI 如何自己变强?》([../self-improving-agents-video/](../self-improving-agents-video/README.md),通用·自我进化改什么)→ 第二集《上线之后,AI 才开始上学》([../experience-era-agents-video/](../experience-era-agents-video/README.md),通用·部署后经验怎么攒)→ 本集**领域深潜**:自进化最先真实落地的田野——代码(可执行反馈让进化可测量)。片尾三卡回顾。 ## 目录结构 @@ -23,8 +24,10 @@ # 1. 改稿后重建逐句 JSON uv run --no-project scripts/build_narration.py -# 2. 合成配音(增量幂等;首跑约 3-5 分钟,需网络) -uv run --no-project --with edge-tts --with mutagen scripts/tts.py +# 2. 合成配音(本人音色克隆,增量幂等;需先启动 IndexTTS 服务,见 ../../pipeline/VOICE-CLONING.md) +uv run --no-project --with mutagen scripts/tts.py --engine indextts \ + --ref <仓库绝对路径>/media/pipeline/voices/me-1.wav --style passionate +# (声音样本不入库:me-1.wav 需从本人录音经 prepare_ref.py 裁剪生成;整集约数小时,断点续跑) # 3. 预览(工具一律 ./node_modules/.bin/ 直调,防 pnpm run 污染根 workspace node_modules) cd video && pnpm install --ignore-workspace && ./node_modules/.bin/remotion studio @@ -55,4 +58,4 @@ cd video && ./node_modules/.bin/remotion render Main ../out/final.mp4 ## 许可注意 -Remotion 对超过 3 人的公司需商业授权(个人/小团队免费);若本视频转为公司用途,请评估许可或迁移 MIT 协议的 Motion Canvas。配音来自 edge-tts(微软在线语音),发布前请自行确认平台对合成语音的标注要求。 +Remotion 对超过 3 人的公司需商业授权(个人/小团队免费);若本视频转为公司用途,请评估许可或迁移 MIT 协议的 Motion Canvas。配音为**本人声音的自愿克隆**(IndexTTS-2.5,按 bilibili 模型使用许可:个人/研究用途可用,商用需联系 indexspeech@bilibili.com;克隆他人声音须获本人书面同意,详见 [../../pipeline/VOICE-CLONING.md](../../pipeline/VOICE-CLONING.md) §八)。发布前请自行确认平台对合成语音的标注要求。 diff --git a/media/self-improving-agents-video/README.md b/media/self-improving-agents-video/README.md index 94cb437c..06e86226 100644 --- a/media/self-improving-agents-video/README.md +++ b/media/self-improving-agents-video/README.md @@ -1,7 +1,8 @@ # 《AI 如何自己变强?》科普视频工程 > 基于 [arXiv:2607.13104《Self-Improvements in Modern Agentic Systems: A Survey》](https://arxiv.org/html/2607.13104v1) 的动效图解式科普视频(B 站/YouTube,约 17 分钟)。 -> 形态:AI 配音(edge-tts)+ Remotion 代码动画,无真人出镜。 +> 形态:**本人音色克隆配音**(IndexTTS-2.5,passionate 激情风格)+ Remotion 代码动画,无真人出镜。 +> (v3 前为 edge-tts 预置音色,两种引擎 manifest 契约一致,可随时切回。) ## 目录结构 @@ -13,7 +14,7 @@ | `script/narration.json` | 派生物:拆句结果,供 TTS 与字幕消费(勿手改) | | `script/storyboard.md` | 分镜表:镜号 ↔ 句 id 区间 ↔ 画面动效(场景组件实现规格) | | `scripts/build_narration.py` | narration.md → narration.json | -| `scripts/tts.py` | 逐句 edge-tts 合成 + 时长 manifest(幂等,文本不变跳过) | +| `scripts/tts.py` | 逐句配音合成 + 时长 manifest(幂等;indextts 本人克隆 / edge 预置双引擎) | | `scripts/qa_frames.py` | 按句 id 从渲染产物抽帧做视觉 QA | | `video/` | Remotion 工程(独立 pnpm 项目,`ignore-workspace` 与主仓隔离) | | `out/` | 渲染产物(gitignored) | @@ -24,8 +25,10 @@ # 1. 改稿后重建逐句 JSON uv run --no-project scripts/build_narration.py -# 2. 合成配音(增量;首跑约 3-5 分钟,需网络) -uv run --no-project --with edge-tts --with mutagen scripts/tts.py +# 2. 合成配音(本人音色克隆,增量幂等;需先启动 IndexTTS 服务,见 ../../pipeline/VOICE-CLONING.md) +uv run --no-project --with mutagen scripts/tts.py --engine indextts \ + --ref <仓库绝对路径>/media/pipeline/voices/me-1.wav --style passionate +# (声音样本不入库:me-1.wav 需从本人录音经 prepare_ref.py 裁剪生成;整集约数小时,断点续跑) # 3. 预览 cd video && pnpm install --ignore-workspace && pnpm dev @@ -52,4 +55,4 @@ cd video && pnpm run render # -> ../out/final.mp4 ## 许可注意 -Remotion 对超过 3 人的公司需商业授权(个人/小团队免费);若本视频转为公司用途,请评估许可或迁移 MIT 协议的 Motion Canvas。配音来自 edge-tts(微软在线语音),发布前请自行确认平台对合成语音的标注要求。 +Remotion 对超过 3 人的公司需商业授权(个人/小团队免费);若本视频转为公司用途,请评估许可或迁移 MIT 协议的 Motion Canvas。配音为**本人声音的自愿克隆**(IndexTTS-2.5,按 bilibili 模型使用许可:个人/研究用途可用,商用需联系 indexspeech@bilibili.com;克隆他人声音须获本人书面同意,详见 [../../pipeline/VOICE-CLONING.md](../../pipeline/VOICE-CLONING.md) §八)。发布前请自行确认平台对合成语音的标注要求。 From 89b239eb31b91382dd123405937861e4f28e480e Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Tue, 18 Aug 2026 02:12:27 +0800 Subject: [PATCH 09/11] =?UTF-8?q?fix(video):=20=E3=80=8A=E4=B8=8A=E7=BA=BF?= =?UTF-8?q?=E4=B9=8B=E5=90=8E=EF=BC=8CAI=20=E6=89=8D=E5=BC=80=E5=A7=8B?= =?UTF-8?q?=E4=B8=8A=E5=AD=A6=E3=80=8B1-G=20beat=20=E7=AA=97=E5=8F=A3?= =?UTF-8?q?=E5=BC=95=E7=94=A8=E7=AC=94=E8=AF=AF=E4=BF=AE=E6=AD=A3=EF=BC=88?= =?UTF-8?q?p1-26a=E2=86=92p1-26=EF=BC=89;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 预渲染全量引用校验发现 beatWindow('p1-22','p1-26a') 引用了不存在的句 id(实际新增句为 p1-25a,位于 p1-26 之前),运行时会抛「未找到句 id」阻断渲染;修正为 p1-26(窗口自然覆盖 p1-25a); - 三集组件引用 × narration.json 全量交叉校验通过(缺失均为零)。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- .../experience-era-agents-video/video/src/scenes/P1Anatomy.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/media/experience-era-agents-video/video/src/scenes/P1Anatomy.tsx b/media/experience-era-agents-video/video/src/scenes/P1Anatomy.tsx index 5b5863a1..c3a79801 100644 --- a/media/experience-era-agents-video/video/src/scenes/P1Anatomy.tsx +++ b/media/experience-era-agents-video/video/src/scenes/P1Anatomy.tsx @@ -495,7 +495,7 @@ const ThreeGens: React.FC<{gen3At: number}> = ({gen3At}) => { export const P1Anatomy: React.FC<{scene: SceneRange}> = ({scene}) => { const w = (fromId: string, toId?: string) => beatWindow(scene.sentences, scene.from, fromId, toId); - const winG = w('p1-22', 'p1-26a'); + const winG = w('p1-22', 'p1-26'); const at = (id: string) => { const s = scene.sentences.find((x) => x.id === id); if (!s) { From 3250a6398a49146d3da95a86e5ef7aa249a1e006 Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Tue, 18 Aug 2026 12:28:08 +0800 Subject: [PATCH 10/11] =?UTF-8?q?fix(tts):=20IndexTTS=20=E7=BC=93=E5=AD=98?= =?UTF-8?q?=E6=91=98=E8=A6=81=E7=BA=B3=E5=85=A5=20num=5Fbeams=20=E4=B8=94?= =?UTF-8?q?=E5=AE=9E=E6=B5=8B=20RTF=20=E5=8F=A3=E5=BE=84=E7=BB=9F=E4=B8=80?= =?UTF-8?q?;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - digest_indextts 补 num_beams 形参并入 SHA1 键:束宽改变合成结果,原先同文本切束宽(如按手册建议单句 --num-beams 3 重合成)会静默命中旧缓存拿回旧束宽音频,违背模块头「参数与文本未变则跳过」幂等契约;默认 1 时省略字段保持历史摘要格式,596 句存量缓存不失效(新旧摘要全等已验证); - VOICE-CLONING.md §4.3b/§五 beams=1 的 RTF 由 20–30 修正为实测 12–14:三集全量连续跑(596 句 / 40.2 分钟纯语音 / 8.5 小时墙钟)按集折算 11.9–14.2,与 CHANGELOG 的 12–15 一致;派生估算同步修正(5 秒句约 1–1.5 分钟、整集约 2.5–3.5 小时)。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- media/pipeline/VOICE-CLONING.md | 4 ++-- media/pipeline/scripts/tts.py | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/media/pipeline/VOICE-CLONING.md b/media/pipeline/VOICE-CLONING.md index f12671c9..3a2d9d99 100644 --- a/media/pipeline/VOICE-CLONING.md +++ b/media/pipeline/VOICE-CLONING.md @@ -136,7 +136,7 @@ uv run --no-project --with soundfile --with numpy \ ### 4.3b 束搜索宽度(--num-beams,速度主旋钮) -GPT 声码段的束搜索宽度,默认 **1**(上游库内部默认 3)。采样生成(`do_sample=True`)下 1 与 3 的听感差异可忽略,但 GPT 段耗时约按束宽线性放大。**MPS fp32 实测**(2026-08-18,M3 系列):每句墙钟 = GPT 束搜索 + 扩散声码 + BigVGAN,RTF(耗时/音频时长)约 40–58(beams=3)与 20–30(beams=1);整集(约 180–230 句)预计数小时,按句缓存可断点续跑。质量敏感的单句可 `--num-beams 3` 单独重合成。 +GPT 声码段的束搜索宽度,默认 **1**(上游库内部默认 3)。采样生成(`do_sample=True`)下 1 与 3 的听感差异可忽略,但 GPT 段耗时约按束宽线性放大。**MPS fp32 实测**(2026-08-18,M3 系列):每句墙钟 = GPT 束搜索 + 扩散声码 + BigVGAN,RTF(耗时/音频时长)约 40–58(beams=3);beams=1 下三集全量连续跑(596 句 / 40.2 分钟纯语音 / 8.5 小时墙钟)折算整集 RTF≈12–14;整集(约 180–230 句)约 2.5–3.5 小时,按句缓存可断点续跑。质量敏感的单句可 `--num-beams 3` 单独重合成。 ### 4.4 调参建议 @@ -159,7 +159,7 @@ cd video && pnpm run render:draft && pnpm run render ``` - 服务启动一次可服务多集;管线客户端不常驻模型; -- 每句墙钟与文本长度及束宽相关:MPS fp32 实测 RTF≈40–58(`--num-beams 3`)/ ≈20–30(默认 `--num-beams 1`),即 5 秒的句子约需 2–5 分钟;整集(约 180–230 句)预计 6–10 小时,建议 `nohup` 挂后台跑、按句缓存断点续跑(见 §六);长篇管线**不要**用默认 3 束逐句等待; +- 每句墙钟与文本长度及束宽相关:MPS fp32 实测 RTF≈40–58(`--num-beams 3`)/ ≈12–14(默认 `--num-beams 1`),即 5 秒的句子约需 1–1.5 分钟;整集(约 180–230 句)约 2.5–3.5 小时,建议 `nohup` 挂后台跑、按句缓存断点续跑(见 §六);长篇管线**不要**用默认 3 束逐句等待; - 引擎/风格/样本任一变化都会改写时长,合成后**必须重跑草渲**让时间轴重算; - 超长句(>120 token)服务端内部自动分段;极端长句推理可达数分钟。客户端并发为 1(与服务端串行推理对齐,避免排队时间计入超时),HTTP 超时 600s;万一超时——重跑即续传,无需干预。 diff --git a/media/pipeline/scripts/tts.py b/media/pipeline/scripts/tts.py index 00bb9569..641fc149 100644 --- a/media/pipeline/scripts/tts.py +++ b/media/pipeline/scripts/tts.py @@ -282,10 +282,13 @@ def digest_indextts( lang: str, engine_tag: str, text: str, + num_beams: int = 1, ) -> str: vec_str = ",".join(repr(x) for x in vec) if vec else "none" + # 束宽改变合成结果,须入键;默认 1 时省略字段——沿用历史摘要格式,存量缓存不失效 + beams_part = "" if num_beams == 1 else f"|beams={num_beams}" return hashlib.sha1( - f"indextts|{engine_tag}|{ref_sha1}|{lang}|{style}|{vec_str}|{alpha!r}|{df!r}|{text}".encode() + f"indextts|{engine_tag}|{ref_sha1}|{lang}|{style}|{vec_str}|{alpha!r}|{df!r}|{text}{beams_part}".encode() ).hexdigest() @@ -308,7 +311,7 @@ async def synth_indextts( sid, text = item["id"], item["text"] mp3 = out_dir / f"{sid}.mp3" meta = out_dir / f"{sid}.sha" - digest = digest_indextts(ref_sha1, style, vec, alpha, df, lang, engine_tag, text) + digest = digest_indextts(ref_sha1, style, vec, alpha, df, lang, engine_tag, text, num_beams) if ( not force From 13b90a796ce1ca114342bc1aa74e5658aedc9462 Mon Sep 17 00:00:00 2001 From: ThreeFish Date: Tue, 18 Aug 2026 12:28:23 +0800 Subject: [PATCH 11/11] =?UTF-8?q?fix(video):=20=E4=B8=89=E9=9B=86=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E5=88=86=E6=94=AF=E5=85=AD=E6=9D=A1=E8=AF=84=E5=AE=A1?= =?UTF-8?q?=E6=84=8F=E8=A7=81=E4=BF=AE=E5=A4=8D=EF=BC=88=E5=9D=90=E6=A0=87?= =?UTF-8?q?/=E7=AC=94=E8=AF=AF/=E6=AD=BB=E4=BB=A3=E7=A0=81=EF=BC=89;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - ep3 3-F 斜线光带终点坐标补入 2 处 10px grid gap(x2 815→835、y2 505→525):原式 250*2.5/170*2.5 漏算列/行间距,终点落在右下单元格左上角附近致光带收点可见偏斜(起点本就正确); - ep1 5-F 活地图清理死代码:环形图改 pathLength 归一化后 const C = 2πR 已无引用,bars 三条目的 deep 字段未被渲染使用,一并删除(三集 tsc --noEmit 全过); - ep2 分镜表 1-G 句区间 p1-22..26a→..26(新增句实为 p1-25a,id p1-26a 不存在,上 commit 89b239eb 已修组件同款笔误),upgrade-2026-08.md §四 验证记录同步更正; - ep2 README 版本号 v3→v2:本集升级为 v1→v2,「v3 前」系从另两集(v2→v3)复制串集。 🤖 Generated with [Claude Code](https://github.com/claude), [CodeX](https://openai.com), [Gemini](https://github.com/apps/gemini-code-assist) Co-Authored-By: Aurelius Huang --- media/experience-era-agents-video/README.md | 2 +- .../research/upgrade-2026-08.md | 2 +- media/experience-era-agents-video/script/storyboard.md | 2 +- .../video/src/scenes/P3WhenEvidence.tsx | 4 ++-- .../video/src/scenes/P5Ending.tsx | 7 +++---- 5 files changed, 8 insertions(+), 9 deletions(-) diff --git a/media/experience-era-agents-video/README.md b/media/experience-era-agents-video/README.md index 91e79aba..494acb8c 100644 --- a/media/experience-era-agents-video/README.md +++ b/media/experience-era-agents-video/README.md @@ -2,7 +2,7 @@ > 基于 Che Jiang, Jincheng Zhong, Yu Fu, *et al.*, "Self-Improving Agents in the Era of Experience: A Survey of Self- to Meta-Evolution," *Frontis.AI / Tsinghua University*, Jun. 2026(88 页综述,无公开 arXiv 号)的动效图解式科普视频(B 站/YouTube,约 13.6 分钟)。 > 形态:**本人音色克隆配音**(IndexTTS-2.5,passionate 激情风格)+ Remotion 代码动画,无真人出镜。 -> (v3 前为 edge-tts 预置音色,两种引擎 manifest 契约一致,可随时切回。) +> (v2 前为 edge-tts 预置音色,两种引擎 manifest 契约一致,可随时切回。) > 与上一集《AI 如何自己变强?》([../self-improving-agents-video/](../self-improving-agents-video/README.md),Schmidhuber 团队综述)互补:上集讲「自我进化改什么」,本集讲「部署之后经验怎么攒」;片尾互相引用。 ## 目录结构 diff --git a/media/experience-era-agents-video/research/upgrade-2026-08.md b/media/experience-era-agents-video/research/upgrade-2026-08.md index 847ee600..9711288d 100644 --- a/media/experience-era-agents-video/research/upgrade-2026-08.md +++ b/media/experience-era-agents-video/research/upgrade-2026-08.md @@ -51,4 +51,4 @@ RISKY = 0,REWRITE = 0。✓ - `build_narration.py` 重建通过(实测见执行日志)。 - 未触碰句 text 字节稳定:build 前后公共 id(172 个)text 全等 ✓。 -- storyboard 引用 id ⊆ narration id 集 ✓(1-G 扩 ..26a;P6 重排为 6-B/6-B2/6-C/6-D/6-E/6-F/6-G)。 +- storyboard 引用 id ⊆ narration id 集 ✓(1-G 扩至 p1-26、新增句为 p1-25a;P6 重排为 6-B/6-B2/6-C/6-D/6-E/6-F/6-G)。 diff --git a/media/experience-era-agents-video/script/storyboard.md b/media/experience-era-agents-video/script/storyboard.md index aa8088de..f0eeba93 100644 --- a/media/experience-era-agents-video/script/storyboard.md +++ b/media/experience-era-agents-video/script/storyboard.md @@ -24,7 +24,7 @@ | 1-D 便宜洞察 | p1-10..12 | 分屏对比:左侧改大脑=重型机械(慢/贵/锁定),右侧改工位=乐高快拆(青) | 分屏滑入 | | 1-E 原油汽油 | p1-13..18 | 金色提纯漏斗:左侧黑浊「trace 原始流水」倒入,四道工序环(过滤/压缩/归因/验证),滴出金色「经验 z」;角标 z_i=H(τ_i) | 漏斗流动 + 工序环逐个点亮 | | 1-F 快慢去路 | p1-19..21 | 金色经验球到分岔:上路青色箭头「改工位·快」直通工位;下路紫色箭头「写大脑·慢」缓慢沉入大脑 | 分岔流动 + 差速 | -| 1-G 三代史 | p1-22..26a | 横向时间轴 2021→2026:Gen1 任务环(图标:单环)→ Gen2 复用(图标:书架)→ Gen3 运行时(图标:齿轮房);p1-25a 时 Gen3 齿轮房上的「可改接口」小面板逐个亮起(适应面自进化);时间轴下方里程碑名(ReAct/Voyager/Claude Code) | 时间轴推进 + 图标弹跳 + Gen3 定格放大 + 接口面板点亮 | +| 1-G 三代史 | p1-22..26 | 横向时间轴 2021→2026:Gen1 任务环(图标:单环)→ Gen2 复用(图标:书架)→ Gen3 运行时(图标:齿轮房);p1-25a 时 Gen3 齿轮房上的「可改接口」小面板逐个亮起(适应面自进化);时间轴下方里程碑名(ReAct/Voyager/Claude Code) | 时间轴推进 + 图标弹跳 + Gen3 定格放大 + 接口面板点亮 | | 1-H 转场钩子 | p1-27..28 | 四条管道分叉预告图(金流分四路) | 管道延伸 | ## P2 经验的四个去处(约 4.5 分钟) diff --git a/media/self-evolving-coding-agents-video/video/src/scenes/P3WhenEvidence.tsx b/media/self-evolving-coding-agents-video/video/src/scenes/P3WhenEvidence.tsx index 2b79dc59..4e8403b9 100644 --- a/media/self-evolving-coding-agents-video/video/src/scenes/P3WhenEvidence.tsx +++ b/media/self-evolving-coding-agents-video/video/src/scenes/P3WhenEvidence.tsx @@ -331,8 +331,8 @@ const Matrix3x3: React.FC<{diagonalFrom: number}> = ({diagonalFrom}) => { const frame = useCurrentFrame(); const {fps} = useVideoConfig(); const bars = [ - {label: '改大脑 θ', en: 'FM improvement', n: 77, color: theme.brain, deep: theme.brainDeep}, - {label: '改装备 Σ', en: 'Scaffolding improvement', n: 176, color: theme.gear, deep: theme.gearDeep}, - {label: '评测', en: 'Evaluation & Benchmarking', n: 59, color: theme.dim, deep: '#2A2F3A'}, + {label: '改大脑 θ', en: 'FM improvement', n: 77, color: theme.brain}, + {label: '改装备 Σ', en: 'Scaffolding improvement', n: 176, color: theme.gear}, + {label: '评测', en: 'Evaluation & Benchmarking', n: 59, color: theme.dim}, ]; const total = 312; const grow = ci(frame, countAt, countAt + 42); @@ -998,7 +998,6 @@ const LivingMap: React.FC<{countAt: number; ringAt: number; insightAt: number}> const orangePulse = insight > 0 ? 0.85 + 0.15 * Math.sin(frame * 0.1) : 1; // 环形图几何(viewBox 360x360,中心 180,180,半径 110;蓝从顶部顺时针、橙紧随、灰收尾) const R = 110; - const C = 2 * Math.PI * R; const segs = [77 / total, 176 / total, 59 / total]; const offsets = [0, segs[0], segs[0] + segs[1]]; const enters = spring({frame, fps, config: {damping: 200}});