这一节只讲相对 S11 新增的内容:
把任务变成可持久化、可依赖、可认领、可完成的任务图。
Task dataclass:任务数据模型。.tasks/:任务持久化目录。create_task():创建任务。save_task() / load_task():保存和读取任务。list_tasks() / get_task():查看任务。can_start():检查依赖是否完成。claim_task():认领任务。complete_task():完成任务并提示下游解锁。create_task、list_tasks、get_task、claim_task、complete_task。Task 是一个 dataclass:
@dataclass
class Task:
id: str
subject: str
description: str
status: str
owner: str | None
blockedBy: list[str]
一条任务保存成 JSON 后大概是:
{
"id": "task_1234567890_0001",
"subject": "实现登录页面",
"description": "完成表单和校验",
"status": "pending",
"owner": None,
"blockedBy": ["task_1234567890_0000"]
}
任务状态有三种:
pending -> in_progress -> completed
claim_task() 做:
pending -> in_progress
owner = "agent"
complete_task() 做:
in_progress -> completed
blockedByblockedBy 是依赖任务 ID 列表:
blockedBy: list[str] = ["task_a", "task_b"]
意思是:
当前任务必须等 task_a 和 task_b 都 completed 后才能开始
can_start(task_id) 会检查所有依赖:
如果依赖任务不存在 -> 不能开始
如果依赖任务不是 completed -> 不能开始
全部完成 -> 可以开始
.tasks/ 持久化每个任务是一个文件:
.tasks/
task_1234567890_0001.json
这样任务不会只存在内存里,程序重启后仍然能读回来。
底层函数:
create_task()
claim_task()
complete_task()
工具处理器:
run_create_task()
run_claim_task()
run_complete_task()
模型真正看到的是工具 schema:
{
"name": "create_task",
"input_schema": {...}
}
任务系统让 Agent 从“临时执行”进入“可管理工作流”。
有了任务系统,Agent 可以表达:
有哪些任务
谁正在做
哪些被依赖阻塞
哪些已经完成
完成后解锁了什么