feat(cd-merge): merge D-line into C-line visual shell — 165/165 tests D-line four files (models.py/inference.py/evidence.py/detection.py) now use C-line THEME_CSS tokens (–radius/–shadow/–panel/–soft-*) and structural classes (ops-page-head/kpi-card/ops-panel/ops-section-label) Fix: restore .inf-status CSS base class + 11 state rules in DETECTION_CSS (lost during merge — INFERENCE_CSS was cleared) Fix: second pass after visual regression — swapped .models-stats for kpi-strip grid, wrapped tables in ops-panel, added ops-page-head titles 165/165 tests pass (including C-line test_detection_layout.py x6) Add docs/delivery/D线_C线合并参考.md with conflict matrix, merge instructions, visual alignment verification, and collaboration log Update D line progress record (D线_推进记录.md) v0.6
feat(cd-merge): merge D-line into C-line visual shell — 165/165 tests
第八届 CCF 开源创新大赛 · 沐曦「国产开源 GPU AI 创新生态赛」参赛作品 决赛主赛道:任务二(AI Skill / MCP 应用开发);Agent 仅作为 MCP 使用端与演示入口 战队:能工智人 · 决赛更新版 · 2026-07-23
C/D 前端协同仓说明(Web-YOLO 扩展):本仓库同时承载原 MCP 运维基线与 C/D 前端并行开发骨架。 C 线(运维页):总览 / 训练 / 作业 → 分支 codex/yolo-web-ops D 线(视觉页):模型库 / 检测 / 证据 → 分支 codex/yolo-web-vision 协同手册:docs/delivery/FRONTEND_COLLAB_CD.md 契约冻结:docs/delivery/WEB_MCP_CONTRACT.md 启动控制台:python -m agents.web_app.app(fixture 可独立演示)旧决赛 RC rc-code-20260722 证据边界保持隔离,Web-YOLO 使用独立分支与证据。
C/D 前端协同仓说明(Web-YOLO 扩展):本仓库同时承载原 MCP 运维基线与 C/D 前端并行开发骨架。
codex/yolo-web-ops
codex/yolo-web-vision
python -m agents.web_app.app
rc-code-20260722
决赛版本边界(2026-07-23):统一 RC 为 master@28a6468,发布标签为 rc-code-20260722。PR #4(模型探针与只读门禁)、PR #5(30 请求基准)和 PR #6(输入边界硬化)均已合入;真实 C500/Linux 已完成 307 passed、0 skipped。默认策略为 read-only,submit_job 默认拒绝;决赛不演示真实写操作成功。
master@28a6468
307 passed
read-only
submit_job
决赛方案.md
交付包/02_技术报告/能工智人_MetaX-Ops-Agent_技术报告_决赛更新版.docx/.pdf
交付包/03_演示材料/演示脚本_4分钟_决赛更新版.md
交付包/03_演示材料/部署与用户使用手册_决赛更新版.md
evidence/
面向 沐曦(MetaX)国产 GPU 算力平台 的运维智能体:通过 MCP(Model Context Protocol)开放协议 把国产 GPU 监控、实例管控、作业调度、算力券查询等能力暴露给 LLM,用户用自然语言即可完成端到端运维。
核心价值:解决国产 GPU 运维工具链断层——监控与管控割裂、AI 运维能力缺失。用开放协议 + 国产 LLM + 国产 GPU 构建全栈自主可控的运维智能体。
任务二交付主线:
mcp_server/
agents/
get_gpu_status
mx-smi
list_containers
get_job
get_job_logs
get_quota
diagnose_gpu
deepseek-v4-flash
说明:模型名称以服务端返回 ID 为准,不再使用 GLM-5.2 或 Qwen3.5-35B-A3B 作为决赛结论。真实单轮探针 run ID 为 c6a798248db346bf9cfa359635b6777d,公开证据 SHA-256 为 43d13b6a7d4927004f03b07994f5421413673dfc6d53858e0aa810c77c26bf5f。
c6a798248db346bf9cfa359635b6777d
43d13b6a7d4927004f03b07994f5421413673dfc6d53858e0aa810c77c26bf5f
https://ai.gitee.com/api/v1/
git clone https://www.gitlink.org.cn/muluzhe/metax-gpu-ops-agent.git cd metax-gpu-ops-agent git switch --detach rc-code-20260722 python3 -m venv /data/venvs/metax-readonly source /data/venvs/metax-readonly/bin/activate python -m pip install -e .
master 真机只显式直调两个已验收的只读工具:
python - <<'PY' import asyncio from mcp_server.metax_client import MetaxClient from mcp_server.server import call_tool async def main(): client = MetaxClient() print("mode_label:", client.mode_label) print("is_mock:", client.is_mock) print(await call_tool("get_gpu_status", {}, client)) print(await call_tool("diagnose_gpu", {}, client)) asyncio.run(main()) PY
统一 RC 已合入默认只读策略并通过 C500/Linux 复验,可运行 Agent CLI/Web、MCP Server、E2E 或 smoke;真实环境中仍保持 tool_policy=read-only,不执行 submit_job。
tool_policy=read-only
编辑 .env 填入凭据(无凭据可跑 mock 模式):
.env
MOARK_TOKEN=REPLACE_WITH_MOARK_TOKEN # 算力实例管控 LLM_API_KEY=REPLACE_WITH_GITEE_AI_TOKEN # Agent 对话 METAX_COUPON_BALANCE=REPLACE_WITH_COUPON_BALANCE # 算力券展示
Dockerfile 与 compose 文件目前只是候选部署草案,尚未完成沐曦设备映射、构建、启动和健康检查验收;不要在真实 C500 上把 docker compose up 当作已验证路径。统一 RC 修复并实测后再把命令写入最终快速启动。
docker compose up
以下命令对应统一 RC master@28a6468 / rc-code-20260722。真实 C500 的 E2E 和 smoke 保持默认只读,不创建作业。
python3 -m pytest tests/ -q # 全量离线单元测试 python3 -m ruff check . # 代码规范 python3 scripts/validate_public_evidence.py # 重新校验仓库内公开模型证据 python3 scripts/e2e_test.py # 统一 RC;真实 C500 保持 read-only python3 scripts/smoke_test.py # 统一 RC;验证 submit_job 被拒绝
先在 Gitee.AI 控制台确认资源包实际可用模型 ID,再通过安全的进程环境变量提供 Token。为避免来源误标和旧凭据被意外计费,探针**不会自动加载 .env**。不要把 Token 写入命令行参数、Issue、PR 或日志。
export LLM_PROVIDER=gitee export LLM_API_BASE=https://ai.gitee.com/v1 LLM_MODEL_VALUE="DeepSeek-V4-Flash" export LLM_MODEL="$LLM_MODEL_VALUE" # 通过平台秘密注入或交互式安全方式设置 LLM_API_KEY python3 scripts/llm_probe.py # 默认在系统临时目录生成带时间和随机后缀的唯一文件;摘要直接输出文件名与 SHA-256
探针只做固定提示词的单轮模型调用,不携带 MCP 工具,也不触发写操作。响应标记必须完全匹配、finish_reason=stop 且服务端必须返回模型 ID。单样本只能证明连通性和一次调用延迟;Token 用量缺失时不得用于 Token 性能结论。
finish_reason=stop
统一 RC 的 Agent、MCP Server 和 E2E 默认只暴露 6 个只读工具,未知工具一律 fail-closed;MCP Server 在工具列表和实际执行两个边界都会再次校验。submit_job 默认拒绝。该开关只是服务端开发期硬门禁,不等于完整用户级确认;dry-run、短时确认令牌、参数策略、幂等和不可抵赖审计属于后续增强,因此决赛主演示保持只读。
输入(自然语言):
看看现在 GPU 状态怎么样
输出(Agent 调用 get_gpu_status):
共 1 张 GPU: - MetaX MX C500#0: 利用率 0.0% | 显存 0.81/64.0 GB | 温度 39°C | 功耗 58.6 W
输入:
全面体检一下当前算力环境,出份报告
输出(Agent 自主调用 get_gpu_status + list_containers + get_quota + diagnose_gpu):
## 算力环境体检报告 ### GPU 状态 | GPU | 利用率 | 显存 | 温度 | 功耗 | |---|---|---|---|---| | MX C500 #0 | 0% | 0.8/64 GB | 39°C | 58.6 W | ### 算力实例(模力方舟 OpenAPI) - [running] 曦云 C500 ×1 (`<container-id-redacted>`) - [stopped] 曦云 C500 ×1 (`<container-id-redacted>`) ### 算力券 余额 ¥1,850.00,已用 42.5h / 200h ### 告警 GPU 闲置,建议排查是否有作业待调度
提交作业:名字 demo,镜像 maca-pytorch:3.2.1,命令 sleep 30 && echo hello,1 卡
输出:
✅ 作业已提交 job_id: demo-1783157378 状态: succeeded GPU: MetaX MX C500 作业已完成,日志: /data/metax_jobs/demo-1783157378.log
完整演示视频见 docs/video/演示视频.mp4,或在线观看(百度网盘:CCF_demo.mp4,提取码 igdj)。
docs/video/演示视频.mp4
mx-smi 原始输出 vs Web UI 解析对比(数据 100% 真实,来自沐曦 MX C500):
Agent 工具调用时序(LLM ↔ MCP 多轮编排,function calling 决策链):
作业提交效果(CLI 提交作业 → 容器启动 → 日志返回):
本作品基于以下开源项目与协议开发,已在原有基础上进行功能扩展与场景改造:
原创声明:MCP 工具定义、Agent 编排逻辑、双通道算力接入、mx-smi 解析、深色 UI 均为团队原创开发,未直接复制已有项目。
┌──────────────┐ 自然语言 ┌──────────────┐ function call ┌──────────────┐ │ 用户 │ ────────────▶ │ Agent 层 │ ──────────────────▶ │ LLM │ │ CLI / Web │ ◀──────────── │ (编排+对话) │ ◀────────────────── │ Gitee.AI 模型 │ └──────────────┘ 回复 └──────┬───────┘ 工具调用决策 └──────────────┘ │ tools/call (stdio) ▼ ┌──────────────────┐ │ MCP Server │ 7 个工具 │ 能工智人 │ └────────┬─────────┘ │ ┌───────────────────┴───────────────────┐ ▼ ▼ ┌──────────────────┐ ┌──────────────────┐ │ 本机 mx-smi │ GPU 监控 │ 模力方舟 OpenAPI │ 实例管控 │ (沐曦 C500) │ 利用率/显存/温度 │ ai.gitee.com │ 列实例/创建 └──────────────────┘ └──────────────────┘
详细架构说明见 docs/architecture.md。
docs/architecture.md
metax-gpu-ops-agent/ ├── mcp_server/ MCP Server(任务二核心交付) │ ├── metax_client.py 双通道算力客户端(本机mx-smi + 模力方舟OpenAPI) │ └── server.py 7个MCP工具定义 + 人类可读输出 ├── agents/ Agent 层(MCP 使用端与演示入口) │ ├── config.py LLM配置 + 系统提示词 │ ├── llm.py 显式超时/重试的OpenAI兼容LLM客户端 │ ├── llm_evidence.py 严格脱敏的单轮模型证据schema │ ├── tool_policy.py 默认只读、未知工具fail-closed安全策略 │ ├── agent.py LLM↔MCP 多轮编排 │ ├── cli.py CLI入口 │ └── web.py 深色科技风Web UI ├── tests/ 75 项离线单元测试 ├── scripts/ 单轮模型探针、只读e2e、冒烟/自检脚本 ├── evidence/ 真实环境脱敏证据与索引 ├── docs/ 架构文档 + 开发记录 + 演示视频 + PPT + 历史性能草稿 │ ├── video/演示视频.mp4 演示视频(3分06秒) │ └── screenshots/ 运行截图(mx-smi vs Web UI、作业提交、工具调用时序图) ├── examples/ MCP客户端配置示例 ├── Dockerfile / docker-compose.yml ├── pyproject.toml / .env.example └── README.md
docs/screenshots/
docs/沐曦算力运维助手_演示PPT.pptx
docs/真实调用日志与性能报告.md
docs/开发记录.md
docs/项目推进记录.md
本作品以 Apache-2.0 协议开源发布(见 LICENSE 文件与 pyproject.toml 声明),允许赛事组织方及社区按该许可使用。赛题参考仓库 ccf-ai-infra/GPUApps 使用 MulanPSL-2.0,本作品按通用规则采用主流的 Apache-2.0,如赛题后续明确要求 MulanPSL-2.0 将同步调整。
LICENSE
pyproject.toml
ccf-ai-infra/GPUApps
C/D frontend collab: MetaX Ops Agent baseline + Web-YOLO C/D framework
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
🖥️ 沐曦算力运维助手
决赛文档入口
决赛方案.md,记录任务二定位、答辩主线和交付门槛。交付包/02_技术报告/能工智人_MetaX-Ops-Agent_技术报告_决赛更新版.docx/.pdf。交付包/03_演示材料/演示脚本_4分钟_决赛更新版.md。交付包/03_演示材料/部署与用户使用手册_决赛更新版.md。evidence/;平台私有回执:交付包外受控目录,不进入公开仓库。一、项目简介
面向 沐曦(MetaX)国产 GPU 算力平台 的运维智能体:通过 MCP(Model Context Protocol)开放协议 把国产 GPU 监控、实例管控、作业调度、算力券查询等能力暴露给 LLM,用户用自然语言即可完成端到端运维。
核心价值:解决国产 GPU 运维工具链断层——监控与管控割裂、AI 运维能力缺失。用开放协议 + 国产 LLM + 国产 GPU 构建全栈自主可控的运维智能体。
任务二交付主线:
mcp_server/:7 个 MCP 工具与 MCP 客户端接入示例;主演示保持只读。agents/:MCP 的使用端和演示入口,不作为独立赛道扩张范围。二、功能说明
2.1 七个 MCP 工具
get_gpu_statusmx-smi真实数据list_containerssubmit_jobget_jobget_job_logsget_quotadiagnose_gpu2.2 Agent 能力
2.3 核心特性
deepseek-v4-flashmx-smi真实 GPU 监控 + 模力方舟 OpenAPI 实例管控307 passed、0 skipped;公开探针和基准证据可复验三、使用的模型与算力环境
3.1 大模型
deepseek-v4-flash说明:模型名称以服务端返回 ID 为准,不再使用 GLM-5.2 或 Qwen3.5-35B-A3B 作为决赛结论。真实单轮探针 run ID 为
c6a798248db346bf9cfa359635b6777d,公开证据 SHA-256 为43d13b6a7d4927004f03b07994f5421413673dfc6d53858e0aa810c77c26bf5f。3.2 算力环境
mx-smiJSON 与 2.2.6 默认表格输出https://ai.gitee.com/api/v1/3.3 依赖开源组件
四、运行与部署方法
4.1 环境要求
mx-smi(沐曦 GPU 管理接口)→ 自动启用真实 GPU 监控mx-smi时自动 mock 回退,零依赖可跑通4.2 统一 RC 真机安全验证
master 真机只显式直调两个已验收的只读工具:
统一 RC 已合入默认只读策略并通过 C500/Linux 复验,可运行 Agent CLI/Web、MCP Server、E2E 或 smoke;真实环境中仍保持
tool_policy=read-only,不执行submit_job。4.3 配置说明
编辑
.env填入凭据(无凭据可跑 mock 模式):4.4 Docker 部署状态
Dockerfile 与 compose 文件目前只是候选部署草案,尚未完成沐曦设备映射、构建、启动和健康检查验收;不要在真实 C500 上把
docker compose up当作已验证路径。统一 RC 修复并实测后再把命令写入最终快速启动。4.5 测试验证
以下命令对应统一 RC
master@28a6468/rc-code-20260722。真实 C500 的 E2E 和 smoke 保持默认只读,不创建作业。4.6 真实 Gitee.AI 单轮探针
先在 Gitee.AI 控制台确认资源包实际可用模型 ID,再通过安全的进程环境变量提供 Token。为避免来源误标和旧凭据被意外计费,探针**不会自动加载
.env**。不要把 Token 写入命令行参数、Issue、PR 或日志。探针只做固定提示词的单轮模型调用,不携带 MCP 工具,也不触发写操作。响应标记必须完全匹配、
finish_reason=stop且服务端必须返回模型 ID。单样本只能证明连通性和一次调用延迟;Token 用量缺失时不得用于 Token 性能结论。4.7 工具执行安全模式
统一 RC 的 Agent、MCP Server 和 E2E 默认只暴露 6 个只读工具,未知工具一律 fail-closed;MCP Server 在工具列表和实际执行两个边界都会再次校验。
submit_job默认拒绝。该开关只是服务端开发期硬门禁,不等于完整用户级确认;dry-run、短时确认令牌、参数策略、幂等和不可抵赖审计属于后续增强,因此决赛主演示保持只读。五、示例输入输出
示例 1:查询 GPU 状态
输入(自然语言):
输出(Agent 调用
get_gpu_status):示例 2:全面体检(Agent 串联 4 工具)
输入:
输出(Agent 自主调用 get_gpu_status + list_containers + get_quota + diagnose_gpu):
示例 3:提交作业(历史/变更模式示例,默认只读会拒绝)
输入:
输出:
完整演示视频见
docs/video/演示视频.mp4,或在线观看(百度网盘:CCF_demo.mp4,提取码 igdj)。运行截图
mx-smi 原始输出 vs Web UI 解析对比(数据 100% 真实,来自沐曦 MX C500):
Agent 工具调用时序(LLM ↔ MCP 多轮编排,function calling 决策链):
作业提交效果(CLI 提交作业 → 容器启动 → 日志返回):
六、参考来源说明
本作品基于以下开源项目与协议开发,已在原有基础上进行功能扩展与场景改造:
mx-smiJSON;2.2.6 无 JSON 时回退默认表格原创声明:MCP 工具定义、Agent 编排逻辑、双通道算力接入、mx-smi 解析、深色 UI 均为团队原创开发,未直接复制已有项目。
七、架构设计
详细架构说明见
docs/architecture.md。八、项目结构
九、演示材料
docs/video/演示视频.mp4(3 分 06 秒,6 场景完整演示),在线观看(百度网盘:CCF_demo.mp4,提取码 igdj)docs/screenshots/(mx-smi 输出 vs Web UI 对比、作业提交、工具调用时序图)docs/architecture.mddocs/沐曦算力运维助手_演示PPT.pptx(任务三阶段一交付物)docs/真实调用日志与性能报告.md(存在旧模型、显存和手工计时口径,已降级;不可作为当前决赛证据)docs/开发记录.md(Issue 记录功能设计、技术难点、系统优化)docs/项目推进记录.md(决赛阶段的任务、里程碑、风险、决策与每日进展单一事实源)evidence/(脱敏环境指纹、安装测试、失败复现、修复验证与性能原始证据索引)📄 License
本作品以 Apache-2.0 协议开源发布(见
LICENSE文件与pyproject.toml声明),允许赛事组织方及社区按该许可使用。赛题参考仓库ccf-ai-infra/GPUApps使用 MulanPSL-2.0,本作品按通用规则采用主流的 Apache-2.0,如赛题后续明确要求 MulanPSL-2.0 将同步调整。🙏 致谢