2026-05-20 21:39:12 +08:00

50 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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';
}
```
## TodoStoreruntime/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 事件推送