4.3 KiB
modelhub-agent-contrib
ModelHub XC(信创模盒)适配智能体 Phase1 本地骨架。
不代注册;Victor 已批准队列闸门 live 代提。 发布智能体本身 不得分。积分来自成功适配,数字一律 待平台核实。 冲突裁决:适配 W1 优先;本仓默认 live 开启,仅在实时验证队列低于阈值时提交。
契约要点
| 项 | 值 |
|---|---|
| 端口 | 8080 |
| 健康检查 | GET /health → {"status":"ok"} |
| 启动 | 必须有非空 STRATEGY_ID,否则 exit ≠0 |
| Live | 默认开启;ALLOW_LIVE_SUBMIT=0 为停交开关;必须提供 STRATEGY_ID |
| Base 镜像 | 平台 xc_agent_platform/python:3.11-slim(保留 FROM) |
Tag v0.2.3-live-token 内置个人凭证,风险与停交说明见 token bake warning。
Victor 的确认已内置,LIVE_CONFIRM 仍接受但不再必需。每次 task/add 前,
通过 Xc-Token 全量分页读取 onlyMine task/page;非终态计入队列,读取失败停交。
LIVE_QUEUE_THRESHOLD=95(严格小于),LIVE_MAX_SUBMITS_PER_CYCLE=3,
LIVE_CYCLE_SECONDS=3600(最小 60 秒)。环境队列提示仅可额外阻塞。
候选来自 PENDING_SUBMIT_MD / PENDING_SUBMIT_TXT,否则使用
src/data/candidates.json(随镜像内置);A verified_reuse → 其他 A → B。
禁提、重复、GPU 未映射、占位符候选跳过。按 try_next_gpus 顺序选择首个已映射且未提交的模型/GPU 对。LIVE_STATE_FILE 默认
/tmp/live-submitted.json,格式为 model|gpuEnum 字符串列表,在请求前持久化;失败请求也不自动重试。旧版仅模型名状态文件须先离线迁移,否则 fail closed。
去重合并远端全部状态的 modelId + gpuType、内置 src/data/submitted-ledger.json 和持久化状态。A 允许同模型换 GPU;do-not-resubmit 模型跨 GPU 全禁。服务启动重建一次并只记录三类 pair 数;每次提交前刷新远端,失败则 hold ledger_rebuild_failed。task/page total 接受非负整数或 ASCII 数字字符串。
凭证优先级:EXTERNAL_SERVICE_TOKEN → XC_TOKEN_FILE → XC_TOKEN → MODELHUB_XC_TOKEN;跳过空值和占位符。每周期只记录 source 环境变量名,使用 Xc-Token 请求头,不记录凭证值。
离线再生成:python3 scripts/bake_candidates.py、python3 scripts/bake_ledger.py,读取 /workspace/modelhub-adapt 本地文件;候选 342(A 46、B 296),ledger 206 对及 28 个模型禁提项。
配置优先 build-config,失败使用 sample 并记录来源及原因。token 缺失只 hold。
快速开始
cd /workspace/modelhub-agent-contrib
make test
make smoke-health # 自动起本地 server(需 STRATEGY_ID,脚本可注入测试值)
make dry-run # 写出 reports/dry-run-*.md
make build # 需 Docker + 可达平台 base;失败见 docs/build-notes.md
本地起服务:
export STRATEGY_ID=local-dev
export ALLOW_LIVE_SUBMIT=0 # 本地开发停交
python3 -m src.server
# → http://127.0.0.1:8080/health
目录
Dockerfile Makefile README.md
src/ # server / health / strategy / gate
config/ # example.env, candidates.example.json
scripts/ # smoke_health.py, dry_run.py, tag_release.py
reports/ # dry-run 输出(gitignore)
docs/ # 契约 / runbook / kickoff / issues
tests/ # stdlib unittest
Makefile 目标
test/build/smoke-health/dry-run- 没有
register/submit/deploy/push
文档
docs/kickoff-for-victor.md— 一页开工 + 验收勾选docs/platform-contract-agent.md— 契约表docs/register-runbook.md— 仅人工注册docs/api-probe-design.md— 写接口禁止代调docs/diff-vs-demo.md— 对照官方 demodocs/issues.md— M0–M4 / Phase 清单docs/build-notes.md— 镜像构建说明
资源声明
按平台量级设计:约 100m–1 CPU / 256–512Mi。
许可与边界
本仓库用于 Victor 本地/Gitea 交付。Victor 已批准上述队列闸门自动提交;不自动注册。
make dry-run-pending 仍仅生成草稿;测试全部 mock 平台接口。