---
title: Todo 会话任务系统
created: 2026-04-14
updated: 2026-04-14
type: entity
tags: [agent, runtime, tool]
sources: [packages/backend/src/modules/netaclaw/runtime/todo_store.ts, packages/backend/src/modules/netaclaw/tools/builtin/todo.ts]
---

# Todo 会话任务系统

Agent 会话级的任务规划和跟踪机制，Agent 通过 `todo` 工具管理任务列表，前端实时展示进度。

## 数据结构

```typescript
interface TodoItem {
  id: string;
  content: string;
  status: 'pending' | 'in_progress' | 'completed' | 'cancelled';
}
```

## TodoStore（runtime/todo_store.ts）

每个 Agent 会话创建一个 TodoStore 实例。

| 方法 | 功能 |
|------|------|
| `write(todos, merge)` | 写入 todo 列表（merge=false 全量替换，merge=true 增量更新） |
| `read()` | 读取完整列表 |
| `hasItems()` | 检查是否有任务 |
| `getSummary()` | 统计摘要（total/pending/in_progress/completed/cancelled） |
| `formatForInjection()` | 格式化为上下文注入（仅保留 pending + in_progress） |
| `hydrateFromHistory()` | 从历史消息恢复 todo 状态 |

## 集成点

- **Agent 运行时**：自动创建 TodoStore 实例
- **todo 工具**：Agent 通过 tool_use 调用管理任务
- **上下文压缩**：压缩后保留活跃任务（formatForInjection）
- **WebSocket**：推送 `todo_update` 事件到前端
- **前端**：`todo-card.vue` 组件展示任务列表和进度

## 相关页面

- [[tool-system]] — todo 工具定义
- [[agent-runtime]] — 运行时集成
- [[websocket-gateway]] — todo_update 事件推送
