mcpField
D
Distri: A Composable Agent Framework

Distri: A Composable Agent Framework

本地服务
distri.devAI 与智能体9今天更新

关于 Distri: A Composable Agent Framework

Distri 是用 Rust 编写的开源 AI Agent 框架,面向需要通过 CLI、API 或 React 应用运行和组合 Agent 的开发者。Agent 以带 TOML frontmatter 的 Markdown 定义,并支持子 Agent、技能、追踪及 A2A 调用。

主要功能

  1. 01以 Markdown 定义 Agent
  2. 02CLI、API 和 React 嵌入运行
  3. 03内置、HTTP、外部及 MCP 工具
  4. 04技能加载与子 Agent 委派
  5. 05沙箱容器远程执行
  6. 06A2A 协议及调用追踪

适用场景

  1. 01用 CLI 执行单次 Agent 任务
  2. 02在 React 应用中嵌入 Agent
  3. 03将任务委派给专用子 Agent
  4. 04追踪 Agent、LLM 与工具调用

MCP 相关

框架可将 MCP 支持作为工具接入 Agent 执行流程,也允许使用外部客户端工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Distri

README 配图 README 配图 README 配图

Distri 是一个用 Rust 构建的开源 AI Agent 框架。使用 Markdown 定义 Agent,将产品功能连接为工具,然后通过命令行、API 服务或嵌入 React UI 来运行它们。

文档 · 网站 · Distri Cloud

Distri 仪表板


为什么选择 Distri

  • 以 Markdown 定义 Agent — 在单个带 TOML frontmatter 的 .md 文件中定义行为、工具和模型设置
  • 内置工具系统 — 内置工具(搜索、shell、浏览器)、动态 HTTP 工具、外部客户端工具和 MCP 支持
  • 技能 — Agent 在运行时通过 load_skill 按需加载的知识文档;上下文压缩后会自动重新注入
  • 子 Agent — Agent 将任务委派给专门的子 Agent,并为其分配独立的上下文和 token 预算
  • 远程执行 — 在沙箱容器中运行 Agent,以处理不受信任的代码或隔离资源
  • React SDK — 即插即用的 <Chat /> 组件,支持流式传输、工具渲染器、语音和开发者模式
  • 兼容 A2A — 实现用于 Agent 发现和调用的 A2A protocol
  • 可自托管 — 使用 SQLite 在自己的基础设施上运行,无需外部依赖。

安装

# Install script (macOS / Linux)
curl -fsSL https://distri.dev/install.sh | sh

# Homebrew
brew tap distrihub/distri && brew install distri

# Verify
distri --version
其他平台

直接下载:

# darwin-arm64 | darwin-x86_64 | linux-arm64 | linux-x86_64
TARGET=darwin-arm64
curl -L "https://github.com/distrihub/distri/releases/latest/download/distri-${TARGET}.tar.gz" -o distri.tar.gz
sudo tar -xzf distri.tar.gz -C /usr/local/bin distri

Windows(PowerShell):

Invoke-WebRequest https://github.com/distrihub/distri/releases/latest/download/distri-windows-x86_64.zip -OutFile distri.zip
Expand-Archive distri.zip -DestinationPath $Env:LOCALAPPDATA\distri -Force
$Env:Path += ";$Env:LOCALAPPDATA\distri"

运行

安装后,启动服务和 Web UI:

distri serve

首次运行时,会从 github.com/distrihub/distri/releases 下载匹配的 distri-server 二进制文件和 UI 包到 ~/.distri/。随后会自动在浏览器中打开 http://localhost:7777。

服务选项
标志行为
distri serve默认:解析并启动 distri-server,提供 UI 服务,并打开浏览器
--port 8080覆盖端口(默认值为 7777)
--no-ui仅 API 模式(无 Web 界面)
--no-browser不自动打开浏览器
--server-version 0.5.3固定使用指定的服务版本
--ui-version 0.5.7固定使用指定的 UI 版本
生命周期命令
命令行为
distri serve解析并启动 distri-server,提供 UI 服务
distri update在兼容范围内获取最新的服务端和 UI
distri update --pre允许使用预发布版本
distri version显示已安装的 CLI / 服务端 / UI 版本
distri uninstall清除 ~/.distri/{bin, ui, cache}

快速开始

运行内置 Agent
distri run search --task "What are the top programming languages in 2026?"
定义自己的 Agent

创建 agents/my_agent.md:

---
name = "my_agent"
description = "A helpful assistant with web search"
max_iterations = 15

[tools]
builtin = ["final", "search"]
---

# My Agent

You are a helpful assistant. Use the search tool to find current information.

{{task}}
运行它
# Interactive chat
distri tui my_agent

# Single task
distri run --agent my_agent --task "Find the latest SpaceX launch date"

# Start as API server
distri serve --port 8080
推送到 Distri Cloud
distri login
distri agents push agents/my_agent.md

内置 Agent

Agent用途示例
search网页搜索 + 抓取distri run search --task "latest AI news"
fast_search快速单次查询distri run fast_search --task "population of Tokyo"
web浏览器自动化 + 抓取distri run web --task "scrape HN top 5 stories"
code沙盒代码执行distri run code --task "sum of primes below 1000"
deepresearch多阶段研究,并委派给子 Agentdistri run deepresearch --task "state of quantum computing"
distri主协调器distri run distri --task "find and calculate..."
coder完整的编码 Agent(shell + 网页 + 文件)distri run coder --task "build a REST API"
agent_designer设计新的 Agent 定义distri run agent_designer --task "design a stock alert agent"

搜索、浏览器和 shell 工具需要 BROWSR_BASE_URL 和 BROWSR_API_KEY。在 Distri Cloud 上会自动配置。


Agent 定义格式

Agent 是带有 TOML frontmatter 的 Markdown 文件:

---
name = "my_agent"
description = "What this agent does"
max_iterations = 25
context_size = 80000
sub_agents = ["search", "code"]     # delegate to other agents

[tools]
builtin = ["final", "search", "load_skill"]
external = ["Read", "Write", "Edit"]  # client-side tools

[[tools.dynamic]]
name = "my_api"
type = "http"
description = "Call my API"
config = { base_url = "$API_URL", headers = { "Authorization" = "Bearer $TOKEN" } }

[[available_skills]]
id = "*"
name = "*"
---

# System Prompt

Your instructions here. Supports Handlebars templates:
- {{task}} — the user's message
- {{> skills}} — available skills listing
- {{> connections}} — available connections

完整模式请参阅 Agent 定义文档。


技能

技能是可复用的指令文档,Agent 可按需加载:

---
name = "data_pipeline"
description = "How to run the data transformation pipeline"
tags = ["data", "etl"]
context = "inline"
---

# Data Pipeline

## Steps
1. Fetch data with `my_api` tool...
2. Transform using Python...
# Push skills
distri skills push skills/data_pipeline.md
distri skills list

Agent 在运行时调用 load_skill("data_pipeline")。有两种模式:

  • Inline(默认)——将内容注入对话,并在上下文压缩后保留
  • Fork ——启动独立的子 Agent,并将技能作为指令

React SDK(DistriJS)

在 React 应用中嵌入 Agent:

npm install @distri/react
import { useAgent, Chat } from '@distri/react';

function App() {
  const { agent } = useAgent({ agentIdOrDef: 'my_agent' });
  return <Chat agent={agent} threadId="conversation-1" />;
}

功能:SSE 流式传输、支持自定义渲染器的工具执行、语音 I/O、开发者模式、浏览器端文件工具(由 IndexedDB 支持的 Read/Write/Edit/Glob/Grep)。

完整集成指南请参阅 DistriJS 文档。


CLI 参考

服务端和 UI
distri serve                        # Start server + UI on port 7777
distri serve --port 8080            # Custom port
distri serve --no-ui                # API-only
distri update                       # Pull latest server + UI
distri version                      # Show versions
distri uninstall                    # Clean ~/.distri/
Agent 和技能管理
distri                              # Interactive TUI
distri run --task "..." [--agent A] # Run a task
distri run --task "..." --remote    # Run in sandboxed container

distri agents list / push / delete  # Manage agents
distri skills list [-a] / push      # Manage skills
调试和工具
distri traces list / show ID [-v]   # Debug with trace viewer
distri tools list / invoke          # Inspect and test tools
连接和配置
distri connections list / token     # OAuth connections
distri secrets list / set / delete  # Manage secrets
distri workflows run / push         # DAG workflows

distri login                        # Auth with Distri Cloud
distri profile list / use / config  # Multi-profile management

调用与跟踪

Distri 有两种调用 API,二者都会在 Traces 视图 / distri traces list 中完整记录跟踪信息(Agent → 步骤 → LLM → 工具, 包括令牌数 / 成本 / 延迟和来源):

API端点功能
executePOST /v1/agents/{id} (A2A message/send | message/stream)运行完整的 Agent
llm_executePOST /v1/llm/execute单次 LLM 调用(适用于高吞吐量评分 / 提取)
// JS (@distri/core)
const agent = await Agent.create('scoring_agent', client)
await agent.invoke({ /* messages */, contextId, tags: { team: 'growth' } })   // execute
await client.llm(messages, tools, { agent_id: 'scoring_agent', thread_id, title })  // llm_execute
// Rust (distri client)
run_agent(&client, RunOptions { agent: Some("scoring_agent".into()), task, thread_id,
                                tags: Some(tags), trace_context: None, ..Default::default() }, cb).await?;   // execute
client.llm_execute(LlmExecuteOptions::new(LLmContext { thread_id, label, messages, ..Default::default() })
                       .with_agent_id("scoring_agent".into())).await?;          // llm_execute
distri run --agent scoring_agent --task "grade: 2+2=4" --tag team=growth   # CLI

将调用归入同一条跟踪: 为相关调用指定相同的 thread / context id (execute 中的 contextId,llm_execute 中的 thread_id)——Distri 会据此派生跟踪 ID, 从而将它们合并为一条跟踪(例如,一次评估运行中的所有评分调用)。 如需跨进程传递跟踪信息,可在 execute 中传入显式的 trace_context { trace_id, parent_span_id }, 将 Agent 的 span 嵌套在调用方已有的跟踪中。

完整指南请参阅:跟踪与跟踪上下文。


架构

distri/
├── distri-types/          # Shared type definitions
├── distri-cli/            # CLI binary
├── distri/                # Client library
├── distri-formatter/      # Output formatting
│
├── server/
│   ├── distri-core/       # Agent engine (orchestrator, loop, tools, LLM)
│   ├── distri-server/     # HTTP server (actix-web, A2A endpoints)
│   ├── distri-stores/     # Storage backends (SQLite, Postgres)
│   ├── distri-auth/       # Auth providers
│   ├── distri-parsers/    # Parsing utilities
│   └── agents/            # Built-in agent definitions (.md)
│
└── samples/               # Example applications
    └── scraper/           # Web scraping agent
执行流程
User message → AgentOrchestrator
  → Load agent definition
  → Create ExecutorContext (thread, task, run)
  → AgentLoop
    → PlanningStrategy.plan() → LLM produces plan
    → ExecutionStrategy.execute_step() per step
      → Tool calls (builtin, dynamic, external, MCP)
      → Event streaming (SSE)
    → Loop until final tool or max iterations
  → Return result

开发

# Build
cargo build

# Run tests
cargo test

# Test a specific crate
cargo test -p distri-core

此仓库仅包含 Rust 后端。TypeScript SDK(@distri/core、 @distri/react、@distri/components)位于 distrihub/distrijs。


示例

示例类型描述
scraperCLI/Rust网页抓取和数据提取 Agent

许可


链接

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。