第17讲 · Goal 与 Jobs——跨轮次任务管理

《DeepSeek Harness 从上手到精通》系列 · 第五阶 多智能体编排篇

🎯 目标:让 agent 具备"记住目标、暂停恢复"的长程能力 难度 ★★☆ ⏱ 约 25 分钟 前置:第 16 讲已写 workflow

系列基于 deepseek-ai/deepseek-harness0.1.0-rc.5,MIT)。本讲进入「长程任务」:一次对话装不下、需要跨多轮甚至定时跑的任务,靠 Goal 与 Jobs 来管理。preview 阶段接口可能微调,认准「目标持久化 / 调度运行时」两件核心,以官方文档为准。


一、为什么需要跨轮次的任务管理

前几讲的任务,都发生在一轮对话之内:你说话、agent 干活、回答回来。但真实需求往往是:

  • 「每天早 9 点爬一次竞品价格,有变化就提醒我」——需要定时
  • 「这个目标很大,今天做一半,明天接着做」——需要跨轮次记住
  • 「后台跑了几个长任务,我得知道进度」——需要统一运行时

这就引出了本讲的两组能力:Goal(目标) 负责「记住要做什么、卡在哪」,Jobs(任务运行时) 负责「把这些活真的调度起来跑」。

Goal与Jobs长程任务管理
图 1 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_goaljob_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 协助完成!