feat(devtools): add memory-service & tool-engine management, fix .gitignore

- Add memory-service and tool-engine to devtools config (ports, env, healthUrl)
- Add GOWORK=off to process-manager build for Go workspace compatibility
- Update DB check and startup order to include new services
- Add backend/tool-engine/main to .gitignore for Go binary
This commit is contained in:
2026-05-19 21:48:39 +08:00
parent 26a61cb57c
commit 121eebebbb
3 changed files with 34 additions and 4 deletions
+1
View File
@@ -30,6 +30,7 @@ backend/iot-debug-service/iot-debug-service
backend/memory-service/main
backend/memory-service/cmd/main
backend/memory-service/memory-service
backend/tool-engine/main
backend/tool-engine/cmd/tool-engine
backend/tool-engine/tool-engine
backend/voice-service/voice-service
+29
View File
@@ -67,6 +67,35 @@ export const SERVICES = {
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_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'),
+4 -4
View File
@@ -131,8 +131,8 @@ class ProcessManager extends EventEmitter {
throw new Error(`${svc.name} 已在运行中`);
}
// 对 gateway 和 ai-core 做数据库前置检查
if (serviceId === 'gateway' || serviceId === 'ai-core') {
// 对需要数据库的服务做前置检查
if (['gateway', 'ai-core', 'memory-service', 'tool-engine'].includes(serviceId)) {
this.emit('log', serviceId, 'system', '检查数据库连接状态...');
await ensureDBOnline(serviceId, this);
}
@@ -288,7 +288,7 @@ class ProcessManager extends EventEmitter {
const child = spawn(buildCmd, buildArgs, {
cwd: svc.cwd,
env: { ...process.env, GOPROXY: 'https://goproxy.cn,direct' },
env: { ...process.env, GOPROXY: 'https://goproxy.cn,direct', GOWORK: 'off' },
stdio: ['ignore', 'pipe', 'pipe'],
});
@@ -411,7 +411,7 @@ class ProcessManager extends EventEmitter {
* 每步等待健康检查通过后再启动下一个
*/
async startAllSequential() {
const order = ['iot-debug-service', 'ai-core', 'gateway', 'frontend'];
const order = ['memory-service', 'tool-engine', 'iot-debug-service', 'ai-core', 'gateway', 'frontend'];
const results = [];
for (const id of order) {