guanghulab/server/age-os/ecosystem.config.js
Guanghu Domestic Migration d1e47f4565
Some checks are pending
自动更新代码和重启 / update-and-restart (push) Waiting to run
CI检查 + 自动部署 / check (push) Waiting to run
CI检查 + 自动部署 / deploy (push) Blocked by required conditions
重启聊天服务 / restart (push) Waiting to run
chore: import sanitized domestic snapshot for REPO-002
Source snapshot: ca48d3ddf926d79aa138306164169baf764bb829
2026-07-17 15:54:41 +08:00

78 lines
2.0 KiB
JavaScript

/**
* PM2 配置 · AGE OS 进程管理
* 铸渊 · ICE-GL-ZY001
*/
const path = require('path');
const fs = require('fs');
// 读取 .env.mcp 环境变量
function loadEnvFile(envPath) {
const env = {};
try {
const content = fs.readFileSync(envPath, 'utf8');
for (const line of content.split('\n')) {
const trimmed = line.trim();
if (!trimmed || trimmed.startsWith('#')) continue;
const eqIdx = trimmed.indexOf('=');
if (eqIdx > 0) {
env[trimmed.slice(0, eqIdx)] = trimmed.slice(eqIdx + 1);
}
}
} catch (err) {
if (err.code !== 'ENOENT') {
console.error(`[PM2] .env.mcp 读取错误: ${err.message}`);
}
}
return env;
}
const envFromFile = loadEnvFile(path.join(__dirname, '.env.mcp'));
module.exports = {
apps: [
{
name: 'age-os-mcp',
script: 'mcp-server/server.js',
cwd: '/opt/age-os',
env: {
NODE_ENV: 'production',
MCP_PORT: 3100,
MCP_BIND_HOST: '127.0.0.1',
...envFromFile
},
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '256M',
log_date_format: 'YYYY-MM-DD HH:mm:ss',
error_file: '/opt/age-os/logs/mcp-error.log',
out_file: '/opt/age-os/logs/mcp-out.log',
merge_logs: true,
// 重启策略:指数退避 + 限制重启次数,防止崩溃→重启死循环
exp_backoff_restart_delay: 100,
max_restarts: 15,
restart_delay: 3000
},
{
name: 'age-os-agents',
script: 'agents/scheduler.js',
cwd: '/opt/age-os',
env: {
NODE_ENV: 'production',
...envFromFile
},
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: '256M',
log_date_format: 'YYYY-MM-DD HH:mm:ss',
error_file: '/opt/age-os/logs/agents-error.log',
out_file: '/opt/age-os/logs/agents-out.log',
merge_logs: true,
exp_backoff_restart_delay: 100,
max_restarts: 15,
restart_delay: 3000
}
]
};