删除不再使用的bootstrap.md文件,更新promptx.js、MCPStreamableHttpCommand.js等文件以使用logger进行日志记录,重构资源管理和发现逻辑,确保代码一致性和可维护性。

This commit is contained in:
sean
2025-06-13 09:33:56 +08:00
parent cdd748d0dc
commit 2ecebac50b
29 changed files with 3561 additions and 450 deletions

162
scripts/quick-test.js Executable file
View File

@ -0,0 +1,162 @@
#!/usr/bin/env node
/**
* 快速测试脚本
* 用于验证全局单例ResourceManager优化效果
*
* 使用方法:
* node scripts/quick-test.js [role-name]
*
* 示例:
* node scripts/quick-test.js frontend-dev
* node scripts/quick-test.js backend-dev
*/
const { execSync } = require('child_process')
const path = require('path')
// 预定义的测试角色配置
const TEST_ROLES = {
'frontend-dev': {
title: '前端开发工程师',
domain: '前端开发'
},
'backend-dev': {
title: '后端开发工程师',
domain: '后端开发'
},
'ui-designer': {
title: 'UI设计师',
domain: '用户界面设计'
},
'product-manager': {
title: '产品经理',
domain: '产品设计'
},
'data-analyst': {
title: '数据分析师',
domain: '数据分析'
},
'devops-engineer': {
title: 'DevOps工程师',
domain: 'DevOps运维'
}
}
function getRandomRole() {
const roles = Object.keys(TEST_ROLES)
return roles[Math.floor(Math.random() * roles.length)]
}
function runCommand(command, description) {
console.log(`\n🔄 ${description}...`)
console.log(`💻 执行命令: ${command}`)
try {
const output = execSync(command, {
encoding: 'utf8',
cwd: process.cwd(),
stdio: 'pipe'
})
console.log(`✅ 成功完成`)
if (output.trim()) {
console.log(`📄 输出:\n${output}`)
}
return true
} catch (error) {
console.log(`❌ 执行失败: ${error.message}`)
if (error.stdout) {
console.log(`📄 标准输出:\n${error.stdout}`)
}
if (error.stderr) {
console.log(`📄 错误输出:\n${error.stderr}`)
}
return false
}
}
async function main() {
const args = process.argv.slice(2)
let roleId = args[0]
// 如果没有指定角色,随机选择一个
if (!roleId) {
roleId = getRandomRole()
console.log(`🎲 随机选择测试角色: ${roleId}`)
}
// 检查角色是否在预定义列表中
if (!TEST_ROLES[roleId]) {
console.log(`❌ 未知角色: ${roleId}`)
console.log(`📋 可用角色: ${Object.keys(TEST_ROLES).join(', ')}`)
process.exit(1)
}
const config = TEST_ROLES[roleId]
console.log(`\n🚀 开始快速测试流程`)
console.log(`📋 测试角色: ${roleId} (${config.title})`)
console.log(`🎯 专业领域: ${config.domain}`)
// 步骤1: 生成测试角色
console.log(`\n=== 步骤 1: 生成测试角色 ===`)
const generateSuccess = runCommand(
`node scripts/generate-test-role.js ${roleId} "${config.title}" "${config.domain}"`,
`生成角色 ${roleId}`
)
if (!generateSuccess) {
console.log(`❌ 角色生成失败,终止测试`)
process.exit(1)
}
// 步骤2: 刷新资源注册表
console.log(`\n=== 步骤 2: 刷新资源注册表 ===`)
const initSuccess = runCommand(
`node src/bin/promptx.js init`,
`刷新资源注册表`
)
if (!initSuccess) {
console.log(`❌ 资源注册表刷新失败,终止测试`)
process.exit(1)
}
// 步骤3: 激活角色测试
console.log(`\n=== 步骤 3: 激活角色测试 ===`)
const actionSuccess = runCommand(
`node src/bin/promptx.js action ${roleId}`,
`激活角色 ${roleId}`
)
if (!actionSuccess) {
console.log(`❌ 角色激活失败`)
}
// 测试总结
console.log(`\n=== 测试总结 ===`)
console.log(`🎯 测试角色: ${roleId} (${config.title})`)
console.log(`📊 测试结果:`)
console.log(` ✅ 角色生成: ${generateSuccess ? '成功' : '失败'}`)
console.log(` ✅ 资源注册: ${initSuccess ? '成功' : '失败'}`)
console.log(` ✅ 角色激活: ${actionSuccess ? '成功' : '失败'}`)
if (generateSuccess && initSuccess && actionSuccess) {
console.log(`\n🎉 全部测试通过ResourceManager优化生效`)
console.log(`💡 现在可以在MCP环境中测试角色激活无需重启服务器`)
} else {
console.log(`\n⚠️ 部分测试失败,请检查错误信息`)
}
console.log(`\n📍 后续操作建议:`)
console.log(` 1. 在MCP环境中测试: mcp_promptx-dev_promptx_action ${roleId}`)
console.log(` 2. 验证项目级资源引用是否正常解析`)
console.log(` 3. 测试其他角色的创建和激活`)
}
// 运行脚本
if (require.main === module) {
main().catch(error => {
console.error('❌ 脚本执行出错:', error.message)
process.exit(1)
})
}