已合并
feat(skills): add infernex-deploy agent skill (v1.0.0 - v1.4.0) #245
xinhongchen创建于 9月10日
feat(skills): add infernex-deploy agent skill (v1.0.0 - v1.4.0) #245
已合并
Pull Request已成功合入, 合并人@openFuyao-bot
(感谢 xinhongchen 的贡献)9月10日 添加了label:sig/sig-ai-inference
9月10日 关联了issue:【需求】/【Requirement】PD-Orchestrator的命名空间创建希望变为自动创建
openFuyao-bot
9月10日 评论:
9月10日 评论:
欢迎来到 openFuyao 社区
Hey @xinhongchen , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。您可以自助配置此仓库的 PR 合并规则,更多详情,请参阅此处。
联系指引
有疑问可以联系 SIG: sig-ai-inference ,
维护者是: @foxbit, @regandy ,
审核者是: @ShiroChen, @piamposer-li, @qinwenzh .


9月10日 添加了label:openFuyao-cla/yes
9月10日 添加了label:ci-running
此处折叠了218条消息 查看更多
skills/infernex-deploy/scripts/preflight_run.py
@@ -0,0 +234,13 @@
234+ ap.add_argument("--skill-dir", type=Path, default=Path(__file__).resolve().parent.parent)
235+ ap.add_argument("--values", type=Path, default=None)
236+ ap.add_argument("--chart-dir", type=Path, default=None)
237+ ap.add_argument("--chart-oci", default="oci://cr.openfuyao.cn/charts/infernex")
238+ ap.add_argument("--chart-version", default="0.0.0-latest")
239+ ap.add_argument("--checker-result", type=Path, default=None)
240+ args = ap.parse_args()
241+
242+ checks_path = args.checks or (args.skill_dir / "references" / "checks.yaml")
243+ spec = load_yaml(checks_path)
244+ if int(spec.get("version", 1)) < 2:
245+ die("checks.yaml 须为 v2(结构化 when + judge)")
246+ ctx = Context(args)
247+
[重要] Context.eval_condition 对未知条件静默返回 None,导致含未知 when 条件的检查项被跳过,违反 checks.yaml 注释中"未知条件 → 报错,禁止静默通过"的契约。
修复建议:在函数末尾添加 raise ValueError(f"未知 when 条件: {cond!r}"),并在 run_check 调用处捕获异常、以 status=skip + evidence 含错误信息的方式记录。


zhengqinwenZZZ
10 天前 评论:
10 天前 评论:
/lgtm
/approve
/squash


10 天前 添加了label:lgtmapproved
openFuyao-bot
10 天前 评论:
10 天前 评论:
10 天前 合入了pull request,合并节点 SHA:dcdcfb84556b1deb5efd37e6f1c21c6f66c6c5f9
一、关联 Issue
RFC:https://gitcode.com/openFuyao/InferNex/issues/153
二、概述
实现 RFC #153 提议的 InferNex 一键部署 Agent Skill(
infernex-deploy,v1.4.0),面向昇腾 NPU Kubernetes 环境。用户在 Agent 会话里用自然语言即可完成 InferNex 的部署、升级、验证与卸载,无需记忆 Helm values 细节。全流程以确认门状态机推进,意图、渲染、预检判定、报告全部结构化:范围:InferNex 主 Chart 的全生命周期管理。不含 InferNex-Bridge / LLMISVC(后续版本扩展)。
试用版声明:本版本将部署流程、确定性渲染、预检执行、模型档案的框架一次性定型。框架与预检链路已经活集群验证;完整部署链路(新框架 C1→C4 实机回归)、多 Agent 运行时适配、非 Qwen3-8B 模型的实机部署仍在验证与演进中,欢迎社区试用并反馈问题(反馈将按轮次合入,见「演进记录」)。
三、支持的能力
3.1 部署配置项(均可自然语言指定)
models/档案命中(如qwen3-8b、glm-5.2、deepseek-v4);未命中点选确认完整 ID,并可沉淀为新档案(新增一个 YAML,零改动现有文件)models/{aggregated,pd}/内置 7 个规格(Qwen3-8B、Qwen3-Coder-30B、GLM-5.1-w4a8、GLM-5.2-w8a8/w4a8c8、Minimax-m2.7、DeepSeek-V4-Flash),源自examples/参考规格:拓扑并行度、量化参数、env、资源需求、权重路径0.0.0-latest,浮动 tag 每次部署拉取最新,离线回退缓存并告警);可指定版本号(INFERNEX_CHART_VERSION)或本地 Chart 目录(INFERNEX_CHART_DIR)3.2 生命周期操作
四、支持的 Agent 运行时
skill 内置结构化点选交互规范(配置确认、卸载范围、敏感信息采集等场景强制使用):
AskQuestionAskUserQuestion所有部署逻辑均通过
kubectl/helm/ skill 自带脚本执行,不要求工作区有 InferNex 源码。五、已验证的场景
examples/参考规格,未经本 skill 实机验证六、端到端流程
6.1 准备依赖(
scripts/bootstrap.sh)oci://cr.openfuyao.cn/charts/infernex@0.0.0-latest;浮动 tag 每次拉取最新(避免缓存漂移装旧镜像),固定版本号命中缓存直接用;远端不可达回退本地缓存并醒目告警--with-checker拉取(static.openfuyao.cn,按架构自适应);旧缓存二进制缺新参数时可--refresh-checker刷新6.2 采集与确认(C1 / C2 门)
kubectl get nodes -o wide+templates/nodes.yaml.tpl,默认不 SSHtemplates/intent.yaml.tpl(槽位与默认值见references/intent_schema.md,null=未提及走默认,禁止臆测)render_values.py先渲染 values(内嵌自检 + 派生项回填),按固定模板渲染确认表(含服务名/预期 LWS/RSG 指向等派生项),选项逐字固定(确认,进入预检 / 修改配置 / 取消)6.3 预检(未通过不得安装)
scripts/preflight_run.py按references/checks.yaml(v2,判定命令与触发条件全部数据化)逐项执行:软件检查 S-01~S-22(集群环境 / 安装冲突 / Chart 渲染 / values 校验)+ 硬件检查(checker 结果映射,H/K/B 为其输出契约)preflight-report.json+.md:软件 / 硬件(checker)两节,逐项列出(通过项不折叠),中文检查项名称 + 版本/实测值(如 K8s v1.34.3、metrics-server v0.9.0、每节点 NPU 卡数、容量需求/可用),不展示内部编号;硬性失败附白名单修复提示6.4 安装 / 升级
helm dependency build && helm upgrade --install--wait:RSG 证书 Job 为 post-install hook,与helm --wait死锁;就绪由 6.5 轮询保证6.5 等待就绪(可续跑)
wait_inference.py轮询:阶段 A 资源出现 → 阶段 B 推理就绪;就绪 =/v1/models200 且全部 LWSreadyReplicas== 期望副本数(首启常 10–30 分钟,预算 90 分钟)wait-state.json/endpoint.json,含 LWS 副本进度供交付回填);中断后可从 checkpoint 续跑,禁止重装kubectl logs -f(用--tail=100)6.6 推理验证与交付(C4)
POST /v1/chat/completions→ 200(Pod Running //v1/models通都不算完成)6.7 卸载(独立路径,跳过部署预检)
固定三项点选,避免误删共用组件:
均不删除 LWS Operator、npu-operator、metrics-server 等集群共用组件。
七、安全与交互约束(用户可感知的行为)
render_values.py从 intent 生成,禁止手改;同一 intent 渲染结果 byte-identicalPOST /v1/chat/completions返回 200 才交付 Endpoint八、演进记录