overseer
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAgent Coordination with Overseer
基于Overseer的Agent协作
Core Principle: Tickets, Not Todos
核心原则:使用工单而非待办事项
Overseer tasks are tickets - structured artifacts with comprehensive context:
- Description: One-line summary (issue title)
- Context: Full background, requirements, approach (issue body)
- Result: Implementation details, decisions, outcomes (PR description)
Think: "Would someone understand the what, why, and how from this task alone AND what success looks like?"
Overseer任务是工单——具备完整上下文的结构化工件:
- 描述:单行摘要(对应议题标题)
- 上下文:完整背景、需求、实现方案(对应议题正文)
- 成果:实现细节、决策内容、最终结果(对应PR描述)
思考:仅通过该任务,他人能否理解工作内容、原因、实现方式以及成功的标准?
Task IDs are Ephemeral
任务ID是临时的
Never reference task IDs in external artifacts (commits, PRs, docs). Task IDs like become meaningless once tasks complete. Describe the work itself, not the task that tracked it.
task_01JQAZ...切勿在外部工件(提交记录、PR、文档)中引用任务ID。类似的任务ID在任务完成后就失去意义。请描述工作本身,而非跟踪该工作的任务。
task_01JQAZ...Overseer vs OpenCode's TodoWrite
Overseer 与 OpenCode的TodoWrite对比
| Overseer | TodoWrite | |
|---|---|---|
| Persistence | SQLite database | Session-only |
| Context | Rich (description + context + result) | Basic |
| Hierarchy | 3-level (milestone -> task -> subtask) | Flat |
Use Overseer for persistent work. Use TodoWrite for ephemeral in-session tracking only.
| 特性 | Overseer | TodoWrite |
|---|---|---|
| 持久性 | 基于SQLite数据库 | 仅会话内有效 |
| 上下文 | 丰富(描述+上下文+成果) | 基础版 |
| 层级结构 | 三级(里程碑 -> 任务 -> 子任务) | 扁平化 |
Overseer适用于需要持久化的工作。TodoWrite仅适用于会话内的临时跟踪。
When to Use Overseer
何时使用Overseer
Use Overseer when:
- Breaking down complexity into subtasks
- Work spans multiple sessions
- Context needs to persist for handoffs
- Recording decisions for future reference
Skip Overseer when:
- Work is a single atomic action
- Everything fits in one message exchange
- Overhead exceeds value
- TodoWrite is sufficient
在以下场景使用Overseer:
- 将复杂工作拆分为子任务
- 工作跨多个会话进行
- 需要保留上下文以进行工作交接
- 记录决策以供未来参考
以下场景无需使用Overseer:
- 工作为单一原子操作
- 所有内容可在一次消息交互中完成
- 操作成本超过其价值
- 使用TodoWrite已足够
Finding Work
查找工作任务
javascript
// Get next ready task with full context (recommended for work sessions)
const task = await tasks.nextReady(milestoneId); // TaskWithContext | null
if (!task) {
console.log("No ready tasks");
return;
}
// Get all ready tasks (for progress overview)
const readyTasks = await tasks.list({ ready: true }); // Task[]Use when starting work - returns (deepest ready leaf with full context chain + inherited learnings).
Use for status/progress checks - returns without context chain.
nextReady()TaskWithContext | nulllist({ ready: true })Task[]javascript
// Get next ready task with full context (recommended for work sessions)
const task = await tasks.nextReady(milestoneId); // TaskWithContext | null
if (!task) {
console.log("No ready tasks");
return;
}
// Get all ready tasks (for progress overview)
const readyTasks = await tasks.list({ ready: true }); // Task[]开始工作时使用 - 返回(具备完整上下文链和继承经验的最深层就绪子任务)。
检查状态/进度时使用 - 返回无上下文链的。
nextReady()TaskWithContext | nulllist({ ready: true })Task[]Basic Workflow
基础工作流
javascript
// 1. Get next ready task (returns TaskWithContext | null)
const task = await tasks.nextReady();
if (!task) return "No ready tasks";
// 2. Review context (available on TaskWithContext)
console.log(task.context.own); // This task's context
console.log(task.context.parent); // Parent's context (if depth > 0)
console.log(task.context.milestone); // Root milestone context (if depth > 1)
console.log(task.learnings.own); // Learnings attached to this task (bubbled from children)
// 3. Start work (VCS required - creates bookmark, records start commit)
await tasks.start(task.id);
// 4. Implement...
// 5. Complete with learnings (VCS required - commits changes, bubbles learnings to parent)
await tasks.complete(task.id, {
result: "Implemented login endpoint with JWT tokens",
learnings: ["bcrypt rounds should be 12 for production"]
});
// Alternative: Cancel if abandoning (does NOT satisfy blockers)
await tasks.cancel(task.id);
// 6. Archive finished tasks to hide from default list
await tasks.archive(task.id);See @file references/workflow.md for detailed workflow guidance.
javascript
// 1. Get next ready task (returns TaskWithContext | null)
const task = await tasks.nextReady();
if (!task) return "No ready tasks";
// 2. Review context (available on TaskWithContext)
console.log(task.context.own); // This task's context
console.log(task.context.parent); // Parent's context (if depth > 0)
console.log(task.context.milestone); // Root milestone context (if depth > 1)
console.log(task.learnings.own); // Learnings attached to this task (bubbled from children)
// 3. Start work (VCS required - creates bookmark, records start commit)
await tasks.start(task.id);
// 4. Implement...
// 5. Complete with learnings (VCS required - commits changes, bubbles learnings to parent)
await tasks.complete(task.id, {
result: "Implemented login endpoint with JWT tokens",
learnings: ["bcrypt rounds should be 12 for production"]
});
// Alternative: Cancel if abandoning (does NOT satisfy blockers)
await tasks.cancel(task.id);
// 6. Archive finished tasks to hide from default list
await tasks.archive(task.id);请查看@file references/workflow.md获取详细工作流指导。
Understanding Task Context
理解任务上下文
Tasks have progressive context - inherited from ancestors:
javascript
const task = await tasks.get(taskId); // Returns TaskWithContext
// task.context.own - this task's context (always present)
// task.context.parent - parent task's context (if depth > 0)
// task.context.milestone - root milestone's context (if depth > 1)
// Task's own learnings (bubbled from completed children)
// task.learnings.own - learnings attached to this task任务具备渐进式上下文——从父级继承:
javascript
const task = await tasks.get(taskId); // Returns TaskWithContext
// task.context.own - this task's context (always present)
// task.context.parent - parent task's context (if depth > 0)
// task.context.milestone - root milestone's context (if depth > 1)
// Task's own learnings (bubbled from completed children)
// task.learnings.own - learnings attached to this taskReturn Type Summary
返回类型汇总
| Method | Returns | Notes |
|---|---|---|
| | Full context chain + inherited learnings |
| | Deepest ready leaf with full context |
| | Basic task fields only |
| | No context chain |
| | No context chain |
| 方法 | 返回值 | 说明 |
|---|---|---|
| | 完整上下文链 + 继承的经验 |
| | 具备完整上下文的最深层就绪子任务 |
| | 仅包含基础任务字段 |
| | 无上下文链 |
| | 无上下文链 |
Blockers
依赖阻塞
Blockers prevent a task from being ready until the blocker completes.
Constraints:
- Blockers cannot be self
- Blockers cannot be ancestors (parent, grandparent, etc.)
- Blockers cannot be descendants
- Creating/reparenting with invalid blockers is rejected
javascript
// Add blocker - taskA waits for taskB
await tasks.block(taskA.id, taskB.id);
// Remove blocker
await tasks.unblock(taskA.id, taskB.id);依赖阻塞会阻止任务就绪,直到阻塞任务完成。
约束条件:
- 不能将自身设为阻塞项
- 不能将父级(父任务、祖父任务等)设为阻塞项
- 不能将子级设为阻塞项
- 创建/重父级时若包含无效阻塞项会被拒绝
javascript
// Add blocker - taskA waits for taskB
await tasks.block(taskA.id, taskB.id);
// Remove blocker
await tasks.unblock(taskA.id, taskB.id);Task Hierarchies
任务层级结构
Three levels: Milestone (depth 0) -> Task (depth 1) -> Subtask (depth 2).
| Level | Name | Purpose | Example |
|---|---|---|---|
| 0 | Milestone | Large initiative | "Add user authentication system" |
| 1 | Task | Significant work item | "Implement JWT middleware" |
| 2 | Subtask | Atomic step | "Add token verification function" |
Choosing the right level:
- Small feature (1-2 files) -> Single task
- Medium feature (3-7 steps) -> Task with subtasks
- Large initiative (5+ tasks) -> Milestone with tasks
See @file references/hierarchies.md for detailed guidance.
分为三级:里程碑(层级0)-> 任务(层级1)-> 子任务(层级2)。
| 层级 | 名称 | 用途 | 示例 |
|---|---|---|---|
| 0 | 里程碑 | 大型倡议 | "添加用户认证系统" |
| 1 | 任务 | 重要工作项 | "实现JWT中间件" |
| 2 | 子任务 | 原子步骤 | "添加令牌验证函数" |
选择合适的层级:
- 小型功能(1-2个文件)-> 单一任务
- 中型功能(3-7个步骤)-> 带子任务的任务
- 大型倡议(5个以上任务)-> 带任务的里程碑
请查看@file references/hierarchies.md获取详细指导。
Recording Results
记录成果
Complete tasks immediately after implementing AND verifying:
- Capture decisions while fresh
- Note deviations from plan
- Document verification performed
- Create follow-up tasks for tech debt
Your result must include explicit verification evidence. See @file references/verification.md.
完成任务需在实现并验证后立即进行:
- 趁记忆清晰时记录决策
- 记录与计划的偏差
- 记录已执行的验证操作
- 为技术债务创建后续任务
你的成果必须包含明确的验证证据。请查看@file references/verification.md。
Best Practices
最佳实践
- Right-size tasks: Completable in one focused session
- Clear completion criteria: Context should define "done"
- Don't over-decompose: 3-7 children per parent
- Action-oriented descriptions: Start with verbs ("Add", "Fix", "Update")
- Verify before completing: Tests passing, manual testing done
- 合理规划任务规模:可在一个专注会话内完成
- 明确完成标准:上下文应定义“完成”的状态
- 避免过度拆分:每个父任务下3-7个子任务为宜
- 采用动作导向的描述:以动词开头(如“添加”、“修复”、“更新”)
- 完成前先验证:确保测试通过、已完成手动测试
Reading Order
阅读顺序
| Task | File |
|---|---|
| Understanding API | @file references/api.md |
| Implementation workflow | @file references/workflow.md |
| Task decomposition | @file references/hierarchies.md |
| Good/bad examples | @file references/examples.md |
| Verification checklist | @file references/verification.md |
| 任务 | 文件路径 |
|---|---|
| 理解API | @file references/api.md |
| 实现工作流 | @file references/workflow.md |
| 任务拆分 | @file references/hierarchies.md |
| 正反示例 | @file references/examples.md |
| 验证检查清单 | @file references/verification.md |
In This Reference
参考文档说明
| File | Purpose |
|---|---|
| Overseer MCP codemode API types/methods |
| Start->implement->complete workflow |
| Milestone/task/subtask organization |
| Good/bad context and result examples |
| Verification checklist and process |
| 文件路径 | 用途 |
|---|---|
| Overseer MCP代码模式API类型与方法 |
| 从启动到实现再到完成的工作流 |
| 里程碑/任务/子任务的组织方式 |
| 上下文与成果的正反示例 |
| 验证检查清单与流程 |