MetaCraft/scripts/bootstrap.js

87 lines
3.0 KiB
JavaScript
Raw Permalink Normal View History

/**
* bootstrap.js - MetaCraft 自举循环AI工具脚本
*
* 此脚本描述MetaCraft的自举循环逻辑供AI参考使用
* 实际执行由外部AI工具完成本项目不包含执行环境
*
* 功能描述
* 1. 读取待办任务列表meta/todo.md
* 2. 解析任务分类和状态
* 3. 显示未完成的任务供用户选择
* 4. 查找与选中任务对应的prompt文件
* 5. 调用run-prompt执行选中的prompt
* 6. 询问用户是否标记任务为完成并更新任务状态
*
* 输入交互式
* 输出执行选中的prompt任务更新任务状态
*
* 伪代码逻辑
*/
// 主函数:自举循环入口
// 返回:无(交互式流程)
function bootstrapLoop() {
// 步骤1读取待办任务文件
// 使用文件系统API读取meta/todo.md内容
// 步骤2解析任务
// 调用parseTodo函数解析任务列表得到tasks数组
// 步骤3筛选未完成的任务
// 过滤出checked为false的任务得到pendingTasks
// 步骤4显示任务列表
// 格式化输出每个未完成任务的序号、类别和描述
// 步骤5获取用户选择
// 通过命令行交互询问用户选择任务编号或跳过
// 步骤6查找对应的prompt文件
// 调用findPromptForTask函数根据任务描述查找prompt文件
// 如果未找到,提示用户创建
// 步骤7执行prompt
// 调用executePromptFile函数来自run-prompt.js执行找到的prompt文件
// 步骤8确认完成状态
// 询问用户任务是否已完成如果是则调用updateTodo更新任务状态
// 注意此函数为伪代码描述实际实现由外部AI工具完成
}
// 辅助函数:解析待办任务内容
// 参数todoContent - 待办任务文件的文本内容
// 返回任务对象数组每个对象包含category, description, checked, raw等属性
function parseTodo(todoContent) {
// 按行分割内容
// 遍历每一行,识别分类标题(## 分类名)
// 识别任务项(- [ ] 任务描述 或 - [x] 任务描述)
// 构建任务对象并添加到数组
// 返回任务数组
}
// 辅助函数查找任务对应的prompt文件
// 参数task - 任务对象
// 返回prompt文件路径或null
function findPromptForTask(task) {
// 将任务描述转换为kebab-case文件名
// 尝试多种可能的文件名格式:
// - 直接使用描述转换
// - 添加implement-前缀
// - 添加task-前缀
// 检查prompts目录下是否存在对应文件
// 返回找到的路径否则返回null
}
// 辅助函数:更新待办任务状态
// 参数tasks - 所有任务数组updatedTask - 要更新的任务对象
// 返回:无(直接写入文件)
function updateTodo(tasks, updatedTask) {
// 读取待办任务文件内容
// 找到对应任务描述的行
// 将- [ ]替换为- [x]标记为完成
// 将更新后的内容写回文件
}
// 导出函数供AI参考
// 注意:这些函数不会实际执行,仅作为文档说明