context_from的工作原理

context_from 参数让一个cron任务自动读取另一个任务的最近输出,作为自己的上下文。这是构建"流水线"(数据采集 → 处理 → 推送)的核心机制。

# 任务A:采集数据
job_a = cronjob(
    name="采集AI新闻",
    prompt="搜索今日AI热点,输出JSON格式的新闻列表",
    schedule="0 8 * * *",
    deliver="local"  # 只保存本地,不推送
)

# 任务B:处理并推送(依赖任务A的输出)
job_b = cronjob(
    name="生成AI日报",
    prompt="基于以下数据生成中文日报:{context}",
    context_from=[job_a.job_id],  # 注入任务A的最近输出
    schedule="0 9 * * *",         # 任务A完成1小时后运行
    deliver="origin"               # 推送给用户
)

链式调度设计:A采集→B处理→C推送

Job A: 每天08:00 采集数据 → 保存本地
Job B: 每天09:00 读取A的输出 → 分析处理 → 保存本地  
Job C: 每天09:30 读取B的输出 → 格式化 → 推送给用户

# 注意:时间间隔要给上游任务足够的运行时间

重要注意事项

适合用context_from的场景

不适合的场景

三级链式配置完整示例

# 第一级:每天08:00 采集股票数据
stock_collector = cronjob(
    name="股票数据采集",
    script="a_stock_daily_review.sh",
    no_agent=True,
    schedule="0 8 * * 1-5",
    deliver="local"
)

# 第二级:每天09:00 分析股票数据
stock_analyst = cronjob(
    name="股票深度分析",
    prompt="基于以下股票数据进行深度分析:\n\n{context}\n\n给出详细的操作建议",
    context_from=[stock_collector.job_id],
    schedule="0 9 * * 1-5",
    deliver="local"
)

# 第三级:每天09:10 发布分析报告
stock_publisher = cronjob(
    name="股票报告发布",
    prompt="将以下分析报告格式化为适合微信阅读的样式:\n\n{context}",
    context_from=[stock_analyst.job_id],
    schedule="10 9 * * 1-5",
    deliver="origin"
)
context_from是Hermes工作流编排的核心能力。合理使用它,可以把复杂的多步任务拆分成独立的小任务,每个任务职责清晰、容易调试。