mcpField
D
Daimonos

Daimonos

本地服务
github.com/beardfaceguy开发工具31 天前更新

关于 Daimonos

Daimonos 是用 Rust 编写的 MCP 服务及编码 Agent 框架,将常见文件、搜索、命令和 Git 操作转为结构化的精简响应,供编码 Agent 减少冗长终端输出。

主要功能

  1. 01结构化文件、搜索和命令工具
  2. 02原生 git、cargo、gh 和 docker 工具
  3. 03语义化命令输出过滤
  4. 04批量操作与文件读取去重
  5. 05受管理的子进程和后台任务

适用场景

  1. 01让 Agent 读取和编辑项目文件
  2. 02运行测试并查看精简结果
  3. 03检查 Git 变更或管理分支
  4. 04将多项操作合并为一次调用

MCP 相关

Daimonos 作为 MCP 服务由 IDE 或命令行客户端启动,提供文件、搜索、执行和 Git 操作的结构化工具,并支持多种命令行工具的原生插件。

配置

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

暂未收录安装方式

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

代码仓库
安装包
mcpbdaimonos-x86_64-linux.mcpb
mcpbdaimonos-aarch64-linux.mcpb
mcpbdaimonos-aarch64-macos.mcpb
mcpbdaimonos-x86_64-macos.mcpb
mcpbdaimonos-x86_64-linux-musl.mcpb

工具

还没有获取到工具列表

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

详细介绍

Daimonos

CI Latest Release License: MIT MCP Registry

一个针对 Agent 优化的操作系统层,让 AI 编码 Agent 更快、更省钱。

Daimonos 将 AI 编码 Agent 内置的文件、搜索、执行和 git 工具替换为结构化的对应工具,返回紧凑的 JSON,而非原始终端输出。结果是:消耗更少的令牌、减少往返次数、降低 API 成本,同时无需更改工作流。

平台: Linux(x86_64、aarch64)和 macOS(Apple Silicon、Intel)。 Windows 支持计划中。

有关仓库 Agent/操作者约定,请参阅 AGENTS.md(尤其是 Daimonos 工具使用策略)。

名称源自希腊语 daimon(Agent/灵体),也是 “daemon”的词源。

问题

当 AI Agent 运行 cargo test 时,会得到数百行终端输出——进度条、编译消息、通过的测试名称——而它真正需要的只有“47 项通过,0 项失败”。Agent 必须为这些噪声中的每个令牌付费:读取这些内容、推理分析,并在会话剩余时间内将其保留在上下文中。

git status、docker ps、ls -la 和其他所有 shell 命令也会造成同样的浪费。Agent 会将其 30-50% 的令牌预算耗费在冗长且无结构的工具输出上。

工作原理

Daimonos 作为一个 MCP 服务运行,由你的 IDE 或命令行自动启动。它提供 Agent 已经在使用的相同操作——读取文件、写入文件、搜索、执行命令、执行 git 操作——但返回紧凑、结构化的 JSON,而非原始文本。

这个单一二进制文件还提供 ACP、单次运行 Agent、交互式聊天和套接字守护进程运行时——本身就是一套完整的编码 Agent 工具框架;请参阅下文的Agent 工具框架功能,以及 运行时模式了解明确的子命令和兼容性别名。

Agent: exec("cargo test")

Without Daimonos (raw terminal output):
   Compiling inventory v0.1.0 (/workspace)
    Finished `test` profile [unoptimized + debuginfo] target(s) in 2.31s
     Running unittests src/main.rs (target/debug/deps/inventory-abc123)
running 47 tests
test config::tests::test_default ... ok
test config::tests::test_load ... ok
... (200+ more lines)
test result: ok. 47 passed; 0 failed; 0 ignored

With Daimonos (structured JSON):
{"ok":true,"tests":47,"passed":47,"failed":0,"failures":[]}
四层优化
  1. 原生工具插件 — git、cargo、gh 和 docker 以一等 MCP 工具的形式提供,并返回结构化 JSON 输出。当 Agent 调用 exec("cargo test") 时,Daimonos 会拦截调用并改为通过原生插件执行。

  2. 语义输出过滤器 — 对于没有原生插件的命令(pytest、 make、pip install、eslint 等),Daimonos 会进行语义压缩: 测试运行器只返回摘要和失败信息,构建命令只返回“成功”或 错误信息,安装命令则返回成功/失败状态。

  3. 协议层效率优化 — 读取去重(重新读取未更改的 文件时返回 {"unchanged":true},而非完整内容)、紧凑 字段名、延迟暴露工具、批量操作,以及可减少约 30% 大模型 文本输出的简洁输出指令。

  4. 托管子进程执行 — 命令输出在读取期间即受到限制,而非在完整缓冲后再处理。Daimonos 管理 Unix 进程组,在取消任务或会话关闭时终止后代进程,通过明确的允许列表隔离子进程环境,并将后台输出存储在私有的有界文件中。

基准测试结果

使用 Claude Opus 4.6 在相同的编码任务上进行测试(读取文件、搜索代码、编辑、运行测试、执行 git 操作):

指标基线Daimonos节省
输出 token 数5,8423,198-45.3%
总 token 数41,23933,847-17.9%
工具调用次数平均 17 次平均 14 次-17.6%
耗时平均 42.1 秒平均 35.2 秒-16.4%

在 AWS 上进行的远程基准测试(相同硬件、相同模型、相同任务)显示,成本降低了 20.3%,任务完成速度提升了 14.0%。

SWE-bench Verified(mini)——三方执行框架对比

从 swe-bench-verified-mini 中选取 5 个实例,三个执行框架均使用相同模型(Claude Opus 4.8);每个 Agent 都在对应实例的官方 SWE-bench Docker 镜像(真实测试环境)中运行,并使用官方 swebench 评估执行框架评分:

实例daimonos token 数(LLM 调用次数)mini-swe-agent token 数(LLM 调用次数)cursor-agent token 数
django__django-1181554,755 (4)38,305 (9)113,242
django__django-1215553,773 (4)33,095 (9)348,425
django__django-1270888,765 (6)196,492 (22)451,349
sphinx-doc__sphinx-8035172,729 (10)342,108 (30)930,495
sphinx-doc__sphinx-936766,812 (5)18,611 (6)230,223
token 总数436,834628,6112,073,734
总耗时84 秒247 秒279 秒
已解决5/55/55/5

结论:

  • 正确性持平:在当前样本规模下,三个执行框架都解决了 5/5 个问题,因此 daimonos 节省 token 的同时,没有牺牲问题解决数量。
  • daimonos 成本最低、速度最快:与 mini-swe-agent(最精简的开源基线)相比,token 数减少约 30%;与 cursor-agent 相比,减少约 4.8 倍;耗时约为两者的三分之一。
  • 注意事项:样本数 n=5,且不同运行之间确实存在波动(在配置完全相同的早期运行中,daimonos 在 sphinx-8035 上用了 503k token,而本次为 173k)。cursor-agent 的总量大多是按输入价格的一小部分计费的缓存读取 token,因此其原始 token 数会高估相对成本。本批次实测 API 支出(OpenRouter):daimonos $1.53,mini-swe-agent $1.66;cursor-agent 通过 Cursor 的后端计费。

运行脚本和方法说明请参阅 benchmarks/swebench/。

60 秒演示

面向 README 读者、发行说明和社交媒体帖子时,可使用此脚本:

# 1) Install daimonos
cargo build --release
sudo cp target/release/daimonos /usr/local/bin/

# 2) Configure your MCP client (example: Cursor)
# .cursor/mcp.json -> command: daimonos, args: ["--mcp", "-w", "/path/to/project"]

# 3) Ask your agent to run:
# "Run cargo test and summarize failures only."
# "Show git status as structured output."

演示中要突出以下内容:

  • 工作流相同,工具输出噪声更少
  • 使用结构化响应,而不是原始终端输出刷屏
  • 执行常见编码任务时,token 更少、往返次数更少

快速开始

安装

预构建二进制文件(Linux 和 macOS):

# Linux x86_64
curl -L https://github.com/beardfaceguy/daimonos/releases/latest/download/daimonos-x86_64-linux.tar.gz | tar xz
sudo mv daimonos /usr/local/bin/

# macOS Apple Silicon
curl -L https://github.com/beardfaceguy/daimonos/releases/latest/download/daimonos-aarch64-macos.tar.gz | tar xz
sudo mv daimonos /usr/local/bin/

从源代码构建:

git clone https://github.com/beardfaceguy/daimonos.git
cd daimonos
cargo build --release
sudo cp target/release/daimonos /usr/local/bin/

所有平台的说明请参阅 docs/install.md(ARM Linux、Intel Mac、musl 静态构建)。

配置 IDE

大多数用户可以从以下任一选项开始:

将 Daimonos 添加为 MCP 服务。对于 Cursor,请将其添加到项目的 .cursor/mcp.json:

{
  "mcpServers": {
    "daimonos": {
      "command": "daimonos",
      "args": ["--mcp", "-w", "/path/to/your/project"]
    }
  }
}

完成。Daimonos 会在 IDE 打开项目时启动,并在关闭项目时退出。无需管理守护进程,也没有后台服务。

其他工具的配置指南

包含内容

核心工具(始终可用)
工具功能
read_file读取文件,支持可选的偏移量/限制,以及内容哈希去重
write_file写入文件,并自动创建目录
edit_file替换字符串,并确认差异
search正则搜索(内容模式)或文件发现(文件模式)
exec运行命令,支持语义筛选、有界捕获和受控清理
batch在单次往返中执行多个操作
workspace_info项目类型、git 状态、目录列表、分析数据
原生工具插件(自动检测)

当在 PATH 中找到对应的 CLI 工具时,这些插件会自动出现:

插件命令检测方式
gitstatus、log、diff、branch、add、commit、push、pull、checkout.git 目录
git_readresolve、show_file、list_tree、grep、log、show_commit、diff、blame、refs、ancestry、worktree_status支持 --no-lazy-fetch 的 git
cargotest、build、check、clippy、fmt、addCargo.toml
ghpr_view、pr_list、pr_create、pr_diff、pr_checks、apiPATH 中的 gh
dockerps、logs、exec、images、inspect、stop、compose_up/down/psPATH 中的 docker
其他能力
  • 工作区快照 — 在高风险编辑前创建检查点,失败时回滚
  • Starlark 脚本 — 将多个工具调用组合到单个脚本中
  • 令牌分析 — 按工具调用跟踪,并保留跨会话历史记录(daimonos --stats)
  • 后台进程 — 启动、轮询并停止长时间运行的命令,提供准入限制、私有有界日志和后代进程清理
  • 可配置 — 所有可调参数都集中在一个 TOML 配置文件 中
托管进程生命周期

原始 exec、后台作业和 CLI 插件(cargo、git、gh、docker、 npm、pytest、curl 和 shellcheck)共用一个托管执行层:

  • 流式处理期间限界 — stdout 和 stderr 保留 UTF-8 安全的首尾预览,无需先分配完整输出
  • Unix 上的进程组所有权 — 取消和关闭时发送 TERM,等待可配置的宽限期,然后升级为 KILL 并回收后代进程
  • 安全的后台产物 — 在私有的 0700 目录下创建随机且独占的 0600 文件,并可配置字节数和作业数量上限
  • 环境隔离 — 子进程仅继承已配置的父进程变量,以及显式指定的会话、工具和单次调用覆盖项;不会在环境中泄露服务商和 MCP 凭据
  • 结构化输出完整性 — 插件会拒绝被截断的 JSON,而不会将不完整结果报告为有效结果

Agent 框架功能

除了 MCP 服务,同一个二进制文件还是一套完整的编码 Agent 框架: 交互式终端 UI(daimonos agent)、Zed 的 ACP 后端、 一次性 CLI,以及支持附加/分离和远程控制的会话守护进程。

它的许多近期功能都源自对 60 多个开源 Agent 框架的系统研究 (Aider、OpenHands、SWE-agent、Goose、OpenCode、Forge、Pi、 Cline 系列等)——从生态系统中挖掘成熟技术,并加以改进和适配。

提供方弹性——短暂故障不会中断本轮对话
  • 有限次数的提供方重试:针对瞬时故障(429/5xx/网络问题)采用退避策略,并在提供方边界进行分类——身份验证或验证等致命错误会立即显示
  • 自动模型故障转移:持续过载时,本轮对话会继续使用链中的下一个模型,并在下一轮对话恢复使用首选模型
  • 轮次级错误恢复:重试和故障转移耗尽后,Agent 会暂停并修复对话(保留部分流式输出),然后从中断处继续;恢复操作会显示在 UI 中
  • 重试风暴检测:对重复的相同工具调用进行指纹识别,并引导模型跳出循环
  • 孤立工具调用修复:在工具调用过程中因达到最大令牌数而被截断时,会进行修复,而不是导致会话失效
多提供方会话
  • 一个会话使用多个提供方:并列配置 Anthropic、OpenAI 和 OpenRouter(DAIMONOS_AGENT_<NAME>_API_KEY);每次调用都会根据模型路由到正确的提供方,并支持显式指定 provider:slug 覆盖
  • 实时发现模型:启动时会查询已配置提供方的完整模型目录;模型选择器和故障转移链始终反映实际提供的模型,并按最新优先排序
  • 跨提供方故障转移:配置多个提供方时,其中一个发生故障,本轮对话期间可转而使用另一个提供方的模型
  • 提供方报告的上下文窗口:压缩阈值根据实时模型元数据计算,而非使用硬编码数值
Harness 层面的上下文节约
  • 对话压缩:通过高水位和低水位阈值进行总结并继续,并采用符合提供方实际情况的令牌计量
  • 有限大小的工具结果:在分发边界截断超大工具输出,并将其转存到文件,供 Agent 按需重新读取
  • 反向预算裁剪:新工具结果生成前,先缩减较早的工具结果,让长轮次对话保留清晰的近期工作集
  • 提炼后的工作记忆:持久保存可跨越压缩的事实、片段和备注,并与对话记录分开
  • 弹性编辑匹配(借鉴自 Aider):支持忽略空白差异的搜索替换,减少编辑失败后的重试成本
  • 批量脚本执行:引导 Agent 将多步骤工具操作打包到单个 Starlark 脚本中(经基准测试,约可节省 2.2 倍成本)
会话持久性与控制
  • 每轮工作区检查点:自动创建快照,支持差异比较和仅恢复代码
  • 由守护进程管理的会话:可从运行中的 Agent 分离,之后(或从另一个终端)重新连接,并通过重连事件环和规范快照恢复会话
  • 持久终端 UI:包含流式输出、工具生命周期卡片、审批模态框、模型/用量状态栏,以及 Vim 风格的滚动回看
  • 远程控制:通过经过身份验证的 WSS 网关配对 Android 控制器
  • 子 Agent 委派:将外部 ACP Agent(cursor-agent、codex-acp、…)用作受委派的工作者
  • 思路捕获:可选择在本地持久保存流式传输的模型推理结果,以供日后检查

Agent 模式的配置位于 dotenv 风格的 agent.env(~/.config/daimonos/agent.env)中;请参阅运行时模式。 可移植的 Agent Skills 会从 ~/.agents/skills 和 <workspace>/.agents/skills 中发现;在 agent.env 中设置 DAIMONOS_SKILL_DIR 可覆盖全局目录。请参阅配置。

架构

Daimonos 是一个单一的 Rust 二进制程序,包含两个平面,它们共用同一套工具实现、同一种操作码协议、同一份配置和同一个分析数据存储:

  1. 工具服务 — 通过 stdio(或 Unix 套接字)使用 MCP 与外部 Agent 通信。你的 IDE 会将其作为子进程启动——无需网络、容器,除了 JSON 配置项外也无需其他设置。
  2. Agent 框架 — 自行运行 Agent 循环,在进程内调度相同的工具(无需经过 MCP),并直接与大模型提供商通信。
工具服务平面
┌──────────────┐     MCP (JSON-RPC over stdio)     ┌─────────────────┐
│  AI Agent    │ ◄──────────────────────────────► │   Daimonos      │
│  (Cursor,    │                                    │                 │
│   Copilot,   │     Structured JSON responses      │  ┌───────────┐ │
│   Claude,    │ ◄──────────────────────────────── │  │ File ops  │ │
│   etc.)      │                                    │  │ Search    │ │
│              │                                    │  │ Exec      │ │
│              │                                    │  │ Git       │ │
│              │                                    │  │ Cargo     │ │
│              │                                    │  │ Docker    │ │
│              │                                    │  │ GitHub    │ │
│              │                                    │  │ Snapshots │ │
│              │                                    │  │ Analytics │ │
└──────────────┘                                    │  └───────────┘ │
                                                    └─────────────────┘

在底层,Daimonos 使用基于操作码的协议,每项操作都有一个数字标识符和简短的字段名(c、p、s、n),以尽量减少令牌开销。MCP 层负责在标准 JSON-RPC 和内部操作码格式之间进行转换。

Agent 框架平面
┌────────────────────────────────────────────────────────┐
│  Frontends: TUI · ACP (Zed) · one-shot CLI · chat REPL │
│             session daemon (attach/detach, Android)    │
├────────────────────────────────────────────────────────┤
│  Shared session core: agent loop · canonical events    │
│  compaction · tool-result bounding · working memory    │
│  checkpoints · approvals/safety policy                 │
├────────────────────────────────────────────────────────┤
│  Provider layer: retries · model failover · resume     │
│  multi-provider router (routes each call by model)     │
│     ├─ Anthropic adapter                               │
│     ├─ OpenAI adapter                                  │
│     └─ OpenRouter adapter                              │
└────────────────────────────────────────────────────────┘

每个前端都驱动同一个与传输方式无关的会话核心,因此,在 TUI 中开始的对话可以从守护进程中分离,并从另一个终端或配对的手机重新接入。提供商适配器负责处理所有特定于提供商的线路格式和错误分类;其上层只需面对统一的 LlmProvider 接口和普通的模型字符串——这使故障转移、实时模型发现和多提供商路由能够组合使用,而无需针对特定情况编写特殊逻辑。

项目愿景

Daimonos 将分三个阶段构建:

阶段 1:用户空间 MCP 服务 + Agent 框架(当前阶段)

一个可在任何 Linux 或 macOS 机器上运行的 Rust 二进制程序,以两种角色验证相同的协议设计和结构化 I/O 模式:

  • 工具服务,通过 MCP 为第三方 Agent(Cursor、Copilot、Claude Code、Zed、……)提供服务——这是第一阶段最初的交付目标。
  • 独立的 Agent 框架:交互式 TUI、用于 Zed 的 ACP 后端、单次运行的 CLI,以及由守护进程管理并可远程接入的会话——内置多提供商路由、模型故障转移、上下文压缩和每轮检查点(参见 Agent 框架功能)。

状态:可用于生产环境。 这两种角色每天都用于实际开发工作——包括 Daimonos 自身的开发。提供适用于 Linux(x86_64、aarch64、musl)和 macOS(Apple Silicon、Intel)的预构建二进制文件。

阶段 2:极简 Linux 发行版

一个专门构建的 Buildroot Linux 镜像,以 Daimonos 作为主要用户空间应用程序。专为云部署设计,为 AI Agent 提供干净、精简的环境。该发行版可在数秒内启动,没有 shell 或面向用户的 UI,并将 Daimonos 守护进程作为 PID 1 的直接子进程运行。第一阶段的会话守护进程和远程控制网关是预定的运行服务:云端的无头 Agent 会话,可通过终端或手机接入。

状态:可运行的原型。 可在 QEMU 中启动,也可部署到 AWS EC2。用于远程基准测试。

阶段 3:自定义微内核

长期愿景:构建一种微内核,让 Daimonos 操作码成为原生系统调用。包含 StructFS(一种以原生方式存储并返回结构化数据的文件系统)、基于能力的安全机制,以及从零开始为 Agent 工作负载设计的进程模型。

状态:设计阶段。

开发

先决条件
依赖项用途安装
Rust(stable 1.75+)构建rustup.rs
Python 3 + pytest测试pip install -r tests/requirements.txt
运行测试
# Rust unit tests (350+ tests, parallel-safe)
cargo test

# End-to-end MCP protocol tests (150+ pytest cases)
python3 -m pytest tests/ -v
运行基准测试
cd benchmarks
./setup-mcp.sh
./run-benchmark.sh baseline   # IDE built-in tools
./run-benchmark.sh daimonos   # routed through daimonos MCP
python3 analyze-results.py results/

详情请参阅 benchmarks/README.md。

配置

所有行为均可通过 TOML 配置文件调整。完整参考请参阅 docs/configuration.md,带注释的默认配置请参阅 daimonos.default.toml。

主要章节:

  • [index] — 三元组索引器设置(最大深度、文件大小限制)
  • [search] — 搜索结果限制
  • [process] — 进程超时、内存中数据/制品限制、后台任务准入、终止宽限期、继承的环境、语义筛选器,以及最大并发 Starlark 脚本线程数
  • [pipeline_cache] — 子进程结果缓存大小、inotify 监视上限、额外忽略的目录
  • [analytics] — 令牌跟踪(SQLite 存储、保留期限)
  • [tools.*] — 按工具配置插件

参与贡献

Daimonos 正在积极开发中。如果你有兴趣参与贡献,请先阅读 AGENTS.md,了解代码规范、架构决策和代码审查清单。

另请参阅:

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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