一款轻量 Agent 桌面端拘束器(本地/远端统一 OpenAI 兼容接口)
[ 中文 | English ]
在线文档: https://ylsdamxssjxxdd.github.io/eva/ (GitHub Pages 最新站点)
-
下载机体
- https://pan.baidu.com/s/18NOUMjaJIZsV_Z0toOzGBg?pwd=body
- 包括eva程序前端和EVA_BACKEND后端。
- EVA_BACKEND后端结构:
EVA_BACKEND/<架构>/<系统>/<设备>/<项目>/(例如EVA_BACKEND/x86_64/win/cuda/llama.cpp/llama-server.exe)。也可以自己编译相应后端,按照这个结构摆放,机体运行时会自动识别。
-
下载模型
- https://pan.baidu.com/s/18NOUMjaJIZsV_Z0toOzGBg?pwd=body
- EVA_MODELS模型目录:
EVA_MODELS/llm:大语言模型(主要),选一个小于你的设备内存/显存大小的模型EVA_MODELS/multimodal:多模态模型(非必要)EVA_MODELS/embedding:嵌入模型(非必要)EVA_MODELS/speech2text:Whisper模型(非必要)EVA_MODELS/text2speech:tts.cpp 模型(非必要)EVA_MODELS/text2image:SD/Flux/Qwen-image/Qwen-image-edit/ 模型(非必要)
- 也可以前往 https://hf-mirror.com 搜索,机体支持几乎所有开源大语言模型
-
启动
- windows双击打开eva.exe,linux 运行eva.appimage(运行前赋予程序可执行权限 )
- liunx下需要给eva和后端可执行权限,进入eva的文件夹,终端运行 chmod -R a+x .
- 运行时确保机体程序与后端在同一目录
-
装载!
- 点击装载按钮,选择一个gguf模型载入内存
-
加速!
- 如果有显卡的话,点击设置按钮,为模型选择合适的推理设备(vulkan/cuda),并将gpu负载层数调到最大
-
发送!
- 在输入区输入聊天内容,点击发送
两种模式
-
本地模式:选择 gguf 模型后,启动本地的
llama-server程序并默认开放端口8080,也可以网页访问。 -
链接模式:填写
endpoint/key/model切换到远端模型,使用 OpenAI 兼容接口(/v1/chat/completions)。
两种状态
-
对话状态
- 在输入区输入聊天内容,模型进行回复
- 可以使用挂载的工具
- 可以按f1截图,按f2进行录音,截图和录音会发送给多模态或whisper模型进行相应处理
-
补完状态
- 在输出区键入任意文字,模型对其进行补完
六个工具
在系统指令中附加“工具协议”,指导模型以 <tool_call>JSON</tool_call> 发起调用;
推理结束后自动解析工具请求,执行并把结果以 "tool_response: ..." 继续发送,直至没有新请求。-
计算器
- 模型输出计算公式给计算器工具,工具将返回计算结果
- 例如:计算888*999
- 调用难度:⭐
-
鼠标键盘
- 模型输出行动序列来控制用户的鼠标和键盘,需要模型拥有视觉才能完成定位
- 例如:帮我自动在冒险岛里搬砖
- 调用难度:⭐⭐⭐⭐⭐
-
系统工程师
- 类似 Cline 的自动化工具执行链(execute_command/read_file/write_file/replace_in_file/edit_in_file/list_files/search_content/ptc/MCP…)。
- 例如:帮我构建一个cmake qt的初始项目
- 支持 Docker 沙盒:约定窗口可勾选“Docker 沙盒”并填写镜像(默认 ubuntu:latest)。EVA 会自动查询
docker images,拉起匹配容器并把工程师工作目录挂载到/eva_workspace,同时将 EVA 技能目录挂载到/eva_skills,所有命令与文件操作都在容器内执行,UI 同步显示容器镜像/状态/挂载点。也可切换到“容器模式”,直接从docker ps -a中选择现有容器,EVA 会自动重启并复用它。 - 沙盒镜像、启用状态与工作目录会落盘,重启后继续复用原有容器;退出应用时自动
docker stop,避免残留进程。 - 调用难度:⭐⭐⭐⭐⭐
-
知识库
- 模型输出查询文本给知识库工具,工具将返回三条最相关的已嵌入知识
- 要求:先在“增殖-知识库”上传文本并构建(启动嵌入服务 → /v1/embeddings 逐段入库)。
- 例如:请问机体有哪些功能?
- 调用难度:⭐⭐⭐
-
文生图
- 模型输出绘画提示词给文生图工具,工具将返回绘制好的图像
- 要求:用户需要先在增殖窗口配置文生图的模型路径,支持sd和flux模型
- 例如:画一个女孩
- 调用难度:⭐⭐
-
MCP工具
- 通过MCP服务,获取到外部丰富的工具
- 说明:挂载工具后需要前往增殖窗口配置MCP服务
- 调用难度:⭐⭐⭐⭐⭐
任意技能
技能为机体在约定框架下引入的可插拔能力包。通过该机制,指挥员可在不改动主程序的情况下,为驾驶员注入特定场景的工作流程、模板与脚本指令。 具体可参考EVA_SIKLLS目录下的示例技能。
- 规范约束:挂载系统工程师工具后,将技能文件夹压缩成zip文件,可拖入技能区进行导入。每个技能都必须提供
SKILL.md,文件以 YAML frontmatter 描述name、description、license等元数据,正文给出操作步骤、输入输出格式、注意事项。EVA 在解析时严格依赖这些字段,缺失将直接拒绝导入。
视觉
-
介绍:在 本地模式 + 对话状态 下可以挂载视觉模型,视觉模型一般名称中带有mmproj,并且只和特定的模型相匹配。挂载成功后用户可以选择图像进行预解码,来作为模型的上文
-
激活方法:在设置中右击“挂载视觉”选择 mmproj;拖拽/右击上传/按 F1 截图后,点击“发送”进行预解码,再进行问答。
听觉
- 介绍:借助whisper.cpp项目将用户的声音转为文本,也可以直接传入音频转为字幕文件
- 激活方法:右击状态区打开“增殖-声转文”,选择 whisper 模型路径;回到主界面按 F2 开始/结束录音,结束后自动转写回填输入框。
语音
- 介绍:借助windows系统的语音功能将模型输出的文本转为语音并自动播放,或者可以自己配置tts.cpp模型进行文转声
- 激活方法:右击状态区打开“增殖-文转声”,选择系统语音或加载 tts.cpp 模型并启动。
模型量化
- 可以右击状态区弹出增殖窗口,在模型量化选项卡中对未经量化的fp32、fp16、bf16的gguf模型进行量化
自动监视
- 本地对话状态下,挂载视觉后,可设置监视帧率;随后会自动附带最近 1 分钟的屏幕帧到下一次发送。
系统架构师
- 如何开启:约定窗口勾选“系统工程师”后,右击选择“升级为系统架构师”。
- 开启后效果:架构师将任务委派给工程师进行执行,减少架构师的上下文消耗。
机体控制
- 如何开启:被控制端设置页勾选“允许机体控制”才会监听(默认关闭)。
- 作为控制端:在“链接模式→机体控制”填写目标 EVA 地址即可远程链接,界面镜像对方输出/状态/进度,只提供发送/终止/重置/解除等安全操作。
- 作为被控端:装载和推理进度实时同步给控制端,解除控制后本机立即恢复正常操作。
展开
-
配置环境
- 安装编译器 windows可以用msvc或mingw,linux需要g++或clang
- 安装Qt5.15库 https://download.qt.io/
- 安装cmake https://cmake.org/
-
克隆源代码
git clone https://github.com/ylsdamxssjxxdd/eva.git
-
编译
cd eva cmake -B build -DBODY_PACK=OFF cmake --build build --config Release -j 8- BODY_PACK:是否需要打包的标志,若开启,windows下将所有组件放置在bin目录下;linux下将所有组件打包为一个AppImage文件,但是依赖linuxdeploy等工具需要自行配置
-
后端准备
- 从上游或第三方获取已编译的推理程序。
- 也可以在nerv项目中获取所有三方源码自行编译 git clone https://github.com/ylsdamxssjxxdd/nerv.git
- 按中央教条放置第三方程序:
EVA_BACKEND/<架构>/<系统>/<设备>/<项目>/,例如: EVA_BACKEND/x86_64/win/cuda/llama.cpp/llama-server(.exe)- 架构:
x86_64、x86_32、arm64、arm32 - 系统:
win、linux - 设备:
cpu、cuda、vulkan、opencl(可自定义扩展) - 项目:如
llama.cpp、whisper.cpp、stable-diffusion.cpp - 运行时 EVA 仅在本机同架构目录下枚举设备并查找可执行文件,并自动补全库搜索路径(Windows: PATH;Linux: LD_LIBRARY_PATH)。
-
打包分发(解压即用)
- 将可执行(build/bin/eva[.exe])、同级目录
EVA_BACKEND/、必要 thirdparty 与资源、以及可选EVA_MODELS/一并打包; - 目录示例:
EVA_BACKEND/<arch>/<os>/<device>/llama.cpp/llama-server(.exe)EVA_BACKEND/<arch>/<os>/<device>/whisper.cpp/whisper-cli(.exe)EVA_BACKEND/<arch>/<os>/<device>/llama-tts/llama-tts(.exe)EVA_MODELS/{llm,embedding,speech2text,text2speech,text2image}/...
- 程序首次启动会在同级目录创建
EVA_TEMP/,用于保存配置、历史与中间产物。
- 将可执行(build/bin/eva[.exe])、同级目录
- 在构建目录启用测试:
cmake -B build -S . -DEVA_ENABLE_FUNCTIONAL_TESTS=ON - 运行单元测试:
cmake --build build --target xtool_tests xtool_harness_tests && ctest -L unit - 运行功能测试(需要可执行文件与场景配置):
ctest -L functional - 场景文件位于
tests/functional/scenarios,每个 JSON 描述 command/timeout/期望输出,可指向本地或链接模式脚本。 - 生成覆盖率报告:
cmake -B build -S . -DEVA_ENABLE_COVERAGE=ON && cmake --build build && ctest -L unit && cmake --build build --target coverage(需要提前安装gcovr,报告输出在build/reports/coverage/index.html/build/reports/coverage/coverage.xml)。