SuperAPI AI 工具集

rust-router

编程与开发

查看项目

更新于 10-15 08:19

技能介绍

用途

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

优先级顺序

  1. 识别认知层(L1/L2/L3)
  2. 加载入口技能(m0x/m1x/domain)
  3. 追踪层次(向上或向下)
  4. 根据指示交叉引用技能
  5. 带推理链回答

关键词冲突解决

  • unsafe → unsafe-checker(比 m11 更具体)
  • error → m06 用于一般情况,m13 用于领域特定
  • RAII → m12 用于设计,m01 用于实现
  • crate → rust-learner 用于版本,m11 用于集成
  • tokio → tokio-* 用于 API,m07 用于概念

优先级层次:

  1. 错误码(E0xxx)→ 直接查找,最高优先级
  2. 协商触发(compare、vs、best practice)→ 启用协商
  3. 领域关键词 + 错误 → 同时加载领域和错误技能
  4. 特定 crate 关键词 → 如果存在 crate 特定技能则路由到该技能
  5. 一般概念关键词 → 路由到元问题技能

子文件参考

  • patterns/negotiation.md:协商协议细节
  • examples/workflow.md:工作流示例
  • integrations/os-checker.md:OS-Checker 集成

使用方式

该技能通过技能路由机制在回答 Rust 问题时使用,具体调用方式暂未提供。

适用场景

适用于所有 Rust 相关问题,特别是在比较、对比、最佳实践、领域特定问题、错误码处理等场景。

限制

该技能不直接回答问题,而是路由到相应技能或层次。具体技能的详细内容需要参考相应技能文件。部分集成和协议细节需查阅子文件。