Agent Skillsxinity-ai/xinity-ai › integrate-model

integrate-model

GitHub

将新推理模型集成到Xinity集群,涵盖调研、组装配置及通过脚本验证运行。

.claude/skills/integrate-model/SKILL.md xinity-ai/xinity-ai

Trigger Scenarios

请求安装或集成特定模型 生成可运行的模型条目

Install

npx skills add xinity-ai/xinity-ai --skill integrate-model -g -y
More Options

Non-standard path

npx skills add https://github.com/xinity-ai/xinity-ai/tree/main/.claude/skills/integrate-model -g -y

Use without installing

npx skills use xinity-ai/xinity-ai@integrate-model

指定 Agent (Claude Code)

npx skills add xinity-ai/xinity-ai --skill integrate-model -a claude-code -g -y

安装 repo 全部 skill

npx skills add xinity-ai/xinity-ai --all -g -y

预览 repo 内 skill

npx skills add xinity-ai/xinity-ai --list

SKILL.md

Frontmatter
{
    "name": "integrate-model",
    "description": "Integrate a new inference model into Xinity from a loose request like \"install\/integrate\/add model X\". Researches the model, assembles validated model data (the xinity-infoserver model entry), and verifies it actually runs via the daemon's run-model script, iterating on failures. Use whenever someone wants to make a specific model runnable on the cluster or to produce a model entry they can integrate themselves."
}

Integrate a model

Follow the canonical procedure in packages/xinity-infoserver/docs/integrating-a-model.md: research the model, assemble its model entry, verify it with run-model, and iterate on failures using the failure/fix table. The field reference is in that doc and in packages/xinity-infoserver/docs/model-fields.md.

When working through it as an agent:

  • Survey the variant space before writing anything (step 1 of the doc). Enumerate the publisher's quantizations, read the vendor's vLLM recipe end to end rather than mining it for one fact, and grep models/ for an entry with the same architectures. Discovering a second variant after you have verified the first means repeating the work.
  • One entry describes one model on one engine. The specifier carries the engine (qwen3-coder-30b-vllm), and sizing.weightGb, sizing.minKvCacheGb, tags and engineArgs describe that build only. A second engine means a second entry, not extra keys on this one.
  • Write the entry into models/<family>.yaml, creating the file if that family has none, then point run-model --models ../../models/<family>.yaml at it for verification.
  • Never touch packages/xinity-infoserver/models.legacy.d/. That is the deprecated v1 format, kept only for deployments predating the current one.
  • Run run-model with --json (--plan --json, then --start --json) so output is machine-readable. Branch on .gate.reason and, on error, the non-zero exit with .code, instead of scraping text.
  • Confirm the entry by actually running it, not by reasoning alone, and that means a real request, not just /health.
  • Only one server can hold 127.0.0.1:8000. Before starting, wait until nothing publishes the port (docker ps --format '{{.Ports}}' | grep -q ':8000->'). Checking your own container name misses a squatter from an earlier run whose cleanup never fired. After /health, assert /v1/models names the expected engineSpecifier. A stale container answers health checks and every measurement then describes the wrong model, plausibly. Treat a self-contradictory result as this until proven otherwise.
  • When a question needs many requests, such as an intermittent defect or a rate rather than a yes/no, send them concurrently (a dozen at a time) and cut max_tokens to the smallest budget that still exposes the symptom. Serial requests at a full budget cost hours for an answer that takes minutes. Bucket finish_reason: length separately from real malformations, or truncation will masquerade as the defect you are hunting.
  • Research and validate declared capabilities: check whether the model supports tool/function calling and vision, and if research says it plausibly does, add the tag (tools also needs args: ["--tool-call-parser", "<name>"]) and test it against the running server: a real tool_calls response, an image description. Skip a test only when research shows no realistic chance, and note that you checked.
  • Do not add custom_code (vLLM --trust-remote-code) preemptively, only after a load failure shows it is needed.
  • HTTP 200 is not verification. For anything in requestParams or promised in the description, show it changed the rendered prompt or the output. Same for a flag someone recommended: check the arch supports it before carrying it.
  • Write descriptions last, after the measurements exist, for someone choosing between variants. Mechanics (block sizes, tensor counts, kernel names) go in the PR, not the entry.
  • The entry states facts about the model. Never encode a workaround for a gap elsewhere in the stack; report that separately and leave the model data correct.
  • Verify claims about this repo by reading the code, never from memory. Stale notes about our own behaviour are the easiest thing to check and the most damaging to get wrong.
  • If the model is ambiguous (base vs instruct, size, quantization), ask the user before picking.
  • Leave the change staged or uncommitted for review. Do not commit.

Version History

  • cae9a5d Current 2026-08-28 10:29

    变更模型条目存储位置至仓库内 models/ 目录;新增端口冲突检测与并发请求优化策略;更新工具调用参数配置字段。

  • 9817b2f 2026-07-25 05:51

Same Skill Collection

.claude/skills/add-dashboard-orpc-procedure/SKILL.md
.claude/skills/add-env-variable/SKILL.md
.claude/skills/code-quality-control/SKILL.md
.claude/skills/run-tests/SKILL.md

Metadata

Files
0
Version
cd98a41
Hash
0ca53dac
Indexed
2026-07-25 05:51

- 위키
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-09-23 16:16
浙ICP备14020137号-1