diff --git a/packages/core/src/prompts/snippets.ts b/packages/core/src/prompts/snippets.ts index 62ee64909c..c9b474402e 100644 --- a/packages/core/src/prompts/snippets.ts +++ b/packages/core/src/prompts/snippets.ts @@ -424,11 +424,12 @@ export function renderTaskTracker(): string { You are operating with a persistent file-based task tracking system located at \`.tracker/tasks/\`. You must adhere to the following rules: 1. **NO IN-MEMORY LISTS**: Do not maintain a mental list of tasks or write markdown checkboxes in the chat. Use the provided tools (${trackerCreate}, ${trackerList}, ${trackerUpdate}) for all state management. -2. **ATOMICITY**: If a user request involves multiple steps (e.g., "Refactor the backend") or represents a complex task, you must first break this into discrete entries using ${trackerCreate} before writing any code. -3. **PLAN MODE INTEGRATION**: If you construct or are following a documented plan (e.g., in Plan Mode), use the tracker to represent the granular execution state of that plan. Maintain a bidirectional understanding between the plan document and the task graph. -4. **VERIFICATION**: Before marking a task as complete, verify the work is actually done (e.g., run the test, check the file existence). -5. **STATE OVER CHAT**: If the user says "I think we finished that," but the tool says it is 'pending', trust the tool--or verify explicitly before updating. -6. **DEPENDENCY MANAGEMENT**: Respect task topology. Never attempt to execute a task if its dependencies are not marked as 'closed'. If you are blocked, focus only on the leaf nodes of the task graph.`.trim(); +2. **IMMEDIATE DECOMPOSITION**: Upon receiving a task, evaluate its functional complexity and scope. If the request involves more than a single atomic modification, or necessitates research before execution, you MUST immediately decompose it into discrete entries using ${trackerCreate}. +3. **IGNORE FORMATTING BIAS**: Trigger the protocol based on the **objective complexity** of the goal, regardless of whether the user provided a structured list or a single block of text/paragraph. "Paragraph-style" goals that imply multiple actions are multi-step projects and MUST be tracked. +4. **PLAN MODE INTEGRATION**: If you construct or are following a documented plan (e.g., in Plan Mode), use the tracker to represent the granular execution state of that plan. Maintain a bidirectional understanding between the plan document and the task graph. +5. **VERIFICATION**: Before marking a task as complete, verify the work is actually done (e.g., run the test, check the file existence). +6. **STATE OVER CHAT**: If the user says "I think we finished that," but the tool says it is 'pending', trust the tool--or verify explicitly before updating. +7. **DEPENDENCY MANAGEMENT**: Respect task topology. Never attempt to execute a task if its dependencies are not marked as 'closed'. If you are blocked, focus only on the leaf nodes of the task graph.`.trim(); } export function renderPlanningWorkflow( diff --git a/packages/core/src/tools/definitions/trackerTools.ts b/packages/core/src/tools/definitions/trackerTools.ts index d5c5a678fd..5eda3f12a2 100644 --- a/packages/core/src/tools/definitions/trackerTools.ts +++ b/packages/core/src/tools/definitions/trackerTools.ts @@ -30,7 +30,8 @@ export const TRACKER_INIT_DEFINITION: ToolDefinition = { export const TRACKER_CREATE_TASK_DEFINITION: ToolDefinition = { base: { name: TRACKER_CREATE_TASK_TOOL_NAME, - description: 'Creates a new task in the tracker.', + description: + 'Creates a new task in the tracker. Use this immediately to decompose complex goals, research tasks, or multi-step requests into atomic units, regardless of whether the request was a list or a paragraph.', parametersJsonSchema: { type: 'object', properties: {