diff --git a/adapters/vllm_router/manifest.yaml b/adapters/vllm_router/manifest.yaml new file mode 100644 index 00000000..8053916f --- /dev/null +++ b/adapters/vllm_router/manifest.yaml @@ -0,0 +1,30 @@ +# Points InferMatrixCopilot at the vllm-project/router issue-priority rules. +# Source modules and a checkout pin are not declared here. +name: vllm_router +status: active +created_by: human +schema_version: 1 +capabilities: [] + +repo: + path: ${VLLM_ROUTER_REPO} + full_name: vllm-project/router + aliases: + - vllm-router + - vllm_router + - router + - vllm-project/router + default_branch: main + +knowledge: + source: vllm-project/router + repo_subdir: repos/vllm-router + briefing_docs: + - repos/vllm-router/bug/rules.md + - repos/vllm-router/_index.md + +push: + default_remote: origin + protected_branches: + - main + allowed: false diff --git a/doc/knowledge/SCHEMA.md b/doc/knowledge/SCHEMA.md index 3ae281bf..a6096d8a 100644 --- a/doc/knowledge/SCHEMA.md +++ b/doc/knowledge/SCHEMA.md @@ -81,7 +81,7 @@ contradictions: [相对路径] # 可选:与本页冲突的页面 新标签必须先加入此表再使用(防止标签蔓延): -- 归属:`general`、`vllm-omni`、`afd-plugin`、`vllm-gr`、`jiuwenswarm` +- 归属:`general`、`vllm-omni`、`afd-plugin`、`vllm-gr`、`jiuwenswarm`、`vllm-router` - 工作主题:`review`、`ci`、`docs`、`git`、`debug`、`bug`、`benchmark`、`environment`、 `remote`、`agents`、`planning`、`dev`、`rebase` - 代码/模型轴:`components`、`models`、`diffusion`、`model-executor`、`serving`、 diff --git a/knowledge/repos/_index.md b/knowledge/repos/_index.md index 6dc029ac..97202ae1 100644 --- a/knowledge/repos/_index.md +++ b/knowledge/repos/_index.md @@ -1,9 +1,9 @@ --- title: "仓库经验入口" created: 2026-07-10 -updated: 2026-09-30 +updated: 2026-11-10 type: index -tags: [vllm-omni, afd-plugin, vllm-gr] +tags: [vllm-omni, afd-plugin, vllm-gr, vllm-router] sources: [] --- @@ -28,3 +28,4 @@ sources: [] | Jianghan roleplay data pipeline | 私有项目 | [jianghan-roleplay-data-pipeline](jianghan-roleplay-data-pipeline/_index.md) | | vLLM-GR | `JiusiServe/vllm-gr` | [vllm-gr](vllm-gr/_index.md) | | jiuwenswarm | `openJiuwen-ai/jiuwenswarm` | [jiuwenswarm](jiuwenswarm/_index.md) | +| vLLM Router | `vllm-project/router` | [vllm-router](vllm-router/_index.md) | diff --git a/knowledge/repos/vllm-router/_index.md b/knowledge/repos/vllm-router/_index.md new file mode 100644 index 00000000..63090289 --- /dev/null +++ b/knowledge/repos/vllm-router/_index.md @@ -0,0 +1,34 @@ +--- +title: "vLLM Router 仓库知识入口" +created: 2026-11-10 +updated: 2026-11-10 +type: index +tags: [vllm-router] +sources: [] +--- + +# vLLM Router 仓库知识入口 + +## 仓库和适用范围 + +- 上游仓库:`vllm-project/router`。 +- Canonical slug:`vllm-router`。别名包括 `vllm_router` 与 GitHub 仓库名 `router`。 +- 适用范围:该仓库的 issue 分诊与优先级打标。 + +## 什么时候查这里 + +- 用户给出 `vllm-project/router`、`vllm-router` 或 `router`,需要映射到本目录。 +- 为该仓库的 issue 选择致命、高、中、低。 + +## 不放什么 + +- 换仓库仍然成立的方法放 [general](../../general/_index.md)。 +- 其他仓库的调度实现、模型或 CI 经验。 +- 单次 issue 的调查时间线、PR 复盘和评测记录。 + +## 目录内容 + +| 遇到什么 | 查看哪里 | 说明 | +|---|---|---| +| 给 `vllm-project/router` 的 issue 定级或打标 | [issue 分级规则](bug/rules.md) | 致命 / 高 / 中 / 低;先看影响,再看特性 | +| 查看本仓库的 Bug 主题入口 | [bug](bug/_index.md) | 只路由到分级规则 | diff --git a/knowledge/repos/vllm-router/bug/_index.md b/knowledge/repos/vllm-router/bug/_index.md new file mode 100644 index 00000000..b2920a9f --- /dev/null +++ b/knowledge/repos/vllm-router/bug/_index.md @@ -0,0 +1,26 @@ +--- +title: "vLLM Router issue 分级" +created: 2026-11-10 +updated: 2026-11-10 +type: index +tags: [vllm-router, bug] +sources: [] +--- + +# vLLM Router issue 分级 + +## 什么时候查这里 + +- 为 `vllm-project/router` 的 issue 判断致命、高、中、低并打标。 + +## 不放什么 + +- 跨仓库的 DI / SLO 计算在 [general/bug](../../../general/bug/_index.md)。 +- 其他仓库的缺陷分级。 +- 单次 issue 的根因、时间线和评测记录。仓库入口见 [vllm-router](../_index.md)。 + +## 目录内容 + +| 遇到什么 | 查看哪里 | 说明 | +|---|---|---| +| 按影响和特性给 issue 定级 | [分级规则](rules.md) | 分诊与打标的完整标准 | diff --git a/knowledge/repos/vllm-router/bug/rules.md b/knowledge/repos/vllm-router/bug/rules.md new file mode 100644 index 00000000..9ae92c6f --- /dev/null +++ b/knowledge/repos/vllm-router/bug/rules.md @@ -0,0 +1,51 @@ +--- +title: "vLLM Router issue 分级规则" +created: 2026-11-10 +updated: 2026-11-10 +type: rule +tags: [vllm-router, bug] +sources: [] +--- + +# vllm-project/router issue 分级规则 + +适用范围:`vllm-project/router` 的 issue 分诊与打标。可直接当作标签规则使用。 + +## 总原则 + +先看影响,再看特性。致命和高按影响判定;中和低按特性给默认档。主路径不可用或大面积 CI 失败时,特性再低也要升档。 + +## 致命 + +- 直接无法调度。 +- 一次导致大量 CI 用例失败(不是单个 flaky job)。 + +## 高 + +- `ci-failure` 默认归这一档。 +- 主路径还能跑,但结果会错:错路由、取消/泄漏、主干回归、安全或数据错误。 +- 已标为 `ci-failure` 的单子,只有确认是「大面积用例失败」或「调度直接不可用」时,才升到致命。 + +## 中(默认特性) + +- KV-aware / prefix / affinity 调度,包括 `kv_aware_affinity`、`cache_aware`、prefix reuse。 +- P/D 与 Program 调度(这是另一条主线,不要算进「其他调度」)。 +- Worker 发现与注册(对不上则亲和策略不会生效,例如 https://github.com/vllm-project/router/issues/468 、https://github.com/vllm-project/router/issues/299)。 +- 取消、泄漏、drain、健康检查误清计数(会让 KV 亲和被绕开,例如 https://github.com/vllm-project/router/issues/464 、https://github.com/vllm-project/router/issues/453)。 +- 主路径协议和鉴权转发:OpenAI/gRPC 字段丢失、auth header、tool-calling 直接 503。 +- 有临时规避、或只打特定后端/配置的上述缺陷,以及这些方向里已达成共识、缺实现的 enhancement。 + +## 低(默认特性) + +- 其他调度策略:least-load、round-robin、`power_of_two`、`consistent_hash`、topology、QoS/token-cost、heterogeneous stage-graph。 +- 可选生态集成:Mooncake、DeepInfer、Consul、LMCache、Anthropic `/v1/messages`。 +- 容量仿真、多租户配额、离线 search、长期 HA。 +- 可观测性增强、文档和配置体验、CI 加速(不是 failure 本身)、多模态远期架构。 +- 还在讨论、尚未排期或没人认领的 RFC / Feature。 + +## 判定顺序 + +1. 是否直接无法调度,或一次挂掉大量 CI 用例 → 致命。 +2. 是否为 `ci-failure`,或主路径结果错误、安全/数据错误、主干回归 → 高。 +3. 其余按上面的特性默认到中或低。 +4. 特性只决定中、低的默认值;满足 1 或 2 时必须升档,例如 `power_of_two` 若导致完全无法调度,仍标致命,不会因为属于「其他调度」而标低。 diff --git a/test/test_adapters.py b/test/test_adapters.py index 03675cb1..8283a0ef 100644 --- a/test/test_adapters.py +++ b/test/test_adapters.py @@ -124,3 +124,27 @@ def test_shipped_afd_adapter_parses_and_resolves_alias(monkeypatch, tmp_path): assert reg.resolve(name="afd-plugin").name == "afd_plugin" assert reg.resolve(name="vllm-project/afd-plugin").name == "afd_plugin" assert reg.resolve(repo_path=str(tmp_path)).name == "afd_plugin" + + +def test_shipped_vllm_router_adapter_injects_priority_rules(): + from infermatrix_copilot.config import _REPO_ROOT + + p = load_adapter(_REPO_ROOT / "adapters" / "vllm_router") + assert p.name == "vllm_router" + assert p.manifest["repo"]["full_name"] == "vllm-project/router" + assert p.manifest["knowledge"]["repo_subdir"] == "repos/vllm-router" + assert p.manifest["push"]["allowed"] is False + assert p.matches_name("vllm-router") + assert p.matches_name("vllm-project/router") + assert p.repo_path == "" + + briefing = p.briefing(_REPO_ROOT / "knowledge") + assert "直接无法调度" in briefing + assert "https://github.com/vllm-project/router/issues/468" in briefing + assert "https://github.com/vllm-project/router/issues/453" in briefing + assert "power_of_two" in briefing + assert "仍标致命" in briefing + + reg = AdapterRegistry(_REPO_ROOT / "adapters") + assert reg.resolve(name="vllm_router").name == "vllm_router" + assert reg.resolve(name="vllm-project/router").name == "vllm_router"