84 lines
2.5 KiB
JavaScript
84 lines
2.5 KiB
JavaScript
#!/usr/bin/env node
|
||
|
||
/**
|
||
* run-prompt.js - 执行一个prompt文件
|
||
*
|
||
* 用法:node run-prompt.js <prompt文件路径>
|
||
*/
|
||
|
||
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 <prompt文件路径>');
|
||
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(/<!-- target: (.+?) -->/);
|
||
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 }; |