#!/usr/bin/env node /** * run-prompt.js - 执行一个prompt文件 * * 用法:node run-prompt.js */ const fs = require('fs'); const path = require('path'); const { execSync } = require('child_process'); async function main() { const args = process.argv.slice(2); if (args.length < 1) { console.error('请指定prompt文件路径'); console.log('用法:node run-prompt.js '); process.exit(1); } const promptPath = path.resolve(args[0]); if (!fs.existsSync(promptPath)) { console.error(`文件不存在:${promptPath}`); process.exit(1); } console.log(`📄 读取prompt文件:${promptPath}`); const promptContent = fs.readFileSync(promptPath, 'utf-8'); // 提取元数据 const targetMatch = promptContent.match(//); const target = targetMatch ? targetMatch[1].trim() : 'unknown'; console.log(`🎯 任务目标:${target}`); // 检查Claude Code是否可用 try { execSync('claude --version', { stdio: 'ignore' }); } catch (e) { console.error('❌ 未检测到Claude Code CLI,请确保已安装并配置。'); console.log('提示:可以手动复制以下prompt内容到Claude Code中执行:'); console.log('---'); console.log(promptContent); console.log('---'); process.exit(1); } // 构建临时文件路径 const tempDir = path.join(__dirname, '../.temp'); if (!fs.existsSync(tempDir)) { fs.mkdirSync(tempDir, { recursive: true }); } const tempPromptFile = path.join(tempDir, `prompt-${Date.now()}.md`); fs.writeFileSync(tempPromptFile, promptContent); console.log(`🤖 正在调用Claude Code执行prompt...`); try { // 使用Claude Code执行临时文件 // 注意:这里假设claude命令可以直接执行文件,实际可能需要调整 const command = `claude --file "${tempPromptFile}"`; console.log(`执行命令:${command}`); const output = execSync(command, { encoding: 'utf-8' }); console.log('✅ AI响应:'); console.log(output); } catch (error) { console.error('❌ 执行失败:', error.message); console.log('建议:请手动使用Claude Code打开该prompt文件进行交互。'); } // 清理临时文件 try { fs.unlinkSync(tempPromptFile); } catch (e) { // 忽略清理错误 } } if (require.main === module) { main().catch(err => { console.error('未预期的错误:', err); process.exit(1); }); } module.exports = { main };