用途
rust-learner 是一个用于获取 Rust 与 crate 信息的技能(Skill),版本 2.1.0,最后更新于 2025-01-27。它被定位为获取 Rust/crate 信息的主要技能,帮助用户完成以下任务:
- 版本查询:获取最新的 Rust/crate 版本
- API 文档:从 docs.rs 获取文档
- 更新日志:从 releases.rs 获取 Rust 版本特性
主要能力
该技能覆盖以下查询类型,并对应不同的 agent 文件与数据来源:
- Rust 版本特性:../../agents/rust-changelog.md,来源 releases.rs
- Crate 信息/版本:../../agents/crate-researcher.md,来源 lib.rs、crates.io
- 标准库文档(Send、Sync、Arc 等):../../agents/std-docs-researcher.md,来源 doc.rust-lang.org
- 第三方 crate 文档(tokio、serde 等):../../agents/docs-researcher.md,来源 docs.rs
- Clippy lints:../../agents/clippy-researcher.md,来源 rust-clippy 文档
使用方式
执行模式检测
技能首先检查 agent 文件是否可用,以确定执行模式。根据查询类型读取对应的 agent 文件路径(见上表)。
Agent 模式(插件安装)
当 ../../agents/ 下存在 agent 文件时:
- 读取对应的 agent 文件(相对于本技能)
- 以 run_in_background: true 启动 Task
- 继续其他工作或等待完成
- 向用户汇总结果
Task 调用形式:
Task(
subagent_type: "general-purpose",
run_in_background: true,
prompt: <read from ../../agents/*.md file>
)
示例:用户询问 "tokio latest version" 时,读取 ../../agents/crate-researcher.md,启动 Task,等待 agent,然后汇总结果。用户询问 "What's new in Rust 1.85?" 时,读取 ../../agents/rust-changelog.md,启动 Task,等待 agent,然后汇总特性。
Inline 模式(仅安装 Skills)
当 agent 文件不可用时,直接执行以下步骤。
Crate 信息查询:
- actionbook: mcp__actionbook__search_actions("lib.rs crate info")
- 获取 action 详情:mcp__actionbook__get_action_by_id(<action_id>)
- agent-browser CLI(或 WebFetch 回退):open "https://lib.rs/crates/{crate_name}",使用 actionbook 中的选择器 get text,close
- 解析并格式化输出
输出格式:
## {Crate Name}
**Version:** {latest}
**Description:** {description}
**Features:**
- `feature1`: description
**Links:**
- [docs.rs](https://docs.rs/{crate}) | [crates.io](https://crates.io/crates/{crate}) | [repo]({repo_url})
Rust 版本查询:
- actionbook: mcp__actionbook__search_actions("releases.rs rust changelog")
- 获取选择器的 action 详情
- agent-browser CLI(或 WebFetch 回退):open "https://releases.rs/docs/1.{version}.0/",使用 actionbook 中的选择器 get text,close
- 解析并格式化输出
输出格式:
## Rust 1.{version}
**Release Date:** {date}
### Language Features
- Feature 1: description
- Feature 2: description
### Library Changes
- std::module: new API
### Stabilized APIs
- `api_name`: description
标准库文档(std::*、Send、Sync、Arc 等):
- 构造 URL:"https://doc.rust-lang.org/std/{path}/"
- Traits: std/{module}/trait.{Name}.html
- Structs: std/{module}/struct.{Name}.html
- Modules: std/{module}/index.html
- agent-browser CLI(或 WebFetch 回退):open <url>,get text "main .docblock",close
- 解析并格式化输出
常见标准库路径:
- Send、Sync、Copy、Clone:std/marker/trait.{Name}.html
- Arc、Mutex、RwLock:std/sync/struct.{Name}.html
- Rc、Weak:std/rc/struct.{Name}.html
- RefCell、Cell:std/cell/struct.{Name}.html
- Box:std/boxed/struct.Box.html
- Vec:std/vec/struct.Vec.html
- String:std/string/struct.String.html
输出格式:
## std::{path}::{Name}
**Signature:**
```rust
{signature}
Description: {description}
Examples:
{example_code}
第三方 crate 文档(tokio、serde 等):
1. 构造 URL:"https://docs.rs/{crate}/latest/{crate}/{path}"
2. agent-browser CLI(或 WebFetch 回退):open <url>,get text ".docblock",close
3. 解析并格式化输出
输出格式:
```markdown
## {crate}::{path}
**Signature:**
```rust
{signature}
Description: {description}
Examples:
{example_code}
Clippy Lints:
1. agent-browser CLI(或 WebFetch 回退):open "https://rust-lang.github.io/rust-clippy/stable/",在页面中搜索 lint 名称,对匹配的 lint get text ".lint-doc",close
2. 解析并格式化输出
输出格式:
```markdown
## Clippy Lint: {lint_name}
**Level:** {warn|deny|allow}
**Category:** {category}
**Description:**
{what_it_checks}
**Example (Bad):**
```rust
{bad_code}
Example (Good):
{good_code}
## 工具链优先级
两种模式使用相同的工具链顺序:
1. actionbook MCP —— 首先获取预计算的选择器
- mcp__actionbook__search_actions("site_name") → 获取 action ID
- mcp__actionbook__get_action_by_id(id) → 获取 URL + 选择器
2. agent-browser CLI —— 主要执行工具
```bash
agent-browser open <url>
agent-browser get text <selector_from_actionbook>
agent-browser close
- WebFetch —— 仅在 agent-browser 不可用时作为最后手段
回退原则(关键):actionbook → agent-browser → WebFetch(仅当 agent-browser 不可用时)。
不要:因为 agent-browser 较慢而跳过它;在 agent-browser 可用时把 WebFetch 作为主要工具;未先尝试 agent-browser 就阻塞在 WebFetch 上。
已弃用模式
- 用 WebSearch 查询 crate 信息 → 改用 Task + agent 或 inline 模式(原因:结构化数据)
- 直接使用 WebFetch → 改用 actionbook + agent-browser(原因:预计算选择器)
- 猜测版本号 → 始终从来源获取(原因:防止错误信息)
错误处理
- Agent 文件未找到:仅安装 Skills,使用 inline 模式
- actionbook 不可用:MCP 未配置,回退到 WebFetch
- agent-browser 未找到:CLI 未安装,回退到 WebFetch
- Agent 超时:站点缓慢/宕机,重试或告知用户
- 结果为空:选择器不匹配,报告并使用 WebFetch 回退
主动触发
该技能在以下情况自动触发:
- 提及任何 Rust crate 名称(tokio、serde、axum、sqlx 等)
- 关于 "latest"、"new"、"version"、"changelog" 的问题
- API 文档请求
- 依赖/特性问题
不要使用 WebSearch 查询 Rust crate 信息,改用 agents 或 inline 模式。
适用场景与限制
适用场景:需要查询 Rust 或 crate 版本、更新日志、标准库与第三方 crate API 文档、Clippy lint 信息的场景。
限制:该技能依赖 agent 文件、actionbook MCP、agent-browser CLI 或 WebFetch 等外部工具与来源站点;当这些工具不可用时需按回退原则处理。关于收费、价格、平台支持范围等信息,资料中暂未提供。