UNPKG

openai-compatible-task-master

Version:

使用MCP解析PRD文档并生成任务列表

39 lines 1.73 kB
import { breakupTaskWithLLM } from '../llm/llm_breakup_task.js'; import fs from 'fs-extra'; import path from 'path'; import chalk from 'chalk'; /** * 将任务分解为子任务 * @param params 必需的参数对象 * @returns 分解后的子任务数组 */ export async function breakupTask({ taskId, prompt, tasksPath, apiKey, apiUrl, model, streamMode, }) { if (!apiKey) { throw new Error('API密钥未提供'); } try { // 读取任务文件 const tasksData = await fs.readJSON(path.resolve(tasksPath)); // 查找指定ID的任务 const parentTask = tasksData.tasks.find((task) => String(task.id) === String(taskId)); if (!parentTask) { throw new Error(`找不到ID为 ${taskId} 的任务`); } console.log(chalk.blue(`开始分解任务: ${parentTask.title} (ID: ${parentTask.id})`)); // 调用LLM分解任务 const subTasks = await breakupTaskWithLLM(parentTask, prompt || '请将此任务分解为更小的子任务,每个子任务应该专注于单一职责,并且可以独立完成。', apiUrl, apiKey, model, streamMode); console.log(chalk.green(`成功将任务分解为 ${subTasks.length} 个子任务`)); // 更新父任务,添加子任务 parentTask.subTasks = subTasks; // 保存更新后的任务文件 await fs.writeJSON(path.resolve(tasksPath), tasksData, { spaces: 2 }); console.log(chalk.green('已将子任务保存到任务文件')); return subTasks; } catch (error) { const err = error; console.error(chalk.red(`分解任务失败: ${err.message}`)); throw err; } } //# sourceMappingURL=breakup_task.js.map