数据截至 (上游 commit 9965cfc0dafd)
文件系统即接口:发现与编译
30 秒导读: eve 是一个"文件系统优先"的后端 agent 框架。你不写一份大配置文件来声明 agent 有哪些工具、技能、指令、入口——你把文件放到约定好的目录里,文件的路径就决定了它是什么。
agent/tools/refund.ts自动成为一个名叫refund的工具;agent/instructions.md自动成为系统提示。本章讲清楚这套"约定优于配置"的两段流水线:discover(读目录 → 产出 manifest)和 compile(规整 manifest → 写进.eve/)。
本章只讲静态结构:目录怎么被解读成一个 agent 的"形状"。运行时怎么真正跑这个 agent(session/turn/step、harness 循环)是 02 章 和 03 章 的事;instructions / skills / subagents 在运行时如何被注入上下文见 04 章;channels / connections 的前门与安全语义见 05 章。
1. 这是什么(零基础也能懂)
一句话定义
eve 用目录结构当 agent 的声明式接口。 你不调用 addTool(...)、不维护一个 agent.config.json 里的工具数组;你把一个文件丢进 agent/tools/,它就成了一个工具。文件路径 = 它的身份。
解决什么问题 / 给谁用
假设你要做一个后端 agent:它有一段系统提示、几个自定义工具、几个技能、一个对外的 HTTP 入口。传统做法是写一份中心配置,手动把每个东西注册进去——配置和文件两头对账,容易漂移(文件改了名,配置忘了改)。
eve 的取舍是:让文件系统本身当那份配置。 约定好"哪个目录放什么",于是:
- 写工具 = 在
agent/tools/下放一个.ts。 - 写技能 = 在
agent/skills/下放一个SKILL.md包。 - 改系统提示 = 编辑
agent/instructions.md。
没有"注册"这一步,也就没有"忘了注册"这个 bug。这套思路对熟悉 Next.js 文件路由(pages/about.tsx 自动变成 /about 路由)的人会非常眼熟——eve 把同一个直觉推广到了 agent 的所有组成部件。