/** * 调试工具配置 * 定义各服务的启动参数、端口、健康检查等 */ import { fileURLToPath } from 'url'; import path from 'path'; const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const ROOT = path.resolve(__dirname, '../..'); export const DEVTOOLS_PORT = process.env.DEVTOOLS_PORT || 9090; export const LOGS_DIR = path.resolve(__dirname, '../logs'); export const GATEWAY_URL = process.env.GATEWAY_URL || 'http://localhost:8080'; export const TOOL_ENGINE_URL = process.env.TOOL_ENGINE_URL || 'http://localhost:8092'; export const ADMIN_USERNAME = process.env.ADMIN_USERNAME || 'admin'; export const ADMIN_PASSWORD = process.env.ADMIN_PASSWORD || 'cyrene-dev-admin'; export const SERVICES = { 'ai-core': { name: 'AI-Core', cwd: path.join(ROOT, 'backend/ai-core'), command: './main', env: { AI_CORE_PORT: '8081', PERSONA_DIR: './internal/persona', IOT_SERVICE_URL: process.env.IOT_SERVICE_URL || process.env.IOT_DEBUG_SERVICE_URL || 'http://localhost:8083', ENABLE_BACKGROUND_THINKING: process.env.ENABLE_BACKGROUND_THINKING || 'true', }, healthUrl: 'http://localhost:8081/api/v1/health', port: 8081, buildCommand: 'go', buildArgs: ['build', '-o', 'main', './cmd/main.go'], goBin: '/usr/local/go/bin/go', }, 'iot-debug-service': { name: 'IoT Debug', cwd: path.join(ROOT, 'backend/iot-debug-service'), command: './main', env: { IOT_DEBUG_PORT: '8083', }, healthUrl: 'http://localhost:8083/api/v1/health', port: 8083, buildCommand: 'go', buildArgs: ['build', '-o', 'main', './cmd/main.go'], goBin: '/usr/local/go/bin/go', }, gateway: { name: 'Gateway', cwd: path.join(ROOT, 'backend/gateway'), command: './main', env: { GATEWAY_PORT: '8080', JWT_SECRET: process.env.JWT_SECRET || 'dev-secret-key-change-me', AI_CORE_URL: 'http://localhost:8081', MEMORY_SERVICE_URL: process.env.MEMORY_SERVICE_URL || 'http://localhost:8091', TOOL_ENGINE_URL: process.env.TOOL_ENGINE_URL || 'http://localhost:8092', ADMIN_USERNAME: process.env.ADMIN_USERNAME || 'admin', ADMIN_PASSWORD: process.env.ADMIN_PASSWORD || 'cyrene-dev-admin', REGISTRATION_ENABLED: process.env.REGISTRATION_ENABLED || 'true', }, healthUrl: 'http://localhost:8080/api/v1/health', port: 8080, buildCommand: 'go', buildArgs: ['build', '-o', 'main', './cmd/main.go'], goBin: '/usr/local/go/bin/go', }, 'memory-service': { name: '记忆服务', cwd: path.join(ROOT, 'backend/memory-service'), command: './main', env: { PORT: '8091', DB_URL: process.env.DB_URL || 'postgres://cyrene:change_me@localhost:5432/cyrene_ai?sslmode=disable', }, healthUrl: 'http://localhost:8091/api/v1/health', port: 8091, buildCommand: 'go', buildArgs: ['build', '-o', 'main', './cmd/main.go'], goBin: '/usr/local/go/bin/go', }, 'tool-engine': { name: '工具引擎', cwd: path.join(ROOT, 'backend/tool-engine'), command: './main', env: { PORT: '8092', DB_URL: process.env.DB_URL || 'postgres://cyrene:change_me@localhost:5432/cyrene_ai?sslmode=disable', IOT_SERVICE_URL: process.env.IOT_SERVICE_URL || process.env.IOT_DEBUG_SERVICE_URL || 'http://localhost:8083', }, healthUrl: 'http://localhost:8092/api/v1/health', port: 8092, buildCommand: 'go', buildArgs: ['build', '-o', 'main', './cmd/main.go'], goBin: '/usr/local/go/bin/go', }, 'voice-service': { name: '语音识别服务', cwd: path.join(ROOT, 'backend/voice-service'), command: './main', env: { PORT: '8093', WHISPER_BINARY: './whisper.cpp/main', WHISPER_MODEL: './whisper.cpp/models/ggml-small.bin', WHISPER_LANGUAGE: 'zh', }, healthUrl: 'http://localhost:8093/api/v1/health', port: 8093, buildCommand: 'go', buildArgs: ['build', '-o', 'main', './cmd/main.go'], goBin: '/usr/local/go/bin/go', }, frontend: { name: 'Frontend', cwd: path.join(ROOT, 'frontend/web'), command: 'npx', args: ['vite', '--host', '0.0.0.0'], env: { PATH: process.env.PATH, }, healthUrl: 'http://localhost:5173', port: 5173, nodeBin: '/usr/local/node/bin/node', npmBin: '/usr/local/node/bin/npx', // frontend不需要预编译,dev server即可 buildCommand: null, }, }; /** 各服务默认的日志文件路径 */ export function logFile(serviceId) { return path.join(LOGS_DIR, `${serviceId}.log`); }