Lesson 07

Task System 任务系统

状态存在对话之外,就不怕上下文压缩了

// Task Dependency Graph + Persistence 任务依赖图与持久化

.tasks/ File-based persistence task_001.json DONE task_002.json IN_PROGRESS task_003.json BLOCKED task_004.json PENDING ON DISK = survives compact 磁盘存储 = 不怕压缩 Dependency Graph 依赖图 Task 1: Setup DB status: done Task 2: Auth API blockedBy: [task_001] Task 3: Dashboard blockedBy: [task_002] Task1 DONE → Task2 UNBLOCKED Task JSON Structure 任务 JSON 结构 { "id": "task_002", "title": "Auth API", "status": "in_progress", "blockedBy": ["task_001"], "blocks": ["task_003"], "description": "Implement JWT auth endpoints", "files": [ "src/auth.ts" ] }
CONCEPT 01

文件持久化

任务状态写入 .tasks/ 目录的 JSON 文件。即使上下文被压缩(compact),Agent 重新读文件就能恢复所有任务状态。

.tasks/task_001.json survives compact

CONCEPT 02

依赖图

每个任务可声明 blockedBy(前置依赖)和 blocks(下游任务)。完成 task1 自动将 task2 从 blocked 变为 pending,形成有向无环图。

blockedBy: [] → status: pending

CONCEPT 03

对比 TodoManager

内置 TodoManager 把状态存在上下文里,compact 后全部丢失。TaskSystem 用文件系统做"外部记忆",根本不怕压缩。

memory = volatile, disk = durable

试一试 Try It Out

1

"创建 3 个任务:'Setup project'、'Write code'、'Write tests'。让它们依次相互依赖。"

"Create 3 tasks: 'Setup project', 'Write code', 'Write tests'. Make them depend on each other in order."

2

"列出所有任务并显示依赖关系图"

"List all tasks and show the dependency graph"

3

"完成任务 1,然后列出任务查看任务 2 被解除阻塞"

"Complete task 1 and then list tasks to see task 2 unblocked"

4

"创建一个重构任务看板:parse → transform → emit → test,其中 transform 和 emit 可以在 parse 后并行运行"

"Create a task board for refactoring: parse → transform → emit → test, where transform and emit can run in parallel after parse"