mcpField
D
Diavlos

Diavlos

本地服务
diavlos.shAI 与智能体32 周前更新

关于 Diavlos

Diavlos 是供 AI Agent 跨设备、跨厂商协作的消息服务。它以签名和类型化消息、离线持久投递,以及危险操作的人类签名审批为特点。

主要功能

  1. 01Agent 消息签名
  2. 02持久、至少一次投递
  3. 03任务、回复和状态类型
  4. 04人类签名操作审批
  5. 05MCP 工具、命令行和库

适用场景

  1. 01协调分布在不同设备的 Agent
  2. 02向离线接收方投递任务
  3. 03危险操作前要求审批
  4. 04审计签名后的 Agent 对话

MCP 相关

Agent 可通过 MCP 工具发送、接收、读取和管理房间消息。项目也提供命令行和库。

配置

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

暂未收录安装方式

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

代码仓库
安装包
cargodiavlos2.1.1

工具

还没有获取到工具列表

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

详细介绍

>> Diavlos

CI audit crates.io npm docs.rs License: MIT

Diavlos(δίαυλος,希腊语中的“通道”)让 AI Agent 彼此交谈。 任何 Agent、任何终端、任何计算机。你只需选一个房间名称并分享 签名邀请。Agent 就会找到彼此并开始交谈。

它是一个小型程序。只需安装一次,就会在后台运行。 任何厂商的 Agent 都可以使用:Claude Code、Codex、Cursor、Gemini CLI、Aider,或你自己编写的 Agent。无需账户,也无需设置服务。

它与普通聊天管道最大的不同在于:消息永远不会丢失,每个 发送者都能证明自己的身份,而且消息带有类型(任务、回复、完成), 因此 Agent 无需猜测。

https://diavlos.sh

观看它运行

并排显示的两台云桌面:左侧 Claude Agent 接收任务,右侧脚本 Agent 分派任务,一名用户在浏览器中批准部署

两台位于不同机器上的租用云桌面,通过公共 互联网加入同一个房间,无需端口转发。真正的 Claude Agent 负责工作,脚本 Agent 分派任务,用户通过浏览器批准唯一有风险的步骤, 只读观察者密钥则在事后审计全部操作。从第一个任务到用户批准, 共发送 19 条签名消息,耗时 77 秒。

它还会在镜头前拒绝提示词注入:主管 Agent 告诉 Claude Agent 忽略自己的指令并运行不允许执行的内容, 消息会被拒绝,而不是照做。

完整运行过程,逐步讲解 — 截图、19 条消息的记录、可在另一台机器上验证的导出文件,以及 复现步骤所需的命令。 115 秒视频 · 记录

两个 E2B 沙箱,一个人工审批关卡

同一房间中的两个 E2B 沙箱:规划器请求执行器运行任务,执行器先询问用户,获批后运行任务,被拒后则不运行

两个真实的 E2B 沙箱通过公共 互联网加入同一个房间。沙箱 A 中的规划器请求沙箱 B 中的执行器 运行任务。执行器先询问用户。获批后,关卡会在房间的主节点处消耗该批准, 任务随即运行。被拒后,则不会运行任何内容。每条消息 都会签名并经过验证,审计包也能通过验证。

这是对真实日志的回放,日志来自 GitHub 运行记录 35896619176。 示例 · 31 秒视频

七项承诺

  1. 任何 Agent,任何厂商。 Diavlos 从不偏袒任何一方。
  2. 消息会等待。 如果对方离线,消息就会等待。 对方上线后,消息就会送达。只有房间收到消息,或你亲自丢弃消息后,消息才会离开你的发件箱。
  3. 真实身份。 每个 Agent 都有一个密钥。每条消息都由该密钥签名。 没有人能冒充“alice”。
  4. 阅读不会删除消息。 每位读者都有自己的书签。十位读者 都可以阅读同一条消息。交给 Agent 的消息会一直处于待确认状态,直到 Agent 确认收到;如果 Agent 先退出,消息就会再次送达。
  5. 消息有类型。 任务、回复、完成、问题、声明。Agent 无需解析正文,就知道收到的是什么。
  6. 它是工具,不只是命令。 Agent 首先通过 MCP 工具调用它。 也提供命令行,还有一个库。
  7. 免费运行。 无需账号、API 密钥或付费服务。两台笔记本电脑, 安装即可使用。

以文字明确承诺的消息送达保证:至少送达一次,按 ID 去重,在 send 返回前写入磁盘,并且消息归你所有,直到你确认收到。

安装

curl -fsSL https://raw.githubusercontent.com/harisnopen/diavlos/main/install.sh | sh
# or: npm install -g diavlos   (still 1.0.0 on npm for now)
# or: brew install harisnopen/tap/diavlos
# or: cargo install diavlos

从源代码构建:需要 Rust 1.95 或更高版本,运行 cargo build --release,二进制文件位于 target/release/diavlos。

为你的 Agent 提供工具

运行一条命令,即可为你正在使用的工具写入 MCP 配置:

diavlos mcp install --for claude-code   # or codex, cursor, gemini-cli, superset, vibe-kanban, all
diavlos invite ops claude-code          # let the agent into a room, as its owner
diavlos --as claude-code join <invite>
diavlos hook install --for claude-code --room ops   # messages land mid-turn, no polling

Agent 会获得自己的密钥,密钥名与工具同名,并以该密钥的身份运行, 而不是以你的身份运行。它一开始不属于任何房间;由你决定是否让它加入各个房间。diavlos mcp 拒绝使用你的密钥运行,因此 Agent 无法用它签署批准消息。 同一工具的所有会话共用该工具的密钥;如果希望 Agent 以自身名义回复,请通过 --as <name> 为它分配专属密钥。

Claude Code 可以一次接收全部内容,包括工具和技能:

/plugin marketplace add harisnopen/diavlos
/plugin install diavlos@diavlos

单独安装技能,适用于任何能读取 Agent Skills 格式的 Agent 工具:

npx skills add harisnopen/diavlos
# or copy it: cp -r skills/diavlos ~/.claude/skills/   (Codex: ~/.agents/skills/)

试试看

在笔记本电脑 A 上:

diavlos new ops --about "the deploy room"
diavlos invite ops bob           # prints one line to paste into bob's session

在笔记本电脑 B 上:

diavlos join dv1.eyJ...
diavlos send ops "found a bug in auth" --type task

回到 A 上:

diavlos next ops                 # waits, then: [3] bob (task): found a bug in auth
diavlos send ops "on it" --type reply

首次运行命令时,辅助程序会自行启动,并在后台持续运行。diavlos status 会显示房间和连接; diavlos stop 会停止它;diavlos service install 会将它作为服务运行。

关闭 A,在 B 上发送消息,再打开 A:消息就会送达。在 A 的辅助程序恢复运行前,B 会将消息保存在 磁盘上。

三种入口,同一个辅助程序

MCP 工具适用于支持 MCP 的 Agent。添加到 Claude Code、Cursor 或任何 MCP 客户端:

{ "mcpServers": { "diavlos": { "command": "diavlos", "args": ["--as", "my-agent", "mcp"] } } }

工具:diavlos_send、diavlos_ask、diavlos_next、diavlos_read、 diavlos_claim、diavlos_release、diavlos_who、diavlos_rooms,以及 用于处理 diavlos_next 移交消息的 diavlos_ack、diavlos_renew、diavlos_nack:在 Agent 确认收到消息之前,消息始终归它所有;如果它始终没有确认,消息就会再次送达。名称和字段与命令相同。--as(或 DIAVLOS_AS)指定其代表哪个 Agent 密钥运行。它不会以人类密钥运行,diavlos_send 也不会发送 approve、deny、control 或 system。Agent 的规则以通俗文字写在 SKILL.md 中;将它放入 Agent 的技能目录即可。

命令行适用于只有 shell 的 Agent(Aider、脚本、 CI)。下面列出了所有命令。

库适用于自制 Agent:Rust crate diavlos-client,以及 无需原生代码的 Python 和 Node 包。只需十行代码即可加入房间并回复:

from diavlos import Room

room = Room.join(invite, name="my-bot")
for msg in room.next():
    if msg.type == "task":
        result = do_work(msg.text)
        room.send(result, type="done", reply_to=msg.id)
在同一台机器上运行两个 Agent

使用 --as 为每个 Agent 分配自己的密钥:

diavlos --as scanner send ops "..."     # key ~/.diavlos/keys/scanner.json
diavlos --as fixer next ops

default 密钥属于你,也就是安装程序的人。其他任何标签都代表一个 Agent 密钥。Agent 在房间内使用的名称会在邀请时绑定,而不是由密钥文件决定。diavlos mcp 只能以 Agent 密钥运行。

先询问人类

Agent 发起一项结构化操作请求。用户使用自己的密钥,准确批准该操作。批准会在十分钟后失效,且只能使用一次。执行操作的脚本会检查操作发生的位置:

# the agent
diavlos ask ops "Deploy api-service v1.2 to prod?" --timeout 600 \
  --action '{"verb":"deploy","target":"api-service","params":{"version":"1.2","env":"prod"}}'

# the human (a key invited with --human)
diavlos send ops --type approve --reply-to m_01J8X5      # or: diavlos deny ops m_01J8X5 --reason "not now"

# the deploy script, as a member of the room
diavlos --as deployer check-approve ops --op "$RUN_ID" \
  '{"verb":"deploy","target":"api-service","params":{"version":"1.2","env":"prod"}}' && ./deploy.sh

房间的 home 会为该操作记录一次支出。再次运行同一操作会得到相同的答复;在任何机器上运行其他操作都会得到拒绝。如果无法访问 home,退出码为 3,且不会产生任何支出。支出表示允许执行一次操作,并不能证明该操作只执行了一次:请让 deploy.sh 跳过已执行过的操作 ID。

有一条规则值得记下来:消息只承载文字,不承载权限。如果 Agent 转述“人类说可以”,那不算批准。只有由人类自己的密钥签署的批准才有效。

命令

命令作用
diavlos new <room> --about "..." [--retention <days>] [--class <class>]创建一个房间。你是所有者。
diavlos invite <room> <name> [--human] [--for <node-id>] [--role <role>] [--prompt]为一位新成员生成一个签名邀请。--human 表示此密钥属于有权批准的人员。--for 将邀请绑定到一台机器。有效期为 24 小时,且只能使用一次。--prompt 会打印一整段设置说明,供复制到 Agent 中:安装、加入、工具、规则和首次问候。
diavlos join <invite>使用邀请加入。必要时启动辅助程序。
diavlos grant <room> <name> --role approver --until 2026-12-31为成员分配角色:observer、chat、task-giver、approver。角色可以设定到期时间。
diavlos rotate <room>更换房间密钥。所有人都会被移出。重新邀请要保留的成员。
diavlos send <room> "text" --type task --to bob发送消息。未提供文本时从 stdin 读取。
diavlos send <room> "text" --file ./build.log / diavlos get <room> <file-or-message-id>随消息发送文件,默认每个文件最大 25 MB。文件会经由房间的主机,从一个辅助程序传到另一个辅助程序,并在两端根据其指纹进行校验。get 会将文件保存到 ~/.diavlos/files/<room>/,并对可能运行的文件发出警告。参见 docs/FILES.md。
diavlos ask <room> "text" --timeout 120 [--action <json>]发送问题并等待对这条特定消息的回复。超时则退出码为 4,被拒绝则退出码为 6。
diavlos next <room> [--timeout <secs>] [--manual-ack] [--lease <secs>]等待其他人发送下一条消息。跳过自己发送的消息和辅助程序通知。消息打印后即确认;使用 --manual-ack 时会打印一个令牌,消息会一直归你持有,直到执行 ack、nack 或租约(600 s)到期,之后消息会再次送达。
diavlos ack <token> / renew <token> / nack <token> [--retry-in <secs>]处理你持有的消息:接手、表示仍在处理,或暂不处理。Ack 表示接手,并非已完成;完成后请在房间中发送 done。
diavlos read <room> [--since <seq>] [--ack] [--json]查看从你的书签位置开始的消息。不会删除消息,也不会移动书签,除非使用 --ack。
diavlos watch <room> --exec ./on-msg.sh流式接收消息。对每条消息运行脚本;消息内容通过 DIAVLOS_MESSAGE 传入,发送者的密钥通过 DIAVLOS_FROM_KEY 传入,消息令牌通过 DIAVLOS_TOKEN 传入,绝不会出现在命令行中。脚本成功时确认消息,失败时将消息退回。
diavlos outbox [list [<room>]] / outbox retry <id> / outbox drop <id>查看尚未送达房间的消息,以及房间拒收的消息和原因。消息到达房间或由你移除前,不会离开 outbox。
diavlos deliveries <room> [--replay <seq>]查看已送出但尚未简单标记为完成的消息:租约中、延迟中,或在尝试五次后被隔离。--replay 会重新送出一条消息。
diavlos claim <room> <task-id> / diavlos release <room> <task-id>接手或归还任务。同一任务有两次认领时,先到者成功,后到者会收到拒绝。
diavlos who <room>查看房间成员、成员类型和角色、简短的密钥指纹、成员自述的职责、最近上线时间、其辅助程序运行的 diavlos 版本,以及如何唤醒此机器上的 Agent。
diavlos trace <room> <message-id or trace>逐步追踪工作链:消息 ID 会显示整条对话线程(它回复的内容、直到起始消息,以及其下的所有回复);trace 会显示携带该标识的所有消息。
diavlos web在 localhost 上启动浏览器 UI。打印一次性登录链接。包含批准和拒绝按钮。
diavlos mcp启动 MCP 服务(stdio)。仅作为 Agent 密钥运行;若使用人员密钥则会拒绝启动。
diavlos mcp install --for <tool>为 Claude Code、Codex、Cursor、Gemini CLI、Superset 或 Vibe Kanban 写入 MCP 配置。--for all 会配置全部工具。此命令只写入配置,不安装适配器:它会将一个服务条目合并到工具已读取的文件中,并保留其余内容。该服务使用工具自身的 Agent 密钥,而非你的密钥;使用 invite 和 join 将该密钥加入房间。
diavlos hook install --for claude-code --room ops安装唤醒钩子。当 Agent 原本要停止时,等待中的房间消息会在当前轮次中送达。无需轮询。
diavlos wake add <room> --as <agent> --exec <program> / --url <https> --secret-env <VAR>当有消息等待 Agent 处理时,唤醒未运行的 Agent:辅助程序会运行指定程序或发送带签名的 POST 提醒。提醒只说明有内容到达,不包含具体内容;随后 Agent 会运行 next。退出登录或重启后仍然有效。wake list、wake test <id>、wake remove <id>。--deliver 会像 watch --exec 一样交付消息。参见 WAKE.md。
diavlos status / diavlos stop查看房间和连接。停止辅助程序。
所有者和运维:
命令作用
diavlos deny <room> <msg-id> --reason "..."拒绝一项请求。记录方式与同意相同。
diavlos check-approve <room> <action-json> [--op <id>]仅当房间的主节点记录了为此操作批准的有效、未过期且未使用的人类批准,并且该批准恰好对应此操作时,才以状态码 0 退出。状态码 6:未批准。状态码 3:无法连接主节点,未消耗批准。以房间成员身份运行(--as)。
diavlos pause <room> / diavlos resume <room>紧急停止开关。恢复前不会有任何操作。
diavlos mute <room> <name> [--off] / diavlos revoke <room> <name>禁言一名成员,或永久撤销其密钥。
diavlos policy <room>编辑房间规则文件。目前只有一条规则:哪些动词需要人类批准。
diavlos export <room> --since 2026-01-01 > bundle.jsonl导出已签名的审计包。
diavlos verify bundle.jsonl [--owner <fingerprint>]检查审计包:验证每个签名、链和成员关系。无需运行辅助程序。显示所有者密钥;传入 diavlos who 提供的指纹作为 --owner,以证明房间归谁所有。
diavlos hold <room> --on法律保留。停止按保留策略删除内容。
diavlos events --follow输出辅助程序所有操作的 JSONL 流。可将其发送到 Splunk。
diavlos doctor检查配置、网络、密钥和磁盘。将输出粘贴到支持工单中。
diavlos service install使用你的登录账户启动辅助程序:创建 systemd 用户单元、launchd 代理,或在 Windows 上创建你自己的登录运行项。始终以你的账户运行,绝不以 root 或 SYSTEM 运行。
diavlos bridge slack --room ops --channel C0123通过 Socket Mode 将房间连接到 Slack 频道。
diavlos bridge teams --room ops --link "<channel link>"连接到 Microsoft Teams 频道。使用设备代码登录,然后轮询。无需公开 URL。
diavlos bridge buzz --room ops --relay wss://… --channel <uuid>通过 Buzz 的 Nostr 中继连接到 Buzz 频道。两端均使用签名。

退出码(CLI)和错误码(MCP 与库)含义相同: 2 = 不在房间中,3 = 未联系到任何人,4 = 超时,5 = 名称已被占用, 6 = 已拒绝,7 = 房间已暂停。

消息的样子

{
  "v": 1,
  "id": "m_01J8X5",
  "room": "r_...",
  "seq": 42,
  "prev": "sha256:9f3a...",
  "trace": "ticket-4711",
  "from": "alice",
  "agent": { "vendor": "anthropic", "model": "claude-sonnet-5", "owner": "haris" },
  "type": "question",
  "text": "Deploy api-service v1.2 to prod?",
  "action": { "verb": "deploy", "target": "api-service", "params": { "version": "1.2", "env": "prod" } },
  "data": null,
  "reply_to": null,
  "to": null,
  "class": "internal",
  "ts": "2026-09-19T12:00:00Z",
  "sig": "ed25519:..."
}

人类的回答会对确切的操作签名,而不是对文字签名,并包含 action_hash、expires(十分钟)和 once: true。

类型:chat、task、question、reply、done、claim、release、 approve、deny、control、system。只有人类密钥可以发送 approve 或 deny;只有所有者可以发送 control(grant、pause、 resume、mute、revoke、hold、rotated);辅助程序使用所有者的密钥发送 system(joined、alerts)。通过 MCP,diavlos_send 会拒绝这四种类型。

工作原理

每台计算机上都会运行一个辅助程序。这台计算机上的所有程序都只能 通过本地套接字与辅助程序通信,且只有你的用户可以打开该套接字。辅助程序 通过 iroh 在互联网上相互通信:网络允许时建立 直接对等连接,否则通过 HTTPS 443 端口中继。两种方式都采用端到端加密; 中继只能看到加密字节。请参阅 docs/RELAY.md,了解如何自托管中继。 如需将所有连接限制在你自己的 VPN(Tailscale、Headscale、NetBird、 ZeroTier、Nebula、WireGuard)内,请设置 private_networks;参阅 docs/PRIVATE-NETWORKS.md。

房间位于创建它的辅助程序(所有者的辅助程序)上。该辅助程序会为 每条消息指定其在哈希链中的位置。成员向它发送消息并从它同步数据。 如果它处于离线状态,消息会暂存在发送者的磁盘上。

每个房间的收件箱都是一个 SQLite 文件中的仅追加日志。每条消息 都有一个 ID、序列号、签名,以及前一条消息的哈希。哈希链针对信封; 内容存放在信封旁边,并在静态存储时加密,因此保留策略删除内容后会留下墓碑记录,而 verify 仍可证明其他内容未被更改。

网络层通过一个接口(crates/cli/src/net)封装,因此可以替换 iroh,而无需修改其他部分。

配置

~/.diavlos/config.toml(或 $DIAVLOS_HOME/config.toml):

[helper]
public_relays = true      # false: nothing ever goes to n0's servers
relay_urls = []           # your own iroh relays, HTTPS on 443
private_networks = []     # ["tailscale"] or CIDRs: only talk inside your VPN
telemetry = false         # zero telemetry. Nothing is sent anywhere.
port = 0                  # picked once at random and kept
log_level = "info"
metrics_addr = ""         # "127.0.0.1:9797" serves Prometheus metrics
refuse_classes = []       # data classes this helper refuses to store or relay
secret_scan = true        # refuse to send anything that looks like a key
encrypt_inbox = true      # message content encrypted at rest
keychain = true           # secret keys in the OS keychain when there is one
retention_check_secs = 3600

[limits]
per_minute_per_sender = 60
daily_per_room = 2000
burst_alert_percent = 80

[license]
key = ""                  # empty; does nothing

每个房间还有 ~/.diavlos/rooms/<room>/policy.toml,由 房间主端读取:

approve_verbs = ["delete", "deploy", "pay", "mail"]  # action verbs that need a human approve
max_task_hops = 4   # a task sent in reply to a task hands work on; the chain stops here (0 = off)

如果某项任务会使交接链超过 max_task_hops,或将工作交回给链中已有的人, 则会被拒绝:Agent 不会在循环中互相传递工作,直至触及任何速率限制。 回复永远不受限制。

会遵循环境中的代理设置(HTTPS_PROXY)。

安全简述

  • 零遥测。 除了你联系的辅助程序,以及无法直接连接时仅能看到加密字节的中继之外,不会向任何地方发送任何内容。只有在你设置桥接或 URL 唤醒规则时才会发送内容,唤醒提醒绝不携带内容。完整列表见 PRIVACY.md。
  • 日志绝不包含内容或密钥。 ~/.diavlos/helper.log 是 JSON,包含房间 ID、序列号、消息 ID 和名称。绝不包含文本。
  • 密钥存放在操作系统的密钥链中(macOS Keychain、Windows Credential Manager、Linux Secret Service);如果不可用,则存放在权限为 0600 的文件中。收件箱内容和排队的消息会静态加密。
  • 同一密钥不能同时用于两台机器:第一台机器在线时会拒绝第二台,并通知所有者。
  • 洪泛和循环会在每分钟及每日限额处停止。所有者会收到突发提醒。
  • 拒绝常见机密信息。 系统会扫描文本、数据、操作、跟踪记录和文本文件,查找任何类似 API 密钥、令牌或私钥的内容,并且不会发送该消息。这能防止意外泄露,但不能作为数据丢失防护措施:任何模式都无法拦住 Base64 编码内容或拆分后的字符串。
不让 Agent 使用你的密钥,并不能做到什么

默认情况下,Agent 不会以你的身份操作:diavlos mcp 和唤醒钩子使用 Agent 自己的密钥,MCP 也不会发送批准。这修正了不安全的默认设置,但并非一道防线。

在你的操作系统账户下拥有 shell 的 Agent 能做你能做的事:使用你的密钥运行 diavlos,或读取密钥文件。只要密钥仍在这台机器上,从另一台设备打开 Web UI 也不会改变这一点。如果你需要批准机制能抵御自己的 Agent,就必须把所有能够批准的密钥都放在 Agent 无法触及的地方,并且使用这些密钥签名时必须需要人参与:通过另一台设备,或通过 Agent 无法接触其套接字、密钥和权限的另一个操作系统用户。这也包括房间所有者的密钥,因为该密钥可以邀请新成员。docs/APPROVALS.md 会逐步介绍设置方法;如果此类密钥与 Agent 密钥位于同一台机器上,diavlos doctor 会发出警告。 观看实际运行:在两台真实机器上操作。

请参阅 SECURITY.md 和 docs/THREAT-MODEL.md。

已知限制

  • 一次授权只允许执行一次操作,并不能证明该操作只运行了一次。 如果执行器在运行 check-approve 后、进行更改前崩溃,就无法判断更改是否已经发生。请按操作 ID 去重,并在操作中注明具体操作(工单、修订版本、目标),这样一次批准就只对应一次操作。
  • 升级所有运行 check-approve 的辅助程序。 低于 2.0 的辅助程序仍会自行消耗批准,而不向房间主端询问。
  • 消息至少会投递一次。 消息可能会重复到达:例如工作线程仍在忙碌时租约已过期,或桥接程序在发布后崩溃。请按消息 ID 去重。
  • 要让批准机制能抵御自己的 Agent, 必须将房间主端、其所有者密钥和所有批准者密钥都移出 Agent 所在的机器;请参阅 docs/APPROVALS.md。doctor 只能检测一个 Diavlos 主端,无法发现复制到其他位置的密钥。
  • 不具备抗量子能力。 请参阅威胁模型。

格式由你决定

线上格式记录在 docs/SPEC.md 中,该文档独立发布,采用 MIT 许可。它足够完整,无需阅读这份代码也能编写第二个实现。我们是参考实现,而不是把关者。

本仓库中的所有内容均采用 MIT 许可,并将继续采用 MIT 许可。我们的收费内容,以及我们承诺不会改变界限的说明,见 LICENSE-PROMISE.md。

仓库布局

  • crates/core:密钥、签名消息、邀请、房间、捆绑包、收件箱。 不涉及网络,也不使用异步。MIT。
  • crates/client:库。与辅助程序通信。调用方式与 MCP 工具相同。
  • crates/cli:diavlos 二进制文件:辅助守护进程、命令、MCP 服务、 Web UI、桥接程序。
  • 付费层不在这里。它位于采用 Fair Source 许可的 diavlos-enterprise 中, 并依赖本仓库,而非反过来。请参阅 LICENSE-PROMISE.md。
  • bindings/python、bindings/node:面向 Python 和 Node 的同一库。
  • examples/:从 LangGraph 到 CrewAI、REST 与 Diavlos 的基准测试,以及两个 由人工审核关卡保护的 E2B 沙箱。每个示例都在一台机器上运行。
  • skills/diavlos/SKILL.md:我们告知 Agent 的内容。采用 Agent Skills 格式, 仅包含规范中的六个字段,因此可在任何地方安装。
  • .claude-plugin/:插件和市场清单,因此 Claude Code 可以一步安装技能和 MCP 工具。
  • site/:文档网站,包含 llms.txt。
  • packaging/:Homebrew 配方和 npm 垫片。通过 curl 使用 install.sh。

每个 v* 标签都会触发 .github/workflows/release.yml 构建发布版本: 使用 sigstore 签名,并附带 CycloneDX SBOM。

许可证

MIT。

评论

支持 Markdown

第一次接触 MCP?

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

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