From e66058ca8925b738b68e95caa09991d244084092 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 8 Apr 2026 13:54:38 +0000 Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E5=9D=97H=20=C2=B7=20=E5=BC=80?= =?UTF-8?q?=E6=BA=90=E6=A8=A1=E5=9E=8B=E5=BE=AE=E8=B0=83=E5=BC=95=E6=93=8E?= =?UTF-8?q?=20=C2=B7=20=E6=96=B0=E5=A2=9E8=E4=B8=AAMCP=E5=B7=A5=E5=85=B7?= =?UTF-8?q?=20=C2=B7=20=E5=B7=A5=E5=85=B7=E6=80=BB=E6=95=B091=E2=86=9299?= =?UTF-8?q?=20=C2=B7=20D62=E5=86=B0=E6=9C=94=E5=BE=AE=E8=B0=83=E6=8C=87?= =?UTF-8?q?=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Agent-Logs-Url: https://github.com/qinfendebingshuo/guanghulab/sessions/af6429c4-763b-4fae-9121-7c357714b295 Co-authored-by: qinfendebingshuo <207279273+qinfendebingshuo@users.noreply.github.com> --- server/age-os/mcp-server/server.js | 56 ++++++++++++++++++++++++ server/proxy/config/server-registry.json | 2 +- 2 files changed, 57 insertions(+), 1 deletion(-) diff --git a/server/age-os/mcp-server/server.js b/server/age-os/mcp-server/server.js index 39c42505..080146cf 100644 --- a/server/age-os/mcp-server/server.js +++ b/server/age-os/mcp-server/server.js @@ -42,6 +42,9 @@ * cosListTaskReports / cosApproveTask / cosSendNotification / cosGetCommLink * 权限修复: notionCheckPermissions / notionRepairPermissions / notionListSharedPages * notionGenerateRepairGuide / notionPermissionReport + * 微调引擎: finetuneExportDataset / finetuneSubmitJob / finetuneCheckStatus + * finetuneRegisterModel / finetuneListModels / finetuneCallModel + * finetuneCompareModels / finetuneGetCostEstimate */ 'use strict'; @@ -65,6 +68,7 @@ const trainingAgentOps = require('./tools/training-agent-ops'); const notionCosBridgeOps = require('./tools/notion-cos-bridge-ops'); const cosCommOps = require('./tools/cos-comm-ops'); const notionPermissionOps = require('./tools/notion-permission-ops'); +const finetuneEngineOps = require('./tools/finetune-engine-ops'); // ─── 外部集成模块(优雅降级:未安装依赖时不影响核心功能) ─── let notionOps = null; @@ -199,6 +203,15 @@ const TOOLS = { notionListSharedPages: notionPermissionOps.notionListSharedPages, notionGenerateRepairGuide: notionPermissionOps.notionGenerateRepairGuide, notionPermissionReport: notionPermissionOps.notionPermissionReport, + // 模块H · 开源模型微调引擎 + finetuneExportDataset: finetuneEngineOps.finetuneExportDataset, + finetuneSubmitJob: finetuneEngineOps.finetuneSubmitJob, + finetuneCheckStatus: finetuneEngineOps.finetuneCheckStatus, + finetuneRegisterModel: finetuneEngineOps.finetuneRegisterModel, + finetuneListModels: finetuneEngineOps.finetuneListModels, + finetuneCallModel: finetuneEngineOps.finetuneCallModel, + finetuneCompareModels: finetuneEngineOps.finetuneCompareModels, + finetuneGetCostEstimate: finetuneEngineOps.finetuneGetCostEstimate, // 活模块操作 · S5 registerModule: livingModuleOps.registerModule, getModule: livingModuleOps.getModule, @@ -850,6 +863,48 @@ app.get('/notion/repair-guide', async (req, res) => { } }); +// ─── 微调引擎API(模块H) ─── + +// 微调模型列表 +app.get('/finetune/:personaId/models', async (req, res) => { + try { + const result = await finetuneEngineOps.finetuneListModels({ + persona_id: req.params.personaId + }); + res.json(result); + } catch (err) { + res.status(500).json({ error: true, message: err.message }); + } +}); + +// 微调成本估算 +app.get('/finetune/:personaId/cost-estimate', async (req, res) => { + try { + const result = await finetuneEngineOps.finetuneGetCostEstimate({ + persona_id: req.params.personaId, + dataset_key: req.query.dataset_key, + provider: req.query.provider || 'deepseek' + }); + res.json(result); + } catch (err) { + res.status(500).json({ error: true, message: err.message }); + } +}); + +// 微调任务状态 +app.get('/finetune/:personaId/jobs/:jobId', async (req, res) => { + try { + const result = await finetuneEngineOps.finetuneCheckStatus({ + persona_id: req.params.personaId, + job_id: req.params.jobId, + provider: req.query.provider || 'deepseek' + }); + res.json(result); + } catch (err) { + res.status(500).json({ error: true, message: err.message }); + } +}); + // ─── 数据库迁移状态API ─── app.get('/migrations', async (_req, res) => { @@ -884,6 +939,7 @@ function getCategoryForTool(name) { 'registerTrainingAgent','updateTrainingAgent','logTrainingRun','getTrainingStatus', 'saveFile','getFile','listFiles','getFileHistory'].includes(name)) return 'persona'; if (name.startsWith('training')) return 'training-agent'; + if (name.startsWith('finetune')) return 'finetune-engine'; if (['notionCosSyncPage','notionCosReadMirror','notionCosListMirror', 'notionCosBuildIndex','notionCosWriteWorkorder','notionCosReadWorkorder', 'notionCosListWorkorders'].includes(name)) return 'notion-cos-bridge'; diff --git a/server/proxy/config/server-registry.json b/server/proxy/config/server-registry.json index 6ca1afc4..2eb3da5c 100644 --- a/server/proxy/config/server-registry.json +++ b/server/proxy/config/server-registry.json @@ -35,7 +35,7 @@ "status": "active", "services": [ "postgresql (人格体数据库)", - "mcp-server (端口3100·51个工具)", + "mcp-server (端口3100·99个工具)", "subscription-v3 (端口3805·多用户专线)", "bandwidth-pool-agent (带宽汇聚)", "email-hub (邮件通信中枢)",