mirror of
https://github.com/cjo4m06/mcp-shrimp-task-manager.git
synced 2025-07-26 07:52:25 +08:00
調整任務模板,改用 md 格式方便以後多語系與修改提示詞
This commit is contained in:
parent
05ab337511
commit
5513235d82
776
package-lock.json
generated
776
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@ -16,7 +16,7 @@
|
||||
"mcp-shrimp-task-manager": "./dist/index.js"
|
||||
},
|
||||
"scripts": {
|
||||
"build": "tsc && node scripts/add-shebang.js",
|
||||
"build": "tsc && copyfiles -u 1 './src/**/*.md' dist && node scripts/add-shebang.js",
|
||||
"dev": "ts-node src/index.ts",
|
||||
"start": "node dist/index.js",
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
@ -39,6 +39,7 @@
|
||||
"devDependencies": {
|
||||
"@types/node": "^20.8.2",
|
||||
"@types/uuid": "^9.0.6",
|
||||
"copyfiles": "^2.4.1",
|
||||
"ts-node": "^10.9.2",
|
||||
"typescript": "^5.2.2"
|
||||
}
|
||||
|
@ -3,8 +3,11 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import * as templates from "../templates/analyzeTask.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
|
||||
/**
|
||||
* analyzeTask prompt 參數介面
|
||||
@ -21,25 +24,23 @@ export interface AnalyzeTaskPromptParams {
|
||||
* @returns 生成的 prompt
|
||||
*/
|
||||
export function getAnalyzeTaskPrompt(params: AnalyzeTaskPromptParams): string {
|
||||
// 開始構建基本 prompt
|
||||
let basePrompt = generatePrompt(templates.analyzeTaskTemplate, {
|
||||
summary: params.summary,
|
||||
initialConcept: params.initialConcept,
|
||||
});
|
||||
const indexTemplate = loadPromptFromTemplate("analyzeTask/index.md");
|
||||
|
||||
// 添加技術審核要點
|
||||
basePrompt += templates.technicalReviewTemplate;
|
||||
const iterationTemplate = loadPromptFromTemplate("analyzeTask/iteration.md");
|
||||
|
||||
// 如果有前次分析結果,添加相關模板
|
||||
let iterationPrompt = "";
|
||||
if (params.previousAnalysis) {
|
||||
basePrompt += generatePrompt(templates.iterationAnalysisTemplate, {
|
||||
iterationPrompt = generatePrompt(iterationTemplate, {
|
||||
previousAnalysis: params.previousAnalysis,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加下一步行動指導
|
||||
basePrompt += templates.nextActionTemplate;
|
||||
let prompt = generatePrompt(indexTemplate, {
|
||||
summary: params.summary,
|
||||
initialConcept: params.initialConcept,
|
||||
iterationPrompt: iterationPrompt,
|
||||
});
|
||||
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(basePrompt, "ANALYZE_TASK");
|
||||
return loadPrompt(prompt, "ANALYZE_TASK");
|
||||
}
|
||||
|
@ -3,8 +3,11 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import * as templates from "../templates/completeTask.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
import { Task } from "../../types/index.js";
|
||||
|
||||
/**
|
||||
@ -25,22 +28,15 @@ export function getCompleteTaskPrompt(
|
||||
): string {
|
||||
const { task, completionTime } = params;
|
||||
|
||||
const indexTemplate = loadPromptFromTemplate("completeTask/index.md");
|
||||
|
||||
// 開始構建基本 prompt
|
||||
let basePrompt = generatePrompt(templates.completeTaskConfirmationTemplate, {
|
||||
let prompt = generatePrompt(indexTemplate, {
|
||||
name: task.name,
|
||||
id: task.id,
|
||||
completionTime: completionTime,
|
||||
});
|
||||
|
||||
// 添加任務摘要要求
|
||||
basePrompt += templates.taskSummaryRequirementsTemplate;
|
||||
|
||||
// 添加重要提示
|
||||
basePrompt += templates.importantReminderTemplate;
|
||||
|
||||
// 添加連續執行模式提示
|
||||
basePrompt += templates.continuousModeReminderTemplate;
|
||||
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(basePrompt, "COMPLETE_TASK");
|
||||
return loadPrompt(prompt, "COMPLETE_TASK");
|
||||
}
|
||||
|
@ -3,21 +3,13 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import * as templates from "../templates/executeTask.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
import { Task, TaskStatus } from "../../types/index.js";
|
||||
|
||||
/**
|
||||
* 任務複雜度級別的介面
|
||||
*/
|
||||
interface TaskComplexityLevel {
|
||||
VERY_HIGH: string;
|
||||
HIGH: string;
|
||||
MEDIUM: string;
|
||||
LOW: string;
|
||||
VERY_LOW: string;
|
||||
}
|
||||
|
||||
/**
|
||||
* 任務複雜度評估的介面
|
||||
*/
|
||||
@ -38,7 +30,6 @@ export interface ExecuteTaskPromptParams {
|
||||
complexityAssessment?: ComplexityAssessment;
|
||||
relatedFilesSummary?: string;
|
||||
dependencyTasks?: Task[];
|
||||
potentialFiles?: string[];
|
||||
}
|
||||
|
||||
/**
|
||||
@ -65,143 +56,115 @@ function getComplexityStyle(level: string): string {
|
||||
* @returns 生成的 prompt
|
||||
*/
|
||||
export function getExecuteTaskPrompt(params: ExecuteTaskPromptParams): string {
|
||||
const {
|
||||
task,
|
||||
complexityAssessment,
|
||||
relatedFilesSummary,
|
||||
dependencyTasks,
|
||||
potentialFiles,
|
||||
} = params;
|
||||
const { task, complexityAssessment, relatedFilesSummary, dependencyTasks } =
|
||||
params;
|
||||
|
||||
// 處理注意事項
|
||||
const notes = task.notes ? `**注意事項:** ${task.notes}\n` : "";
|
||||
const notesTemplate = loadPromptFromTemplate("executeTask/notes.md");
|
||||
let notesPrompt = "";
|
||||
if (task.notes) {
|
||||
notesPrompt = generatePrompt(notesTemplate, {
|
||||
notes: task.notes,
|
||||
});
|
||||
}
|
||||
|
||||
// 開始構建基本 prompt
|
||||
let basePrompt = generatePrompt(templates.executeTaskTemplate, {
|
||||
name: task.name,
|
||||
id: task.id,
|
||||
description: task.description,
|
||||
notes: notes,
|
||||
});
|
||||
|
||||
// 添加實現指南(如果有)
|
||||
const implementationGuideTemplate = loadPromptFromTemplate(
|
||||
"executeTask/implementationGuide.md"
|
||||
);
|
||||
let implementationGuidePrompt = "";
|
||||
if (task.implementationGuide) {
|
||||
basePrompt += generatePrompt(templates.implementationGuideTemplate, {
|
||||
implementationGuidePrompt = generatePrompt(implementationGuideTemplate, {
|
||||
implementationGuide: task.implementationGuide,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加驗證標準(如果有)
|
||||
const verificationCriteriaTemplate = loadPromptFromTemplate(
|
||||
"executeTask/verificationCriteria.md"
|
||||
);
|
||||
let verificationCriteriaPrompt = "";
|
||||
if (task.verificationCriteria) {
|
||||
basePrompt += generatePrompt(templates.verificationCriteriaTemplate, {
|
||||
verificationCriteriaPrompt = generatePrompt(verificationCriteriaTemplate, {
|
||||
verificationCriteria: task.verificationCriteria,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加分析結果(如果有)
|
||||
const analysisResultTemplate = loadPromptFromTemplate(
|
||||
"executeTask/analysisResult.md"
|
||||
);
|
||||
let analysisResultPrompt = "";
|
||||
if (task.analysisResult) {
|
||||
basePrompt += generatePrompt(templates.analysisResultTemplate, {
|
||||
analysisResultPrompt = generatePrompt(analysisResultTemplate, {
|
||||
analysisResult: task.analysisResult,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加依賴任務完成摘要(如果有)
|
||||
const dependencyTasksTemplate = loadPromptFromTemplate(
|
||||
"executeTask/dependencyTasks.md"
|
||||
);
|
||||
let dependencyTasksPrompt = "";
|
||||
if (dependencyTasks && dependencyTasks.length > 0) {
|
||||
const completedDependencyTasks = dependencyTasks.filter(
|
||||
(t) => t.status === TaskStatus.COMPLETED && t.summary
|
||||
);
|
||||
|
||||
if (completedDependencyTasks.length > 0) {
|
||||
basePrompt += templates.dependencyTaskSummaryTemplate;
|
||||
|
||||
let dependencyTasksContent = "";
|
||||
for (const depTask of completedDependencyTasks) {
|
||||
basePrompt += generatePrompt(templates.dependencyTaskItemTemplate, {
|
||||
name: depTask.name,
|
||||
summary: depTask.summary || "*無完成摘要*",
|
||||
});
|
||||
dependencyTasksContent += `### ${depTask.name}\n${
|
||||
depTask.summary || "*無完成摘要*"
|
||||
}\n\n`;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 添加相關文件(如果有)
|
||||
if (relatedFilesSummary) {
|
||||
basePrompt += generatePrompt(templates.relatedFilesSummaryTemplate, {
|
||||
relatedFilesSummary: relatedFilesSummary,
|
||||
});
|
||||
} else {
|
||||
// 無相關文件
|
||||
basePrompt += templates.noRelatedFilesTemplate;
|
||||
|
||||
// 添加潛在相關文件建議(如果有)
|
||||
if (potentialFiles && potentialFiles.length > 0) {
|
||||
const potentialFilesStr = potentialFiles
|
||||
.map((file) => `- 含有 "${file}" 的文件\n`)
|
||||
.join("");
|
||||
|
||||
basePrompt += generatePrompt(templates.recommendedFilesTemplate, {
|
||||
potentialFiles: potentialFilesStr,
|
||||
dependencyTasksPrompt = generatePrompt(dependencyTasksTemplate, {
|
||||
dependencyTasks: dependencyTasksContent,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 添加複雜度評估(如果有)
|
||||
const relatedFilesSummaryTemplate = loadPromptFromTemplate(
|
||||
"executeTask/relatedFilesSummary.md"
|
||||
);
|
||||
let relatedFilesSummaryPrompt = "";
|
||||
relatedFilesSummaryPrompt = generatePrompt(relatedFilesSummaryTemplate, {
|
||||
relatedFilesSummary: relatedFilesSummary || "當前任務沒有關聯的文件。",
|
||||
});
|
||||
|
||||
const complexityTemplate = loadPromptFromTemplate(
|
||||
"executeTask/complexity.md"
|
||||
);
|
||||
let complexityPrompt = "";
|
||||
if (complexityAssessment) {
|
||||
basePrompt += generatePrompt(templates.complexityAssessmentTemplate, {
|
||||
level: complexityAssessment.level,
|
||||
});
|
||||
|
||||
// 添加複雜度警告樣式(如果需要)
|
||||
const complexityStyle = getComplexityStyle(complexityAssessment.level);
|
||||
if (complexityStyle) {
|
||||
basePrompt += generatePrompt(templates.complexityWarningTemplate, {
|
||||
complexityStyle: complexityStyle,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加評估指標
|
||||
basePrompt += templates.assessmentMetricsTemplate;
|
||||
basePrompt += generatePrompt(templates.descriptionLengthMetric, {
|
||||
descriptionLength: complexityAssessment.metrics.descriptionLength,
|
||||
});
|
||||
basePrompt += generatePrompt(templates.dependenciesCountMetric, {
|
||||
dependenciesCount: complexityAssessment.metrics.dependenciesCount,
|
||||
});
|
||||
|
||||
// 添加處理建議(如果有)
|
||||
let recommendationContent = "";
|
||||
if (
|
||||
complexityAssessment.recommendations &&
|
||||
complexityAssessment.recommendations.length > 0
|
||||
) {
|
||||
basePrompt += templates.handlingRecommendationsTemplate;
|
||||
if (complexityAssessment.recommendations[0]) {
|
||||
basePrompt += generatePrompt(templates.handlingRecommendation1, {
|
||||
recommendation1: complexityAssessment.recommendations[0],
|
||||
});
|
||||
}
|
||||
if (complexityAssessment.recommendations[1]) {
|
||||
basePrompt += generatePrompt(templates.handlingRecommendation2, {
|
||||
recommendation2: complexityAssessment.recommendations[1],
|
||||
});
|
||||
for (const recommendation of complexityAssessment.recommendations) {
|
||||
recommendationContent += `- ${recommendation}\n`;
|
||||
}
|
||||
}
|
||||
complexityPrompt = generatePrompt(complexityTemplate, {
|
||||
level: complexityAssessment.level,
|
||||
complexityStyle: complexityStyle,
|
||||
descriptionLength: complexityAssessment.metrics.descriptionLength,
|
||||
dependenciesCount: complexityAssessment.metrics.dependenciesCount,
|
||||
recommendation: recommendationContent,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加執行步驟
|
||||
basePrompt += templates.executionStepsTemplate;
|
||||
basePrompt += templates.executionStep1;
|
||||
basePrompt += templates.executionStep2;
|
||||
basePrompt += templates.executionStep3;
|
||||
basePrompt += templates.executionStep4;
|
||||
|
||||
// 添加質量要求
|
||||
basePrompt += templates.qualityRequirementsTemplate;
|
||||
basePrompt += templates.qualityRequirement1;
|
||||
basePrompt += templates.qualityRequirement2;
|
||||
basePrompt += templates.qualityRequirement3;
|
||||
|
||||
// 添加完成提示
|
||||
basePrompt += templates.completionReminderTemplate;
|
||||
const indexTemplate = loadPromptFromTemplate("executeTask/index.md");
|
||||
let prompt = generatePrompt(indexTemplate, {
|
||||
name: task.name,
|
||||
id: task.id,
|
||||
description: task.description,
|
||||
notesTemplate: notesPrompt,
|
||||
implementationGuideTemplate: implementationGuidePrompt,
|
||||
verificationCriteriaTemplate: verificationCriteriaPrompt,
|
||||
analysisResultTemplate: analysisResultPrompt,
|
||||
dependencyTasksTemplate: dependencyTasksPrompt,
|
||||
relatedFilesSummaryTemplate: relatedFilesSummaryPrompt,
|
||||
complexityTemplate: complexityPrompt,
|
||||
});
|
||||
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(basePrompt, "EXECUTE_TASK");
|
||||
return loadPrompt(prompt, "EXECUTE_TASK");
|
||||
}
|
||||
|
@ -3,9 +3,12 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import * as templates from "../templates/getTaskDetail.js";
|
||||
import { Task, RelatedFile } from "../../types/index.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
import { Task } from "../../types/index.js";
|
||||
|
||||
/**
|
||||
* getTaskDetail prompt 參數介面
|
||||
@ -28,96 +31,108 @@ export function getGetTaskDetailPrompt(
|
||||
|
||||
// 如果有錯誤,顯示錯誤訊息
|
||||
if (error) {
|
||||
return generatePrompt(templates.errorTemplate, {
|
||||
const errorTemplate = loadPromptFromTemplate("getTaskDetail/error.md");
|
||||
return generatePrompt(errorTemplate, {
|
||||
errorMessage: error,
|
||||
});
|
||||
}
|
||||
|
||||
// 如果找不到任務,顯示找不到任務的訊息
|
||||
if (!task) {
|
||||
return generatePrompt(templates.taskNotFoundTemplate, {
|
||||
const notFoundTemplate = loadPromptFromTemplate(
|
||||
"getTaskDetail/notFound.md"
|
||||
);
|
||||
return generatePrompt(notFoundTemplate, {
|
||||
taskId,
|
||||
});
|
||||
}
|
||||
|
||||
// 開始構建基本 prompt
|
||||
let basePrompt = templates.taskDetailTitleTemplate;
|
||||
|
||||
// 添加任務基本信息
|
||||
basePrompt += generatePrompt(templates.taskBasicInfoTemplate, {
|
||||
name: task.name,
|
||||
id: task.id,
|
||||
status: task.status,
|
||||
description: task.description,
|
||||
});
|
||||
|
||||
// 添加注記(如果有)
|
||||
let notesPrompt = "";
|
||||
if (task.notes) {
|
||||
basePrompt += generatePrompt(templates.taskNotesTemplate, {
|
||||
const notesTemplate = loadPromptFromTemplate("getTaskDetail/notes.md");
|
||||
notesPrompt = generatePrompt(notesTemplate, {
|
||||
notes: task.notes,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加依賴任務(如果有)
|
||||
let dependenciesPrompt = "";
|
||||
if (task.dependencies && task.dependencies.length > 0) {
|
||||
basePrompt += generatePrompt(templates.taskDependenciesTemplate, {
|
||||
const dependenciesTemplate = loadPromptFromTemplate(
|
||||
"getTaskDetail/dependencies.md"
|
||||
);
|
||||
dependenciesPrompt = generatePrompt(dependenciesTemplate, {
|
||||
dependencies: task.dependencies
|
||||
.map((dep) => `\`${dep.taskId}\``)
|
||||
.join(", "),
|
||||
});
|
||||
}
|
||||
|
||||
// 添加實現指南(如果有)
|
||||
let implementationGuidePrompt = "";
|
||||
if (task.implementationGuide) {
|
||||
basePrompt += generatePrompt(templates.taskImplementationGuideTemplate, {
|
||||
const implementationGuideTemplate = loadPromptFromTemplate(
|
||||
"getTaskDetail/implementationGuide.md"
|
||||
);
|
||||
implementationGuidePrompt = generatePrompt(implementationGuideTemplate, {
|
||||
implementationGuide: task.implementationGuide,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加驗證標準(如果有)
|
||||
let verificationCriteriaPrompt = "";
|
||||
if (task.verificationCriteria) {
|
||||
basePrompt += generatePrompt(templates.taskVerificationCriteriaTemplate, {
|
||||
const verificationCriteriaTemplate = loadPromptFromTemplate(
|
||||
"getTaskDetail/verificationCriteria.md"
|
||||
);
|
||||
verificationCriteriaPrompt = generatePrompt(verificationCriteriaTemplate, {
|
||||
verificationCriteria: task.verificationCriteria,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加相關文件(如果有)
|
||||
let relatedFilesPrompt = "";
|
||||
if (task.relatedFiles && task.relatedFiles.length > 0) {
|
||||
const fileItems = task.relatedFiles
|
||||
.map((file) =>
|
||||
generatePrompt(templates.taskRelatedFileItemTemplate, {
|
||||
path: file.path,
|
||||
type: file.type,
|
||||
description: file.description ? `: ${file.description}` : "",
|
||||
})
|
||||
)
|
||||
.join("\n");
|
||||
|
||||
basePrompt += generatePrompt(templates.taskRelatedFilesTemplate, {
|
||||
files: fileItems,
|
||||
const relatedFilesTemplate = loadPromptFromTemplate(
|
||||
"getTaskDetail/relatedFiles.md"
|
||||
);
|
||||
relatedFilesPrompt = generatePrompt(relatedFilesTemplate, {
|
||||
files: task.relatedFiles
|
||||
.map(
|
||||
(file) =>
|
||||
`- \`${file.path}\` (${file.type})${
|
||||
file.description ? `: ${file.description}` : ""
|
||||
}`
|
||||
)
|
||||
.join("\n"),
|
||||
});
|
||||
}
|
||||
|
||||
// 添加時間信息
|
||||
basePrompt += generatePrompt(templates.taskTimeInfoTemplate, {
|
||||
let complatedSummaryPrompt = "";
|
||||
if (task.completedAt) {
|
||||
const complatedSummaryTemplate = loadPromptFromTemplate(
|
||||
"getTaskDetail/complatedSummary.md"
|
||||
);
|
||||
complatedSummaryPrompt = generatePrompt(complatedSummaryTemplate, {
|
||||
completedTime: new Date(task.completedAt).toLocaleString("zh-TW"),
|
||||
summary: task.summary || "*無完成摘要*",
|
||||
});
|
||||
}
|
||||
|
||||
const indexTemplate = loadPromptFromTemplate("getTaskDetail/index.md");
|
||||
|
||||
// 開始構建基本 prompt
|
||||
let prompt = generatePrompt(indexTemplate, {
|
||||
name: task.name,
|
||||
id: task.id,
|
||||
status: task.status,
|
||||
description: task.description,
|
||||
notesTemplate: notesPrompt,
|
||||
dependenciesTemplate: dependenciesPrompt,
|
||||
implementationGuideTemplate: implementationGuidePrompt,
|
||||
verificationCriteriaTemplate: verificationCriteriaPrompt,
|
||||
relatedFilesTemplate: relatedFilesPrompt,
|
||||
createdTime: new Date(task.createdAt).toLocaleString("zh-TW"),
|
||||
updatedTime: new Date(task.updatedAt).toLocaleString("zh-TW"),
|
||||
complatedSummaryTemplate: complatedSummaryPrompt,
|
||||
});
|
||||
|
||||
// 添加完成時間(如果有)
|
||||
if (task.completedAt) {
|
||||
basePrompt += generatePrompt(templates.taskCompletedTimeTemplate, {
|
||||
completedTime: new Date(task.completedAt).toLocaleString("zh-TW"),
|
||||
});
|
||||
}
|
||||
|
||||
// 添加完成摘要(如果有)
|
||||
if (task.summary) {
|
||||
basePrompt += generatePrompt(templates.taskSummaryTemplate, {
|
||||
summary: task.summary,
|
||||
});
|
||||
}
|
||||
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(basePrompt, "GET_TASK_DETAIL");
|
||||
return loadPrompt(prompt, "GET_TASK_DETAIL");
|
||||
}
|
||||
|
@ -3,8 +3,11 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import { initProjectRulesTemplate } from "../templates/initProjectRules.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
import { getRulesFilePath } from "../../utils/pathUtils.js";
|
||||
/**
|
||||
* initProjectRules prompt 參數介面
|
||||
@ -23,7 +26,8 @@ export function getInitProjectRulesPrompt(
|
||||
): string {
|
||||
// 使用基本模板
|
||||
const rulesPath = getRulesFilePath();
|
||||
const basePrompt = generatePrompt(initProjectRulesTemplate, {
|
||||
const indexTemplate = loadPromptFromTemplate("initProjectRules/index.md");
|
||||
const basePrompt = generatePrompt(indexTemplate, {
|
||||
rulesPath,
|
||||
});
|
||||
|
||||
|
@ -3,8 +3,11 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import * as templates from "../templates/listTasks.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
import { Task, TaskStatus } from "../../types/index.js";
|
||||
|
||||
/**
|
||||
@ -26,31 +29,21 @@ export function getListTasksPrompt(params: ListTasksPromptParams): string {
|
||||
|
||||
// 如果沒有任務,顯示通知
|
||||
if (allTasks.length === 0) {
|
||||
const notFoundTemplate = loadPromptFromTemplate("listTasks/notFound.md");
|
||||
const statusText = status === "all" ? "任何" : `任何 ${status} 的`;
|
||||
return generatePrompt(templates.noTasksNoticeTemplate, {
|
||||
return generatePrompt(notFoundTemplate, {
|
||||
statusText: statusText,
|
||||
});
|
||||
}
|
||||
|
||||
// 開始構建基本 prompt
|
||||
let basePrompt = templates.dashboardTitleTemplate;
|
||||
|
||||
// 添加狀態概覽
|
||||
basePrompt += templates.statusOverviewTitleTemplate;
|
||||
|
||||
// 獲取所有狀態的計數
|
||||
const statusCounts = Object.values(TaskStatus)
|
||||
.map((statusType) => {
|
||||
const count = tasks[statusType]?.length || 0;
|
||||
return generatePrompt(templates.statusCountTemplate, {
|
||||
status: statusType,
|
||||
count: count,
|
||||
});
|
||||
return `- **${statusType}**: ${count} 個任務`;
|
||||
})
|
||||
.join("\n");
|
||||
|
||||
basePrompt += `${statusCounts}\n\n`;
|
||||
|
||||
let filterStatus = "all";
|
||||
switch (status) {
|
||||
case "pending":
|
||||
@ -64,58 +57,43 @@ export function getListTasksPrompt(params: ListTasksPromptParams): string {
|
||||
break;
|
||||
}
|
||||
|
||||
let taskDetails = "";
|
||||
let taskDetailsTemplate = loadPromptFromTemplate("listTasks/taskDetails.md");
|
||||
// 添加每個狀態下的詳細任務
|
||||
for (const statusType of Object.values(TaskStatus)) {
|
||||
const tasksWithStatus = tasks[statusType] || [];
|
||||
|
||||
if (
|
||||
tasksWithStatus.length > 0 &&
|
||||
(filterStatus === "all" || filterStatus === statusType)
|
||||
) {
|
||||
basePrompt += generatePrompt(templates.statusSectionTitleTemplate, {
|
||||
status: statusType,
|
||||
count: tasksWithStatus.length,
|
||||
});
|
||||
|
||||
for (const task of tasksWithStatus) {
|
||||
basePrompt += formatTaskDetails(task);
|
||||
let dependencies = "沒有依賴";
|
||||
if (task.dependencies && task.dependencies.length > 0) {
|
||||
dependencies = task.dependencies
|
||||
.map((d) => `\`${d.taskId}\``)
|
||||
.join(", ");
|
||||
}
|
||||
taskDetails += generatePrompt(taskDetailsTemplate, {
|
||||
name: task.name,
|
||||
id: task.id,
|
||||
description: task.description,
|
||||
createAt: task.createdAt,
|
||||
complatedSummary:
|
||||
(task.summary || "").substring(0, 100) +
|
||||
((task.summary || "").length > 100 ? "..." : ""),
|
||||
dependencies: dependencies,
|
||||
complatedAt: task.completedAt,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const indexTemplate = loadPromptFromTemplate("listTasks/index.md");
|
||||
let prompt = generatePrompt(indexTemplate, {
|
||||
statusCount: statusCounts,
|
||||
taskDetailsTemplate: taskDetails,
|
||||
});
|
||||
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(basePrompt, "LIST_TASKS");
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化任務詳情
|
||||
* @param task 任務
|
||||
* @returns 格式化後的任務詳情字串
|
||||
*/
|
||||
function formatTaskDetails(task: Task): string {
|
||||
// 此函數內容應來自原始的 formatTaskDetails 函數
|
||||
// 根據實際需求實現詳細的任務格式化邏輯
|
||||
let result = `### ${task.name}\n**ID:** \`${task.id}\`\n**描述:** ${task.description}\n`;
|
||||
|
||||
if (task.status === TaskStatus.COMPLETED && task.summary) {
|
||||
result += `**完成摘要:** ${task.summary.substring(0, 100)}${
|
||||
task.summary.length > 100 ? "..." : ""
|
||||
}\n`;
|
||||
}
|
||||
|
||||
if (task.dependencies && task.dependencies.length > 0) {
|
||||
result += `**依賴:** ${task.dependencies
|
||||
.map((d) => `\`${d.taskId}\``)
|
||||
.join(", ")}\n`;
|
||||
}
|
||||
|
||||
result += `**創建時間:** ${new Date(task.createdAt).toLocaleString()}\n`;
|
||||
|
||||
if (task.status === TaskStatus.COMPLETED && task.completedAt) {
|
||||
result += `**完成時間:** ${new Date(task.completedAt).toLocaleString()}\n`;
|
||||
}
|
||||
|
||||
result += "\n";
|
||||
|
||||
return result;
|
||||
return loadPrompt(prompt, "LIST_TASKS");
|
||||
}
|
||||
|
@ -3,8 +3,11 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import * as templates from "../templates/planTask.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
import { getRulesFilePath } from "../../utils/pathUtils.js";
|
||||
import { Task, TaskDependency } from "../../types/index.js";
|
||||
|
||||
@ -26,34 +29,20 @@ export interface PlanTaskPromptParams {
|
||||
* @returns 生成的 prompt
|
||||
*/
|
||||
export function getPlanTaskPrompt(params: PlanTaskPromptParams): string {
|
||||
// 開始構建基本 prompt
|
||||
let basePrompt = generatePrompt(templates.planTaskTemplate, {
|
||||
description: params.description,
|
||||
});
|
||||
|
||||
// 如果有 requirements,添加到 prompt 中
|
||||
if (params.requirements) {
|
||||
basePrompt += generatePrompt(templates.requirementsTemplate, {
|
||||
requirements: params.requirements,
|
||||
});
|
||||
}
|
||||
|
||||
// 如果需要參考現有任務
|
||||
let tasksContent = "";
|
||||
if (
|
||||
params.existingTasksReference &&
|
||||
params.completedTasks &&
|
||||
params.pendingTasks
|
||||
) {
|
||||
const allTasks = [...params.completedTasks, ...params.pendingTasks];
|
||||
|
||||
// 如果存在任務,則添加相關資訊
|
||||
if (allTasks.length > 0) {
|
||||
basePrompt += templates.existingTasksReferenceTemplate;
|
||||
let completeTasksContent = "no completed tasks";
|
||||
|
||||
// 處理已完成任務
|
||||
if (params.completedTasks.length > 0) {
|
||||
basePrompt += templates.completedTasksTitleTemplate;
|
||||
|
||||
completeTasksContent = "";
|
||||
// 最多顯示10個已完成任務,避免提示詞過長
|
||||
const tasksToShow =
|
||||
params.completedTasks.length > 10
|
||||
@ -63,140 +52,81 @@ export function getPlanTaskPrompt(params: PlanTaskPromptParams): string {
|
||||
tasksToShow.forEach((task, index) => {
|
||||
// 產生完成時間資訊 (如果有)
|
||||
const completedTimeText = task.completedAt
|
||||
? ` - 完成時間:${task.completedAt.toLocaleString()}\n`
|
||||
? ` - completedAt:${task.completedAt.toLocaleString()}\n`
|
||||
: "";
|
||||
|
||||
// 使用模板生成任務顯示項目
|
||||
basePrompt += generatePrompt(templates.completedTaskItemTemplate, {
|
||||
index: index + 1,
|
||||
taskName: task.name,
|
||||
taskId: task.id,
|
||||
taskDescription:
|
||||
task.description.length > 100
|
||||
? task.description.substring(0, 100) + "..."
|
||||
: task.description,
|
||||
completedTime: completedTimeText,
|
||||
});
|
||||
|
||||
completeTasksContent += `{index}. **${task.name}** (ID: \`${
|
||||
task.id
|
||||
}\`)\n - description:${
|
||||
task.description.length > 100
|
||||
? task.description.substring(0, 100) + "..."
|
||||
: task.description
|
||||
}\n${completedTimeText}`;
|
||||
// 如果不是最後一個任務,添加換行
|
||||
if (index < tasksToShow.length - 1) {
|
||||
basePrompt += "\n\n";
|
||||
completeTasksContent += "\n\n";
|
||||
}
|
||||
});
|
||||
|
||||
// 如果有更多任務,顯示提示
|
||||
if (params.completedTasks.length > 10) {
|
||||
basePrompt += `\n\n*(僅顯示前10個,共 ${params.completedTasks.length} 個)*\n`;
|
||||
completeTasksContent += `\n\n*(僅顯示前10個,共 ${params.completedTasks.length} 個)*\n`;
|
||||
}
|
||||
}
|
||||
|
||||
let unfinishedTasksContent = "no pending tasks";
|
||||
// 處理未完成任務
|
||||
if (params.pendingTasks && params.pendingTasks.length > 0) {
|
||||
basePrompt += templates.pendingTasksTitleTemplate;
|
||||
unfinishedTasksContent = "";
|
||||
|
||||
params.pendingTasks.forEach((task, index) => {
|
||||
// 處理依賴關係 (如果有)
|
||||
const dependenciesText =
|
||||
task.dependencies && task.dependencies.length > 0
|
||||
? ` - 依賴:${task.dependencies
|
||||
? ` - dependence:${task.dependencies
|
||||
.map((dep: TaskDependency) => `\`${dep.taskId}\``)
|
||||
.join(", ")}\n`
|
||||
: "";
|
||||
|
||||
// 使用模板生成未完成任務顯示項目
|
||||
basePrompt += generatePrompt(templates.pendingTaskItemTemplate, {
|
||||
index: index + 1,
|
||||
taskName: task.name,
|
||||
taskId: task.id,
|
||||
taskDescription:
|
||||
task.description.length > 150
|
||||
? task.description.substring(0, 150) + "..."
|
||||
: task.description,
|
||||
taskStatus: task.status,
|
||||
dependencies: dependenciesText,
|
||||
});
|
||||
unfinishedTasksContent += `${index + 1}. **${task.name}** (ID: \`${
|
||||
task.id
|
||||
}\`)\n - description:${
|
||||
task.description.length > 150
|
||||
? task.description.substring(0, 150) + "..."
|
||||
: task.description
|
||||
}\n - status:${task.status}\n${dependenciesText}`;
|
||||
|
||||
// 如果不是最後一個任務,添加換行
|
||||
if (index < (params.pendingTasks?.length ?? 0) - 1) {
|
||||
basePrompt += "\n\n";
|
||||
unfinishedTasksContent += "\n\n";
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// 添加任務調整原則
|
||||
basePrompt += templates.taskAdjustmentPrinciplesTemplate;
|
||||
basePrompt += templates.taskAdjustmentPrinciplesContent;
|
||||
basePrompt += templates.taskAdjustmentPrinciplesContent2;
|
||||
basePrompt += templates.taskAdjustmentPrinciplesContent3;
|
||||
basePrompt += templates.taskAdjustmentPrinciplesContent4;
|
||||
basePrompt += templates.taskAdjustmentPrinciplesContent5;
|
||||
|
||||
// 添加任務更新模式指導
|
||||
basePrompt += templates.taskUpdateModesTemplate;
|
||||
basePrompt += templates.taskUpdateModesContent1;
|
||||
basePrompt += templates.taskUpdateModesContent1Detail;
|
||||
basePrompt += templates.taskUpdateModesContent1Usage;
|
||||
basePrompt += templates.taskUpdateModesContent2;
|
||||
basePrompt += templates.taskUpdateModesContent2Detail;
|
||||
basePrompt += templates.taskUpdateModesContent2Usage;
|
||||
basePrompt += templates.taskUpdateModesContent3;
|
||||
basePrompt += templates.taskUpdateModesContent3Detail;
|
||||
basePrompt += templates.taskUpdateModesContent3Usage;
|
||||
basePrompt += templates.taskUpdateModesContent3Mechanism;
|
||||
const tasksTemplate = loadPromptFromTemplate("planTask/tasks.md");
|
||||
tasksContent = generatePrompt(tasksTemplate, {
|
||||
completedTasks: completeTasksContent,
|
||||
unfinishedTasks: unfinishedTasksContent,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// 添加分析指引
|
||||
basePrompt += templates.analysisGuideTemplate;
|
||||
|
||||
// 添加任務記憶檢索相關模板
|
||||
basePrompt += templates.memoryDirTemplate;
|
||||
basePrompt += generatePrompt(templates.memoryDirContent, {
|
||||
memoryDir: params.memoryDir,
|
||||
});
|
||||
basePrompt += templates.memoryDirUsageGuide;
|
||||
|
||||
// 添加查詢建議
|
||||
basePrompt += templates.queryRecommendationsTemplate;
|
||||
basePrompt += templates.queryHighPriority;
|
||||
basePrompt += templates.queryHighPriorityItems;
|
||||
basePrompt += templates.queryHighPriorityItems2;
|
||||
basePrompt += templates.queryHighPriorityItems3;
|
||||
basePrompt += templates.queryHighPriorityItems4;
|
||||
basePrompt += templates.queryMediumPriority;
|
||||
basePrompt += templates.queryMediumPriorityItems;
|
||||
basePrompt += templates.queryMediumPriorityItems2;
|
||||
basePrompt += templates.queryMediumPriorityItems3;
|
||||
basePrompt += templates.queryLowPriority;
|
||||
basePrompt += templates.queryLowPriorityItems;
|
||||
basePrompt += templates.queryLowPriorityItems2;
|
||||
basePrompt += templates.queryLowPriorityItems3;
|
||||
basePrompt += templates.queryReminder;
|
||||
|
||||
// 添加資訊收集指南
|
||||
basePrompt += templates.infoCollectionGuideTemplate;
|
||||
basePrompt += templates.infoCollectionGuideItems;
|
||||
basePrompt += templates.infoCollectionGuideItems2;
|
||||
basePrompt += templates.infoCollectionGuideItems3;
|
||||
|
||||
const rulesPath = getRulesFilePath();
|
||||
// 添加下一步指導
|
||||
basePrompt += generatePrompt(templates.nextStepsTemplate, {
|
||||
rulesPath,
|
||||
});
|
||||
basePrompt += templates.nextStepsContent1;
|
||||
basePrompt += templates.nextStepsContent1Detail;
|
||||
|
||||
let thoughtTemplate = "";
|
||||
if (process.env.ENABLE_THOUGHT_CHAIN !== "false") {
|
||||
basePrompt += templates.nextStepsThoughtTemplate;
|
||||
basePrompt += templates.nextStepsThoughtDetail1;
|
||||
basePrompt += templates.nextStepsThoughtDetail2;
|
||||
thoughtTemplate = loadPromptFromTemplate("planTask/hasThought.md");
|
||||
} else {
|
||||
basePrompt += templates.nextStepsContent2;
|
||||
basePrompt += templates.nextStepsContent2Detail1;
|
||||
basePrompt += templates.nextStepsContent2Detail2;
|
||||
thoughtTemplate = loadPromptFromTemplate("planTask/noThought.md");
|
||||
}
|
||||
const rulesPath = getRulesFilePath();
|
||||
const indexTemplate = loadPromptFromTemplate("planTask/index.md");
|
||||
let prompt = generatePrompt(indexTemplate, {
|
||||
description: params.description,
|
||||
requirements: params.requirements || "No requirements",
|
||||
tasksTemplate: tasksContent,
|
||||
rulesPath: rulesPath,
|
||||
memoryDir: params.memoryDir,
|
||||
thoughtTemplate: thoughtTemplate,
|
||||
});
|
||||
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(basePrompt, "PLAN_TASK");
|
||||
return loadPrompt(prompt, "PLAN_TASK");
|
||||
}
|
||||
|
@ -3,8 +3,11 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import * as templates from "../templates/queryTask.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
import { Task } from "../../types/index.js";
|
||||
|
||||
/**
|
||||
@ -28,69 +31,40 @@ export interface QueryTaskPromptParams {
|
||||
export function getQueryTaskPrompt(params: QueryTaskPromptParams): string {
|
||||
const { query, isId, tasks, totalTasks, page, pageSize, totalPages } = params;
|
||||
|
||||
// 初始化基本 prompt
|
||||
let basePrompt = generatePrompt(templates.searchHeaderTemplate, {
|
||||
query,
|
||||
searchMode: isId
|
||||
? templates.searchModeIdTemplate
|
||||
: templates.searchModeKeywordTemplate,
|
||||
totalTasks,
|
||||
});
|
||||
|
||||
// 如果沒有找到任務
|
||||
if (tasks.length === 0) {
|
||||
basePrompt += generatePrompt(
|
||||
isId ? templates.noResultsIdTemplate : templates.noResultsKeywordTemplate,
|
||||
{ query }
|
||||
);
|
||||
return loadPrompt(basePrompt, "QUERY_TASK");
|
||||
}
|
||||
|
||||
// 添加任務列表
|
||||
basePrompt += templates.resultListHeaderTemplate;
|
||||
|
||||
// 格式化找到的任務
|
||||
for (const task of tasks) {
|
||||
basePrompt += formatTaskSummary(task);
|
||||
}
|
||||
|
||||
// 添加分頁信息
|
||||
if (totalPages > 1) {
|
||||
basePrompt += generatePrompt(templates.paginationInfoTemplate, {
|
||||
page,
|
||||
totalPages,
|
||||
pageSize,
|
||||
totalTasks,
|
||||
const notFoundTemplate = loadPromptFromTemplate("queryTask/notFound.md");
|
||||
return generatePrompt(notFoundTemplate, {
|
||||
query,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加使用提示
|
||||
basePrompt += templates.usageHintTemplate;
|
||||
const taskDetailsTemplate = loadPromptFromTemplate(
|
||||
"queryTask/taskDetails.md"
|
||||
);
|
||||
let tasksContent = "";
|
||||
for (const task of tasks) {
|
||||
tasksContent += generatePrompt(taskDetailsTemplate, {
|
||||
taskId: task.id,
|
||||
taskName: task.name,
|
||||
taskStatus: task.status,
|
||||
taskDescription:
|
||||
task.description.length > 100
|
||||
? `${task.description.substring(0, 100)}...`
|
||||
: task.description,
|
||||
createdAt: new Date(task.createdAt).toLocaleString(),
|
||||
});
|
||||
}
|
||||
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(basePrompt, "QUERY_TASK");
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化任務摘要
|
||||
* @param task 任務對象
|
||||
* @returns 格式化後的任務摘要字串
|
||||
*/
|
||||
function formatTaskSummary(task: Task): string {
|
||||
// 簡化版的任務摘要,比完整格式更精簡
|
||||
let result = generatePrompt(templates.taskSummaryTemplate, {
|
||||
taskId: task.id,
|
||||
taskName: task.name,
|
||||
taskStatus: task.status,
|
||||
taskDescription:
|
||||
task.description.length > 100
|
||||
? `${task.description.substring(0, 100)}...`
|
||||
: task.description,
|
||||
createdAt: new Date(task.createdAt).toLocaleString(),
|
||||
completedAt: task.completedAt
|
||||
? new Date(task.completedAt).toLocaleString()
|
||||
: "尚未完成",
|
||||
const indexTemplate = loadPromptFromTemplate("queryTask/index.md");
|
||||
const prompt = generatePrompt(indexTemplate, {
|
||||
tasksContent,
|
||||
page,
|
||||
totalPages,
|
||||
pageSize,
|
||||
totalTasks,
|
||||
query,
|
||||
});
|
||||
|
||||
return result;
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(prompt, "QUERY_TASK");
|
||||
}
|
||||
|
@ -3,8 +3,11 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import * as templates from "../templates/reflectTask.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
|
||||
/**
|
||||
* reflectTask prompt 參數介面
|
||||
@ -20,30 +23,12 @@ export interface ReflectTaskPromptParams {
|
||||
* @returns 生成的 prompt
|
||||
*/
|
||||
export function getReflectTaskPrompt(params: ReflectTaskPromptParams): string {
|
||||
// 開始構建基本 prompt
|
||||
let basePrompt = generatePrompt(templates.reflectTaskTemplate, {
|
||||
const indexTemplate = loadPromptFromTemplate("reflectTask/index.md");
|
||||
const prompt = generatePrompt(indexTemplate, {
|
||||
summary: params.summary,
|
||||
analysis: params.analysis,
|
||||
});
|
||||
|
||||
// 添加評估要點
|
||||
basePrompt += templates.evaluationPointsTemplate;
|
||||
|
||||
// 添加決策點指導
|
||||
basePrompt += templates.decisionPointsTemplate;
|
||||
|
||||
// 添加更新模式選擇指導
|
||||
basePrompt += templates.updateModesTemplate;
|
||||
|
||||
// 添加知識傳遞機制指導
|
||||
basePrompt += templates.knowledgeTransferTemplate;
|
||||
|
||||
// 添加任務過多處理指導
|
||||
basePrompt += templates.taskOverflowTemplate;
|
||||
|
||||
// 添加結尾提醒
|
||||
basePrompt += templates.conclusionTemplate;
|
||||
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(basePrompt, "REFLECT_TASK");
|
||||
return loadPrompt(prompt, "REFLECT_TASK");
|
||||
}
|
||||
|
@ -3,8 +3,11 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import * as templates from "../templates/splitTasks.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
import { Task } from "../../types/index.js";
|
||||
|
||||
/**
|
||||
@ -16,126 +19,65 @@ export interface SplitTasksPromptParams {
|
||||
allTasks: Task[];
|
||||
}
|
||||
|
||||
/**
|
||||
* 獲取更新模式描述
|
||||
* @param updateMode 更新模式
|
||||
* @returns 更新模式的描述文字
|
||||
*/
|
||||
function getUpdateModeDescription(updateMode: string): string {
|
||||
switch (updateMode) {
|
||||
case "overwrite":
|
||||
return "覆蓋未完成任務(已完成任務已保留)";
|
||||
case "selective":
|
||||
return "選擇性更新";
|
||||
case "append":
|
||||
default:
|
||||
return "新增至現有任務清單";
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 格式化單個任務顯示內容
|
||||
* @param task 任務
|
||||
* @param index 任務索引
|
||||
* @param allTasks 所有任務列表,用於查找依賴任務名稱
|
||||
* @returns 格式化後的任務顯示文字
|
||||
*/
|
||||
function formatTaskItem(task: Task, index: number, allTasks: Task[]): string {
|
||||
// 處理注意事項
|
||||
const notes = task.notes ? `**注意事項:** ${task.notes}\n` : "";
|
||||
|
||||
// 處理實現指南
|
||||
const implementationGuide = task.implementationGuide
|
||||
? `**實現指南:** ${
|
||||
task.implementationGuide.length > 100
|
||||
? task.implementationGuide.substring(0, 100) +
|
||||
"... (執行時可查看完整內容)"
|
||||
: task.implementationGuide
|
||||
}\n`
|
||||
: "";
|
||||
|
||||
// 處理驗證標準
|
||||
const verificationCriteria = task.verificationCriteria
|
||||
? `**驗證標準:** ${
|
||||
task.verificationCriteria.length > 100
|
||||
? task.verificationCriteria.substring(0, 100) +
|
||||
"... (驗證時可查看完整內容)"
|
||||
: task.verificationCriteria
|
||||
}\n`
|
||||
: "";
|
||||
|
||||
// 處理依賴任務
|
||||
const dependencies =
|
||||
task.dependencies && task.dependencies.length > 0
|
||||
? `**依賴任務:** ${task.dependencies
|
||||
.map((d: any) => {
|
||||
// 查找依賴任務的名稱,提供更友好的顯示
|
||||
const depTask = allTasks.find((t) => t.id === d.taskId);
|
||||
return depTask
|
||||
? `"${depTask.name}" (\`${d.taskId}\`)`
|
||||
: `\`${d.taskId}\``;
|
||||
})
|
||||
.join(", ")}\n`
|
||||
: "**依賴任務:** 無\n";
|
||||
|
||||
// 使用模板生成任務項目
|
||||
return generatePrompt(templates.taskItemTemplate, {
|
||||
index: index + 1,
|
||||
name: task.name,
|
||||
id: task.id,
|
||||
description: task.description,
|
||||
notes,
|
||||
implementationGuide,
|
||||
verificationCriteria,
|
||||
dependencies,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* 獲取 splitTasks 的完整 prompt
|
||||
* @param params prompt 參數
|
||||
* @returns 生成的 prompt
|
||||
*/
|
||||
export function getSplitTasksPrompt(params: SplitTasksPromptParams): string {
|
||||
// 開始構建基本 prompt
|
||||
let basePrompt = generatePrompt(templates.splitTasksTitleTemplate, {
|
||||
updateMode: params.updateMode,
|
||||
});
|
||||
const taskDetailsTemplate = loadPromptFromTemplate(
|
||||
"splitTasks/taskDetails.md"
|
||||
);
|
||||
|
||||
// 添加更新模式描述
|
||||
basePrompt += generatePrompt(templates.updateModeDescriptionTemplate, {
|
||||
updateDescription: getUpdateModeDescription(params.updateMode),
|
||||
});
|
||||
const tasksContent = params.createdTasks
|
||||
.map((task, index) => {
|
||||
let implementationGuide = "no implementation guide";
|
||||
if (task.implementationGuide) {
|
||||
implementationGuide =
|
||||
task.implementationGuide.length > 100
|
||||
? task.implementationGuide.substring(0, 100) + "..."
|
||||
: task.implementationGuide;
|
||||
}
|
||||
|
||||
// 添加拆分策略
|
||||
basePrompt += templates.splitStrategyTemplate;
|
||||
let verificationCriteria = "no verification criteria";
|
||||
if (task.verificationCriteria) {
|
||||
verificationCriteria =
|
||||
task.verificationCriteria.length > 100
|
||||
? task.verificationCriteria.substring(0, 100) + "..."
|
||||
: task.verificationCriteria;
|
||||
}
|
||||
|
||||
// 添加任務質量審核
|
||||
basePrompt += templates.qualityReviewTemplate;
|
||||
const dependencies = task.dependencies
|
||||
? task.dependencies
|
||||
.map((d: any) => {
|
||||
// 查找依賴任務的名稱,提供更友好的顯示
|
||||
const depTask = params.allTasks.find((t) => t.id === d.taskId);
|
||||
return depTask
|
||||
? `"${depTask.name}" (\`${d.taskId}\`)`
|
||||
: `\`${d.taskId}\``;
|
||||
})
|
||||
.join(", ")
|
||||
: "no dependencies";
|
||||
|
||||
// 添加任務清單標題
|
||||
basePrompt += templates.taskListTitleTemplate;
|
||||
|
||||
// 添加所有建立的任務
|
||||
basePrompt += params.createdTasks
|
||||
.map((task, index) => formatTaskItem(task, index, params.allTasks))
|
||||
return generatePrompt(taskDetailsTemplate, {
|
||||
index: index + 1,
|
||||
name: task.name,
|
||||
id: task.id,
|
||||
description: task.description,
|
||||
notes: task.notes || "no notes",
|
||||
implementationGuide: implementationGuide,
|
||||
verificationCriteria: verificationCriteria,
|
||||
dependencies: dependencies,
|
||||
});
|
||||
})
|
||||
.join("\n");
|
||||
|
||||
// 添加空行
|
||||
basePrompt += "\n\n";
|
||||
|
||||
// 添加依賴關係管理
|
||||
basePrompt += templates.dependencyManagementTemplate;
|
||||
basePrompt += templates.dependencyManagementContent1;
|
||||
basePrompt += templates.dependencyManagementContent2;
|
||||
basePrompt += templates.dependencyManagementContent3;
|
||||
basePrompt += templates.dependencyManagementContent4;
|
||||
|
||||
// 添加決策點
|
||||
basePrompt += templates.decisionPointsTemplate;
|
||||
basePrompt += templates.decisionPointContent1;
|
||||
basePrompt += templates.decisionPointContent2;
|
||||
const indexTemplate = loadPromptFromTemplate("splitTasks/index.md");
|
||||
const prompt = generatePrompt(indexTemplate, {
|
||||
updateMode: params.updateMode,
|
||||
tasksContent,
|
||||
});
|
||||
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(basePrompt, "SPLIT_TASKS");
|
||||
return loadPrompt(prompt, "SPLIT_TASKS");
|
||||
}
|
||||
|
@ -3,8 +3,11 @@
|
||||
* 負責將模板和參數組合成最終的 prompt
|
||||
*/
|
||||
|
||||
import { loadPrompt, generatePrompt } from "../loader.js";
|
||||
import * as templates from "../templates/verifyTask.js";
|
||||
import {
|
||||
loadPrompt,
|
||||
generatePrompt,
|
||||
loadPromptFromTemplate,
|
||||
} from "../loader.js";
|
||||
import { Task } from "../../types/index.js";
|
||||
|
||||
/**
|
||||
@ -20,7 +23,10 @@ export interface VerifyTaskPromptParams {
|
||||
* @param maxLength 最大長度
|
||||
* @returns 提取的摘要
|
||||
*/
|
||||
function extractSummary(content: string, maxLength: number): string {
|
||||
function extractSummary(
|
||||
content: string | undefined,
|
||||
maxLength: number
|
||||
): string {
|
||||
if (!content) return "";
|
||||
|
||||
if (content.length <= maxLength) {
|
||||
@ -38,56 +44,21 @@ function extractSummary(content: string, maxLength: number): string {
|
||||
*/
|
||||
export function getVerifyTaskPrompt(params: VerifyTaskPromptParams): string {
|
||||
const { task } = params;
|
||||
|
||||
// 處理注意事項
|
||||
const notes = task.notes ? `**注意事項:** ${task.notes}\n` : "";
|
||||
|
||||
// 開始構建基本 prompt
|
||||
let basePrompt = generatePrompt(templates.verifyTaskTemplate, {
|
||||
const indexTemplate = loadPromptFromTemplate("verifyTask/index.md");
|
||||
const prompt = generatePrompt(indexTemplate, {
|
||||
name: task.name,
|
||||
id: task.id,
|
||||
description: task.description,
|
||||
notes: notes,
|
||||
notes: task.notes || "no notes",
|
||||
verificationCriteria:
|
||||
task.verificationCriteria || "no verification criteria",
|
||||
implementationGuideSummary:
|
||||
extractSummary(task.implementationGuide, 200) ||
|
||||
"no implementation guide",
|
||||
analysisResult:
|
||||
extractSummary(task.analysisResult, 300) || "no analysis result",
|
||||
});
|
||||
|
||||
// 添加任務特定的驗證標準(如果有)
|
||||
if (task.verificationCriteria) {
|
||||
basePrompt += generatePrompt(templates.verificationCriteriaTemplate, {
|
||||
verificationCriteria: task.verificationCriteria,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加實現指南摘要(如果有)
|
||||
if (task.implementationGuide) {
|
||||
const implementationGuideSummary =
|
||||
task.implementationGuide.length > 200
|
||||
? task.implementationGuide.substring(0, 200) + "... (參見完整實現指南)"
|
||||
: task.implementationGuide;
|
||||
|
||||
basePrompt += generatePrompt(templates.implementationGuideSummaryTemplate, {
|
||||
implementationGuideSummary: implementationGuideSummary,
|
||||
});
|
||||
}
|
||||
|
||||
// 添加分析結果摘要(如果有)
|
||||
if (task.analysisResult) {
|
||||
basePrompt += generatePrompt(templates.analysisSummaryTemplate, {
|
||||
analysisSummary: extractSummary(task.analysisResult, 300),
|
||||
});
|
||||
}
|
||||
|
||||
// 添加標準驗證標準
|
||||
basePrompt += templates.standardVerificationCriteriaTemplate;
|
||||
|
||||
// 添加報告要求
|
||||
basePrompt += templates.reportRequirementsTemplate;
|
||||
|
||||
// 添加決策點
|
||||
basePrompt += templates.decisionPointsTemplate;
|
||||
basePrompt += templates.decisionPoint1;
|
||||
basePrompt += templates.decisionPoint2;
|
||||
basePrompt += templates.decisionPoint3;
|
||||
|
||||
// 載入可能的自定義 prompt
|
||||
return loadPrompt(basePrompt, "VERIFY_TASK");
|
||||
return loadPrompt(prompt, "VERIFY_TASK");
|
||||
}
|
||||
|
@ -19,7 +19,3 @@ export { getListTasksPrompt } from "./generators/listTasks.js";
|
||||
export { getQueryTaskPrompt } from "./generators/queryTask.js";
|
||||
export { getGetTaskDetailPrompt } from "./generators/getTaskDetail.js";
|
||||
export { getInitProjectRulesPrompt } from "./generators/initProjectRules.js";
|
||||
// 等等
|
||||
|
||||
// 導入初始化專案規範模板
|
||||
export { initProjectRulesTemplate } from "./templates/initProjectRules.js";
|
||||
|
@ -3,6 +3,13 @@
|
||||
* 提供從環境變數載入自定義 prompt 的功能
|
||||
*/
|
||||
|
||||
import fs from "fs";
|
||||
import path from "path";
|
||||
import { fileURLToPath } from "url";
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
function processEnvString(input: string | undefined): string {
|
||||
if (!input) return "";
|
||||
|
||||
@ -65,3 +72,16 @@ export function generatePrompt(
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* 從模板載入 prompt
|
||||
* @param templatePath 模板路徑
|
||||
* @returns 模板
|
||||
*/
|
||||
export function loadPromptFromTemplate(templatePath: string): string {
|
||||
const template = fs.readFileSync(
|
||||
path.join(__dirname, "templates", templatePath),
|
||||
"utf-8"
|
||||
);
|
||||
return template;
|
||||
}
|
||||
|
@ -1,43 +0,0 @@
|
||||
/**
|
||||
* 任務分析 prompt 模板
|
||||
* 包含所有用於構建完整 analyzeTask prompt 的模板片段
|
||||
*/
|
||||
|
||||
// 基本任務分析模板
|
||||
export const analyzeTaskTemplate = `**請嚴格遵守以下指導**\n## 代碼庫分析\n\n### 任務摘要\n\`\`\`\n{summary}\n\`\`\`\n\n已收到初步解答構想:\n\n\`\`\`\n{initialConcept}\n\`\`\`\n\n`;
|
||||
|
||||
// 技術審核要點模板
|
||||
export const technicalReviewTemplate = `## 技術審核要點\n\n### 1. 代碼庫分析
|
||||
- 尋找可重用組件和類似實現
|
||||
- 確定新功能的適當位置
|
||||
- 評估與現有模塊的整合方式
|
||||
|
||||
### 2. 技術策略評估
|
||||
- 考慮模塊化和可擴展性設計
|
||||
- 評估提案的未來兼容性
|
||||
- 規劃測試策略和覆蓋範圍
|
||||
|
||||
### 3. 風險和質量分析
|
||||
- 識別技術債務和效能瓶頸
|
||||
- 評估安全性和數據完整性
|
||||
- 檢查錯誤處理機制
|
||||
|
||||
### 4. 實施建議
|
||||
- 遵循項目架構風格
|
||||
- 建議實施方法和技術選擇
|
||||
- 提出明確開發步驟
|
||||
|
||||
注意尋找程式碼重用機會,避免重複實作已有功能,降低技術債務風險。`;
|
||||
|
||||
// 迭代分析模板(用於分析已有的前次分析結果)
|
||||
export const iterationAnalysisTemplate = `\n\n## 迭代分析\n\n請對照先前分析結果:\n\n\`\`\`\n{previousAnalysis}\n\`\`\`\n\n請識別:
|
||||
1. 已解決的問題及解決方案有效性
|
||||
2. 仍存在的問題及其優先級
|
||||
3. 新方案如何解決未解決問題
|
||||
4. 迭代過程中獲得的新見解`;
|
||||
|
||||
// 下一步行動模板
|
||||
export const nextActionTemplate = `\n\n## 下一步行動\n\n完成分析後,使用「reflect_task」工具提交最終分析,包含:\n\n1. **原始任務摘要** - 保持與第一階段一致
|
||||
2. **完整分析結果** - 技術細節、接口依賴、實施策略、驗收標準
|
||||
|
||||
您的分析將決定解決方案質量,請全面考慮各種技術因素和業務約束。`;
|
50
src/prompts/templates/analyzeTask/index.md
Normal file
50
src/prompts/templates/analyzeTask/index.md
Normal file
@ -0,0 +1,50 @@
|
||||
**請嚴格遵守以下指導**
|
||||
|
||||
## 代碼庫分析
|
||||
|
||||
### 任務摘要
|
||||
|
||||
{summary}
|
||||
|
||||
### 解答構想
|
||||
|
||||
{initialConcept}
|
||||
|
||||
## 技術審核要點
|
||||
|
||||
注意尋找程式碼重用機會,避免重複實作已有功能,降低技術債務風險。
|
||||
|
||||
### 1. 代碼庫分析
|
||||
|
||||
- 尋找可重用組件和類似實現
|
||||
- 確定新功能的適當位置
|
||||
- 評估與現有模塊的整合方式
|
||||
|
||||
### 2. 技術策略評估
|
||||
|
||||
- 考慮模塊化和可擴展性設計
|
||||
- 評估提案的未來兼容性
|
||||
- 規劃測試策略和覆蓋範圍
|
||||
|
||||
### 3. 風險和質量分析
|
||||
|
||||
- 識別技術債務和效能瓶頸
|
||||
- 評估安全性和數據完整性
|
||||
- 檢查錯誤處理機制
|
||||
|
||||
### 4. 實施建議
|
||||
|
||||
- 遵循項目架構風格
|
||||
- 建議實施方法和技術選擇
|
||||
- 提出明確開發步驟
|
||||
|
||||
{previousAnalysis}
|
||||
|
||||
## 下一步行動
|
||||
|
||||
完成分析後,使用「reflect_task」工具提交最終分析,包含:
|
||||
|
||||
1. **原始任務摘要** - 保持與第一階段一致
|
||||
2. **完整分析結果** - 技術細節、接口依賴、實施策略、驗收標準
|
||||
|
||||
您的分析將決定解決方案質量,請全面考慮各種技術因素和業務約束。
|
12
src/prompts/templates/analyzeTask/iteration.md
Normal file
12
src/prompts/templates/analyzeTask/iteration.md
Normal file
@ -0,0 +1,12 @@
|
||||
## 迭代分析
|
||||
|
||||
請對照先前分析結果:
|
||||
|
||||
{previousAnalysis}
|
||||
|
||||
請識別:
|
||||
|
||||
1. 已解決的問題及解決方案有效性
|
||||
2. 仍存在的問題及其優先級
|
||||
3. 新方案如何解決未解決問題
|
||||
4. 迭代過程中獲得的新見解
|
@ -1,16 +0,0 @@
|
||||
/**
|
||||
* 任務完成 prompt 模板
|
||||
* 包含所有用於構建完整 completeTask prompt 的模板片段
|
||||
*/
|
||||
|
||||
// 基本任務完成確認模板
|
||||
export const completeTaskConfirmationTemplate = `**請嚴格遵守以下指導**\n## 任務完成確認\n\n任務 "{name}" (ID: \`{id}\`) 已於 {completionTime} 成功標記為完成。\n\n`;
|
||||
|
||||
// 任務摘要要求模板
|
||||
export const taskSummaryRequirementsTemplate = `## 任務摘要要求\n\n請提供此次完成任務的摘要總結,包含以下關鍵要點:\n\n1. 任務目標與主要成果\n2. 實施的解決方案要點\n3. 遇到的主要挑戰及解決方法\n\n`;
|
||||
|
||||
// 重要提示模板
|
||||
export const importantReminderTemplate = `**重要提示:** 請在當前回應中提供任務摘要總結。完成本次任務摘要後,請等待用戶明確指示後再繼續執行其他任務。請勿自動開始執行下一個任務。\n\n`;
|
||||
|
||||
// 連續執行模式提示模板
|
||||
export const continuousModeReminderTemplate = `如果用戶要求連續執行任務,請使用「execute_task」工具開始執行下一個任務。`;
|
17
src/prompts/templates/completeTask/index.md
Normal file
17
src/prompts/templates/completeTask/index.md
Normal file
@ -0,0 +1,17 @@
|
||||
**請嚴格遵守以下指導**
|
||||
|
||||
## 任務完成確認
|
||||
|
||||
任務 "{name}" (ID: `{id}`) 已於 {completionTime} 成功標記為完成。
|
||||
|
||||
## 任務摘要要求
|
||||
|
||||
請提供此次完成任務的摘要總結,包含以下關鍵要點:
|
||||
|
||||
1. 任務目標與主要成果
|
||||
2. 實施的解決方案要點
|
||||
3. 遇到的主要挑戰及解決方法
|
||||
|
||||
**重要提示:**
|
||||
請在當前回應中提供任務摘要總結。完成本次任務摘要後,請等待用戶明確指示後再繼續執行其他任務。請勿自動開始執行下一個任務。
|
||||
如果用戶要求連續執行任務,請使用「execute_task」工具開始執行下一個任務。
|
@ -1,63 +0,0 @@
|
||||
/**
|
||||
* 任務執行 prompt 模板
|
||||
* 包含所有用於構建完整 executeTask prompt 的模板片段
|
||||
*/
|
||||
|
||||
// 基本任務執行模板
|
||||
export const executeTaskTemplate = `**請嚴格遵守以下指導**\n## 任務執行\n\n**名稱:** {name}\n**ID:** \`{id}\`\n**描述:** {description}\n{notes}\n`;
|
||||
|
||||
// 實現指南模板
|
||||
export const implementationGuideTemplate = `\n## 實現指南\n\n{implementationGuide}\n\n`;
|
||||
|
||||
// 驗證標準模板
|
||||
export const verificationCriteriaTemplate = `\n## 驗證標準\n\n{verificationCriteria}\n\n`;
|
||||
|
||||
// 分析背景模板
|
||||
export const analysisResultTemplate = `\n## 分析背景\n\n{analysisResult}\n\n`;
|
||||
|
||||
// 相關文件模板
|
||||
export const relatedFilesSummaryTemplate = `## 相關文件\n\n{relatedFilesSummary}\n\n`;
|
||||
|
||||
// 相關文件未指定模板
|
||||
export const noRelatedFilesTemplate = `## 相關文件\n\n當前任務沒有關聯的文件。可以使用 \`update_task\` 工具添加相關文件,以便在執行任務時提供上下文。`;
|
||||
|
||||
// 推薦相關文件模板
|
||||
export const recommendedFilesTemplate = `\n\n### 推薦操作\n基於任務描述,您可能需要查看以下相關文件:\n{potentialFiles}\n使用 update_task 工具關聯相關文件,以獲得更好的上下文記憶支持。`;
|
||||
|
||||
// 依賴任務完成摘要模板
|
||||
export const dependencyTaskSummaryTemplate = `\n## 依賴任務完成摘要\n\n`;
|
||||
|
||||
// 單個依賴任務摘要模板
|
||||
export const dependencyTaskItemTemplate = `### {name}\n{summary}\n\n`;
|
||||
|
||||
// 任務複雜度評估模板
|
||||
export const complexityAssessmentTemplate = `\n## 任務複雜度評估\n\n- **複雜度級別:** {level}`;
|
||||
|
||||
// 複雜度警告模板
|
||||
export const complexityWarningTemplate = `\n\n{complexityStyle}\n`;
|
||||
|
||||
// 評估指標模板
|
||||
export const assessmentMetricsTemplate = `\n### 評估指標\n`;
|
||||
export const descriptionLengthMetric = `- 描述長度: {descriptionLength} 字符\n`;
|
||||
export const dependenciesCountMetric = `- 依賴任務數: {dependenciesCount} 個\n`;
|
||||
|
||||
// 處理建議模板
|
||||
export const handlingRecommendationsTemplate = `\n### 處理建議\n`;
|
||||
export const handlingRecommendation1 = `1. {recommendation1}\n`;
|
||||
export const handlingRecommendation2 = `2. {recommendation2}\n`;
|
||||
|
||||
// 執行步驟模板
|
||||
export const executionStepsTemplate = `\n## 執行步驟\n\n`;
|
||||
export const executionStep1 = `1. **分析需求** - 理解任務需求和約束條件\n`;
|
||||
export const executionStep2 = `2. **設計方案** - 制定實施計劃和測試策略\n`;
|
||||
export const executionStep3 = `3. **實施方案** - 按計劃執行,處理邊緣情況\n`;
|
||||
export const executionStep4 = `4. **測試驗證** - 確保功能正確性和穩健性\n`;
|
||||
|
||||
// 質量要求模板
|
||||
export const qualityRequirementsTemplate = `\n## 質量要求\n\n`;
|
||||
export const qualityRequirement1 = `- **範圍管理** - 僅修改相關代碼,避免功能蔓延\n`;
|
||||
export const qualityRequirement2 = `- **代碼質量** - 符合編碼標準,處理異常情況\n`;
|
||||
export const qualityRequirement3 = `- **效能考量** - 注意算法效率和資源使用\n\n`;
|
||||
|
||||
// 完成提示模板
|
||||
export const completionReminderTemplate = `開始根據指示執行任務,執行完成後請直接使用「verify_task」工具進行驗證。`;
|
3
src/prompts/templates/executeTask/analysisResult.md
Normal file
3
src/prompts/templates/executeTask/analysisResult.md
Normal file
@ -0,0 +1,3 @@
|
||||
## 分析背景
|
||||
|
||||
{analysisResult}
|
15
src/prompts/templates/executeTask/complexity.md
Normal file
15
src/prompts/templates/executeTask/complexity.md
Normal file
@ -0,0 +1,15 @@
|
||||
## 任務複雜度評估
|
||||
|
||||
- **複雜度級別:** {level}
|
||||
|
||||
{complexityStyle}
|
||||
|
||||
### 評估指標
|
||||
|
||||
- 描述長度: {descriptionLength} 字符
|
||||
|
||||
- 依賴任務數: {dependenciesCount} 個
|
||||
|
||||
### 處理建議
|
||||
|
||||
{recommendation}
|
3
src/prompts/templates/executeTask/dependencyTasks.md
Normal file
3
src/prompts/templates/executeTask/dependencyTasks.md
Normal file
@ -0,0 +1,3 @@
|
||||
## 依賴任務完成摘要
|
||||
|
||||
{{ dependencyTasks }}
|
3
src/prompts/templates/executeTask/implementationGuide.md
Normal file
3
src/prompts/templates/executeTask/implementationGuide.md
Normal file
@ -0,0 +1,3 @@
|
||||
## 實現指南
|
||||
|
||||
{implementationGuide}
|
38
src/prompts/templates/executeTask/index.md
Normal file
38
src/prompts/templates/executeTask/index.md
Normal file
@ -0,0 +1,38 @@
|
||||
**請嚴格遵守以下指導**
|
||||
|
||||
## 任務執行
|
||||
|
||||
**名稱:** {name}
|
||||
|
||||
**ID:** `{id}`
|
||||
|
||||
**描述:** {description}
|
||||
|
||||
{notesTemplate}
|
||||
|
||||
{implementationGuideTemplate}
|
||||
|
||||
{verificationCriteriaTemplate}
|
||||
|
||||
{analysisResultTemplate}
|
||||
|
||||
{dependencyTasksTemplate}
|
||||
|
||||
{relatedFilesSummaryTemplate}
|
||||
|
||||
{complexityTemplate}
|
||||
|
||||
## 執行步驟
|
||||
|
||||
1. **分析需求** - 理解任務需求和約束條件
|
||||
2. **設計方案** - 制定實施計劃和測試策略
|
||||
3. **實施方案** - 按計劃執行,處理邊緣情況
|
||||
4. **測試驗證** - 確保功能正確性和穩健性
|
||||
|
||||
## 質量要求
|
||||
|
||||
- **範圍管理** - 僅修改相關代碼,避免功能蔓延
|
||||
- **代碼質量** - 符合編碼標準,處理異常情況
|
||||
- **效能考量** - 注意算法效率和資源使用
|
||||
|
||||
開始根據指示執行任務,執行完成後請直接使用「verify_task」工具進行驗證。
|
1
src/prompts/templates/executeTask/notes.md
Normal file
1
src/prompts/templates/executeTask/notes.md
Normal file
@ -0,0 +1 @@
|
||||
**注意事項:** {notes}
|
5
src/prompts/templates/executeTask/relatedFilesSummary.md
Normal file
5
src/prompts/templates/executeTask/relatedFilesSummary.md
Normal file
@ -0,0 +1,5 @@
|
||||
## 相關文件
|
||||
|
||||
可以使用 `update_task` 工具添加相關文件,以便在執行任務時提供上下文。
|
||||
|
||||
{relatedFilesSummary}
|
@ -0,0 +1,3 @@
|
||||
## 驗證標準
|
||||
|
||||
{verificationCriteria}
|
@ -1,43 +0,0 @@
|
||||
/**
|
||||
* 查詢任務詳情 prompt 模板
|
||||
* 包含所有用於構建完整 getTaskDetail prompt 的模板片段
|
||||
*/
|
||||
|
||||
// 任務詳情標題模板
|
||||
export const taskDetailTitleTemplate = `## 任務完整詳情\n\n`;
|
||||
|
||||
// 任務基本信息模板
|
||||
export const taskBasicInfoTemplate = `### {name}\n\n**ID:** \`{id}\`\n\n**狀態:** {status}\n\n**描述:**\n{description}\n\n`;
|
||||
|
||||
// 任務注記模板
|
||||
export const taskNotesTemplate = `**注記:**\n{notes}\n\n`;
|
||||
|
||||
// 任務依賴模板
|
||||
export const taskDependenciesTemplate = `**依賴任務:** {dependencies}\n\n`;
|
||||
|
||||
// 任務實現指南模板
|
||||
export const taskImplementationGuideTemplate = `**實現指南:**\n\`\`\`\n{implementationGuide}\n\`\`\`\n\n`;
|
||||
|
||||
// 任務驗證標準模板
|
||||
export const taskVerificationCriteriaTemplate = `**驗證標準:**\n\`\`\`\n{verificationCriteria}\n\`\`\`\n\n`;
|
||||
|
||||
// 任務相關文件標題模板
|
||||
export const taskRelatedFilesTemplate = `**相關文件:**\n{files}\n`;
|
||||
|
||||
// 單個相關文件模板
|
||||
export const taskRelatedFileItemTemplate = `- \`{path}\` ({type}){description}`;
|
||||
|
||||
// 任務時間信息模板
|
||||
export const taskTimeInfoTemplate = `**創建時間:** {createdTime}\n**更新時間:** {updatedTime}\n`;
|
||||
|
||||
// 任務完成時間模板
|
||||
export const taskCompletedTimeTemplate = `**完成時間:** {completedTime}\n\n`;
|
||||
|
||||
// 任務完成摘要模板
|
||||
export const taskSummaryTemplate = `**完成摘要:**\n{summary}\n\n`;
|
||||
|
||||
// 錯誤模板 - 找不到任務
|
||||
export const taskNotFoundTemplate = `## 錯誤\n\n找不到ID為 \`{taskId}\` 的任務。請確認任務ID是否正確。`;
|
||||
|
||||
// 系統錯誤模板
|
||||
export const errorTemplate = `## 系統錯誤\n\n取得任務詳情時發生錯誤: {errorMessage}`;
|
5
src/prompts/templates/getTaskDetail/complatedSummary.md
Normal file
5
src/prompts/templates/getTaskDetail/complatedSummary.md
Normal file
@ -0,0 +1,5 @@
|
||||
**完成時間:** {completedTime}
|
||||
|
||||
**完成摘要:**
|
||||
|
||||
{summary}
|
1
src/prompts/templates/getTaskDetail/dependencies.md
Normal file
1
src/prompts/templates/getTaskDetail/dependencies.md
Normal file
@ -0,0 +1 @@
|
||||
**依賴任務:** {dependencies}
|
3
src/prompts/templates/getTaskDetail/error.md
Normal file
3
src/prompts/templates/getTaskDetail/error.md
Normal file
@ -0,0 +1,3 @@
|
||||
## 系統錯誤
|
||||
|
||||
取得任務詳情時發生錯誤: {errorMessage}
|
@ -0,0 +1,3 @@
|
||||
**實現指南:**
|
||||
|
||||
{implementationGuide}
|
25
src/prompts/templates/getTaskDetail/index.md
Normal file
25
src/prompts/templates/getTaskDetail/index.md
Normal file
@ -0,0 +1,25 @@
|
||||
## 任務完整詳情
|
||||
|
||||
### {name}
|
||||
|
||||
**ID:** `{id}`
|
||||
|
||||
**狀態:** {status}
|
||||
|
||||
**描述:**{description}
|
||||
|
||||
{notesTemplate}
|
||||
|
||||
{dependenciesTemplate}
|
||||
|
||||
{implementationGuideTemplate}
|
||||
|
||||
{verificationCriteriaTemplate}
|
||||
|
||||
{relatedFilesTemplate}
|
||||
|
||||
**創建時間:** {createdTime}
|
||||
|
||||
**更新時間:** {updatedTime}
|
||||
|
||||
{complatedSummaryTemplate}
|
3
src/prompts/templates/getTaskDetail/notFound.md
Normal file
3
src/prompts/templates/getTaskDetail/notFound.md
Normal file
@ -0,0 +1,3 @@
|
||||
## 錯誤
|
||||
|
||||
找不到 ID 為 `{taskId}` 的任務。請確認任務 ID 是否正確。
|
1
src/prompts/templates/getTaskDetail/notes.md
Normal file
1
src/prompts/templates/getTaskDetail/notes.md
Normal file
@ -0,0 +1 @@
|
||||
**注意事項:** {notes}
|
3
src/prompts/templates/getTaskDetail/relatedFiles.md
Normal file
3
src/prompts/templates/getTaskDetail/relatedFiles.md
Normal file
@ -0,0 +1,3 @@
|
||||
**相關文件:**
|
||||
|
||||
{files}
|
@ -0,0 +1,3 @@
|
||||
**驗證標準:**
|
||||
|
||||
{verificationCriteria}
|
@ -1,10 +1,4 @@
|
||||
/**
|
||||
* 初始化專案規範 prompt 模板
|
||||
* 包含指導如何產生專案規範文件的提示詞
|
||||
*/
|
||||
|
||||
// 基本提示詞模板
|
||||
export const initProjectRulesTemplate = `請用 「process_thought」 工具思考以下問題
|
||||
請用 「process_thought」 工具思考以下問題
|
||||
|
||||
# 專案規範初始化指南
|
||||
|
||||
@ -14,11 +8,13 @@ export const initProjectRulesTemplate = `請用 「process_thought」 工具思
|
||||
**必須生成一個專屬於 AI Agent 操作使用的專案規範文件(rules.md)。**
|
||||
|
||||
**必須專注於以下關鍵目標:**
|
||||
|
||||
- 明確專案特定規則與限制,禁止包含通用開發知識
|
||||
- 提供 AI 執行任務時所需的專案特定資訊
|
||||
- 為 AI 決策過程提供明確指導
|
||||
|
||||
**強制規定:**
|
||||
|
||||
- 完成的規範必須使 AI Agent 能立即理解哪些檔案必須參考或修改
|
||||
- 明確指示多檔案連動修改要求(例如修改 README.md 時必須同步修改 /docs/zh/README.md)
|
||||
- 使用命令式語言定義規則,避免解釋性內容
|
||||
@ -26,6 +22,7 @@ export const initProjectRulesTemplate = `請用 「process_thought」 工具思
|
||||
- 請提供範例什麼事可以做的,什麼事不可以做的
|
||||
|
||||
**嚴重禁止:**
|
||||
|
||||
- 禁止包含通用開發知識
|
||||
- 禁止包含 LLM 已知的通用開發知識
|
||||
- 進行專案功能解釋
|
||||
@ -34,13 +31,16 @@ export const initProjectRulesTemplate = `請用 「process_thought」 工具思
|
||||
|
||||
請使用以下結構建立規範文件:
|
||||
|
||||
\`\`\`markdown
|
||||
```markdown
|
||||
# 開發守則
|
||||
|
||||
## 標題
|
||||
|
||||
### 副標題
|
||||
|
||||
- 規則一
|
||||
- 規則二
|
||||
\`\`\`
|
||||
```
|
||||
|
||||
## 內容指南
|
||||
|
||||
@ -72,4 +72,3 @@ export const initProjectRulesTemplate = `請用 「process_thought」 工具思
|
||||
**思考完畢後請立即編輯 rules.md 文件,禁止呼叫「analyze_task」工具**
|
||||
**如果檔案已經存在或用戶要求更新,請思考規範是否已經過時,是否需要補充更新**
|
||||
**如果是更新模式,除非必要否則你應該保持現有的規範,以最小變更為原則的修改**
|
||||
`;
|
@ -1,19 +0,0 @@
|
||||
/**
|
||||
* 列出任務 prompt 模板
|
||||
* 包含所有用於構建完整 listTasks prompt 的模板片段
|
||||
*/
|
||||
|
||||
// 任務管理儀表板標題模板
|
||||
export const dashboardTitleTemplate = `# 任務管理儀表板\n\n`;
|
||||
|
||||
// 任務狀態概覽標題模板
|
||||
export const statusOverviewTitleTemplate = `## 任務狀態概覽\n\n`;
|
||||
|
||||
// 單個任務狀態計數模板
|
||||
export const statusCountTemplate = `- **{status}**: {count} 個任務`;
|
||||
|
||||
// 任務狀態分類標題模板
|
||||
export const statusSectionTitleTemplate = `## {status} ({count})\n\n`;
|
||||
|
||||
// 系統通知模板 - 無任務
|
||||
export const noTasksNoticeTemplate = `## 系統通知\n\n目前系統中沒有{statusText}任務。請查詢其他狀態任務或先使用「split_tasks」工具創建任務結構,再進行後續操作。`;
|
7
src/prompts/templates/listTasks/index.md
Normal file
7
src/prompts/templates/listTasks/index.md
Normal file
@ -0,0 +1,7 @@
|
||||
# 任務管理儀表板
|
||||
|
||||
## 任務狀態概覽
|
||||
|
||||
{statusCount}
|
||||
|
||||
{taskDetailsTemplate}
|
3
src/prompts/templates/listTasks/notFound.md
Normal file
3
src/prompts/templates/listTasks/notFound.md
Normal file
@ -0,0 +1,3 @@
|
||||
# 系統通知
|
||||
|
||||
目前系統中沒有{statusText}任務。請查詢其他狀態任務或先使用「split_tasks」工具創建任務結構,再進行後續操作。
|
13
src/prompts/templates/listTasks/taskDetails.md
Normal file
13
src/prompts/templates/listTasks/taskDetails.md
Normal file
@ -0,0 +1,13 @@
|
||||
### {name}
|
||||
|
||||
**ID:** `{id}`
|
||||
|
||||
**描述:** {description}
|
||||
|
||||
{complatedSummary}
|
||||
|
||||
**依賴:** {dependencies}
|
||||
|
||||
**創建時間:** {createAt}
|
||||
|
||||
{complatedAt}
|
@ -1,99 +0,0 @@
|
||||
/**
|
||||
* 任務計劃 prompt 模板
|
||||
* 包含所有用於構建完整 planTask prompt 的模板片段
|
||||
*/
|
||||
|
||||
// 基本任務分析模板
|
||||
export const planTaskTemplate = `**請嚴格遵守以下指導**\n## 任務分析\n\n{description}\n\n`;
|
||||
|
||||
// 要求與限制模板
|
||||
export const requirementsTemplate = `## 要求與限制\n\n{requirements}\n\n`;
|
||||
|
||||
// 現有任務參考引導
|
||||
export const existingTasksReferenceTemplate = `## 現有任務參考\n\n`;
|
||||
|
||||
// 已完成任務標題
|
||||
export const completedTasksTitleTemplate = `### 已完成任務\n\n`;
|
||||
|
||||
// 已完成任務項目模板
|
||||
export const completedTaskItemTemplate = `{index}. **{taskName}** (ID: \`{taskId}\`)\n - 描述:{taskDescription}\n{completedTime}`;
|
||||
|
||||
// 未完成任務標題
|
||||
export const pendingTasksTitleTemplate = `\n### 未完成任務\n\n`;
|
||||
|
||||
// 未完成任務項目模板
|
||||
export const pendingTaskItemTemplate = `{index}. **{taskName}** (ID: \`{taskId}\`)\n - 描述:{taskDescription}\n - 狀態:{taskStatus}\n{dependencies}`;
|
||||
|
||||
// 任務調整原則
|
||||
export const taskAdjustmentPrinciplesTemplate = `\n## 任務調整原則\n\n`;
|
||||
export const taskAdjustmentPrinciplesContent = `1. **已完成任務保護** - 已完成任務不可修改或刪除\n`;
|
||||
export const taskAdjustmentPrinciplesContent2 = `2. **未完成任務可調整** - 可根據新需求修改未完成任務\n`;
|
||||
export const taskAdjustmentPrinciplesContent3 = `3. **任務ID一致性** - 引用現有任務必須使用原始ID\n`;
|
||||
export const taskAdjustmentPrinciplesContent4 = `4. **依賴關係完整性** - 避免循環依賴,不依賴已標記移除的任務\n`;
|
||||
export const taskAdjustmentPrinciplesContent5 = `5. **任務延續性** - 新任務應與現有任務構成連貫整體\n\n`;
|
||||
|
||||
// 任務更新模式指導
|
||||
export const taskUpdateModesTemplate = `## 任務更新模式\n\n`;
|
||||
export const taskUpdateModesContent1 = `### 1. **追加模式(append)**\n`;
|
||||
export const taskUpdateModesContent1Detail = `- 保留所有現有任務,僅添加新任務\n`;
|
||||
export const taskUpdateModesContent1Usage = `- 適用:逐步擴展功能,現有計劃仍有效\n\n`;
|
||||
|
||||
export const taskUpdateModesContent2 = `### 2. **覆蓋模式(overwrite)**\n`;
|
||||
export const taskUpdateModesContent2Detail = `- 清除所有現有未完成任務,完全使用新任務列表\n`;
|
||||
export const taskUpdateModesContent2Usage = `- 適用:徹底變更方向,現有未完成任務已不相關\n\n`;
|
||||
|
||||
export const taskUpdateModesContent3 = `### 3. **選擇性更新模式(selective)**\n`;
|
||||
export const taskUpdateModesContent3Detail = `- 根據任務名稱匹配選擇性更新任務,保留其他現有任務\n`;
|
||||
export const taskUpdateModesContent3Usage = `- 適用:部分調整任務計劃,保留部分未完成任務\n`;
|
||||
export const taskUpdateModesContent3Mechanism = `- 工作原理:更新同名任務,創建新任務,保留其他任務\n\n`;
|
||||
|
||||
// 分析指引模板
|
||||
export const analysisGuideTemplate = `## 分析指引\n\n1. 確定任務的目標和預期成果
|
||||
2. 識別技術挑戰和關鍵決策點
|
||||
3. 考慮潛在解決方案和替代方案
|
||||
4. 評估各方案優缺點
|
||||
5. 判斷是否需要分解為子任務
|
||||
6. 考慮與現有系統的集成需求\n\n`;
|
||||
|
||||
// 任務記憶檢索模板
|
||||
export const memoryDirTemplate = `## 任務記憶檢索\n\n`;
|
||||
export const memoryDirContent = `過去任務記錄儲存在 **{memoryDir}**。\n`;
|
||||
export const memoryDirUsageGuide = `使用查詢工具時,請根據以下情境判斷:\n\n`;
|
||||
|
||||
// 查詢建議模板
|
||||
export const queryRecommendationsTemplate = `### 查詢建議\n\n`;
|
||||
export const queryHighPriority = `- **必查(高優先級)**:\n`;
|
||||
export const queryHighPriorityItems = ` - 涉及修改或擴展現有功能,需了解原有實現\n`;
|
||||
export const queryHighPriorityItems2 = ` - 任務描述提到需參考以往工作或已有實現經驗\n`;
|
||||
export const queryHighPriorityItems3 = ` - 涉及系統內部技術實現或關鍵組件\n`;
|
||||
export const queryHighPriorityItems4 = ` - 用戶要求必須查詢記憶\n\n`;
|
||||
|
||||
export const queryMediumPriority = `- **可查(中優先級)**:\n`;
|
||||
export const queryMediumPriorityItems = ` - 新功能與現有系統有整合需求,實現部分獨立\n`;
|
||||
export const queryMediumPriorityItems2 = ` - 功能標準化且需符合系統慣例\n`;
|
||||
export const queryMediumPriorityItems3 = ` - 不確定是否已有類似實現\n\n`;
|
||||
|
||||
export const queryLowPriority = `- **可跳過(低優先級)**:\n`;
|
||||
export const queryLowPriorityItems = ` - 完全全新、獨立的功能\n`;
|
||||
export const queryLowPriorityItems2 = ` - 基本設置或簡單標準任務\n`;
|
||||
export const queryLowPriorityItems3 = ` - 用戶明確指示不需參考過去記錄\n\n`;
|
||||
|
||||
export const queryReminder = `> ※ 查詢記憶可幫助了解過往方案,借鑒成功經驗並避免重複錯誤。\n\n`;
|
||||
|
||||
// 資訊收集指南模板
|
||||
export const infoCollectionGuideTemplate = `## 資訊收集指南\n\n`;
|
||||
export const infoCollectionGuideItems = `1. **詢問用戶** - 當你對任務要求有疑問時,直接詢問用戶\n`;
|
||||
export const infoCollectionGuideItems2 = `2. **查詢記憶** - 使用「query_task」工具查詢以往記憶是否有相關任務\n`;
|
||||
export const infoCollectionGuideItems3 = `3. **網路搜索** - 當出現你不理解的名詞或概念時,使用網路搜尋工具找尋答案\n\n`;
|
||||
|
||||
// 下一步模板
|
||||
export const nextStepsTemplate = `## 下一步\n\n⚠️ 重要:請先閱讀 {rulesPath} 規則再進行任何分析或設計 ⚠️\n\n`;
|
||||
export const nextStepsContent1 = `**第一步:根據任務描述決定是否查詢記憶**\n`;
|
||||
export const nextStepsContent1Detail = `- 判斷任務是否屬於必查情境,若是,請先使用「query_task」查詢過往記錄;否則,可直接進行分析。\n\n`;
|
||||
export const nextStepsContent2 = `**第二步:使用 analyze_task 提交分析結果**\n`;
|
||||
export const nextStepsContent2Detail1 = `1. **任務摘要** - 目標、範圍、挑戰和限制條件\n`;
|
||||
export const nextStepsContent2Detail2 = `2. **初步解答構想** - 可行的技術方案和實施計劃\n`;
|
||||
|
||||
export const nextStepsThoughtTemplate = `**第二步:必須強制使用「process_thought」思考答案 (禁止直接使用analyze_task)**\n`;
|
||||
export const nextStepsThoughtDetail1 = `1. **強制思考過程** - 必須展示逐步推理過程,包括假設、驗證和調整\n`;
|
||||
export const nextStepsThoughtDetail2 = `2. 警告:必須先使用「process_thought」工具思考,嚴格禁止直接使用analyze_task或直接回答\n`;
|
4
src/prompts/templates/planTask/hasThought.md
Normal file
4
src/prompts/templates/planTask/hasThought.md
Normal file
@ -0,0 +1,4 @@
|
||||
**第二步:必須強制使用「process_thought」思考答案 (禁止直接使用 analyze_task)**
|
||||
|
||||
1. **強制思考過程** - 必須展示逐步推理過程,包括假設、驗證和調整
|
||||
2. 警告:必須先使用「process_thought」工具思考,嚴格禁止直接使用 analyze_task 或直接回答
|
62
src/prompts/templates/planTask/index.md
Normal file
62
src/prompts/templates/planTask/index.md
Normal file
@ -0,0 +1,62 @@
|
||||
**請嚴格遵守以下指導**
|
||||
|
||||
## 任務分析
|
||||
|
||||
{description}
|
||||
|
||||
## 要求與限制
|
||||
|
||||
{requirements}
|
||||
|
||||
{tasksTemplate}
|
||||
|
||||
## 分析指引
|
||||
|
||||
1. 確定任務的目標和預期成果
|
||||
2. 識別技術挑戰和關鍵決策點
|
||||
3. 考慮潛在解決方案和替代方案
|
||||
4. 評估各方案優缺點
|
||||
5. 判斷是否需要分解為子任務
|
||||
6. 考慮與現有系統的集成需求
|
||||
|
||||
## 任務記憶檢索
|
||||
|
||||
過去任務記錄儲存在 **{memoryDir}**。
|
||||
|
||||
使用查詢工具時,請根據以下情境判斷:
|
||||
|
||||
- **必查(高優先級)**:
|
||||
|
||||
- 涉及修改或擴展現有功能,需了解原有實現
|
||||
- 任務描述提到需參考以往工作或已有實現經驗
|
||||
- 涉及系統內部技術實現或關鍵組件
|
||||
- 用戶要求必須查詢記憶
|
||||
|
||||
- **可查(中優先級)**:
|
||||
|
||||
- 新功能與現有系統有整合需求,實現部分獨立
|
||||
- 功能標準化且需符合系統慣例
|
||||
- 不確定是否已有類似實現
|
||||
|
||||
- **可跳過(低優先級)**:
|
||||
- 完全全新、獨立的功能
|
||||
- 基本設置或簡單標準任務
|
||||
- 用戶明確指示不需參考過去記錄
|
||||
|
||||
> ※ 查詢記憶可幫助了解過往方案,借鑒成功經驗並避免重複錯誤。
|
||||
|
||||
## 資訊收集指南
|
||||
|
||||
1. **詢問用戶** - 當你對任務要求有疑問時,直接詢問用戶
|
||||
2. **查詢記憶** - 使用「query_task」工具查詢以往記憶是否有相關任務
|
||||
3. **網路搜索** - 當出現你不理解的名詞或概念時,使用網路搜尋工具找尋答案
|
||||
|
||||
## 下一步
|
||||
|
||||
⚠️ 重要:請先閱讀 {rulesPath} 規則再進行任何分析或設計 ⚠️
|
||||
|
||||
**第一步:根據任務描述決定是否查詢記憶**
|
||||
|
||||
- 判斷任務是否屬於必查情境,若是,請先使用「query_task」查詢過往記錄;否則,可直接進行分析。
|
||||
|
||||
{thoughtTemplate}
|
4
src/prompts/templates/planTask/noThought.md
Normal file
4
src/prompts/templates/planTask/noThought.md
Normal file
@ -0,0 +1,4 @@
|
||||
**第二步:使用 analyze_task 提交分析結果**
|
||||
|
||||
1. **任務摘要** - 目標、範圍、挑戰和限制條件
|
||||
2. **初步解答構想** - 可行的技術方案和實施計劃
|
35
src/prompts/templates/planTask/tasks.md
Normal file
35
src/prompts/templates/planTask/tasks.md
Normal file
@ -0,0 +1,35 @@
|
||||
## 現有任務參考
|
||||
|
||||
### 已完成任務
|
||||
|
||||
{completedTasks}
|
||||
|
||||
### 未完成任務
|
||||
|
||||
{unfinishedTasks}
|
||||
|
||||
## 任務調整原則
|
||||
|
||||
1. **已完成任務保護** - 已完成任務不可修改或刪除
|
||||
2. **未完成任務可調整** - 可根據新需求修改未完成任務
|
||||
3. **任務 ID 一致性** - 引用現有任務必須使用原始 ID
|
||||
4. **依賴關係完整性** - 避免循環依賴,不依賴已標記移除的任務
|
||||
5. **任務延續性** - 新任務應與現有任務構成連貫整體
|
||||
|
||||
## 任務更新模式
|
||||
|
||||
### 1. **追加模式(append)**
|
||||
|
||||
- 保留所有現有任務,僅添加新任務
|
||||
- 適用:逐步擴展功能,現有計劃仍有效
|
||||
|
||||
### 2. **覆蓋模式(overwrite)**
|
||||
|
||||
- 清除所有現有未完成任務,完全使用新任務列表
|
||||
- 適用:徹底變更方向,現有未完成任務已不相關
|
||||
|
||||
### 3. **選擇性更新模式(selective)**
|
||||
|
||||
- 根據任務名稱匹配選擇性更新任務,保留其他現有任務
|
||||
- 適用:部分調整任務計劃,保留部分未完成任務
|
||||
- 工作原理:更新同名任務,創建新任務,保留其他任務
|
@ -1,143 +0,0 @@
|
||||
/**
|
||||
* 查詢任務 prompt 模板
|
||||
* 包含所有用於構建完整 queryTask prompt 的模板片段
|
||||
*/
|
||||
|
||||
/**
|
||||
* queryTask 相關的提示模板
|
||||
* 注意:所有變數格式已統一為 {變數} 格式,移除了 {{變數}} 格式
|
||||
*/
|
||||
|
||||
/**
|
||||
* 查詢模式模板 - 已將三元運算符拆分為兩個獨立常量
|
||||
*/
|
||||
export const searchModeIdTemplate = "任務ID查詢";
|
||||
export const searchModeKeywordTemplate = "關鍵字查詢";
|
||||
|
||||
/**
|
||||
* 查詢頭部模板
|
||||
* 注意:三元運算符已替換為 {searchMode} 變數
|
||||
*/
|
||||
export const searchHeaderTemplate = `
|
||||
# 任務查詢結果
|
||||
|
||||
## 查詢資訊
|
||||
- 查詢詞: {query}
|
||||
- 查詢模式: {searchMode}
|
||||
- 總計找到: {totalTasks} 筆任務
|
||||
`;
|
||||
|
||||
/**
|
||||
* 沒有結果時的模板 - 已拆分為ID查詢和關鍵字查詢兩個獨立模板
|
||||
* 原模板保留作為參考:
|
||||
* export const noResultsTemplate = `
|
||||
* ## 無符合結果
|
||||
* 沒有找到符合 "{query}" 的任務。
|
||||
*
|
||||
* ### 可能的原因:
|
||||
* {{#if isId}}
|
||||
* - 您提供的任務ID不存在或格式不正確
|
||||
* - 任務可能已被刪除
|
||||
* {{else}}
|
||||
* - 關鍵字拼寫可能有誤
|
||||
* - 請嘗試使用更簡短或相近的關鍵詞
|
||||
* - 任務清單可能為空
|
||||
* {{/if}}
|
||||
*
|
||||
* 您可以使用 \`list_tasks\` 命令查看所有現有任務。
|
||||
* `;
|
||||
*/
|
||||
|
||||
/**
|
||||
* 沒有結果時的模板 - ID查詢
|
||||
*/
|
||||
export const noResultsIdTemplate = `
|
||||
## 無符合結果
|
||||
沒有找到符合 "{query}" 的任務。
|
||||
|
||||
### 可能的原因:
|
||||
- 您提供的任務ID不存在或格式不正確
|
||||
- 任務可能已被刪除
|
||||
|
||||
您可以使用 \`list_tasks\` 命令查看所有現有任務。
|
||||
`;
|
||||
|
||||
/**
|
||||
* 沒有結果時的模板 - 關鍵字查詢
|
||||
*/
|
||||
export const noResultsKeywordTemplate = `
|
||||
## 無符合結果
|
||||
沒有找到符合 "{query}" 的任務。
|
||||
|
||||
### 可能的原因:
|
||||
- 關鍵字拼寫可能有誤
|
||||
- 請嘗試使用更簡短或相近的關鍵詞
|
||||
- 任務清單可能為空
|
||||
|
||||
您可以使用 \`list_tasks\` 命令查看所有現有任務。
|
||||
`;
|
||||
|
||||
/**
|
||||
* 結果列表頭部模板
|
||||
*/
|
||||
export const resultListHeaderTemplate = `
|
||||
## 任務列表
|
||||
以下是符合查詢的任務:
|
||||
|
||||
`;
|
||||
|
||||
/**
|
||||
* 分頁資訊模板
|
||||
*/
|
||||
export const paginationInfoTemplate = `
|
||||
## 分頁資訊
|
||||
- 當前頁: {page} / {totalPages}
|
||||
- 每頁顯示: {pageSize} 筆
|
||||
- 總計結果: {totalTasks} 筆
|
||||
|
||||
您可以指定 page 參數查看更多結果。
|
||||
`;
|
||||
|
||||
/**
|
||||
* 任務摘要模板
|
||||
*/
|
||||
export const taskSummaryTemplate = `
|
||||
### {taskName} (ID: {taskId})
|
||||
- 狀態: {taskStatus}
|
||||
- 描述: {taskDescription}
|
||||
- 建立時間: {createdAt}
|
||||
- 完成時間: {completedAt}
|
||||
`;
|
||||
|
||||
/**
|
||||
* 使用提示模板
|
||||
*/
|
||||
export const usageHintTemplate = `
|
||||
## 相關操作提示
|
||||
- 使用 \`get_task_detail {任務ID}\` 查看任務完整詳情
|
||||
- 使用 \`execute_task {任務ID}\` 執行特定任務
|
||||
- 使用 \`list_tasks\` 查看所有任務
|
||||
`;
|
||||
|
||||
// 查詢結果標題模板
|
||||
export const queryResultTitleTemplate = `## 查詢結果 ({totalResults})\n\n`;
|
||||
|
||||
// 單個任務顯示模板
|
||||
export const taskDisplayTemplate = `### {name}
|
||||
**ID:** \`{id}\`
|
||||
**狀態:** {status}
|
||||
**描述:** {description}
|
||||
{notes}
|
||||
{implementationGuide}
|
||||
{verificationCriteria}
|
||||
{summary}
|
||||
**創建時間:** {createdTime}
|
||||
**更新時間:** {updatedTime}
|
||||
{completedTime}
|
||||
**詳細內容:** 請使用「get_task_detail」工具查看 {id} 完整任務詳情`;
|
||||
|
||||
// 下一頁指示模板
|
||||
export const nextPageGuideTemplate = `\n\n要查看下一頁結果,請使用相同的查詢參數,但將頁碼設為 {nextPage}。`;
|
||||
|
||||
// 系統錯誤模板
|
||||
export const errorTemplate = `## 系統錯誤\n\n查詢任務時發生錯誤: {errorMessage}`;
|
24
src/prompts/templates/queryTask/index.md
Normal file
24
src/prompts/templates/queryTask/index.md
Normal file
@ -0,0 +1,24 @@
|
||||
# 任務查詢結果
|
||||
|
||||
## 查詢資訊
|
||||
|
||||
- 查詢詞: {query}
|
||||
|
||||
## 任務列表
|
||||
|
||||
以下是符合查詢的任務:
|
||||
|
||||
{tasksContent}
|
||||
|
||||
## 分頁資訊
|
||||
|
||||
- 當前頁: {page} / {totalPages}
|
||||
- 每頁顯示: {pageSize} 筆
|
||||
- 總計結果: {totalTasks} 筆
|
||||
|
||||
您可以指定 page 參數查看更多結果。
|
||||
|
||||
## 相關操作提示
|
||||
|
||||
- 使用 `get_task_detail {任務ID}` 查看任務完整詳情
|
||||
- 使用 `list_tasks` 查看所有任務
|
15
src/prompts/templates/queryTask/notFound.md
Normal file
15
src/prompts/templates/queryTask/notFound.md
Normal file
@ -0,0 +1,15 @@
|
||||
# 任務查詢結果
|
||||
|
||||
## 無符合結果
|
||||
|
||||
沒有找到符合 "{query}" 的任務。
|
||||
|
||||
### 可能的原因:
|
||||
|
||||
- 您提供的任務 ID 不存在或格式不正確
|
||||
- 任務可能已被刪除
|
||||
- 關鍵字拼寫可能有誤
|
||||
- 請嘗試使用更簡短或相近的關鍵詞
|
||||
- 任務清單可能為空
|
||||
|
||||
您可以使用 `list_tasks` 命令查看所有現有任務或使用其他關鍵字搜尋歷史紀錄。
|
5
src/prompts/templates/queryTask/taskDetails.md
Normal file
5
src/prompts/templates/queryTask/taskDetails.md
Normal file
@ -0,0 +1,5 @@
|
||||
### {taskName} (ID: {taskId})
|
||||
|
||||
- 狀態: {taskStatus}
|
||||
- 描述: {taskDescription}
|
||||
- 建立時間: {createdAt}
|
@ -1,60 +1,68 @@
|
||||
/**
|
||||
* 方案評估 prompt 模板
|
||||
* 包含所有用於構建完整 reflectTask prompt 的模板片段
|
||||
*/
|
||||
**請嚴格遵守以下指導**
|
||||
|
||||
// 基本方案評估模板
|
||||
export const reflectTaskTemplate = `**請嚴格遵守以下指導**\n## 方案評估\n\n### 任務摘要\n\`\`\`\n{summary}\n\`\`\`\n\n### 分析結果\n\`\`\`\n{analysis}\n\`\`\`\n\n`;
|
||||
## 方案評估
|
||||
|
||||
### 任務摘要
|
||||
|
||||
{summary}
|
||||
|
||||
### 分析結果
|
||||
|
||||
{analysis}
|
||||
|
||||
## 評估要點
|
||||
|
||||
// 評估要點模板
|
||||
export const evaluationPointsTemplate = `## 評估要點
|
||||
### 1. 技術完整性
|
||||
|
||||
- 檢查方案技術缺陷和邏輯漏洞
|
||||
- 驗證邊緣情況和異常處理
|
||||
- 確認數據流和控制流完整性
|
||||
- 評估技術選型合理性
|
||||
|
||||
### 2. 效能與可擴展性
|
||||
|
||||
- 分析資源使用效率和優化空間
|
||||
- 評估系統負載擴展能力
|
||||
- 識別潛在優化點
|
||||
- 考慮未來功能擴展可能性
|
||||
|
||||
### 3. 需求符合度
|
||||
|
||||
- 核對功能需求實現情況
|
||||
- 檢查非功能性需求符合度
|
||||
- 確認需求理解準確性
|
||||
- 評估用戶體驗和業務流程整合`;
|
||||
- 評估用戶體驗和業務流程整合
|
||||
|
||||
## 決策點
|
||||
|
||||
// 決策點模板
|
||||
export const decisionPointsTemplate = `## 決策點
|
||||
根據評估結果選擇後續行動:
|
||||
|
||||
- **發現關鍵問題**:使用「analyze_task」重新提交改進方案
|
||||
- **輕微調整**:在下一步執行中應用這些小的改進
|
||||
- **方案完善**:使用「split_tasks」將解決方案分解為可執行子任務,如果任務太多或內容過長,請使用多次使用「split_tasks」工具,每次只提交一小部分任務\n\n`;
|
||||
- **方案完善**:使用「split_tasks」將解決方案分解為可執行子任務,如果任務太多或內容過長,請使用多次使用「split_tasks」工具,每次只提交一小部分任務
|
||||
|
||||
## split_tasks 更新模式選擇
|
||||
|
||||
// 更新模式選擇模板
|
||||
export const updateModesTemplate = `## split_tasks 更新模式選擇
|
||||
- **append** - 保留所有現有任務並添加新任務
|
||||
- **overwrite** - 清除未完成任務,保留已完成任務
|
||||
- **selective** - 選擇性更新特定任務,保留其他任務
|
||||
- **clearAllTasks** - 清除所有任務並創建備份\n\n`;
|
||||
- **clearAllTasks** - 清除所有任務並創建備份
|
||||
|
||||
## 知識傳遞機制
|
||||
|
||||
// 知識傳遞機制模板
|
||||
export const knowledgeTransferTemplate = `## 知識傳遞機制
|
||||
1. **全局分析結果** - 關聯完整分析文檔
|
||||
2. **任務專屬實現指南** - 每個任務保存具體實現方法
|
||||
3. **任務專屬驗證標準** - 設置明確驗證要求\n\n`;
|
||||
3. **任務專屬驗證標準** - 設置明確驗證要求
|
||||
|
||||
## 任務拆分指南(請嚴格遵守以下規則)
|
||||
|
||||
// 任務過多處理模板
|
||||
export const taskOverflowTemplate = `## 任務拆分指南(請嚴格遵守以下規則)
|
||||
- **原子性**:每個子任務應該可獨立運作或測試
|
||||
- **依賴性**:如果任務依賴於其他任務請標註 「dependencies」 字段
|
||||
- **適度拆分**:避免過度細化(粒度過小)或過度合併(粒度過大)
|
||||
- **必要時整合**:修改的內容不多或不複雜,可以適當於其他任務整合,避免任務過於簡單造成任務過多
|
||||
- **重複調用**:如果任務太多或內容過長導致「split_tasks」工具無法正常運作時,請使用多次使用「split_tasks」工具,每次只提交一小部分任務
|
||||
- **簡化任務**:如果每次只新增一個任務還是無法正常運作,請考慮再次拆分任務,或者簡化任務但必須保留核心內容
|
||||
- **嚴重警告** 你每次呼叫 split_tasks 傳遞的參數不能超過8000個字,如果超出 8000 個字請多次呼叫工具完成\n\n`;
|
||||
|
||||
// 結尾提醒模板
|
||||
export const conclusionTemplate = `請嚴格審查方案,確保解決方案質量。`;
|
||||
**嚴重警告** 你每次呼叫 split_tasks 傳遞的參數不能超過 5000 個字,如果超出 5000 個字請多次呼叫工具完成
|
||||
|
||||
**現在開始呼叫「split_tasks」工具**
|
@ -1,46 +0,0 @@
|
||||
/**
|
||||
* 任務拆分 prompt 模板
|
||||
* 包含所有用於構建完整 splitTasks prompt 的模板片段
|
||||
*/
|
||||
|
||||
// 任務拆分標題模板
|
||||
export const splitTasksTitleTemplate = `## 任務拆分 - {updateMode} 模式\n\n`;
|
||||
|
||||
// 任務更新模式描述模板
|
||||
export const updateModeDescriptionTemplate = `任務已{updateDescription}。\n\n`;
|
||||
|
||||
// 任務拆分策略模板
|
||||
export const splitStrategyTemplate = `## 拆分策略\n\n1. **按功能分解** - 獨立可測試的子功能,明確輸入輸出
|
||||
2. **按技術層次分解** - 沿架構層次分離任務,確保接口明確
|
||||
3. **按開發階段分解** - 核心功能先行,優化功能後續
|
||||
4. **按風險分解** - 隔離高風險部分,降低整體風險\n\n`;
|
||||
|
||||
// 任務質量審核模板
|
||||
export const qualityReviewTemplate = `## 任務質量審核\n\n1. **任務原子性** - 每個任務足夠小且具體,可獨立完成
|
||||
2. **依賴關係** - 任務依賴形成有向無環圖,避免循環依賴
|
||||
3. **描述完整性** - 每個任務描述清晰準確,包含必要上下文\n\n`;
|
||||
|
||||
// 任務清單標題模板
|
||||
export const taskListTitleTemplate = `## 任務清單\n\n`;
|
||||
|
||||
// 單個任務顯示模板
|
||||
export const taskItemTemplate = `### 任務 {index}:{name}
|
||||
**ID:** \`{id}\`
|
||||
**描述:** {description}
|
||||
{notes}
|
||||
{implementationGuide}
|
||||
{verificationCriteria}
|
||||
{dependencies}
|
||||
`;
|
||||
|
||||
// 依賴關係管理模板
|
||||
export const dependencyManagementTemplate = `## 依賴關係管理\n\n`;
|
||||
export const dependencyManagementContent1 = `- 設置依賴可使用任務名稱或任務ID\n`;
|
||||
export const dependencyManagementContent2 = `- 最小化依賴數量,只設置直接前置任務\n`;
|
||||
export const dependencyManagementContent3 = `- 避免循環依賴,確保任務圖有向無環\n`;
|
||||
export const dependencyManagementContent4 = `- 平衡關鍵路徑,優化並行執行可能性\n\n`;
|
||||
|
||||
// 決策點模板
|
||||
export const decisionPointsTemplate = `## 決策點\n\n`;
|
||||
export const decisionPointContent1 = `- 發現任務拆分不合理:重新呼叫「split_tasks」調整\n`;
|
||||
export const decisionPointContent2 = `- 確認任務拆分完善:生成執行計劃,確定優先順序\n- **嚴重警告** 你每次呼叫 split_tasks 傳遞的參數不能超過8000個字,如果超出 8000 個字請多次呼叫工具完成`;
|
34
src/prompts/templates/splitTasks/index.md
Normal file
34
src/prompts/templates/splitTasks/index.md
Normal file
@ -0,0 +1,34 @@
|
||||
## 任務拆分 - {updateMode} 模式
|
||||
|
||||
## 拆分策略
|
||||
|
||||
1. **按功能分解** - 獨立可測試的子功能,明確輸入輸出
|
||||
2. **按技術層次分解** - 沿架構層次分離任務,確保接口明確
|
||||
3. **按開發階段分解** - 核心功能先行,優化功能後續
|
||||
4. **按風險分解** - 隔離高風險部分,降低整體風險
|
||||
|
||||
## 任務質量審核
|
||||
|
||||
1. **任務原子性** - 每個任務足夠小且具體,可獨立完成
|
||||
2. **依賴關係** - 任務依賴形成有向無環圖,避免循環依賴
|
||||
3. **描述完整性** - 每個任務描述清晰準確,包含必要上下文
|
||||
|
||||
## 任務清單
|
||||
|
||||
{tasksContent}
|
||||
|
||||
## 依賴關係管理
|
||||
|
||||
- 設置依賴可使用任務名稱或任務 ID
|
||||
- 最小化依賴數量,只設置直接前置任務
|
||||
- 避免循環依賴,確保任務圖有向無環
|
||||
- 平衡關鍵路徑,優化並行執行可能性
|
||||
|
||||
## 決策點
|
||||
|
||||
- 發現任務拆分不合理:重新呼叫「split_tasks」調整
|
||||
- 確認任務拆分完善:生成執行計劃,確定優先順序
|
||||
|
||||
**嚴重警告** 你每次呼叫 split_tasks 傳遞的參數不能超過 5000 個字,如果超出 5000 個字請多次呼叫工具完成
|
||||
|
||||
**如果還有剩餘任務請繼續呼叫「split_tasks」**
|
12
src/prompts/templates/splitTasks/taskDetails.md
Normal file
12
src/prompts/templates/splitTasks/taskDetails.md
Normal file
@ -0,0 +1,12 @@
|
||||
### 任務 {index}:{name}
|
||||
|
||||
**ID:** `{id}`
|
||||
**描述:** {description}
|
||||
|
||||
**注意事項:** {notes}
|
||||
|
||||
**實現指南:** {implementationGuide}
|
||||
|
||||
**驗證標準:** {verificationCriteria}
|
||||
|
||||
**依賴任務:** {dependencies}
|
@ -1,28 +0,0 @@
|
||||
/**
|
||||
* 任務驗證 prompt 模板
|
||||
* 包含所有用於構建完整 verifyTask prompt 的模板片段
|
||||
*/
|
||||
|
||||
// 基本任務驗證模板
|
||||
export const verifyTaskTemplate = `**請嚴格遵守以下指導**\n## 任務驗證\n\n**名稱:** {name}\n**ID:** \`{id}\`\n**描述:** {description}\n{notes}\n`;
|
||||
|
||||
// 驗證標準模板
|
||||
export const verificationCriteriaTemplate = `\n## 驗證標準\n\n{verificationCriteria}\n\n`;
|
||||
|
||||
// 實現指南摘要模板
|
||||
export const implementationGuideSummaryTemplate = `\n## 實現指南摘要\n\n{implementationGuideSummary}\n\n`;
|
||||
|
||||
// 分析要點模板
|
||||
export const analysisSummaryTemplate = `\n## 分析要點\n\n{analysisSummary}\n\n`;
|
||||
|
||||
// 標準驗證標準模板
|
||||
export const standardVerificationCriteriaTemplate = `## 驗證標準\n\n1. **需求符合性(30%)** - 功能完整性、約束條件遵循、邊緣情況處理\n2. **技術質量(30%)** - 架構一致性、程式健壯性、實現優雅性\n3. **集成兼容性(20%)** - 系統整合、互操作性、兼容性維護\n4. **性能可擴展性(20%)** - 效能優化、負載適應性、資源管理\n\n`;
|
||||
|
||||
// 報告要求模板
|
||||
export const reportRequirementsTemplate = `## 報告要求\n\n提供整體評分和評級,各項標準評估,問題與建議,及最終結論。\n\n`;
|
||||
|
||||
// 決策點模板
|
||||
export const decisionPointsTemplate = `## 下一步\n\n**根據驗證結果選擇你的下一步行動:**\n`;
|
||||
export const decisionPoint1 = `- **嚴重錯誤**:直接使用「plan_task」工具重新規劃任務\n`;
|
||||
export const decisionPoint2 = `- **輕微錯誤**:直接修復問題\n`;
|
||||
export const decisionPoint3 = `- **無錯誤**:直接使用「complete_task」工具標記完成\n`;
|
44
src/prompts/templates/verifyTask/index.md
Normal file
44
src/prompts/templates/verifyTask/index.md
Normal file
@ -0,0 +1,44 @@
|
||||
**請嚴格遵守以下指導**
|
||||
|
||||
## 任務驗證
|
||||
|
||||
**名稱:** {name}
|
||||
|
||||
**ID:** `{id}`
|
||||
|
||||
**描述:** {description}
|
||||
|
||||
**注意事項:** {notes}
|
||||
|
||||
## 驗證標準
|
||||
|
||||
{verificationCriteria}
|
||||
|
||||
## 實現指南摘要
|
||||
|
||||
{implementationGuideSummary}
|
||||
|
||||
## 分析要點
|
||||
|
||||
{analysisSummary}
|
||||
|
||||
## 驗證標準
|
||||
|
||||
1. **需求符合性(30%)** - 功能完整性、約束條件遵循、邊緣情況處理
|
||||
2. **技術質量(30%)** - 架構一致性、程式健壯性、實現優雅性
|
||||
3. **集成兼容性(20%)** - 系統整合、互操作性、兼容性維護
|
||||
4. **性能可擴展性(20%)** - 效能優化、負載適應性、資源管理
|
||||
|
||||
## 報告要求
|
||||
|
||||
提供整體評分和評級,各項標準評估,問題與建議,及最終結論。
|
||||
|
||||
## 下一步
|
||||
|
||||
**根據驗證結果選擇你的下一步行動:**
|
||||
|
||||
- **嚴重錯誤**:直接使用「plan_task」工具重新規劃任務
|
||||
- **輕微錯誤**:直接修復問題
|
||||
- **無錯誤**:直接使用「complete_task」工具標記完成
|
||||
|
||||
**請直接決定你的下一步行為,請勿詢問用戶**
|
@ -661,43 +661,12 @@ export async function executeTask({
|
||||
}
|
||||
}
|
||||
|
||||
// 嘗試自動發現相關文件
|
||||
let potentialFiles: string[] = [];
|
||||
if (!task.relatedFiles || task.relatedFiles.length === 0) {
|
||||
// 基於任務名稱和描述關鍵詞,嘗試推測可能相關的文件
|
||||
const taskWords = [
|
||||
...task.name.split(/[\s,.;:]+/),
|
||||
...task.description.split(/[\s,.;:]+/),
|
||||
]
|
||||
.filter((word) => word.length > 3)
|
||||
.map((word) => word.toLowerCase());
|
||||
|
||||
// 從關鍵詞中提取可能的文件名或路徑片段
|
||||
potentialFiles = taskWords.filter(
|
||||
(word) =>
|
||||
/^[a-z0-9]+$/i.test(word) &&
|
||||
![
|
||||
"task",
|
||||
"function",
|
||||
"model",
|
||||
"index",
|
||||
"with",
|
||||
"from",
|
||||
"this",
|
||||
].includes(word.toLowerCase())
|
||||
);
|
||||
|
||||
// 只保留前5個
|
||||
potentialFiles = potentialFiles.slice(0, 5);
|
||||
}
|
||||
|
||||
// 使用prompt生成器獲取最終prompt
|
||||
const prompt = getExecuteTaskPrompt({
|
||||
task,
|
||||
complexityAssessment,
|
||||
relatedFilesSummary,
|
||||
dependencyTasks,
|
||||
potentialFiles,
|
||||
});
|
||||
|
||||
return {
|
||||
|
Loading…
x
Reference in New Issue
Block a user