DeepSeek Harness 教程 · 第17讲 Goal 与 Jobs
第17讲 · Goal 与 Jobs——跨轮次任务管理
《DeepSeek Harness 从上手到精通》系列 · 第五阶 多智能体编排篇
系列基于 deepseek-ai/deepseek-harness(0.1.0-rc.5,MIT)。本讲进入「长程任务」:一次对话装不下、需要跨多轮甚至定时跑的任务,靠 Goal 与 Jobs 来管理。preview 阶段接口可能微调,认准「目标持久化 / 调度运行时」两件核心,以官方文档为准。
一、为什么需要跨轮次的任务管理
前几讲的任务,都发生在一轮对话之内:你说话、agent 干活、回答回来。但真实需求往往是:
- 「每天早 9 点爬一次竞品价格,有变化就提醒我」——需要定时;
- 「这个目标很大,今天做一半,明天接着做」——需要跨轮次记住;
- 「后台跑了几个长任务,我得知道进度」——需要统一运行时。
这就引出了本讲的两组能力:Goal(目标) 负责「记住要做什么、卡在哪」,Jobs(任务运行时) 负责「把这些活真的调度起来跑」。
二、Goal:跨轮次持久目标与阻塞标记
Goal 让 agent 把「目标」当作可持久、可检查的对象,而不是一轮对话里说完就忘。三个核心操作:
create_goal:创建一个目标,描述想要达成什么;get_goal:随时取回目标当前状态(进度、子任务、是否阻塞);update_goal:更新进度,或标记「阻塞(blocked)」——等某个前置条件满足再继续。
阻塞标记是 Goal 的精髓:当任务卡在「等我审批 / 等外部数据 / 等依赖就绪」时,agent 把它标为 blocked 而非硬撑,下一轮再回来接着推。这让长程任务可暂停、可恢复、可被人类介入。
三、ralph:每轮全新 agent 的迭代循环
ralph 是一种特殊的迭代循环模式:每一轮都用一个全新的 agent 来看目标、决定下一步、执行、更新 Goal,然后结束;下一轮再起一个全新 agent 重复。它适合「目标明确、但每步该干嘛需要反复重新判断」的任务。
- 适用:长程自主任务、需要避免单 agent 上下文无限膨胀的场景;
- 特点:每轮上下文干净,靠 Goal 承载跨轮记忆,天然契合「暂停恢复」。
ralph 不是银弹。 它每轮重建 agent,会丢失本轮内的细节上下文。简单任务用普通多轮对话即可,别为了用而用。
四、Jobs:统一后台任务运行时与定时
ctx.jobs 是 dsh 的统一后台任务运行时:不管是一次性长任务、定时任务还是第 12 讲的 job_kill/job_list/job_output,都走它。两个关键能力:
- schedule 定时:把任务注册成定时触发(如每天 9 点),由运行时负责到点唤起;
- 可观测:随时
job_list看在跑什么、job_output取输出、job_kill中止失控任务。
五、长程任务的可观测性
长程任务最怕「它到底跑没跑、卡哪了」。dsh 提供两条可观测路径:
- Goal 视角:
get_goal看目标进度与阻塞点; - Jobs 视角:
job_list看运行时里所有活跃/历史任务及状态。
两者配合,你既能从「业务目标」层面知道「事办到哪了」,也能从「运行时」层面知道「进程是否还活着」。
六、动手练习:每天定时、目标驱动的自动化
做一个「每天定时执行、目标驱动」的小自动化:
- 用
create_goal建一个目标,例如「监控某页面更新并摘要」; - 用
schedule(经ctx.jobs)把它注册为定时任务(命令/字段为示意,以官方为准); - 运行后分别用
get_goal与job_list观察进度与状态。
# 思路示意(具体 API 以官方文档为准)
create_goal "每日监控 example.com 更新并生成摘要"
schedule --cron "0 9 * * *" --goal
# 之后随时查看
get_goal
job_list 七、常见坑
- Goal 没更新就结束:agent 干完活忘了
update_goal,下一轮不知道进度,重复劳动; - blocked 后没人接:标了阻塞却没配置唤醒条件/人工介入,任务永远停在那;
- ralph 上下文丢失:依赖本轮细节的任务用 ralph 会丢信息,简单任务别上 ralph;
- 定时任务堆积:上一次没跑完下一次又触发,给 schedule 设互斥/超时;
- 只看 Job 不看 Goal:进程活着 ≠ 目标在推进,两视角要结合看。
八、官方文档对应章节
docs/中 goal / jobs / schedule / ralph 相关章节- 第 12 讲 job 三件套(
job_kill/job_list/job_output) - 第 16 讲 workflow(与 Goal/Jobs 配合做长程编排)
本讲内容基于 DeepSeek Harness 官方文档与项目源码整理,仅供学习参考,具体命令与配置请以官方最新版本为准。系列文章配合源码仓库食用效果更佳:https://github.com/deepseek-ai/deepseek-harness
咨询 DeepSeek Harness 相关问题,请加微信:A0qingfengyuan_01
个人观点,仅供参考,如有不对之处,请多包涵,欢迎指出。本文由 AI 协助完成!
欢迎扫码关注公众号与作者微信,获取更多实用干货

