diff --git a/docs/functionality-checklist.md b/docs/functionality-checklist.md index 8503d16..b939c34 100644 --- a/docs/functionality-checklist.md +++ b/docs/functionality-checklist.md @@ -129,10 +129,11 @@ **參數**: -- `updateMode?: "append" | "overwrite" | "selective"` (選填) - 任務更新模式選擇: - - `append`(預設):保留所有現有任務並添加新任務 +- `updateMode: "append" | "overwrite" | "selective" | "clearAllTasks"` (必填) - 任務更新模式選擇: + - `append`:保留所有現有任務並添加新任務 - `overwrite`:清除所有未完成任務並完全替換 - `selective`:根據任務名稱匹配更新現有任務,保留不在列表中的任務 + - `clearAllTasks`:清除所有任務並創建備份 - `tasks: Array` (必填) - 結構化的任務清單,每個任務應保持原子性且有明確的完成標準 - `name: string` (必填) - 簡潔明確的任務名稱,應能清晰表達任務目的 - 不超過 100 個字符 diff --git a/src/index.ts b/src/index.ts index c9591b7..74fa3a5 100644 --- a/src/index.ts +++ b/src/index.ts @@ -133,13 +133,12 @@ async function main() { server.tool( "split_tasks", - "將複雜任務分解為獨立且可追蹤的子任務,建立明確的依賴關係和優先順序。支援三種任務更新模式:追加(append)、覆蓋(overwrite)和選擇性更新(selective),其中覆蓋模式只會刪除未完成的任務並保留已完成任務,選擇性更新模式可根據任務名稱智能匹配更新現有任務,同時保留其他任務。", + "將複雜任務分解為獨立且可追蹤的子任務,建立明確的依賴關係和優先順序。支援四種任務更新模式:追加(append)、覆蓋(overwrite)、選擇性更新(selective)和清除所有任務(clearAllTasks),其中覆蓋模式只會刪除未完成的任務並保留已完成任務,選擇性更新模式可根據任務名稱智能匹配更新現有任務,同時保留其他任務,如果你需要規劃全新的任務請使用清除所有任務模式會清除所有任務並創建備份。", { updateMode: z - .enum(["append", "overwrite", "selective"]) - .optional() + .enum(["append", "overwrite", "selective", "clearAllTasks"]) .describe( - "任務更新模式選擇:'append'(保留所有現有任務並添加新任務)、'overwrite'(清除所有未完成任務並完全替換,保留已完成任務)、'selective'(智能更新:根據任務名稱匹配更新現有任務,保留不在列表中的任務,推薦用於任務微調)" + "任務更新模式選擇:'append'(保留所有現有任務並添加新任務)、'overwrite'(清除所有未完成任務並完全替換,保留已完成任務)、'selective'(智能更新:根據任務名稱匹配更新現有任務,保留不在列表中的任務,推薦用於任務微調)、'clearAllTasks'(清除所有任務並創建備份)" ), tasks: z .array( diff --git a/src/models/taskModel.ts b/src/models/taskModel.ts index 8555157..ff22c86 100644 --- a/src/models/taskModel.ts +++ b/src/models/taskModel.ts @@ -263,7 +263,7 @@ export async function batchCreateOrUpdateTasks( dependencies?: string[]; relatedFiles?: RelatedFile[]; }>, - updateMode: "append" | "overwrite" | "selective" | "clearAllTasks" + updateMode: "append" | "overwrite" | "selective" | "clearAllTasks" // 必填參數,指定任務更新策略 ): Promise { // 獲取現有任務 const existingTasks = await readTasks(); diff --git a/src/tools/taskTools.ts b/src/tools/taskTools.ts index f30acaf..76208dc 100644 --- a/src/tools/taskTools.ts +++ b/src/tools/taskTools.ts @@ -451,10 +451,11 @@ export async function reflectTask({ - 建立明確的依賴關係和執行順序 - 為每個子任務設定明確的完成標準和驗收條件 -## split_tasks 的 updateMode 選擇建議 +## split_tasks 的 updateMode 選擇建議(必填參數) - 若希望**保留所有現有任務並添加新任務**,使用 updateMode="append" - 若希望**清除所有未完成任務**,但保留已完成任務,使用 updateMode="overwrite" - 若希望**選擇性更新特定任務**,同時保留其他未完成任務,使用 updateMode="selective" + - 若希望**清除所有任務**並自動創建備份,使用 updateMode="clearAllTasks" 您的批判性評估將決定最終方案的質量,請務必嚴格審查,不放過任何潛在問題。`; @@ -473,9 +474,8 @@ export const splitTasksSchema = z .object({ updateMode: z .enum(["append", "overwrite", "selective", "clearAllTasks"]) - .optional() .describe( - "任務更新模式:'append'(保留現有任務並新增)、'overwrite'(清除所有未完成任務並重建)、'selective'(根據名稱匹配更新現有任務,保留其餘任務)、'clearAllTasks'(清除所有任務並創建備份)" + "任務更新模式(必填):'append'(保留現有任務並新增)、'overwrite'(清除所有未完成任務並重建)、'selective'(根據名稱匹配更新現有任務,保留其餘任務)、'clearAllTasks'(清除所有任務並創建備份)" ), tasks: z .array( @@ -548,11 +548,8 @@ export async function splitTasks({ updateMode, tasks, }: z.infer) { - // 如果未指定更新模式,預設為 "append" 模式 - const effectiveUpdateMode = updateMode || "append"; - // 處理 clearAllTasks 模式,直接調用 modelClearAllTasks 函數 - if (effectiveUpdateMode === "clearAllTasks") { + if (updateMode === "clearAllTasks") { const clearResult = await modelClearAllTasks(); // 記錄清除結果 @@ -605,14 +602,14 @@ export async function splitTasks({ // 根據不同更新模式生成日誌訊息 let updateModeMessage = ""; - if (effectiveUpdateMode === "append") { + if (updateMode === "append") { updateModeMessage = "追加模式:保留現有任務並新增"; - } else if (effectiveUpdateMode === "overwrite") { + } else if (updateMode === "overwrite") { updateModeMessage = "覆蓋模式:清除所有未完成任務並重建"; - } else if (effectiveUpdateMode === "selective") { + } else if (updateMode === "selective") { updateModeMessage = "選擇性更新模式:根據任務名稱更新現有任務、新增缺少任務,保留其餘任務"; - } else if (effectiveUpdateMode === "clearAllTasks") { + } else if (updateMode === "clearAllTasks") { updateModeMessage = "清除模式:清除所有任務並創建備份"; } @@ -629,10 +626,7 @@ export async function splitTasks({ } // 批量創建任務 - 將 updateMode 傳遞給 batchCreateOrUpdateTasks - const createdTasks = await batchCreateOrUpdateTasks( - tasks, - effectiveUpdateMode - ); + const createdTasks = await batchCreateOrUpdateTasks(tasks, updateMode); // 記錄任務創建成功 try { @@ -650,10 +644,10 @@ export async function splitTasks({ // 獲取所有任務,用於顯示完整的依賴關係 const allTasks = await getAllTasks(); - let prompt = `## 任務拆分結果 - ${effectiveUpdateMode} 模式\n\n### 系統確認\n任務已成功${ - effectiveUpdateMode === "overwrite" + let prompt = `## 任務拆分結果 - ${updateMode} 模式\n\n### 系統確認\n任務已成功${ + updateMode === "overwrite" ? "覆蓋未完成的任務清單(已完成任務已保留)" - : effectiveUpdateMode === "selective" + : updateMode === "selective" ? "選擇性更新任務清單" : "新增至現有任務清單" }。\n\n`; diff --git a/src/types/index.ts b/src/types/index.ts index f13bb3d..f99d07c 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -66,12 +66,13 @@ export interface ReflectTaskArgs { // 拆分任務的參數:用於將大型任務分解為可管理的小型任務 export interface SplitTasksArgs { /** - * 任務更新模式(可選): - * - "append":保留所有現有任務,新增提供的任務(預設值) + * 任務更新模式(必填): + * - "append":保留所有現有任務,新增提供的任務 * - "overwrite":保留已完成的任務,但刪除所有未完成的任務,然後新增提供的任務 * - "selective":保留所有未提供名稱的現有任務,更新名稱匹配的任務 + * - "clearAllTasks":清除所有任務並創建備份 */ - updateMode?: "append" | "overwrite" | "selective"; + updateMode: "append" | "overwrite" | "selective" | "clearAllTasks"; tasks: Array<{ name: string; // 簡潔明確的任務名稱,應能清晰表達任務目的 description: string; // 詳細的任務描述,包含實施要點、技術細節和驗收標準