秋华点击器2.0
24.70M · 2026-02-09
这是"一天一个开源项目"系列的第16篇文章。今天带你了解的项目是 Code2Video(GitHub)。
在AI视频生成领域,大多数模型都是基于像素的文本到视频生成,虽然能产生视觉效果,但在教育场景中往往缺乏清晰度、连贯性和可重现性。Code2Video 提出了一个革命性的代码中心范式:使用可执行的 Manim 代码作为统一媒介,通过多智能体系统自动生成高质量的教学视频。无论是汉诺塔问题、大语言模型原理,还是傅里叶级数,都能通过代码自动生成清晰、美观、可重现的教育视频。
为什么选择这个项目?
Code2Video 是一个以代码为中心的智能体框架,用于从知识点生成高质量的教学视频。与基于像素的文本到视频模型不同,Code2Video 利用可执行的 Manim 代码来确保视频的清晰度、连贯性和可重现性。通过三智能体系统(Planner、Coder、Critic)的协同工作,自动将知识点转换为结构化的教学视频。
项目解决的核心问题:
面向的用户群体:
团队:Show Lab @ National University of Singapore
项目发展历程:
Code2Video 的核心作用是通过代码自动生成高质量的教学视频,主要功能包括:
Code2Video 适用于多种教育场景:
在线课程制作
教育内容创作
研究和评估
自动化内容生产
Code2Video 的安装需要几个步骤:
# 1. 克隆项目
git clone
cd Code2Video/src
# 2. 安装依赖
pip install -r requirements.txt
# 3. 安装 Manim Community v0.19.0
# 参考官方安装指南:
主要依赖:
manim:数学动画引擎(Manim Community v0.19.0)在 api_config.json 中配置 API 凭证:
{
"LLM_API": {
"provider": "anthropic", // 或其他 LLM 提供商
"api_key": "your-api-key-here",
"model": "claude-4-opus" // 推荐使用 Claude-4-Opus 获得最佳代码质量
},
"VLM_API": {
"provider": "google",
"api_key": "your-api-key-here",
"model": "gemini-2.5-pro-preview-05-06" // 用于布局和美学优化
},
"ICONFINDER_API_KEY": "your-iconfinder-api-key" // 可选,用于丰富视频图标
}
生成单个知识点的视频:
# 使用 run_agent_single.sh 脚本
sh run_agent_single.sh --knowledge_point "Linear transformations and matrices"
这个命令会:
CASES/TEST-single/ 目录# 生成单个知识点视频
sh run_agent_single.sh --knowledge_point "Hanoi Problem"
# 批量生成多个主题(使用 long_video_topics_list.json)
sh run_agent.sh
# 在 run_agent.sh 中可以配置的参数:
# - API: 指定使用的 LLM
# - FOLDER_PREFIX: 输出文件夹前缀(如 TEST-LIST)
# - MAX_CONCEPTS: 包含的概念数量(-1 表示全部)
# - PARALLEL_GROUP_NUM: 并行运行的组数
Code2Video 的核心特性包括:
代码中心范式
三智能体系统
MMMC 基准测试
多维度评估
模块化设计
高质量输出
与其他视频生成方法相比,Code2Video 的优势:
| 对比项 | Code2Video | 传统文本到视频模型 | 手动制作视频 |
|---|---|---|---|
| 清晰度 | 高(代码生成) | 中低(像素生成) | 高(人工控制) |
| 可重现性 | 完全可重现 | 不可重现 | 可重现但耗时 |
| 可调试性 | 可调试代码 | 不可调试 | 可编辑但复杂 |
| 生成速度 | 快(自动化) | 快 | 慢(人工制作) |
| 成本 | 低(API调用) | 中(计算资源) | 高(人力成本) |
| 一致性 | 高(代码控制) | 中低 | 取决于制作者 |
| 教育适用性 | 专门优化 | 通用但不够清晰 | 高质量但耗时 |
为什么选择 Code2Video?
Code2Video 的整体架构采用三智能体协同设计:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ Planner │────▶│ Coder │────▶│ Critic │
│ (故事板) │ │ (代码生成) │ │ (布局优化) │
└─────────────┘ └─────────────┘ └─────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────┐
│ Manim 代码执行和视频生成 │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────┐
│ 视频输出 │
└─────────────┘
核心流程:
Planner 负责将知识点扩展为详细的故事板:
功能:
实现方式:
Coder 负责根据故事板生成 Manim 代码:
功能:
实现方式:
Manim 代码示例:
# 生成的 Manim 代码示例(简化版)
from manim import *
class LinearTransformation(Scene):
def construct(self):
# 创建矩阵
matrix = Matrix([[2, 1], [1, 2]])
self.play(Create(matrix))
# 展示线性变换
vector = Arrow(ORIGIN, [1, 1, 0], buff=0)
self.play(Create(vector))
# 应用变换
transformed = matrix @ vector.get_end()
self.play(Transform(vector, Arrow(ORIGIN, transformed, buff=0)))
Critic 负责优化代码的布局和美学:
功能:
实现方式:
MMMC(Manim-based Multi-topic Multi-quality Code)是首个代码驱动视频生成的基准测试:
特点:
评估维度:
使用方式:
# 评估知识传递
python3 eval_TQ.py
# 评估美学和结构质量
python3 eval_AES.py
Code2Video 的核心创新是使用代码作为视频生成的统一媒介:
优势:
实现:
三智能体系统通过模块化设计实现协同工作:
Planner → Coder → Critic 流程:
# 简化的工作流程
def generate_video(knowledge_point):
# 1. Planner 生成故事板
storyboard = planner.expand(knowledge_point)
# 2. Coder 生成代码
manim_code = coder.generate(storyboard)
# 3. Critic 优化代码
optimized_code = critic.optimize(manim_code)
# 4. 执行代码生成视频
video = execute_manim(optimized_code)
return video
智能体间的信息传递:
Code2Video 使用精心设计的提示模板来指导智能体:
提示模板位置:prompts/ 目录
提示类型:
提示优化:
场景:在线教育平台需要为线性代数课程批量生成教学视频。
实现步骤:
# 1. 准备知识点列表(long_video_topics_list.json)
# 包含:线性变换、矩阵运算、特征值等主题
# 2. 配置批量生成脚本
sh run_agent.sh
# 3. 配置参数
# API: claude-4-opus
# FOLDER_PREFIX: LinearAlgebra-Course
# MAX_CONCEPTS: -1 # 生成所有概念
# PARALLEL_GROUP_NUM: 4 # 并行生成4个视频
效果:自动生成一系列风格统一、清晰美观的线性代数教学视频,大大减少人工制作时间。
场景:为"大语言模型原理"主题生成教学视频。
实现步骤:
# 生成单个知识点视频
sh run_agent_single.sh --knowledge_point "Large Language Model"
# 系统会自动:
# 1. Planner 分析LLM的核心概念(注意力机制、Transformer等)
# 2. Coder 生成展示LLM架构的Manim代码
# 3. Critic 优化布局,确保清晰度
# 4. 生成最终视频
效果:生成清晰展示LLM工作原理的视频,包括注意力机制的可视化、Transformer架构的动画等。
场景:为傅里叶级数生成教学视频。
实现步骤:
sh run_agent_single.sh --knowledge_point "Pure Fourier Series"
# 生成的视频会展示:
# - 傅里叶级数的数学公式
# - 不同频率分量的叠加过程
# - 从方波到正弦波的分解动画
效果:通过动画直观展示傅里叶级数的数学原理,帮助学生理解抽象概念。
场景:教育机构需要为多个学科生成教学视频。
实现步骤:
# 1. 准备多学科主题列表
# 数学、物理、计算机科学等117个主题
# 2. 批量生成
sh run_agent.sh
# 3. 使用并行处理加速
PARALLEL_GROUP_NUM=8 # 8个并行任务
效果:快速生成大量高质量教学视频,保持风格一致性,适合大规模在线课程制作。
Code2Video 使用提示模板来指导智能体,你可以自定义这些模板:
提示模板位置:prompts/ 目录
自定义 Planner 提示:
# prompts/planner_prompt.txt
你是一个教育视频规划专家。请为以下知识点创建详细的故事板:
知识点:{knowledge_point}
要求:
1. 分析知识点的核心概念
2. 规划视频结构(引言、主体、总结)
3. 确定需要展示的动画和可视化
4. 考虑教育视频的最佳实践
5. 参考3Blue1Brown的风格
请生成详细的故事板...
自定义 Coder 提示:
# prompts/coder_prompt.txt
你是一个Manim代码生成专家。请根据以下故事板生成Manim代码:
故事板:{storyboard}
要求:
1. 使用Manim Community v0.19.0语法
2. 代码要清晰、可读、可执行
3. 包含必要的动画和可视化
4. 遵循Manim最佳实践
请生成完整的Manim代码...
选择最佳 LLM:
{
"LLM_API": {
"provider": "anthropic",
"api_key": "your-key",
"model": "claude-4-opus", // 最佳代码质量
"temperature": 0.7, // 控制创造性
"max_tokens": 4000 // 控制输出长度
}
}
配置 VLM 用于 Critic:
{
"VLM_API": {
"provider": "google",
"api_key": "your-key",
"model": "gemini-2.5-pro-preview-05-06", // 最佳视觉理解
"temperature": 0.3 // 较低温度确保一致性
}
}
并行处理配置:
# 在 run_agent.sh 中配置
PARALLEL_GROUP_NUM=8 # 根据CPU核心数调整
# 限制生成数量(用于测试)
MAX_CONCEPTS=10 # 只生成前10个概念
输出组织:
# 使用有意义的文件夹前缀
FOLDER_PREFIX="Math-Course-2026"
# 输出结构:
# CASES/
# └── Math-Course-2026/
# ├── concept_1/
# │ ├── video.mp4
# │ ├── manim_code.py
# │ └── storyboard.json
# └── concept_2/
# └── ...
生成的 Manim 代码可以进一步优化:
# 生成的代码示例
from manim import *
class GeneratedVideo(Scene):
def construct(self):
# 可以手动编辑和优化
title = Text("Linear Transformations")
self.play(Write(title))
# ... 更多代码
优化技巧:
Python API 集成:
# 在你的 Python 项目中使用
from agent import Code2VideoAgent
# 初始化智能体
agent = Code2VideoAgent(
llm_api_key="your-key",
vlm_api_key="your-key"
)
# 生成视频
video_path = agent.generate_video(
knowledge_point="Linear transformations and matrices",
output_dir="./output"
)
print(f"视频已生成:{video_path}")
自动化脚本:
#!/usr/bin/env python3
# auto_generate.py
import subprocess
import json
# 读取主题列表
with open('long_video_topics_list.json', 'r') as f:
topics = json.load(f)
# 批量生成
for topic in topics[:10]: # 生成前10个
knowledge_point = topic['name']
print(f"生成视频:{knowledge_point}")
subprocess.run([
'sh', 'run_agent_single.sh',
'--knowledge_point', knowledge_point
])
print(f" 完成:{knowledge_point}n")
目的:评估视频的教学效果,即学生能否从视频中学习到知识。
评估方法:
# 运行评估脚本
python3 eval_TQ.py
评估流程:
评估指标:
目的:评估视频的视觉质量和结构合理性。
评估方法:
# 运行评估脚本
python3 eval_AES.py
评估维度:
评估标准:
目的:评估生成过程的效率和成本。
评估指标:
Token 使用量
执行时间
成本估算
优化建议:
Code2Video 在 MMMC 基准测试中与以下方法对比:
| 方法 | 知识传递 | 美学质量 | 生成速度 | 可重现性 |
|---|---|---|---|---|
| Code2Video | 高 | 高 | 中 | 完全可重现 |
| Veo3 | 中 | 中 | 快 | 不可重现 |
| Wan2.2 | 中 | 中 | 快 | 不可重现 |
| 人工制作 | 高 | 高 | 慢 | 可重现但耗时 |
Code2Video 的优势:
传统文本到视频模型(如 Veo3、Wan2.2):
优势:
劣势:
Code2Video:
优势:
劣势:
手动制作(如使用 After Effects、Premiere):
优势:
劣势:
Code2Video:
优势:
劣势:
选择 Code2Video 当:
选择传统文本到视频当:
选择手动制作当:
症状:安装 Manim Community v0.19.0 时出错。
解决方案:
检查系统依赖:
# Ubuntu/Debian
sudo apt-get install build-essential python3-dev libcairo2-dev libpango1.0-dev
# macOS
brew install cairo pango
使用虚拟环境:
python3 -m venv venv
source venv/bin/activate # Linux/macOS
# 或
venvScriptsactivate # Windows
pip install manim
参考官方文档:
症状:LLM 或 VLM API 调用失败。
解决方案:
检查 API Key:
{
"LLM_API": {
"api_key": "your-actual-api-key" // 确保正确
}
}
检查网络连接:
检查 API 配额:
症状:Manim 代码生成后执行出错。
解决方案:
检查 Manim 版本:
manim --version # 应该是 0.19.0
手动调试代码:
# 查看生成的代码
# CASES/TEST-single/concept_name/manim_code.py
# 手动运行测试
manim -pql manim_code.py GeneratedVideo
检查依赖:
pip install -r requirements.txt
症状:生成的视频清晰度或美观度不够。
解决方案:
使用更好的 LLM:
优化提示模板:
prompts/ 目录中自定义提示使用 Critic 优化:
手动后处理:
症状:视频生成需要很长时间。
解决方案:
使用并行处理:
PARALLEL_GROUP_NUM=8 # 增加并行数
优化 Manim 渲染:
# 使用低质量预览
manim -pql # 低质量,快速预览
# 高质量渲染
manim -pqh # 高质量,较慢
减少概念数量:
MAX_CONCEPTS=5 # 先测试少量概念
症状:生成大型视频时内存溢出。
解决方案:
减少视频复杂度:
分批处理:
# 分批生成,避免同时处理太多
MAX_CONCEPTS=10
增加系统内存:
Code2Video 适合以下人群:
Code2Video 是一个创新的代码驱动视频生成框架,它通过可执行的 Manim 代码和多智能体系统,为教育视频生成提供了一个全新的范式。
欢迎来我中的个人主页找到更多有用的知识和有趣的产品