Swiftide

用 Rust 构建流式 LLM 应用的框架:代理工具框架、类型化任务图与可组合的 RAG 索引/查询管道,一站式解决 AI 应用编排问题。

Star 数
★ 795
最近更新
7 天前
License
MIT
主语言
Rust

30 秒速览

运行形态
代码库 / SDK开发框架
可在哪里用
通用 · 跨平台OpenAI API · Claude API
费用
软件免费,模型调用费用自付
上手难度
中 · 需要几步配置
开始前需要
Rust 工具链(Cargo)Tokio 运行时Shell / 命令行网络访问本地文件系统MCP Server
典型场景
Rust 开发者需要为自己的代码库构建检索增强问答系统,用 FileLoader 加载 .rs 文件、tree-sitter 分块后嵌入并存入 Qdrant
不适合
  • 需要稳定 API 的团队:项目处于 pre-1.0,接口可能变动
  • 不熟悉异步 Rust(Tokio、Arc、trait 对象)的团队
  • 希望开箱即用、无需自行配置模型与存储服务的用户

这个 Agent 能做什么,适合哪些场景?

Swiftide 是 bosun-ai 组织下的一个 Rust 框架,用于构建 LLM 应用,包含三大核心组件:代理框架(Agent Harness)、类型化任务图(Typed Task Graphs)以及流式 RAG 索引与查询管道。代理框架负责管理消息历史、调用 LLM、执行工具、运行生命周期钩子并按停止条件结束循环;任务图通过强类型节点和转换规则编排复杂工作流,支持并行分支、暂停与恢复;RAG 管道则以流式方式串联加载器、转换器、嵌入器、缓存和存储后端。它集成了 OpenAI、Anthropic、Gemini、Ollama 等多家 LLM 提供商,以及 Qdrant、Redis、LanceDB、PgVector 等存储方案,支持 MCP 工具加载和 Langfuse 可观测性。项目仍处于 1.0 之前的阶段,API 可能变化,采用 MIT 许可证发布。

Swiftide 提供三条主要能力线。第一,代理框架:通过 agents::Agent::builder() 构建代理,使用 #[swiftide::tool] 宏将 Rust 函数注册为工具,通过 AgentContext 抽象消息历史与 ToolExecutor(默认本地执行,也可用 Docker 执行器),支持生命周期钩子、人工审批(ApprovalRequired)、结构化停止/失败载荷、MCP 工具箱和流式响应。第二,任务图:以 Task 和 TaskNode 组成编译期强类型的工作流,节点间通过 Transition 决定输出流向,支持扇出/汇合(tasks_fanout.rs 示例)、顺序或并行执行、暂停与恢复。第三,RAG 管道:indexing::Pipeline 串联 FileLoader、ChunkCode(基于 tree-sitter 的代码分块)、MetadataQACode、Embed 和 Qdrant 等存储后端完成索引;查询管道支持查询转换、检索、混合搜索、重排序与评估。

  1. Rust 开发者需要为自己的代码库构建检索增强问答系统,用 FileLoader 加载 .rs 文件、tree-sitter 分块后嵌入并存入 Qdrant
  2. 团队需要构建能调用本地工具、支持人工审批环节的半自主代理,例如代码审查或运维助手
  3. 需要将提示步骤、代理和领域逻辑编排成强类型多节点工作流,并支持暂停恢复以等待外部回调的平台工程团队
  4. 需要对接多家 LLM 提供商(OpenAI、Anthropic、Bedrock、Ollama 等)并保留切换自由的 AI 产品后端
  5. 需要流式处理大规模索引负载(Kafka、Fluvio、Parquet 数据源)并接入 Langfuse 追踪的数据团队

如何安装或部署这个 Agent?

通过 Cargo 安装并启用所需功能:
sh

cargo add swiftide --features swiftide-agents,openai
cargo add anyhow
cargo add tokio --features macros,rt-multi-thread

若使用 OpenAI,需设置 API 密钥:
sh
export OPENAI_API_KEY=...

集成均按 feature 门控,按需启用可保持依赖轻量。

如何使用这个 Agent?

以最小代理为例:用 swiftide::integrations::openai::OpenAI::builder().default_prompt_model("gpt-4o-mini").build()? 构建 LLM 客户端;用 #[swiftide::tool] 宏定义异步工具函数;通过 agents::Agent::builder().llm(&openai).tools([...]).on_new_message(...).limit(8).build()? 构建代理,最后调用 .query("...").await? 执行。RAG 索引则使用 indexing::Pipeline::from_loader(FileLoader::new(".")) 后链式调用 then_chunk、then、then_in_batch(Embed::new(...))、then_store_with(qdrant) 并 .run().await?。examples 目录包含 hello_agents、tasks、tasks_fanout、hybrid_search、langfuse 等完整示例可参考。

这个 Agent 有哪些优点和局限?

优点
  • 一个框架同时覆盖代理循环、类型化任务编排和流式 RAG 管道三条线,无需拼装多个库
  • 多提供商适配(OpenAI、Anthropic、Gemini、Bedrock、Groq、Ollama 等)且按 feature 门控,依赖保持轻量
  • 任务图在编译期强类型化,节点输入/输出/错误类型在构建时确定,减少运行时编排错误
  • 原生 Rust 实现,适合对性能敏感的索引与检索路径,README 明确提示关注热路径的内存分配
  • 工具生态开放:本地 Rust 函数、自定义 Tool 实现、MCP 服务器、Docker 执行器均可接入
局限
  • 项目处于 pre-1.0 阶段,README 明确警告 API 可能变化,升级存在迁移风险
  • 要求使用者熟悉 Rust 异步编程(Tokio、Arc、泛型特征对象),对非 Rust 团队门槛较高
  • 存储、数据源、可观测性等能力依赖各自外部系统(Qdrant、Redis、Kafka、Langfuse 等),部署复杂度随之增加
  • MVP 文档以 API docs 和示例为主,README 自认示例是最可靠的签名来源,正式文档可能滞后

这个 Agent 与同类方案有什么区别?

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Swiftide 当前 68 · 存在缺口 代码库 / SDK免费 + 模型费 ★ 795 7 天前 Rust OpenAI API · Claude API
Codewhale 终端编码助手 75 · 存在缺口 命令行工具免费 + 模型费 ★ 41k 今天 Rust OpenAI API · Claude API
RAGLight 63 · 存在缺口 命令行工具免费 + 模型费 ★ 673 8 天前 Python OpenAI API
AppWorld 智能体基准测试环境 56 · 缺口较多 命令行工具免费 + 模型费 ★ 539 1 个月前 Python OpenAI API · Claude API

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
存在缺口
68/ 100 五分制 3.4 / 5
本评测基于 2026年9月10日 的源码;此后该项目发布了 1 个正式版本,尚未复审。分数与结论只代表评测时的版本。 最近版本 ↓
信任安全 17/29
可靠稳定 9/14
适用触发 14/18
规范维护 14/18
有效结果 9/13
证据核验 5/8
查看各维度的扣分理由
信任安全17 / 29 · 2.9/5

证据显示代理框架默认本地工具执行、提供docker执行器隔离、人工审批(ApprovalRequired)与可定制停止工具,权限面与外部效应有基本约束(各2分);但未见细粒度权限声明、数据/密钥脱敏文档与回滚机制的具体说明,故未给满分。

可靠稳定9 / 14 · 3.2/5

类型化任务图、停止条件、结构化失败负载与tracing/指标表明自洽性和错误报告有支撑;workspace统一依赖版本、CI测试与覆盖率徽章支持依赖可用性;但静态审查无法验证运行行为,扣一分。

适用触发14 / 18 · 3.9/5

README面向明确受众(Rust开发者构建agent/RAG),场景与示例划分清楚,能力边界(pre-1.0、API可变)有声明;但触发精度(工具/停止语义)仅有描述性说明,无文档细节,环境适配(多provider集成)为feature-gated描述。

规范维护14 / 18 · 3.9/5

信息架构、安装说明、示例目录、MIT许可(LICENSE与Cargo.toml一致)都非常完整,给3分;维护者(核心团队、贡献指南、Discord)清晰;但未见CHANGELOG文件,版本演进仅靠crates.io徽章,已知限制仅在Project Status一句带过,扣分。

有效结果9 / 13 · 3.5/5

示例展示可组合、流式输出与可观测性,输出可用性有支撑;功能门控保持依赖轻量,成本收益合理;但实际效用需运行验证,静态审查只能给中等分。

证据核验5 / 8 · 3.1/5

README中的能力声明多可对应到具体示例文件和docs.rs链接,可追溯性中等;CI/覆盖率徽章与Cargo.toml、LICENSE互相印证;但静态材料无法核实徽章背后的真实状态,README中部分能力(如resume、MCP)仅陈述未见源码细节,扣分。

风险与缓解建议
  • 项目pre-1.0,API可能在不通知的情况下变更,生产使用需锁定版本。
  • 代理默认在本地执行工具/命令,接入LLM前应配置隔离(如docker执行器)与人工审批。
  • API密钥通过环境变量(OPENAI_API_KEY)注入,未见密钥脱敏或日志防泄漏文档,需自行审计。
  • 未提供CHANGELOG,升级依赖版本前应审查diff。
  • 发布方身份未经企业注册表验证,信任需自行建立。
证据充分度:低 评估于 2026年9月10日 审查版本 3736ce790b1d 评估后仓库已有新提交,评分可能未覆盖最新改动
查看完整评分方法 →

最近版本

来自该项目 GitHub Releases 的最新发布记录,说明为上游原文摘录,未经本站改写或测试。

  1. v0.33.0 swiftide-v0.33.0
    发布说明摘录
    New features - [a94760d](https://github.com/bosun-ai/swiftide/commit/a94760d9cbaed552bf58bc667cc7a67141751fe6) *(indexing)* Convenience then_expand alias for then_chunk - [13d36c0](https://github.com/bosun-ai/swiftide/commit/13d36c0fc922752b322a4d95b82a847b3d2ad84f) *(agents)* Stream output while commands run ([#1162](https://github.com/bosun-ai/swiftide/pull/1162)) - [7ff5a43](https://github.com/bosun-ai/swiftide/commit/7ff5a43c61b3d2298970f9ca11c3a05d876e1148) *(agents)* Allow fully overwriting agent history via context ([#997](https://github.com/bosun-ai/swiftide/pull/997)) …
    在 GitHub 查看 ↗
  2. v0.32.1 swiftide-v0.32.1
    发布说明摘录
    New features - [8bca0ef](https://github.com/bosun-ai/swiftide/commit/8bca0efa246e6adac061006f5f72cc9dd038cc8f) *(integrations/tree-sitter)* Add C# support ([#967](https://github.com/bosun-ai/swiftide/pull/967)) - [da35870](https://github.com/bosun-ai/swiftide/commit/da358708c83459c7f990027759fa5c56a2b647b9) Custom schema for fail tool ([#966](https://github.com/bosun-ai/swiftide/pull/966)) Full Changelog: https://github.com/bosun-ai/swiftide/compare/0.32.0...0.32.1
    在 GitHub 查看 ↗
  3. v0.32.0 swiftide-v0.32.0
    发布说明摘录
    New features - [9ae3331](https://github.com/bosun-ai/swiftide/commit/9ae33317bbcbf5e65e3aa7eb0bf378190b7c33b5) *(agents)* [breaking] Improve toolspec api with schemars and support all possible types ([#940](https://github.com/bosun-ai/swiftide/pull/940)) BREAKING CHANGE: macro-level json_type overrides beyond the basic primitives are no longer enforced; rely on Rust type inference or provide an explicit schemars-derived struct/custom schema when specific shapes are required …
    在 GitHub 查看 ↗
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents