fix(readme): 修正主源链接署名 (github.com/LYL512 -> 512LYL)
面向国产算力的多通道 AI Agent 运行底座 核心叙事:上层能力不变,下层算力可换(=算力来源无关) 三通道智能路由 · 断网无感降级 · 复杂任务暂停续传 · 多层自愈看护
许可证:木兰宽松许可证第 2 版(Mulan PSL v2,OSI 认证) 主源(GitHub):https://github.com/512LYL/xihe-agent-runtime | 平台镜像(GitLink):待建(见 docs/08_仓库拓扑与落地形态.md) 比赛版历史仓库(封存留证):GitLink LYL512/Xihe-AI-Assistant
https://github.com/512LYL/xihe-agent-runtime
LYL512/Xihe-AI-Assistant
曦和(Xihe)是一套面向国产算力的多通道 AI Agent 运行底座。
它解决的问题是:当推理算力来自完全不同的地方——云端 API、本机小模型、国产 GPU 上的自部署大模型——上层 Agent 的能力与工作流必须保持完全不变。这一层「完全不动下层算力」的桥接与调度,就是本项目的核心原创资产。
image_url
src/bridge/yinglo_bridge.py
src/health/
🖼 架构总图(成图):assets/architecture/应龙桥接器架构_五层三通道_成图.png —— 图内主标题《应龙桥接器架构:上层能力不变,下层算力可换》,五层结构 + 三通道并列可切换, 并把定性口径(通道①=多源韧性对照项/通道③=核心国产算力实证通道)直接画在图内右上角。 逐层文字说明见 docs/01_架构与五层结构.md。
assets/architecture/应龙桥接器架构_五层三通道_成图.png
一句话:桥接层做协议适配与智能路由,模型可替换、可降级、可扩展;已在沐曦 C500 国产 GPU 上完成 32B 模型自部署、接入与两轮重载压测。
qwen3.5:4b
xihe-32b
model=xihe-32b
为什么必须在桥接层做:Gateway 原生 fallback 只捕获 HTTP 层错误(4xx/5xx/超时),网络层异常(ECONNREFUSED / ENOTFOUND)会直接抛给前端、不进重试链。所以桥接器做网络探测(ai.gitee.com:443 TCP,1 秒结果缓存)→ 自己决定后端。
ECONNREFUSED
ENOTFOUND
ai.gitee.com:443
不静默降级原则:通道③未启用时,桥接器明确回落云端并告警,绝不静默降到本地 4B。
断网时桥接器按三维度评估任务复杂度(token 数 / 工具数 / 消息长度 + 复杂意图关键词),任一超标即判为复杂任务:
/v1/paused-tasks
LONG_CONTEXT_HONEST_CAP = 8000 tokens
系统以 DSH 主节点承担日常调度与长任务,并以 龙虾(OpenClaw)备份节点做协同容灾:两个节点共享同一套应龙桥接器与通道配置,主节点不可用时由备份节点接管会话入口与看护职责。看护层的「死法 → 负责者」映射保证每一类故障都有明确接管者:
src/health/gateway_unstick.py
src/health/watchdog.py
完整链路:QQ 收到的图片 → 提取 → base64 → 以 image_url 块送入模型 → 返回识别结果。含工程护栏:单图 ≤ 32 MB、请求体 ≤ 48 MB、单条最多 8 张、取不到图不崩(保留文字继续)。见 src/entry/qq_multimodal_gateway.py。
src/entry/qq_multimodal_gateway.py
两级会话水位(500 KB 检测 / 600 KB 强制摘要瘦身)、进程探活与自动拉起、每日 0:00 / 12:00 资源自检(残留脚本判定:白名单外 + 运行 >4 h + CPU 累计 >2 h;只发现不擅自杀进程)、通知防刷屏(同类冷却 + 全局配额 + 自动退出)。
⚠️ 如实说明:看护层的完整生产脚本依赖若干未随包发布的内部模块,本仓库提供的是按生产参数重写的自包含可运行版本(参数逐条对齐台账)。差异与理由见 docs/09_初稿与生产的差异声明.md。
VLLM_USE_MXGPU=1
/models/Qwen2.5-32B-AWQ
vllm serve /models/Qwen2.5-32B-AWQ --served-model-name xihe-32b --port 8000 --gpu-memory-utilization 0.85 --max-model-len 8192 --trust-remote-code
18000
8000
scripts/tunnel_c500.bat
上下文口径提醒:模型原生上限 131,072 tokens(128K),但 32G 切片下 32K 是显存合理上限(32K 需 8.44 GiB KV cache,实测占用 29516/32000 MiB)。单次生成上限 8192 tokens。桥接侧超限前置拦截阈值 C500_MAX_INPUT_TOKENS = 24000。
C500_MAX_INPUT_TOKENS = 24000
/v1/models
C500 non-stream response: 18993ms
finish_reason
max_num_batched_tokens=2048
⚠️ 延迟指标照实写:TTFT p50 20 s / p99 640 s,queue p50 15 s,e2e p50 40 s —— 瓶颈在排队,不在裸算力(两轮生成吞吐峰值持平:314.8 vs 314.7 tok/s 即为证)。
本项目提交的全部调用日志与性能数据,均来自通道③(沐曦 C500 自部署 32B)。通道① 云端 API 仅作为多源韧性架构的对照项陈述,不用于本次实证数据。
配套口径(写材料时逐条照做):
# Python 依赖 pip install -r requirements.txt # 环境变量:复制模板后填入你自己的值(真实密钥永不入库) Copy-Item .env.example .env
# 1) 确认 Ollama 已拉起本地模型 ollama list # 应能看到 qwen3.5:4b # 2) 启动应龙桥接器(本机 :11443) python src/bridge/yinglo_bridge.py # 3) 一键健康检查 python src/health/health_system_check.py
# 在 .env 中填 MUXI_API_KEY / MUXI_PACKAGE_ID(占位符见 .env.example) # 然后把 src/config/openclaw.template.json 复制为 openclaw.json 并设置: # OPENCLAW_STATE_DIR / OPENCLAW_INDEX python src/entry/launch_gateway.py --port 18791 --verbose
⚠️ 通道①只作架构对照项陈述,本次实证数据不取自该通道(见 §3.3)。
# 1) 建隧道:本机 18000 → 实例 8000(先编辑 scripts\tunnel_c500.bat 填入你自己的实例信息) scripts\tunnel_c500.bat # 2) 连通性自检(会打印实测延迟,可与 §3.2 基线对照) python scripts\check_c500.py python scripts\check_c500.py --all # 三通道一起体检 # 3) 模型侧(在 C500 实例内执行) vllm serve /models/Qwen2.5-32B-AWQ --served-model-name xihe-32b --port 8000 ` --gpu-memory-utilization 0.85 --max-model-len 8192 --trust-remote-code
python src\health\watchdog.py --once # 跑一轮探活 python src\health\watchdog.py --selfcheck # 只做一次资源自检(不杀进程) python src\health\watchdog.py # 常驻(默认 120s 轮询) python src\health\gateway_unstick.py --once --json # 会话级自愈扫描(默认只报告)
python scripts\scan_secrets.py # 敏感信息 + 大文件全量扫描(红线闸门) pwsh scripts\push-all.ps1 -DryRun # 只体检不推送;正式推送见脚本头注释
以下为真实调用样例(通道③,2026-09-15 打通当天实测)。命令行里的域名为占位符,请换成你自己的隧道地址。
GET /v1/models
curl -s http://127.0.0.1:18000/v1/models -H "ngrok-skip-browser-warning: true"
{ "object": "list", "data": [ { "id": "xihe-32b", "object": "model", "created": 1757894400, "owned_by": "vllm", "max_model_len": 32768 } ] }
实测:HTTP 200 / 1.07 s。
POST /v1/chat/completions
curl -s http://127.0.0.1:18000/v1/chat/completions \ -H "Content-Type: application/json" \ -H "ngrok-skip-browser-warning: true" \ -d '{ "model": "xihe-32b", "messages": [{"role": "user", "content": "你是谁?"}], "max_tokens": 64, "stream": false }'
{ "id": "chatcmpl-8f2c1a0e9b", "object": "chat.completion", "model": "xihe-32b", "choices": [{ "index": 0, "message": { "role": "assistant", "content": "我是Qwen,由阿里云开发的大型语言模型助手。" }, "finish_reason": "stop" }], "usage": { "prompt_tokens": 41, "completion_tokens": 9, "total_tokens": 50 } }
实测:HTTP 200 / 1.91 s。
finish_reason = tool_calls
{ "id": "chatcmpl-tool-1", "object": "chat.completion", "model": "xihe-32b", "choices": [{ "index": 0, "message": { "role": "assistant", "content": null, "tool_calls": [{ "id": "call_0", "type": "function", "function": { "name": "get_weather", "arguments": "{\"city\": \"北京\"}" } }] }, "finish_reason": "tool_calls" }] }
启动参数需加 --enable-auto-tool-choice --tool-call-parser hermes。
--enable-auto-tool-choice --tool-call-parser hermes
{ "error": { "message": "This model's maximum context length is 32768 tokens. However, you requested 28673 tokens in the messages and 4096 tokens in the completion...", "type": "BadRequestError", "code": 400, "param": "input_too_long" } }
2026-10-02 轮共出现 33 个 400,全部是这类上下文超限(28673+4096 > 32768,超 1 token),属客户端参数问题、非引擎缺陷。桥接侧的对策是超限前置拦截(C500_MAX_INPUT_TOKENS = 24000)+ 无状态裁剪(消息 4→2 条)。
POST http://127.0.0.1:11434/v1/chat/completions
{ "model": "qwen3.5:4b", "messages": [{"role": "user", "content": "ping"}], "max_tokens": 16, "stream": false }
本地 4B 为 GGUF 模型,不支持原生 tools 参数 → 桥接器剥离工具定义并注入 system prompt(最多 4 个,优先 file/read/write/search 类)。
python scripts\check_c500.py --rounds 3 # 直接跑出 §5.1/§5.2 的延迟数字
上游回馈意向:向 MetaX-MACA/vLLM-metax 提交带压测基线的 Issue(主题:max_num_batched_tokens=2048 排队与 KV 容量 34,544 tokens 结构性超容)与一份文档级 PR。状态:待提交(受网络可达性影响,照实登记)。
MetaX-MACA/vLLM-metax
LICENSE
Xihe Agent Runtime(曦和 · AI Agent 运行底座)
SPDX-License-Identifier: MulanPSL-2.0
❌ 不为了通过平台自动识别而更换许可证全文 —— 那等于事实上改了许可证。
BV1EEMJ63E29
视频录制于 2026-06,当时定位为「本地 AI 办公系统」;项目定位已于 2026-09 演化为多通道 AI Agent 运行底座 —— 观看时请以本 README 的定位为准。
xihe-agent-runtime/ ├── README.md ← 本文件(评审首屏六要素) ├── LICENSE ← 木兰宽松许可证第 2 版(全文) ├── .gitignore ← ★ 第一道防线:媒体/密钥/大文件护栏 ├── .gitattributes ← 「大二进制不入库」策略声明(不上 LFS) ├── .env.example ← 环境变量占位符(真实密钥永不入库) ├── requirements.txt ├── src/ │ ├── bridge/yinglo_bridge.py ← ★ 应龙桥接器(三通道智能路由核心,1741 行) │ ├── entry/qq_multimodal_gateway.py ← 多模态入口(图片 → image_url) │ ├── entry/launch_gateway.py ← Gateway 启动器(含 orphan-self-pid 规避) │ ├── health/watchdog.py ← 看护层①:进程探活 / 资源自检 / 单例守卫 │ ├── health/gateway_unstick.py ← 看护层②:会话级自愈 + 两级水位压缩 │ ├── health/health_system_check.py ← 一键健康检查 │ └── config/openclaw.template.json ← Gateway 配置模板(无外部云端 provider) ├── scripts/ │ ├── tunnel_c500.bat ← 通道③ SSH 隧道模板(占位符,零真实信息) │ ├── check_c500.py ← 通道③/三通道 连通性与延迟自检 │ ├── scan_secrets.py ← 公开前最后一道闸:敏感信息 + 大文件全量扫描 │ └── push-all.ps1 ← 单一上游 + 一推两发(模板化) ├── docs/ ← 架构 / 三通道机制 / 九条踩坑根因 / 合规声明 / 开发历史 ├── assets/ ← 23 张截图(6 组)+ 性能图表(SVG) └── .github/ISSUE_TEMPLATE/ ← Bug / Feature / 算力适配反馈
项目早期为本地 AI 办公系统,随算力需求增长,重构为适应国产算力 C500 的多通道 Agent 运行底座。
历史证据(12 次提交 / T01–T33 开发台账 / 8 个 Issue 索引)见 **docs/dev-history.md**。
Signed-off-by
崔克莉(GitLink: @LYL512)—— 本作品由个人独立完成。
从架构设计、应龙桥接器开发、国产 GPU(沐曦 C500)部署,到看护体系与工程细节打磨,均为独立实践。欢迎通过仓库 Issue 交流与指正。
如实说明(冷启动):本项目当前社区处于冷启动阶段(GitHub / GitLink 侧 star、fork、贡献者均为 0),定位为从生产自用走向社区共建。已建立的是可被第三方核验的工程痕迹:真实提交历史、8 个 Issue 记录、两轮压测原始数据(4 个 CSV)、23 张截图(部署实证 21 + 环境实证与平台台账 2)—— 而不是数字。 本仓库为基金申报版门面(干净入场,不含任何大二进制与密钥)。比赛期历史仓库 LYL512/Xihe-AI-Assistant(702.6 MB,含大体积演示素材)已封存保留、可随时回退查看。
如实说明(冷启动):本项目当前社区处于冷启动阶段(GitHub / GitLink 侧 star、fork、贡献者均为 0),定位为从生产自用走向社区共建。已建立的是可被第三方核验的工程痕迹:真实提交历史、8 个 Issue 记录、两轮压测原始数据(4 个 CSV)、23 张截图(部署实证 21 + 环境实证与平台台账 2)—— 而不是数字。
本仓库为基金申报版门面(干净入场,不含任何大二进制与密钥)。比赛期历史仓库 LYL512/Xihe-AI-Assistant(702.6 MB,含大体积演示素材)已封存保留、可随时回退查看。
面向国产算力(沐曦 C500 / MXMACA)的多通道 AI Agent 运行底座 —— 上层能力不变,下层算力可换
版权所有:中国计算机学会技术支持:开源发展技术委员会 京ICP备13000930号-9 京公网安备 11010802047560号
曦和 · AI Agent 运行底座(Xihe Agent Runtime)
许可证:木兰宽松许可证第 2 版(Mulan PSL v2,OSI 认证) 主源(GitHub):
https://github.com/512LYL/xihe-agent-runtime| 平台镜像(GitLink):待建(见 docs/08_仓库拓扑与落地形态.md) 比赛版历史仓库(封存留证):GitLinkLYL512/Xihe-AI-Assistant一、项目简介
曦和(Xihe)是一套面向国产算力的多通道 AI Agent 运行底座。
它解决的问题是:当推理算力来自完全不同的地方——云端 API、本机小模型、国产 GPU 上的自部署大模型——上层 Agent 的能力与工作流必须保持完全不变。这一层「完全不动下层算力」的桥接与调度,就是本项目的核心原创资产。
image_urlsrc/bridge/yinglo_bridge.py)src/health/)一句话:桥接层做协议适配与智能路由,模型可替换、可降级、可扩展;已在沐曦 C500 国产 GPU 上完成 32B 模型自部署、接入与两轮重载压测。
二、功能说明
2.1 三通道智能路由(本项目核心)
qwen3.5:4bxihe-32b,vLLM 0.17.0)model=xihe-32b,或”联网 + 通道③在线 + 复杂任务/长上下文”为什么必须在桥接层做:Gateway 原生 fallback 只捕获 HTTP 层错误(4xx/5xx/超时),网络层异常(
ECONNREFUSED/ENOTFOUND)会直接抛给前端、不进重试链。所以桥接器做网络探测(ai.gitee.com:443TCP,1 秒结果缓存)→ 自己决定后端。不静默降级原则:通道③未启用时,桥接器明确回落云端并告警,绝不静默降到本地 4B。
2.2 断网续传(复杂任务暂停/续传)
断网时桥接器按三维度评估任务复杂度(token 数 / 工具数 / 消息长度 + 复杂意图关键词),任一超标即判为复杂任务:
/v1/paused-tasks),后台线程每 30 秒探测网络,恢复后断点续传;LONG_CONTEXT_HONEST_CAP = 8000 tokens)。2.3 多智能体协同容灾(DSH 主节点 + 龙虾备份节点)
系统以 DSH 主节点承担日常调度与长任务,并以 龙虾(OpenClaw)备份节点做协同容灾:两个节点共享同一套应龙桥接器与通道配置,主节点不可用时由备份节点接管会话入口与看护职责。看护层的「死法 → 负责者」映射保证每一类故障都有明确接管者:
src/health/gateway_unstick.py(自动解卡 + 两级水位压缩)src/health/watchdog.py(探活 + 拉起)2.4 多模态识图
完整链路:QQ 收到的图片 → 提取 → base64 → 以
image_url块送入模型 → 返回识别结果。含工程护栏:单图 ≤ 32 MB、请求体 ≤ 48 MB、单条最多 8 张、取不到图不崩(保留文字继续)。见src/entry/qq_multimodal_gateway.py。2.5 可观测与自愈看护
两级会话水位(500 KB 检测 / 600 KB 强制摘要瘦身)、进程探活与自动拉起、每日 0:00 / 12:00 资源自检(残留脚本判定:白名单外 + 运行 >4 h + CPU 累计 >2 h;只发现不擅自杀进程)、通知防刷屏(同类冷却 + 全局配额 + 自动退出)。
三、模型与算力环境
3.1 精确环境(照抄实测值)
VLLM_USE_MXGPU=1),OpenAI 兼容接口/models/Qwen2.5-32B-AWQ,服务名xihe-32bvllm serve /models/Qwen2.5-32B-AWQ --served-model-name xihe-32b --port 8000 --gpu-memory-utilization 0.85 --max-model-len 8192 --trust-remote-code18000→ 实例8000(模板见scripts/tunnel_c500.bat)qwen3.5:4b(2.55 GB)3.2 实测数据(通道③)
/v1/models探活model=xihe-32bC500 non-stream response: 18993ms)finish_reason:stop 1529 / length 17 / abort 0 / error 0 / OOM 0max_num_batched_tokens=2048(调度步预算偏小 → 排队);辅因 KV 容量 34,544 tokens 结构性超容3.3 ★ 合规与数据来源红线(防自伤,务必遵守)
配套口径(写材料时逐条照做):
四、运行与部署方法
4.0 前置依赖
4.1 通道②|本地兜底(断网可用,零成本)
4.2 通道①|云端(多源韧性对照项)
4.3 通道③|沐曦 C500 自部署 32B
4.4 看护层
4.5 公开前 / 推送前自检
五、示例输入输出
5.1 探活:
GET /v1/models实测:HTTP 200 / 1.07 s。
5.2 对话:
POST /v1/chat/completions(非流式)实测:HTTP 200 / 1.91 s。
5.3 工具调用(通道③ 升级后,
finish_reason = tool_calls)5.4 反例(诚实的失败样例):上下文超限
5.5 本地兜底(通道②):
POST http://127.0.0.1:11434/v1/chat/completions5.6 一键复现
六、参考来源说明
6.1 开源框架与上游项目复用声明
VLLM_USE_MXGPU=1;本项目贡献方向为「Windows/WSL 下 C500 单卡 32G 切片跑 32B AWQ 注意事项」(待提交,见缺口清单)。6.2 为什么选木兰宽松许可证第 2 版(Mulan PSL v2)
LICENSE头部项目名已改为Xihe Agent Runtime(曦和 · AI Agent 运行底座)并补SPDX-License-Identifier: MulanPSL-2.0。6.3 外部规范与资料链接
BV1EEMJ63E29七、目录结构
八、演进路径
历史证据(12 次提交 / T01–T33 开发台账 / 8 个 Issue 索引)见 **docs/dev-history.md**。
九、文档导航
Signed-off-by,不引入 CLA)十、作者与致谢
崔克莉(GitLink: @LYL512)—— 本作品由个人独立完成。
从架构设计、应龙桥接器开发、国产 GPU(沐曦 C500)部署,到看护体系与工程细节打磨,均为独立实践。欢迎通过仓库 Issue 交流与指正。