a058b0ab8e
- 修复记忆管理数据库连接不可用 (ai-core重编译+Unicode修复) - 修复IoT子会话工具调用链路日志缺失 - 新增最终审查子会话(review_provider) 支持消息格式解析拆分 - 实现历史消息持久化(后端存储+前端分页加载) - 前端新增动作消息(ActionMessage)类型和渲染 - 优化对话链路速度(非阻塞子会话+快速问候通道) - JWT密钥环境变量化(无默认值启动panic) - Token自动刷新机制(401拦截器+refresh接口) - WebSocket指数退避重连(jitter+最大10次) - localStorage清理一致性(cyrene_前缀+版本检查) - IoT环境变量统一为IOT_SERVICE_URL
136 lines
4.5 KiB
JavaScript
136 lines
4.5 KiB
JavaScript
/**
|
|
* 调试工具配置
|
|
* 定义各服务的启动参数、端口、健康检查等
|
|
*/
|
|
|
|
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`);
|
|
}
|