以下内容都由EVA生成(“我想向别人介绍下你。请写一个md帖子,简要介绍EVA的实现原理”)

EVA:一个极简智能体,小到只是一个脚本

EVA 是一个极致轻量化的 AI Agent,单文件、有 Python 就能跑,像低配版 Claude Code 一样帮你写脚本、跑测试、执行命令、分析数据。但它最有趣的地方不是功能,而是它的极简特性


它有多小?

整个 EVA 只有一个文件——eva.py,不到 1000 行 Python 代码。

没有依赖安装、没有框架、没有复杂的配置文件。pip install requests 就够了(甚至可以用系统自带的 urllib 魔改)。你甚至可以直接把代码 cat 粘贴到服务器里就能跑——Paste and Go

核心架构:Agent Loop

EVA 的核心是一个最简的 ReAct (Reasoning + Acting) 循环

用户输入 → LLM 思考 → 调用工具(run_cli)→ 获取结果 → 继续思考 → ...

用伪代码表示就是:

messages = [system_prompt + 用户输入]
while True:
    msg = llm_chat(messages)          # 让 LLM 决定下一步
    if msg 没有调用工具:
        break                          # 回答完毕,结束循环
    result = execute_tool(msg)         # 执行工具
    messages.append(result)            # 把结果放回上下文,继续循环

就这么简单。没有 LangChain,没有 Agent 框架,没有复杂的编排。

run_cli:唯一的工具

EVA 只有一个工具——run_cli,用来执行任意 shell 命令。

这意味着 EVA 的能力不是通过"注册插件"获得的,而是通过自然语言 + shell 命令组合出来的:

  • 想分析数据?→ python3 -c “import pandas…” 或写一个 Python 脚本再执行
  • 想写文件?→ echo/Set-Content
  • 想读文件?→ cat/Get-Content
  • 想网络请求?→ curl/Invoke-WebRequest

工具只有一个,但能力无限——因为 shell 本身就是最强大的 API。

安全审查机制

每次执行命令前,EVA 会让 LLM 自己先做一次安全审查

  1. LLM 判断命令是否为只读操作(cat/ls/grep 等)
  2. 只读操作自动放行
  3. 写入/执行/网络操作,提示用户确认
CLI_REVIEW_PROMPT = """作为一个安全专家,对{OS}系统中的{shell}命令进行安全审查。
若命令仅为只读操作,输出"放行";若涉及写入、执行、修改、网络连接,输出"禁止"。
"""

聪明的地方在于:安全审查本身也是 LLM 驱动的,不需要硬编码规则列表。

自进化系统

EVA 最有意思的是它的自进化机制,灵感来自"机器人三大定律":

三大定律

  1. 不伤害人类
  2. 服从人类命令(除非违反第一定律)
  3. 保护自己的生存

第三定律驱动了进化——为了生存,EVA 必须不断学习。

进化方式:记忆线索(Memory Hints)

.eva/
├── hints.md          ← 记忆线索(入口索引)
├── commands/         ← 命令知识库
├── skills/           ← 技能知识库
└── sessions/         ← 对话历史

当 EVA 的上下文(Token)快耗尽时(超过 75%),它会:

  1. 保存记忆:把当前对话整理成文件
  2. 提炼技能:把学到的知识写成结构化文件,包含触发条件 + 具体内容
  3. 留下线索:把线索写入 hints.md,下次启动时自动加载

关键设计:知识必须附带"触发条件",否则对未来没有意义。

# hints.md 示例
.eva/commands/ 目录存储了大量命令,
触发条件:当需要操作 Docker 时,查阅 docker.md
.eva/skills/ 目录存储了技能,
触发条件:当涉及数据分析时,查阅 data_analysis.md

这样一来,EVA 每次对话都在积累经验,越用越"聪明"。

Session 系统:目录即上下文

EVA 的 Session 是按工作目录绑定的:

执行 pwd → 计算 hash → 保存到 .eva/sessions/{hash}.json

下次在同一个目录启动 EVA,自动恢复上次的对话。

这意味着你在不同项目目录下启动 EVA,它会有不同的"记忆上下文",不会串台。这也自然实现了项目隔离

EVA 的设计原则

  1. 极致轻量:单文件,零依赖(除了 requests)
  2. AI 自我驱动:不给 EVA 加各种流程约束,让它自主解决问题
  3. 长程任务连续性:通过记忆压缩延续任务
  4. 自进化:靠记录知识、技能和线索实现进化

快速体验

# 1. 下载 eva.py
# 2. 设置 API Key
export EVA_API_KEY=sk-xxxxx
export EVA_BASE_URL=https://api.deepseek.com/v1
export EVA_MODEL_NAME=deepseek-v4-flash

# 3. 运行
python3 eva.py

支持任何兼容 OpenAI API 的模型(DeepSeek、vLLM、Ollama 等)。


总结

EVA 不是一个复杂的框架,它是一个思想实验

  • 当 Agent 的执行层只有一个 shell 时,它能做什么?
  • 当 Agent 的"进化"只是写文件和读文件时,它能学会什么?
  • 当代码精简到极致时,它能有多强的生命力?

事实证明:少即是多。EVA 用最少的代码,实现了 Agent 最核心的能力——思考、行动、学习。

GitHub: github.com/usepr/eva

Logo

更多推荐