更新功能清單,將任務更新模式參數改為必填,新增「clearAllTasks」模式以清除所有任務並創建備份,並調整相關描述與邏輯,提升任務管理的靈活性與準確性。

This commit is contained in:
siage 2025-04-13 02:18:05 +08:00
parent ba006b55cd
commit c786d4ef6b
5 changed files with 23 additions and 28 deletions

View File

@ -129,10 +129,11 @@
**參數** **參數**
- `updateMode?: "append" | "overwrite" | "selective"` (選填) - 任務更新模式選擇: - `updateMode: "append" | "overwrite" | "selective" | "clearAllTasks"` (必填) - 任務更新模式選擇:
- `append`(預設):保留所有現有任務並添加新任務 - `append`:保留所有現有任務並添加新任務
- `overwrite`:清除所有未完成任務並完全替換 - `overwrite`:清除所有未完成任務並完全替換
- `selective`:根據任務名稱匹配更新現有任務,保留不在列表中的任務 - `selective`:根據任務名稱匹配更新現有任務,保留不在列表中的任務
- `clearAllTasks`:清除所有任務並創建備份
- `tasks: Array<object>` (必填) - 結構化的任務清單,每個任務應保持原子性且有明確的完成標準 - `tasks: Array<object>` (必填) - 結構化的任務清單,每個任務應保持原子性且有明確的完成標準
- `name: string` (必填) - 簡潔明確的任務名稱,應能清晰表達任務目的 - `name: string` (必填) - 簡潔明確的任務名稱,應能清晰表達任務目的
- 不超過 100 個字符 - 不超過 100 個字符

View File

@ -133,13 +133,12 @@ async function main() {
server.tool( server.tool(
"split_tasks", "split_tasks",
"將複雜任務分解為獨立且可追蹤的子任務,建立明確的依賴關係和優先順序。支援三種任務更新模式:追加(append)、覆蓋(overwrite)和選擇性更新(selective),其中覆蓋模式只會刪除未完成的任務並保留已完成任務,選擇性更新模式可根據任務名稱智能匹配更新現有任務,同時保留其他任務。", "將複雜任務分解為獨立且可追蹤的子任務,建立明確的依賴關係和優先順序。支援四種任務更新模式:追加(append)、覆蓋(overwrite)、選擇性更新(selective)和清除所有任務(clearAllTasks),其中覆蓋模式只會刪除未完成的任務並保留已完成任務,選擇性更新模式可根據任務名稱智能匹配更新現有任務,同時保留其他任務,如果你需要規劃全新的任務請使用清除所有任務模式會清除所有任務並創建備份。",
{ {
updateMode: z updateMode: z
.enum(["append", "overwrite", "selective"]) .enum(["append", "overwrite", "selective", "clearAllTasks"])
.optional()
.describe( .describe(
"任務更新模式選擇:'append'(保留所有現有任務並添加新任務)、'overwrite'(清除所有未完成任務並完全替換,保留已完成任務)、'selective'(智能更新:根據任務名稱匹配更新現有任務,保留不在列表中的任務,推薦用於任務微調)" "任務更新模式選擇:'append'(保留所有現有任務並添加新任務)、'overwrite'(清除所有未完成任務並完全替換,保留已完成任務)、'selective'(智能更新:根據任務名稱匹配更新現有任務,保留不在列表中的任務,推薦用於任務微調)、'clearAllTasks'(清除所有任務並創建備份)"
), ),
tasks: z tasks: z
.array( .array(

View File

@ -263,7 +263,7 @@ export async function batchCreateOrUpdateTasks(
dependencies?: string[]; dependencies?: string[];
relatedFiles?: RelatedFile[]; relatedFiles?: RelatedFile[];
}>, }>,
updateMode: "append" | "overwrite" | "selective" | "clearAllTasks" updateMode: "append" | "overwrite" | "selective" | "clearAllTasks" // 必填參數,指定任務更新策略
): Promise<Task[]> { ): Promise<Task[]> {
// 獲取現有任務 // 獲取現有任務
const existingTasks = await readTasks(); const existingTasks = await readTasks();

View File

@ -451,10 +451,11 @@ export async function reflectTask({
- -
- -
## split_tasks updateMode ## split_tasks updateMode
- ****使 updateMode="append" - ****使 updateMode="append"
- ****使 updateMode="overwrite" - ****使 updateMode="overwrite"
- ****使 updateMode="selective" - ****使 updateMode="selective"
- ****使 updateMode="clearAllTasks"
`; `;
@ -473,9 +474,8 @@ export const splitTasksSchema = z
.object({ .object({
updateMode: z updateMode: z
.enum(["append", "overwrite", "selective", "clearAllTasks"]) .enum(["append", "overwrite", "selective", "clearAllTasks"])
.optional()
.describe( .describe(
"任務更新模式'append'(保留現有任務並新增)、'overwrite'(清除所有未完成任務並重建)、'selective'(根據名稱匹配更新現有任務,保留其餘任務)、'clearAllTasks'(清除所有任務並創建備份)" "任務更新模式(必填)'append'(保留現有任務並新增)、'overwrite'(清除所有未完成任務並重建)、'selective'(根據名稱匹配更新現有任務,保留其餘任務)、'clearAllTasks'(清除所有任務並創建備份)"
), ),
tasks: z tasks: z
.array( .array(
@ -548,11 +548,8 @@ export async function splitTasks({
updateMode, updateMode,
tasks, tasks,
}: z.infer<typeof splitTasksSchema>) { }: z.infer<typeof splitTasksSchema>) {
// 如果未指定更新模式,預設為 "append" 模式
const effectiveUpdateMode = updateMode || "append";
// 處理 clearAllTasks 模式,直接調用 modelClearAllTasks 函數 // 處理 clearAllTasks 模式,直接調用 modelClearAllTasks 函數
if (effectiveUpdateMode === "clearAllTasks") { if (updateMode === "clearAllTasks") {
const clearResult = await modelClearAllTasks(); const clearResult = await modelClearAllTasks();
// 記錄清除結果 // 記錄清除結果
@ -605,14 +602,14 @@ export async function splitTasks({
// 根據不同更新模式生成日誌訊息 // 根據不同更新模式生成日誌訊息
let updateModeMessage = ""; let updateModeMessage = "";
if (effectiveUpdateMode === "append") { if (updateMode === "append") {
updateModeMessage = "追加模式:保留現有任務並新增"; updateModeMessage = "追加模式:保留現有任務並新增";
} else if (effectiveUpdateMode === "overwrite") { } else if (updateMode === "overwrite") {
updateModeMessage = "覆蓋模式:清除所有未完成任務並重建"; updateModeMessage = "覆蓋模式:清除所有未完成任務並重建";
} else if (effectiveUpdateMode === "selective") { } else if (updateMode === "selective") {
updateModeMessage = updateModeMessage =
"選擇性更新模式:根據任務名稱更新現有任務、新增缺少任務,保留其餘任務"; "選擇性更新模式:根據任務名稱更新現有任務、新增缺少任務,保留其餘任務";
} else if (effectiveUpdateMode === "clearAllTasks") { } else if (updateMode === "clearAllTasks") {
updateModeMessage = "清除模式:清除所有任務並創建備份"; updateModeMessage = "清除模式:清除所有任務並創建備份";
} }
@ -629,10 +626,7 @@ export async function splitTasks({
} }
// 批量創建任務 - 將 updateMode 傳遞給 batchCreateOrUpdateTasks // 批量創建任務 - 將 updateMode 傳遞給 batchCreateOrUpdateTasks
const createdTasks = await batchCreateOrUpdateTasks( const createdTasks = await batchCreateOrUpdateTasks(tasks, updateMode);
tasks,
effectiveUpdateMode
);
// 記錄任務創建成功 // 記錄任務創建成功
try { try {
@ -650,10 +644,10 @@ export async function splitTasks({
// 獲取所有任務,用於顯示完整的依賴關係 // 獲取所有任務,用於顯示完整的依賴關係
const allTasks = await getAllTasks(); const allTasks = await getAllTasks();
let prompt = `## 任務拆分結果 - ${effectiveUpdateMode} 模式\n\n### 系統確認\n任務已成功${ let prompt = `## 任務拆分結果 - ${updateMode} 模式\n\n### 系統確認\n任務已成功${
effectiveUpdateMode === "overwrite" updateMode === "overwrite"
? "覆蓋未完成的任務清單(已完成任務已保留)" ? "覆蓋未完成的任務清單(已完成任務已保留)"
: effectiveUpdateMode === "selective" : updateMode === "selective"
? "選擇性更新任務清單" ? "選擇性更新任務清單"
: "新增至現有任務清單" : "新增至現有任務清單"
}\n\n`; }\n\n`;

View File

@ -66,12 +66,13 @@ export interface ReflectTaskArgs {
// 拆分任務的參數:用於將大型任務分解為可管理的小型任務 // 拆分任務的參數:用於將大型任務分解為可管理的小型任務
export interface SplitTasksArgs { export interface SplitTasksArgs {
/** /**
* *
* - "append" * - "append"
* - "overwrite" * - "overwrite"
* - "selective" * - "selective"
* - "clearAllTasks"
*/ */
updateMode?: "append" | "overwrite" | "selective"; updateMode: "append" | "overwrite" | "selective" | "clearAllTasks";
tasks: Array<{ tasks: Array<{
name: string; // 簡潔明確的任務名稱,應能清晰表達任務目的 name: string; // 簡潔明確的任務名稱,應能清晰表達任務目的
description: string; // 詳細的任務描述,包含實施要點、技術細節和驗收標準 description: string; // 詳細的任務描述,包含實施要點、技術細節和驗收標準