aida_task_done
Mark tasks as completed and automatically calculate time spent to track development progress in AI coding sessions.
Instructions
当你完成一个任务后调用。标记任务为已完成,自动计算耗时。
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| taskId | Yes | 任务ID,如 TASK-01。如不确定,可调用 aida_status 查看。 |
Implementation Reference
- src/mcp/server.ts:309-344 (handler)The handleTaskDone function implements the logic for 'aida_task_done', updating task status, calculating token consumption, and saving the state.
function handleTaskDone(args: any): any { const { path, data } = ensureRunJson(); const task = data.tasks.find(t => t.taskId === args.taskId); if (!task) return { success: false, message: `任务 ${args.taskId} 未找到` }; task.status = 'done'; task.completedAt = now(); if (!task.startedAt) task.startedAt = task.createdAt || task.completedAt; data.summary.completedTasks = data.tasks.filter(t => t.status === 'done').length; // Auto-collect tokens for this task let taskTokens = 0; if (task.startedAt && task.completedAt) { taskTokens = getTaskTokens(task.startedAt, task.completedAt); if (taskTokens > 0) { (task as any).tokensConsumed = taskTokens; // Add to cost breakdown if (!data.cost) data.cost = {}; if (!data.cost.tokenBreakdown) data.cost.tokenBreakdown = []; data.cost.tokenBreakdown.push({ stage: `task:${args.taskId}`, tokens: taskTokens, }); } } addEvent(data, 'task_completed', { taskId: args.taskId, tokensConsumed: taskTokens }); addTimeline(data, 'task-done', `${args.taskId}: ${task.title}`); save(path, data); // Sync total token usage from session syncTokenUsage(path, data); const tokenMsg = taskTokens > 0 ? ` (${taskTokens} tokens)` : ''; return { success: true, message: `${args.taskId} 已完成${tokenMsg}` }; } - src/mcp/server.ts:146-155 (registration)Tool registration for 'aida_task_done' within the MCP server definition.
}, required: ['title'], }, }, { name: 'aida_task_done', description: '当你完成一个任务后调用。标记任务为已完成,自动计算耗时。', inputSchema: { type: 'object', properties: {