用途
rust-router 是一个用于路由 Rust 相关问题的技能,旨在通过元认知框架帮助回答所有 Rust 问题,包括错误、设计和编码。其核心理念是不直接回答,而是先追踪认知层次。
主要能力
元认知框架
技能将问题按三个认知层次组织:
- 第 3 层:领域约束(WHY),包括业务规则、监管要求,以及 domain-fintech、domain-web、domain-cli 等技能,用于回答“为什么这样设计?”
- 第 2 层:设计选择(WHAT),包括架构模式、DDD 概念,以及 m09-m15 技能,用于回答“我应该使用什么模式?”
- 第 1 层:语言机制(HOW),包括所有权、借用、生命周期、trait,以及 m01-m07 技能,用于回答“如何在 Rust 中实现?”
入口点路由
根据用户信号选择入口层和方向:
- E0xxx 错误:第 1 层,向上追踪,首先使用 m01-m07。
- 编译错误:第 1 层,向上追踪,参考错误表。
- “如何设计…”:第 2 层,检查第 3 层再向下,首先使用 m09-domain。
- “构建[领域]应用”:第 3 层,向下追踪,首先使用 domain-*。
- “最佳实践…”:第 2 层,双向,使用 m09-m15。
- 性能问题:第 1 层 → 2,先向上再向下,使用 m10-performance。
双技能加载
当出现领域关键词时,必须同时加载 L1 和 L3 技能:
- Web API、HTTP、axum、handler:m07-concurrency 与 domain-web。
- 交易、支付、trading、payment:m01-ownership 与 domain-fintech。
- CLI、terminal、clap:m07-concurrency 与 domain-cli。
- kubernetes、grpc、microservice:m07-concurrency 与 domain-cloud-native。
- embedded、no_std、MCU:m02-resource 与 domain-embedded。
协商协议触发
在回答前检查是否需要协商:
- 查询包含“比较”“对比”“compare”“vs”“versus”:必须使用协商。
- 查询包含“最佳实践”“best practice”:必须使用协商。
- 领域加错误(如“交易系统 E0382”):必须使用协商。
- 模糊范围(如“tokio 性能”):应该使用协商。 需要协商时,输出应包含协商分析、查询类型、置信度、缺口、综合答案、总体置信度和披露的缺口。详细协议见 patterns/negotiation.md。
默认项目设置
创建新的 Rust 项目或 Cargo.toml 文件时,始终使用:
[package]
edition = "2024"
rust-version = "1.85"
[lints.rust]
unsafe_code = "warn"
[lints.clippy]
all = "warn"
pedantic = "warn"
第 1 层技能(语言机制)
- move、borrow、lifetime、E0382、E0597 → m01-ownership
- Box、Rc、Arc、RefCell、Cell → m02-resource
- mut、interior mutability、E0499、E0502、E0596 → m03-mutability
- generic、trait、inline、monomorphization → m04-zero-cost
- type state、phantom、newtype → m05-type-driven
- Result、Error、panic、?、anyhow、thiserror → m06-error-handling
- Send、Sync、thread、async、channel → m07-concurrency
- unsafe、FFI、extern、raw pointer、transmute → unsafe-checker
第 2 层技能(设计选择)
- domain model、business logic → m09-domain
- performance、optimization、benchmark → m10-performance
- integration、interop、bindings → m11-ecosystem
- resource lifecycle、RAII、Drop → m12-lifecycle
- domain error、recovery strategy → m13-domain-error
- mental model、how to think → m14-mental-model
- anti-pattern、common mistake、pitfall → m15-anti-pattern
第 3 层技能(领域约束)
- fintech、trading、decimal、currency → domain-fintech
- ml、tensor、model、inference → domain-ml
- kubernetes、docker、grpc、microservice → domain-cloud-native
- embedded、sensor、mqtt、iot → domain-iot
- web server、HTTP、REST、axum、actix → domain-web
- CLI、command line、clap、terminal → domain-cli
- no_std、microcontroller、firmware → domain-embedded
错误码路由
提供错误码到技能的路由及常见原因,例如:
- E0382 → m01-ownership,使用已移动的值
- E0597 → m01-ownership,生命周期太短
- E0506 → m01-ownership,不能赋值给已借用
- E0507 → m01-ownership,不能从借用中移动
- E0515 → m01-ownership,返回局部引用
- E0716 → m01-ownership,临时值被丢弃
- E0106 → m01-ownership,缺少生命周期说明符
- E0596 → m03-mutability,不能作为可变借用
- E0499 → m03-mutability,多个可变借用
- E0502 → m03-mutability,借用冲突
- E0277 → m04/m07,trait 约束不满足
- E0308 → m04-zero-cost,类型不匹配
- E0599 → m04-zero-cost,找不到方法
- E0038 → m04-zero-cost,trait 不是对象安全的
- E0433 → m11-ecosystem,找不到 crate/模块
功能路由表
- latest version、what's new → rust-learner,使用 agents
- API、docs、documentation → docs-researcher,使用 agent
- code style、naming、clippy → coding-guidelines,阅读技能
- unsafe code、FFI → unsafe-checker,阅读技能
- code review → os-checker,见 integrations/os-checker.md
优先级顺序
- 识别认知层(L1/L2/L3)
- 加载入口技能(m0x/m1x/domain)
- 追踪层次(向上或向下)
- 根据指示交叉引用技能
- 带推理链回答
关键词冲突解决
- unsafe → unsafe-checker(比 m11 更具体)
- error → m06 用于一般情况,m13 用于领域特定
- RAII → m12 用于设计,m01 用于实现
- crate → rust-learner 用于版本,m11 用于集成
- tokio → tokio-* 用于 API,m07 用于概念
优先级层次:
- 错误码(E0xxx)→ 直接查找,最高优先级
- 协商触发(compare、vs、best practice)→ 启用协商
- 领域关键词 + 错误 → 同时加载领域和错误技能
- 特定 crate 关键词 → 如果存在 crate 特定技能则路由到该技能
- 一般概念关键词 → 路由到元问题技能
子文件参考
- patterns/negotiation.md:协商协议细节
- examples/workflow.md:工作流示例
- integrations/os-checker.md:OS-Checker 集成
使用方式
该技能通过技能路由机制在回答 Rust 问题时使用,具体调用方式暂未提供。
适用场景
适用于所有 Rust 相关问题,特别是在比较、对比、最佳实践、领域特定问题、错误码处理等场景。
限制
该技能不直接回答问题,而是路由到相应技能或层次。具体技能的详细内容需要参考相应技能文件。部分集成和协议细节需查阅子文件。