1. OpenMontage:把Agent当编排器的架构
一句话理解
传统视频软件是你操作软件,OpenMontage是你告诉AI编程助手"帮我做个视频",AI助手操作软件。
架构核心:没有编排器
# 传统视频工具的设计
class VideoEditor:
def export_video(self, timeline: Timeline) -> VideoFile:
# 显式的工作流:导入→剪辑→特效→导出
pass
# OpenMontage的设计
# AI助手读YAML清单,自己决定调哪个工具
# manifest.yaml
pipelines:
explainer:
steps:
- research_and_script
- asset_generation
- composition
- export
tools:
- name: "flux_image_gen"
provider_selection: "auto" # ← 关键:7维度评分引擎自动选择
所有工具选择走一个7维度评分引擎:
-
任务匹配度 (30%)
-
输出质量 (20%)
-
控制特性 (15%)
-
可靠性 (15%)
-
成本效率 (10%)
-
延迟 (5%)
-
连续性 (5%)
这个评分引擎不是硬编码规则,而是一套打分机制——AI助手读工具的YAML描述,根据当前任务特征给每个候选工具打分,选最高分的。这让Agent可以在成本和质量之间动态平衡。
# 伪代码:评分引擎逻辑
def score_tool(task: Task, tool: Tool) -> float:
weights = {
"task_fit": 0.30,
"output_quality": 0.20,
"control_features": 0.15,
"reliability": 0.15,
"cost_efficiency": 0.10,
"latency": 0.05,
"continuity": 0.05,
}
scores = {
"task_fit": tool.matches_task(task),
"output_quality": tool.quality_score(task.resolution),
"control_features": tool.has_controls(task.required_features),
"reliability": tool.uptime_score(),
"cost_efficiency": 1.0 - (tool.estimated_cost / task.budget),
"latency": 1.0 - (tool.avg_latency / task.deadline),
"continuity": tool.style_consistency(task.previous_tool),
}
return sum(scores[k] * weights[k] for k in weights)
对开发者的启发:大多数Agent项目用 LangChain/LlamaIndex 的 AgentExecutor 做一个"调用工具→等待结果→再调用"的线性循环。OpenMontage的思路是:工具调用不是步骤,而是决策。 每次选择工具都是一次多维度优化问题。这个设计比 LangChain 的默认 Agent 模式灵活得多。
2. DeerFlow 2.0:字节跳动的Agent架构设计
DeerFlow 是今天 Trending #5 的项目,字节跳动开源的一个 SuperAgent 框架。v2.0 完全重写。
架构亮点
子Agent并行执行 + 上下文隔离:
# config.yaml 示例 - 子Agent配置
sub_agents:
researcher:
model: "claude-sonnet-4"
skills: ["web_search", "pdf_extract"]
max_tokens: 8000
sandbox: "container_a"
coder:
model: "claude-sonnet-4"
skills: ["bash", "file_ops", "git"]
max_tokens: 16000
sandbox: "container_b"
DeerFlow 的真正创新在于 上下文工程:
-
每个子Agent在自己的隔离上下文中运行
-
完成后自动压缩为结构化摘要
-
中间结果写入磁盘,不占上下文窗口
-
Token使用量全程追踪,归属到调用步骤
简化版:子Agent调度的核心逻辑
from dataclasses import dataclass from typing import List import asyncio
@dataclass class SubTask: name: str agent_type: str # "researcher" | "coder" | "writer" prompt: str context_limit: int
async def dispatch_parallel(subtasks: List[SubTask]): """并行调度子Agent,汇总结果""" async def run_one(task: SubTask): agent = AgentPool.get(task.agent_type) result = await agent.run( prompt=task.prompt, max_tokens=task.context_limit, ) # 压缩结果 return Summarizer.compress(result, max_tokens=500)
results = await asyncio.gather(*[run_one(t) for t in subtasks]) return Synthesizer.merge(results)
技能的渐进式加载是另一个设计亮点。不像 LangChain 一次性把所有 Tool 定义塞进 System Prompt,DeerFlow 只在 Agent 需要某个技能时才加载对应的 Markdown 文档。对于需要上百个技能的复杂Agent来说,这能显著降低上下文窗口的浪费。
3. daily_stock_analysis:Agent + 金融数据的完整流水线
这个国人做的项目(MIT许可)已经获得 Trendshift #1 Python Repo of the Day。
技术架构
GitHub Actions (定时触发)
↓
main.py (入口)
↓
├── data_fetcher/ (多源行情:AkShare/YFinance/TickFlow)
├── news_aggregator/ (多源新闻:SerpAPI/Tavily/Anspire)
├── llm_analyzer/ (LLM分析:Gemini/Claude/DeepSeek/Qwen)
└── notifier/ (多端推送:企微/飞书/Telegram/Discord)
↓
决策报告 (Markdown) → 推送
配置零成本运行的方式很聪明:
# .github/workflows/daily.yml
name: 每日股票分析
on:
schedule:
- cron: '0 10 * * 1-5' # 北京时间18:00
workflow_dispatch: # 手动触发
jobs:
analyze:
runs-on: ubuntu-latest
timeout-minutes: 15
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
with:
python-version: '3.11'
- run: pip install -r requirements.txt
- run: python main.py
env:
STOCK_LIST: ${{ secrets.STOCK_LIST }}
GEMINI_API_KEY: ${{ secrets.GEMINI_API_KEY }}
WECHAT_WEBHOOK_URL: ${{ secrets.WECHAT_WEBHOOK_URL }}
对开发者的意义:这个项目的代码很务实——没有过度设计,每个模块职责清晰。如果你在做数据聚合、定时任务、多源LLM编排,可以直接参考它的模块拆解方式。尤其是多LLM provider的切换逻辑(用一个 factory pattern 根据 API key 是否存在自动选择可用的模型)写得很干净。
4. 这三个项目共同告诉了我们什么?
串起来看,这三个项目构成了Agent应用开发的三个层次:
项目
层次
核心贡献
OpenMontage
应用层
Agent如何替代传统软件的工作流编排
DeerFlow
架构层
Agent系统如何设计子Agent隔离和上下文管理
daily_stock_analysis
领域层
Agent如何在具体场景实现端到端流水线
一个更宏观的趋势:2025年夏天,Agent不再是PPT概念。从视频制作到金融分析,从字节跳动到独立开发者,Agent正在从一个"你需要专家团队的昂贵玩具"变成"一个周末能搭出来的开源项目"。
这意味着:如果你的团队还在"观望AI Agent",6个月后你会发现别人已经在用Agent重构业务流程了。 不是危言耸听——你今天打开GitHub Trending就能看到证据。
讨论:
-
你们团队在用什么Agent框架?LangChain/LlamaIndex/自研?
-
子Agent的上下文隔离你们怎么处理的?有没有好的方案?
-
有没有试过用Agent做视频/图片/文档生成的?实际效果如何?
有更好的实现方式欢迎评论区讨论 👇