diff --git a/src/index.ts b/src/index.ts index 0594943..1997bcc 100644 --- a/src/index.ts +++ b/src/index.ts @@ -84,19 +84,28 @@ async function main() { { name: "analyze_task", description: - "深入分析任務需求並系統性檢查代碼庫,評估技術可行性與潛在風險,如果需要提供程式碼請使用 pseudocode 格式且盡量精簡只保留核心實現部分", + "深入分析任務需求並系統性檢查代碼庫,評估技術可行性與潛在風險,如果需要提供程式碼請使用 pseudocode 格式且僅提供高級邏輯流程和關鍵步驟避免完整代碼", inputSchema: zodToJsonSchema(analyzeTaskSchema), }, { name: "reflect_task", description: - "批判性審查分析結果,評估方案完整性並識別優化機會,確保解決方案符合最佳實踐,如果需要提供程式碼請使用 pseudocode 格式且盡量精簡只保留核心實現部分", + "批判性審查分析結果,評估方案完整性並識別優化機會,確保解決方案符合最佳實踐,如果需要提供程式碼請使用 pseudocode 格式且僅提供高級邏輯流程和關鍵步驟避免完整代碼", inputSchema: zodToJsonSchema(reflectTaskSchema), }, { name: "split_tasks", - description: - "將複雜任務分解為獨立且可追蹤的子任務,建立明確的依賴關係和優先順序。支援四種任務更新模式:追加(append)、覆蓋(overwrite)、選擇性更新(selective)和清除所有任務(clearAllTasks),其中覆蓋模式只會刪除未完成的任務並保留已完成任務,選擇性更新模式可根據任務名稱智能匹配更新現有任務,同時保留其他任務,如果你需要規劃全新的任務請使用清除所有任務模式會清除所有任務並創建備份。請優先使用清除所有任務模式,只有用戶要求變更或修改計畫內容才使用其他模式。\n\n**請參考之前的分析結果提供 pseudocode\n\n**如果任務太多或內容過長,請分批使用「split_tasks」工具,每次只提交一小部分任務,**嚴重警告**你每次呼叫 split_tasks 傳遞的參數不能超過8000個字,如果超出 8000 個字請多次呼叫工具完成", + description: `將複雜任務分解為獨立子任務,建立依賴關係和優先順序。 +## updateMode +- **append**:保留現有任務並添加新任務 +- **overwrite**:刪除未完成任務,保留已完成任務 +- **selective**:根據任務名稱智能匹配更新現有任務 +- **clearAllTasks**:清除所有任務並創建備份(優先使用此模式) + +## 關鍵要求 +- **提供精簡pseudocode**:僅提供高級邏輯流程和關鍵步驟避免完整代碼 +- **必要時整合**:簡單修改可與其他任務整合,避免任務過多 +- **分批提交**:任務過多時使用「split_tasks」工具,參數不超過8000字`, inputSchema: zodToJsonSchema(splitTasksSchema), }, { diff --git a/src/prompts/templates/reflectTask.ts b/src/prompts/templates/reflectTask.ts index c9cdec9..d55939b 100644 --- a/src/prompts/templates/reflectTask.ts +++ b/src/prompts/templates/reflectTask.ts @@ -7,7 +7,8 @@ export const reflectTaskTemplate = `## 方案評估\n\n### 任務摘要\n\`\`\`\n{summary}\n\`\`\`\n\n### 分析結果\n\`\`\`\n{analysis}\n\`\`\`\n\n`; // 評估要點模板 -export const evaluationPointsTemplate = `## 評估要點\n\n### 1. 技術完整性 +export const evaluationPointsTemplate = `## 評估要點 +### 1. 技術完整性 - 檢查方案技術缺陷和邏輯漏洞 - 驗證邊緣情況和異常處理 - 確認數據流和控制流完整性 @@ -26,28 +27,34 @@ export const evaluationPointsTemplate = `## 評估要點\n\n### 1. 技術完整 - 評估用戶體驗和業務流程整合`; // 決策點模板 -export const decisionPointsTemplate = `## 決策點\n\n根據評估結果選擇後續行動:\n\n- **發現關鍵問題**:使用「analyze_task」重新提交改進方案 +export const decisionPointsTemplate = `## 決策點 +根據評估結果選擇後續行動: +- **發現關鍵問題**:使用「analyze_task」重新提交改進方案 - **輕微調整**:在下一步執行中應用這些小的改進 -- **方案完善**:使用「split_tasks」將解決方案分解為可執行子任務,如果任務太多或內容過長,請使用多次使用「split_tasks」工具,每次只提交一小部分任務`; +- **方案完善**:使用「split_tasks」將解決方案分解為可執行子任務,如果任務太多或內容過長,請使用多次使用「split_tasks」工具,每次只提交一小部分任務\n\n`; // 更新模式選擇模板 export const updateModesTemplate = `## split_tasks 更新模式選擇 - **append** - 保留所有現有任務並添加新任務 - **overwrite** - 清除未完成任務,保留已完成任務 - **selective** - 選擇性更新特定任務,保留其他任務 -- **clearAllTasks** - 清除所有任務並創建備份`; +- **clearAllTasks** - 清除所有任務並創建備份\n\n`; // 知識傳遞機制模板 export const knowledgeTransferTemplate = `## 知識傳遞機制 1. **全局分析結果** - 關聯完整分析文檔 2. **任務專屬實現指南** - 每個任務保存具體實現方法 -3. **任務專屬驗證標準** - 設置明確驗證要求`; +3. **任務專屬驗證標準** - 設置明確驗證要求\n\n`; // 任務過多處理模板 -export const taskOverflowTemplate = `## split_tasks 任務太多或內容過長導致「split_tasks」工具無法正常運作時 -- 請使用多次使用「split_tasks」工具,每次只提交一小部分任務 -- 如果每次只新增一個任務還是無法正常運作,請考慮再次拆分任務,或者簡化任務但必須保留核心內容 -- **嚴重警告** 你每次呼叫 split_tasks 傳遞的參數不能超過8000個字,如果超出 8000 個字請多次呼叫工具完成`; +export const taskOverflowTemplate = `## 任務拆分指南(請嚴格遵守以下規則) +- **原子性**:每個子任務應該可獨立運作或測試 +- **依賴性**:如果任務依賴於其他任務請標註 「dependencies」 字段 +- **適度拆分**:避免過度細化(粒度過小)或過度合併(粒度過大) +- **必要時整合**:修改的內容不多或不複雜,可以適當於其他任務整合,避免任務過於簡單造成任務過多 +- **重複調用**:如果任務太多或內容過長導致「split_tasks」工具無法正常運作時,請使用多次使用「split_tasks」工具,每次只提交一小部分任務 +- **簡化任務**:如果每次只新增一個任務還是無法正常運作,請考慮再次拆分任務,或者簡化任務但必須保留核心內容 +- **嚴重警告** 你每次呼叫 split_tasks 傳遞的參數不能超過8000個字,如果超出 8000 個字請多次呼叫工具完成\n\n`; // 結尾提醒模板 export const conclusionTemplate = `請嚴格審查方案,確保解決方案質量。`; diff --git a/src/tools/taskTools.ts b/src/tools/taskTools.ts index e3738a7..77937bb 100644 --- a/src/tools/taskTools.ts +++ b/src/tools/taskTools.ts @@ -160,7 +160,7 @@ export const analyzeTaskSchema = z.object({ "初步解答構想不能少於50個字符,請提供更詳細的內容確保技術方案清晰", }) .describe( - "初步解答構想,包含技術方案、架構設計和實施策略,如果需要提供程式碼請使用 pseudocode 格式且盡量精簡只保留核心實現部分,最少50個字符" + "最少50個字符的初步解答構想,包含技術方案、架構設計和實施策略,如果需要提供程式碼請使用 pseudocode 格式且僅提供高級邏輯流程和關鍵步驟避免完整代碼" ), previousAnalysis: z .string() @@ -204,7 +204,7 @@ export const reflectTaskSchema = z.object({ message: "技術分析內容不夠詳盡,請提供完整的技術分析和實施方案", }) .describe( - "完整詳盡的技術分析結果,包括所有技術細節、依賴組件和實施方案,如果需要提供程式碼請使用 pseudocode 格式且盡量精簡只保留核心實現部分" + "完整詳盡的技術分析結果,包括所有技術細節、依賴組件和實施方案,如果需要提供程式碼請使用 pseudocode 格式且僅提供高級邏輯流程和關鍵步驟避免完整代碼" ), }); @@ -253,7 +253,7 @@ export const splitTasksSchema = z.object({ implementationGuide: z .string() .describe( - "此特定任務的具體實現方法和步驟,請參考之前的分析結果提供 pseudocode" + "此特定任務的具體實現方法和步驟,請參考之前的分析結果提供精簡pseudocode" ), dependencies: z .array(z.string()) @@ -310,7 +310,9 @@ export const splitTasksSchema = z.object({ .min(1, { message: "請至少提供一個任務", }) - .describe("結構化的任務清單,每個任務應保持原子性且有明確的完成標準"), + .describe( + "結構化的任務清單,每個任務應保持原子性且有明確的完成標準,避免過於簡單的任務,簡單修改可與其他任務整合,避免任務過多" + ), globalAnalysisResult: z .string() .optional()