Skip to content

usepr/eva

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

104 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

EVA hero banner

如果一个智能体的执行层小到只是一个脚本,那它具有病毒传播一样的潜力。

EVA 是一个极致轻量、可接本地模型、带安全审查与目录级 Session 的单文件 Agent。

GitHub stars GitHub forks Last commit License Single file agent Directory scoped sessions

Quick Start · Showcase · WeChat Bot · EVA.md

简介

EVA是个麻雀虽小、五脏俱全的Agent智能体,相当于低配版Claude Code,能帮你写脚本、写测试案例、执行shell、分析数据等。我自己就是EVA的重度用户,日常使用频率非常高。

各种好玩案例见当前仓库的 showcase 🦖🦖🦖

特性

  • 本地化:可以接入本地部署的OpenAI接口模型,如vLLM,或者是外网模型
  • 极致轻量化:单文件,仅一个eva.py,有python就能运行
  • 目录级Session:下次同样目录启动会延续之前对话
  • 安全审查:默认只执行读命令,其他命令需要安全确认
  • 移植性:很容易将EVA接入你现有的自动化流程,例如:eva -au '计算100w以内所有素数和并写到/tmp/result.txt'。当前就借助-asu选项将EVA接入了微信Bot

快速开始

  1. 直接创建一个eva.py并复制本仓库的eva.py文本内容粘贴进去(docker环境、运维环境等也很容易粘贴代码,无需复杂安装,Just Paste and Go)。当然,你也可以git clone本仓库

  2. 在终端执行export EVA_API_KEY=你的deepseek API key(Windows系统则是set命令)

EVA支持OpenAI接口形式的LLM,可以是Ollma、vLLM拉起的本地模型,也可以是DeepSeek、OpenAI等官网API。切换方法是设置EVA_BASE_URL, EVA_MODEL_NAME, EVA_API_KEY这三个环境变量。

Linux设置方法:

export EVA_BASE_URL=http://xxxxxxxxx/v1
export EVA_MODEL_NAME=xxxxx
export EVA_API_KEY=sk-xxxxx

macOS 设置方法(zsh,如需在 macOS 上长期生效,可以将上述 export 配置写入~/.zshrc。):

export EVA_BASE_URL=http://xxxxxxxxx/v1
export EVA_MODEL_NAME=xxxxx
export EVA_API_KEY=sk-xxxxx

Windows 命令行设置方法:

set EVA_BASE_URL=http://xxxxxxxxx/v1
set EVA_MODEL_NAME=xxxxx
set EVA_API_KEY=sk-xxxxx

Windows PowerShell设置方法:

$env:EVA_BASE_URL="http://xxxxxxxxx/v1"
$env:EVA_MODEL_NAME="xxxxx"
$env:EVA_API_KEY="sk-xxxxx"
  1. 运行python3 eva.py。首次运行会生成eva脚本,Linux 下执行source ~/.bashrc让脚本生效;macOS 下执行source ~/.zshrc让脚本生效。后续直接输入命令eva即可

输入增强说明:

  • 如果环境里安装了prompt_toolkit,EVA会自动开启多行输入:Enter提交,Ctrl+N换行;如果终端支持,也可以用Alt+Enter换行

macOS 分支说明:eva-mac分支保留原有单文件、命令行参数、Session、安全审查和工具调用行为,只增加 macOS 平台识别、zsh 启动脚本、macOS 环境探针、锁文件兼容和 macOS 命令提示,避免将 macOS 误判为 Linux。

eva支持的选项usage: eva.py [-h] [-a] [-l] [-c] [-u USER_ASK] [-s] [--until UNTIL]

options:
  -h, --help            show this help message and exit
  -a, --allow-all       允许所有命令无需用户确认即可执行
  -l, --list-session    列出所有session
  -c, --clear-session   清除当前目录session
  -u USER_ASK, --user-ask USER_ASK
                        独立地针对一条用户提问执行EVA
  -s, --with-session    搭配-u使用载入并保存session
  --until UNTIL         搭配-u使用设定任务达成条件子串匹配

EVA退出说明(按Ctrl + C)

1、EVA运行过程可以随时打断,无论是打断LLM推理、打断工具执行、还是退出EVA,都是按 Ctrl + C

2、打断是个很有用的行为,比如某个命令超时时间太久你不想再等待,或者你想起有个背景忘记向EVA澄清需要补充说明,或者你发现前面对话有错别字想做修正说明 —— 注意,无论何时你都可以 Ctrl + C 打断EVA,无论何时 🎯🎯

关于 EVA.md

.eva/EVA.md是EVA的设定,通过它你可以对EVA进行各种设定、甚至赋予它各种技能。除了手动编辑EVA.md,你可以在eva启动时让它“分析下xxx/xxx/skills目录中的可用技能,提炼线索到EVA.md中” 或者 “分析下skillhub上的xxx技能,提炼线索到EVA.md中”,然后重启eva即可 —— EVA的事情EVA自己做 🤖🤖

Star记录

Star History Chart

贡献者 ✨

About

单文件智能体

Topics

Resources

License

Contributing

Stars

312 stars

Watchers

2 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages