# VoldpAiAgent **Repository Path**: ym668/VoldpAiAgent ## Basic Information - **Project Name**: VoldpAiAgent - **Description**: 重磅发布!火山AI智能体(别名:火山爱马仕、火山龙虾、火山克劳德;英文名:VoldpAiAgent、VoldpHermes、VoldpClaw、VoldpClaude)。 - **Primary Language**: JavaScript - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 6 - **Forks**: 4 - **Created**: 2026-07-01 - **Last Updated**: 2026-09-17 ## Categories & Tags **Categories**: ai **Tags**: None ## README 重磅发布!火山AI智能体(别名:火山爱马仕、火山龙虾、火山克劳德;英文名:VoldpAiAgent、VoldpHermes、VoldpClaw、VoldpClaude)。 耗时30天,我基于开源项目 HermesAgent,使用国产编程语言“火山语言”开发了一套跨平台 Go 服务端,并打造了对中文用户友好的前端 AI 智能体。 双模式自由切换:内置 Hermes Agent 模式与 Claude Code 模式,按需选择,灵活应对不同任务。 跨平台开箱即用:提供 Windows、Linux、macOS、Android 等多平台二进制文件,下载即用,无需复杂部署。 大模型友好接入:兼容多种 API 格式,可轻松对接本地部署的各种大语言模型。 多会话高并发:支持多个聊天同时进行,轻松组建“一个人的公司”,批量创建“虚拟数字员工”协同工作。 我主要深耕自动化领域,后续将持续迭代,逐步解锁自动化办公、自动化玩游戏、配合脑机接口操控无人机与机器人、自动操作 CNC 数控机床等强大能力。 项目核心代码完全开源免费,持续更新,欢迎一起探索智能自动化的无限可能。 ![输入图片说明](%E8%87%AA%E5%8A%A8%E4%BF%AE%E5%9B%BE_%E8%87%AA%E5%8A%A8%E5%89%AA%E8%BE%91%E8%A7%86%E9%A2%91.png) ![输入图片说明](%E8%BD%AF%E4%BB%B6%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%91.png) ![输入图片说明](%E8%BD%AF%E4%BB%B6%E7%BC%96%E7%A8%8B%E5%BC%80%E5%8F%911.png) ![输入图片说明](%E7%BD%91%E7%BB%9C%E6%90%9C%E7%B4%A2%E8%B5%84%E8%AE%AF.png) ![输入图片说明](%E8%87%AA%E5%8A%A8%E5%8C%96%E6%93%8D%E4%BD%9C%E8%BD%AF%E4%BB%B6.png)# VoldpAiAgent ![输入图片说明](%E8%BF%90%E8%A1%8C%E5%9C%A8Linux%E7%B3%BB%E7%BB%9F%E4%B8%8A.png) ![输入图片说明](%E7%94%A8AI%E7%BB%99Linux%E7%B3%BB%E7%BB%9F%E6%9D%80%E6%AF%92.png) ![输入图片说明](%E7%94%A8AI%E7%BB%99Linux%E7%B3%BB%E7%BB%9F%E5%81%9A%E9%98%B2%E5%BE%A1.png) ![输入图片说明](MCP%E5%8A%9F%E8%83%BD.png) # VoldpAiAgent · 火山AI智能体
[![License](https://img.shields.io/badge/License-MIT-blue)](#开源协议) [![Platform](https://img.shields.io/badge/Platform-Windows%20%7C%20Linux%20%7C%20macOS%20%7C%20Android-informational)](#环境要求) [![Language](https://img.shields.io/badge/Stack-火山服务器软件开发平台%20%2B%20Go%20%2B%20SQLite-success)](#技术栈) [![WebUI](https://img.shields.io/badge/WebUI-原生JS-FF7A00)](#技术栈) [![Port](https://img.shields.io/badge/默认端口-8787-9cf)](#快速开始)
VoldpAiAgent(火山AI智能体)是一个基于**火山服务器软件开发平台(Voldp Server Software Development Platform,简称“火山语言”)**编程技术开发的服务器项目,内置完整的 AI 智能体 Web 界面,把多模型对话、看板任务、技能、记忆、插件、MCP、定时任务和工作区集中到一个本地服务里,通过浏览器即可使用。项目使用火山语言编写、生成 Go 服务器可执行程序,支持 Windows、Linux、macOS、Android 多平台部署。

核心特性 · 快速开始 · 配置说明 · 使用指南 · 开发说明

--- ## 项目简介 VoldpAiAgent 是一个用火山语言编写、生成 Go 服务器可执行程序的 AI 智能体平台。火山语言的 `.wsv` 源文件以中文命名,并通过 `# @` 前缀在文件内嵌入原生 Go 代码,最终由火山服务器软件开发平台 IDE 编译为基于 [gin](https://github.com/gin-gonic/gin) 的 HTTP 服务器。 - **核心能力**:多模型 AI 对话、看板任务自动派发、目标/后台任务/Cron 编排、技能/记忆/记忆金库/插件/MCP 体系、代码索引、Voldev IDE 集成、OpenCut 视频编辑、Photopea 图像编辑、文件管理器、内置终端、Git/Worktree、回滚系统、隧道一键部署、IM 多平台适配器、OAuth/二维码登录、PWA、i18n、会话恢复/生命周期管理。 - **适用场景**:个人本地 AI 工作台、团队内部 AI 助手、需要在前端界面中编排 Agent 任务流和技能调用的开发场景。 - **跨平台支持**:编译产物为单个独立可执行文件,可在 Windows、Linux、macOS、Android(arm64/amd64)上运行;内置终端已针对各平台 shell(cmd.exe / bash / zsh)做回显与编码适配。 - **运行形态**:编译后得到一个独立可执行文件,启动后监听 `http://127.0.0.1:8787`,前端静态文件随程序分发。 --- ## 核心特性 ### AI 对话与模型 - **AI 对话**:支持多模型供应商(DeepSeek、硅基流动、MiMo、GLM、Kimi、OpenRouter、自定义 OpenAI 兼容接口),推理模型(GLM-Z1、DeepSeek-R1 等)独立思考流通道,流式输出。 - **模型实时状态**:`/api/models/live` 实时探测在线模型可用性。 - **语音转写**:`/api/transcribe` 语音输入,浏览器录音后服务端转文字。 ### 任务与编排 - **看板任务系统**:`分流(triage) → 待办(todo) → 就绪(ready) → 运行中(running) → 已完成(done) / 已阻塞(blocked) / 已归档(archived)` 状态流转,自动派发,独立 worker 进程执行;支持看板、任务、链接、统计、评论、批量操作、看板任务一键创建会话。 - **目标系统**:`/api/goal` 目标 CRUD 管理,`/api/btw` 顺便提问,目标创建后可一键启动流式代理执行。 - **后台任务**:`/api/background` 后台进程跑长任务,`/api/background/status` 查询状态。 - **Cron 定时任务**:内置调度(每 60 秒触发),支持表达式、投递选项、运行历史、手动触发、暂停/恢复。 - **审批流**:`/api/approval/*` 路由审批,SSE 实时推送待审批请求,支持响应与注入测试。 - **澄清交互**:`/api/clarify/*` 代理运行中向用户发起澄清提问,SSE 实时推送,支持响应与注入测试。 ### 知识与记忆 - **记忆系统**:`SOUL.md` / `USER.md` / `MEMORY.md` 个人记忆,跨会话持久化,自动注入对话上下文。 - **记忆金库(Memory Vault)**:`/api/memory-vault/*` 结构化记忆 CRUD,支持标签、作用域、信任级别,与会话记忆(`/api/memory`)分工不同。 - **技能系统**:基于 `SKILL.md` 元数据,支持热重载、斜杠命令、用量统计、浏览与内容编辑。 - **笔记(Notes)**:`/api/notes/*` 笔记来源、搜索、条目读取。 ### 工具集成 - **MCP 协议**:模型上下文协议集成,`/api/mcp/*` 完整的服务器管理(增删改查、启停、重连)、工具/资源/Prompt 浏览。 - **插件系统**:从 `~/.hermes/plugins/` 目录加载,基于 `manifest.json` 描述,支持仪表盘 tab 注册、市场安装/卸载、本地安装、prompt 模板。 - **技能市场**:`/api/market/skills/*` 在线技能浏览与安装。 - **代码索引**:`代码索引.wsv` 代码库符号索引,辅助 Agent 跨文件理解项目结构。 - **Voldev IDE 集成**:`/api/voldev/*` 火山 IDE 项目/模块/文件管理,支持新建文件、激活项目切换、根路径设置。 ### 创作工具 - **OpenCut 视频编辑器**:`/api/opencut/*` 项目与媒体管理,支持视频上传、音频提取、编辑指令执行。 - **Photopea 图像编辑器**:`/api/photopea/*` 内置 Photopea(PS 级图像编辑),支持文件存取、字体加载。 ### 工作区与文件 - **工作区**:文件树浏览、文件预览、Artifacts 渲染,文件上传带实时进度条。 - **文件管理器**:`/api/file/*` 完整文件操作(新建/重命名/移动/复制/删除/压缩/解压/在 VSCode 打开/显示路径),`/api/folder/download` 目录下载。 - **终端面板**:前端内置终端(基于 xterm.js),可在浏览器中执行命令;已适配 Windows(cmd.exe)、Linux/macOS(bash/zsh)的回显与编码,支持键盘与鼠标粘贴。 - **Git 集成**:工作区 Git 信息徽章(分支/dirty/behind)、Worktree 工作树管理、代码改动可视化。 - **回滚系统**:`/api/rollback/*` 检查点列表、差异对比、一键恢复。 ### 平台与部署 - **隧道(Tunnel)**:`/api/tunnel/*` 一键部署到 Cloudflare / Vercel / Deno,支持 WebSocket 隧道配置与状态查询。 - **IM 适配器**:Telegram、WhatsApp、微信、企业微信、钉钉、飞书、QQ,支持扫码绑定、配对码绑定、解绑。 - **OAuth 登录**:`/api/oauth/*` 第三方 OAuth 配置与回调。 - **二维码登录**:`qrcode.js` + `/api/adapters/:platform/qr` 扫码登录流程。 - **PWA 支持**:Service Worker 离线缓存、manifest、可安装为应用。 - **引导流程**:`/api/onboarding/*` 首次启动引导、供应商探测、OAuth 引导。 - **国际化 i18n**:`i18n.js` 多语言切换,登录页服务端渲染。 ### 运行时 - **多 Profile**:每个 profile 拥有独立配置目录,可在前端切换。 - **状态同步**:可选把运行状态同步到洞察(insights)。 - **会话恢复/生命周期**:`/api/session/lifecycle/*` 未提交变更管理、提交/丢弃/驱逐、恢复审计;`/api/sessions/:id/recovery` 会话恢复点。 - **系统健康**:`/api/system/health`、`/api/health/agent` 健康检查与诊断。 --- ## 技术栈 | 类别 | 技术 | |------|------| | 编程语言 | 火山语言(`.wsv`,中文命名 + 嵌入式 Go) | | 后端框架 | [Gin](https://github.com/gin-gonic/gin) | | 数据库 | SQLite(`httpServer.db` / `kanban.db` / `state.db`),ORM 使用 [GORM](https://gorm.io) | | 认证 | JWT([golang-jwt/jwt/v5](https://github.com/golang-jwt/jwt))、Passkey、OAuth、密码哈希 | | 前端 | 原生 HTML + JS(非框架),PWA(Service Worker) | | 前端库 | [xterm.js](https://xtermjs.org/)(终端)、[Monaco Editor](https://microsoft.github.io/monaco-editor/)(代码编辑)、[KaTeX](https://katex.org/)(数学公式)、[Mermaid](https://mermaid.js.org/)(图表)、[Prism.js](https://prismjs.com/)(代码高亮)、[PDF.js](https://mozilla.github.io/pdf.js/)(PDF 预览)、[js-yaml](https://github.com/nodeca/js-yaml)(YAML 解析)、smd(Markdown) | | 配置 | `config.yaml` + 环境变量(`HERMES_` 前缀)+ 数据库 settings 表 | | 项目文件 | `VoldpAiAgent.vprj`(项目标识符 `wutao.vproject.pc.server.1`) | | 支持平台 | Windows、Linux、macOS、Android(arm64/amd64) | > 说明:本项目是火山服务器项目,**不是**传统 Go 项目,仓库根目录没有 `go.mod`。Go 依赖通过火山服务器软件开发平台 IDE 在 `.wsv` 文件的 `@服务器.导入` 指令中声明,由 IDE 在编译时统一解析。 --- ## 项目结构 ```text VoldpAiAgent/ ├── VoldpAiAgent.vprj # 火山服务器软件开发平台项目文件(IDE 打开入口) ├── providers.json # 模型供应商健康检查结果 / 配置 ├── httpServer.db # SQLite 数据库(运行时生成) ├── src/ # 火山语言源码(.wsv,60+ 文件,中文命名) │ ├── main.wsv # 程序入口(启动、中间件、静态文件服务) │ ├── 启动.wsv / 引导.wsv # 启动流程与首次引导 │ ├── 配置.wsv # 配置管理(环境变量 / YAML / 数据库合并链) │ ├── 配置文件.wsv # Profile 多配置 CRUD 与切换 │ ├── 路由.wsv # HTTP 路由注册(364 条路由) │ ├── 网关聊天.wsv # 聊天网关、LLM 调度、流式传输 │ ├── 流式传输.wsv # SSE 流式输出 │ ├── 供应商.wsv # 模型供应商管理 │ ├── 看板桥接.wsv # 看板任务系统 │ ├── 目标.wsv # 目标 / OKR / 顺便提问 │ ├── 后台任务.wsv / 后台进程.wsv # 后台长任务 │ ├── 路由审批.wsv / 澄清.wsv # 审批流与澄清交互(SSE 推送) │ ├── 技能使用.wsv # 技能系统 │ ├── 插件.wsv / 插件供应商.wsv # 插件加载与市场 │ ├── 代码索引.wsv # 代码库符号索引 │ ├── 回滚.wsv # 检查点回滚 │ ├── 终端.wsv # 内置终端 │ ├── 工作区.wsv / 工作树.wsv # 工作区 / 文件树 / Worktree │ ├── 上传.wsv # 文件上传与解压 │ ├── 认证.wsv(含 OAuth)/ Passkey.wsv # 认证层 │ ├── 适配器.wsv / 适配器工具.wsv / 运行时适配器.wsv # IM 适配器框架 │ ├── 平台*适配器.wsv # Telegram / WhatsApp / 微信 / 企业微信 / 钉钉 / 飞书 / QQ │ ├── 会话*.wsv # 会话数据库 / 操作 / 生命周期 / 恢复 / 事件 / 可发现性 │ ├── 状态同步.wsv / 系统健康.wsv / 代理健康.wsv # 状态与健康 │ └── static/ # 前端静态文件 │ ├── index.html # Web UI 入口 │ ├── boot.js / ui.js / panels.js / messages.js / sessions.js / workspace.js │ ├── commands.js / terminal.js / onboarding.js / login.js / i18n.js │ ├── opencut.js / opencut-services.js / opencut-utils.js # 视频编辑器 │ ├── photopea.js / photopea-local/ # 图像编辑器 │ ├── tunnel-worker.js / tunnel-worker-ws.js # 隧道部署 │ ├── qrcode.js / pwa-startup.js / sw.js # 二维码 / PWA │ ├── style.css │ └── vendor/ # 第三方前端库 │ ├── xterm/ # 终端(+ fit / web-links 插件) │ ├── monaco/ # 代码编辑器(多语言) │ ├── katex/ # 数学公式 │ ├── mermaid/ # 图表 │ ├── prismjs/ # 代码高亮 │ ├── pdfjs/ # PDF 预览 │ ├── js-yaml/ # YAML 解析 │ └── smd.min.js # Markdown ├── build_android.ps1 # Android 交叉编译脚本(需配合 NDK) └── _backup/ # 历史改动备份 ``` --- ## 快速开始 ### 环境要求 - **开发工具**:[火山服务器软件开发平台 IDE](https://www.voldp.com/)(Windows 平台,用于打开 `.vprj` 项目并将 `.wsv` 源码编译为 Go 二进制)。IDE 内置 Go 编译链,**无需单独安装 Go 环境**。 - **运行依赖**:运行时仅需编译产物可执行文件本身(前端静态文件已内嵌于二进制,运行时自动释放),无外部依赖。 - **支持平台**:Windows、Linux、macOS、Android(arm64/amd64)。 > 说明:火山服务器软件开发平台 IDE 仅在 Windows 上运行,因此**编译过程必须在 Windows 上完成**。但编译产物可交叉编译为各平台二进制,拷贝到目标平台运行。 ### 获取源码 ```bash git clone VoldpAiAgent cd VoldpAiAgent ``` ### 打开项目 用火山服务器软件开发平台 IDE 打开根目录下的 `VoldpAiAgent.vprj`。项目标识符为 `wutao.vproject.pc.server.1`,IDE 会自动识别为火山服务器项目。 ### 配置 按需编辑以下任一配置来源(优先级见 [配置说明](#配置说明)): 1. 编辑 `providers.json` 或在前端「设置」中添加模型供应商与 API Key。 2. 在 Home 目录下创建 `config.yaml`(路径见下文)。 3. 通过环境变量覆盖(`HERMES_` 前缀)。 ### 编译与运行(按平台) #### Windows 1. 在火山服务器软件开发平台 IDE 中点击「编译」生成 `VoldpAiAgent.exe`。 2. 直接双击运行编译产物,或在 IDE 中点击「运行」。 3. 控制台将输出: ```text [webui] VoldpAiAgent 火山语言版本启动中... [ok] 配置初始化完成, 端口: 8787 VoldpAiAgent listening on http://127.0.0.1:8787 Then open: http://localhost:8787 ``` #### Linux 火山 IDE 仅支持 Windows,需先在 Windows 上用 IDE 编译生成 `.go` 中间文件,再用 IDE 内置 Go 工具链交叉编译为 Linux 二进制: 1. 在 Windows 的火山 IDE 中先编译一次任意平台(如 Windows),生成 `_int\VoldpAiAgent\release\project` 下的 `.go` 文件与 `go.mod`。 2. 用 IDE 内置 Go(路径形如 `E:\voldev25\plugins\vprj_server\sdk\GoLang\go1.26.2\bin\go.exe`)在项目目录执行交叉编译: ```powershell $env:GOOS="linux"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0" & "E:\voldev25\plugins\vprj_server\sdk\GoLang\go1.26.2\bin\go.exe" build -o VoldpAiAgent_linux_amd64 ".\rg_volcano_app" ``` 3. 将 `VoldpAiAgent_linux_amd64` 上传到 Linux 服务器(前端静态文件已内嵌于二进制,运行时自动释放,无需额外上传 `static/` 目录)。 4. 在 Linux 上赋权并运行: ```bash chmod +x VoldpAiAgent_linux_amd64 ./VoldpAiAgent_linux_amd64 ``` > 如需 arm64,将 `GOARCH` 改为 `arm64`。Linux 下若需 SQLite cgo,需配置对应平台的 C 编译器。 #### macOS 与 Linux 同理,交叉编译时设置: ```powershell $env:GOOS="darwin"; $env:GOARCH="amd64"; $env:CGO_ENABLED="0" ``` arm64(Apple Silicon)将 `GOARCH` 改为 `arm64`。编译产物 `VoldpAiAgent_darwin_*` 拷贝到 Mac 上运行(前端静态文件已内嵌,无需额外携带 `static/`): ```bash chmod +x VoldpAiAgent_darwin_arm64 ./VoldpAiAgent_darwin_arm64 ``` > 首次运行若被 macOS Gatekeeper 拦截,在「系统设置 → 隐私与安全性」中点击「仍要打开」放行,或在终端执行 `xattr -d com.apple.quarantine VoldpAiAgent_darwin_arm64`。 #### Android Android 需通过 [NDK](https://developer.android.com/ndk) 交叉编译,项目根目录提供 `build_android.ps1` 脚本: **前提条件:** 1. 已在火山 IDE 中编译过任意平台(生成 `_int\VoldpAiAgent\release\project` 下的 `.go` 文件)。 2. 已安装 NDK 27(脚本默认路径 `E:\androidSDK\ndk\27.0.12077973`,可按需修改)。 3. 火山 IDE 内置 Go 位于 `E:\voldev25\plugins\vprj_server\sdk\GoLang\go1.26.2`。 **编译:** ```powershell # 编译 arm64(默认,大多数 Android 设备) .\build_android.ps1 # 编译 amd64(模拟器 / x86_64 设备) .\build_android.ps1 -Arch amd64 # 同时编译两个架构 .\build_android.ps1 -Arch both ``` 产物输出到 `_int\VoldpAiAgent\release\linker\VoldpAiAgent_android_arm64`(API level 30,兼容 Android 11+)。 **部署到设备:** ```bash # 通过 adb 推送到设备并赋予执行权限 步骤 1:连接设备 adb connect 你的设备地址:端口 # 网络连接,若 USB 则直接 adb shell 例如:adb connect 192.168.3.189:5555 adb devices # 确认设备状态为 device 📤 步骤 2:推送可执行文件到 /data/local/tmp/ adb push "本地文件路径\VoldpAiAgent_android_arm64" /data/local/tmp/ 例如:adb push "E:\VoldpAiAgent_android_arm64" /data/local/tmp/ ⚠️ 注意:本地路径避免中文和空格,若必须包含,请用双引号括起来。 🔑 步骤 3:赋予执行权限 adb shell chmod +x /data/local/tmp/VoldpAiAgent_android_arm64 📁 步骤 4:创建必要的工作目录(解决“只读文件系统”错误) 程序尝试在根目录创建 /.hermes,但系统分区只读。需指定可写目录(如 /data/local/tmp/hermes): adb shell mkdir -p /data/local/tmp/hermes 然后设置环境变量,让程序使用该目录: adb shell "export HERMES_HOME=/data/local/tmp/hermes HERMES_WEBUI_STATE_DIR=/data/local/tmp/hermes && /data/local/tmp/VoldpAiAgent_android_arm64" 或者更稳妥的方式:在运行命令前直接 export(若希望持久化,可写入启动脚本)。 🚀 步骤 5:运行程序 adb shell "HERMES_HOME=/data/local/tmp/hermes HERMES_WEBUI_STATE_DIR=/data/local/tmp/hermes /data/local/tmp/VoldpAiAgent_android_arm64" 程序会启动 Web 服务,默认监听 0.0.0.0:8787(允许外部访问)。您会看到日志输出,最后提示: VoldpAiAgent listening on http://0.0.0.0:8787 🌐 步骤 6:访问 Web UI 在电脑或同一局域网的其他设备浏览器中打开: http://192.168.3.189:8787 (将 IP 替换为手机的局域网 IP) 🛠️ 常见问题及解决 问题 原因 解决方案 syntax error: unexpected 'newline' 文件是静态库(.a)或文本文件 重新获取正确的 ELF 可执行文件 Exec format error 架构不匹配(如推送了 AMD64 版本) 必须使用 ARM64 版本 inaccessible or not found 文件路径错误或未推送成功 检查 ls -l /data/local/tmp/ 确认文件名 运行时提示 open /.hermes/config.yaml: no such file or directory 程序试图写入根目录,权限不足 设置 HERMES_HOME 和 HERMES_WEBUI_STATE_DIR 环境变量指向可写目录(如 /data/local/tmp/hermes) 运行时 nil pointer dereference 崩溃 数据库或配置目录不可写,导致初始化失败 同上,确保状态目录可写且已创建 端口被占用 其他进程占用 8787 启动时选择自定义端口或 kill 占用进程 📝 高级:持久化运行(后台) 若需程序在后台运行并断开 ADB 后继续,可使用: adb shell "nohup HERMES_HOME=/data/local/tmp/hermes HERMES_WEBUI_STATE_DIR=/data/local/tmp/hermes /data/local/tmp/VoldpAiAgent_android_arm64 &" 日志会输出到 nohup.out,可用 adb shell cat nohup.out 查看。 ⚠️ 杀掉旧进程 adb shell pkill -f VoldpAiAgent_android_arm64 🧹 清理 删除可执行文件:adb shell rm /data/local/tmp/VoldpAiAgent_android_arm64 删除状态目录:adb shell rm -rf /data/local/tmp/hermes 📌 注意事项 确保手机与电脑在同一局域网,且防火墙未拦截 8787 端口。 ``` > Android 设备需开启「USB 调试」并通过 adb 连接。前端静态文件已内嵌于二进制,运行时自动释放,无需额外推送 `static/` 目录。运行后通过 `http://127.0.0.1:8787` 在设备浏览器访问,或用 `adb forward tcp:8787 tcp:8787` 转发到电脑访问。 ### 访问 浏览器打开 [http://127.0.0.1:8787](http://127.0.0.1:8787) 即可进入 Web 界面。首次访问如设置了密码(`HERMES_WEBUI_PASSWORD`)需先登录。 > 若服务监听 `0.0.0.0`(通过 `HERMES_WEBUI_HOST=0.0.0.0` 配置),局域网其他设备可通过 `http://<本机IP>:8787` 访问,生产环境务必同时配置 `HERMES_ALLOWED_ORIGINS` 与访问密码。 --- ## 配置说明 ### 配置合并链 VoldpAiAgent 的配置来自多个来源,按以下优先级从低到高合并(后者覆盖前者): ```text 默认值 < config.yaml 文件 < 数据库 settings 表 < 环境变量(HERMES_) < 内存覆盖 ``` ### Home 目录 - Windows 下默认位于 `%LOCALAPPDATA%\hermes`(旧版 `%USERPROFILE%\.hermes` 在新位置无状态时回退使用) - Linux / macOS / Android 下默认位于 `~/.hermes` - 可通过环境变量 `HERMES_HOME` 覆盖 - 该目录用于存放 `config.yaml`、`active_profile`、profiles 子目录等 ### config.yaml 主配置文件,默认路径为 `$HERMES_HOME/config.yaml`,可通过 `HERMES_CONFIG_PATH` 覆盖。常用字段包括 `host`、`port`、`model`、`provider`、`context_length`、`threshold_tokens`、`max_upload_mb`、`request_timeout`、`ai_request_timeout`、`log_level`、`cors_origin` 等。 ### 环境变量 常用环境变量(均以 `HERMES_` 前缀): | 环境变量 | 说明 | 默认值 | |---------|------|--------| | `HERMES_HOME` | 应用主目录 | Windows: `%LOCALAPPDATA%\hermes`;其他平台: `~/.hermes` | | `HERMES_CONFIG_PATH` | `config.yaml` 路径 | `$HERMES_HOME/config.yaml` | | `HERMES_WEBUI_HOST` | 监听主机 | `127.0.0.1` | | `HERMES_WEBUI_PORT` | 监听端口 | `8787` | | `HERMES_WEBUI_PASSWORD` | Web 登录密码(哈希) | 空(无密码) | | `HERMES_WEBUI_DEFAULT_MODEL` | 默认模型 | 空 | | `HERMES_WEBUI_DEFAULT_PROVIDER` | 默认供应商 | 空 | | `HERMES_WEBUI_DEFAULT_WORKSPACE` | 默认工作区目录 | 当前目录 | | `HERMES_WEBUI_STATE_DIR` | 状态目录 | `$HERMES_HOME/webui` | | `HERMES_WEBUI_CONTEXT_LENGTH` | 上下文长度 | `128000` | | `HERMES_WEBUI_THRESHOLD_TOKENS` | 上下文压缩阈值 | `115200` | | `HERMES_WEBUI_MAX_UPLOAD_MB` | 上传大小上限(MB) | `50` | | `HERMES_WEBUI_REQUEST_TIMEOUT` | 请求超时(秒) | `300` | | `HERMES_WEBUI_AI_REQUEST_TIMEOUT` | AI 请求超时(秒) | `600` | | `HERMES_WEBUI_CUSTOM_MODELS_TIMEOUT` | 自定义模型端点探测超时(秒) | `5` | | `HERMES_WEBUI_MAX_SESSIONS` | 最大会话数 | `1000` | | `HERMES_WEBUI_CORS_ORIGIN` | CORS 允许来源 | 空 | | `HERMES_WEBUI_LOG_LEVEL` | 日志级别 | `info` | | `HERMES_WEBUI_DEBUG` | 调试模式(`true` 开启) | 空 | | `HERMES_WEBUI_TLS_CERT` / `HERMES_WEBUI_TLS_KEY` | TLS 证书 / 密钥路径 | 空(关闭 TLS) | | `HERMES_WEBUI_PASSKEY` | 启用 Passkey 登录(`true` 开启) | 空 | | `HERMES_WEBUI_ONBOARDING_OPEN` | 开放引导流程(`1` 开启) | 空 | | `HERMES_KANBAN_TASK_ID` | 看板 worker 模式任务 ID(存在则进入 worker 模式,跳过 HTTP 服务) | 空 | ### Profile 系统 - 每个 Profile 拥有独立配置目录,位于 `$HERMES_HOME/profiles//`(`default` 直接使用 `$HERMES_HOME`)。 - 当前活跃 Profile 记录在 `$HERMES_HOME/active_profile` 文件中。 - 可在前端界面创建、切换、删除 Profile,实现多套配置互不干扰。 ### providers.json 模型供应商配置文件,内置支持以下供应商类型: | 供应商 | 说明 | |--------|------| | `deepseek` | DeepSeek 官方接口(含 DeepSeek-R1 推理模型) | | `硅基流动` | 硅基流动聚合平台(数十个模型可选) | | `MiMo` | 小米 MiMo 模型接口 | | `OpenAI` | OpenAI 官方接口 | | `OpenRouter` | OpenRouter 聚合平台 | | `ZhipuGLM` | 智谱 GLM 接口(含 GLM-Z1 推理模型) | | `Kimi` | Moonshot Kimi 接口 | | `custom` | 任意 OpenAI 兼容接口(自定义 `base_url` 与 `api_key`) | 供应商的 API Key、Base URL 等可在前端「设置 → 供应商」中维护,或直接编辑 `providers.json`。健康检查接口会探测各供应商的可达性与延迟。 --- ## 使用指南 启动服务并打开 Web 界面后,主要功能入口如下(详细使用说明请参考仓库内的 `使用指南.md`): - **AI 对话**:在会话页选择模型与供应商,输入消息即可对话;推理模型会展示思考过程;支持语音输入(转写)。 - **看板任务**:在看板面板创建任务,系统按 `分流 → 待办 → 就绪 → 运行中 → 已完成 / 已阻塞` 流转并派发给 worker 执行;支持看板任务一键创建会话、批量操作、评论。 - **目标与编排**:`/api/goal` 创建目标,可一键启动流式代理执行;后台任务在后台进程跑长任务。 - **审批与澄清**:代理运行中如需用户确认,通过 SSE 实时推送审批/澄清请求,前端弹窗响应。 - **技能调用**:在输入框使用斜杠命令(如 `/skill-name`)触发已加载技能;技能支持热重载、用量统计、浏览与编辑。 - **记忆管理**:在记忆面板编辑 `SOUL.md` / `USER.md` / `MEMORY.md`(会话记忆);记忆金库(Memory Vault)管理结构化记忆,支持标签、作用域、信任级别。 - **MCP 服务器**:在设置中管理 MCP 服务器(增删改查、启停、重连),浏览工具/资源/Prompt。 - **插件与市场**:插件从 `~/.hermes/plugins/` 加载;技能/插件市场支持在线安装/卸载。 - **工作区与文件**:工作区面板浏览文件树、预览文件、查看 Artifacts;文件管理器支持完整文件操作(新建/重命名/移动/复制/删除/压缩/解压)。 - **终端与 Git**:终端面板在浏览器中执行命令;Git 徽章显示分支/dirty/behind;Worktree 工作树管理;回滚系统支持检查点恢复。 - **创作工具**:OpenCut 视频编辑器(项目/媒体/编辑);Photopea 图像编辑器(PS 级编辑)。 - **隧道部署**:一键部署到 Cloudflare / Vercel / Deno,支持 WebSocket 隧道。 - **IM 适配器**:在设置中绑定 Telegram / WhatsApp / 微信 / 企业微信 / 钉钉 / 飞书 / QQ,支持扫码与配对码绑定。 - **多 Profile**:在设置中切换 Profile,配置隔离互不影响。 - **PWA / i18n**:可安装为 PWA 应用;支持多语言切换。 --- ## 开发说明 ### `.wsv` 文件格式 - `.wsv` 是火山语言的源文件格式,文件头部为 `<火山程序 类型 = "通常" 版本 = 1 />`。 - 火山语言部分使用中文关键字(如 `类`、`方法`、`变量`、`如果`、`返回`)。 - 嵌入式 Go 代码以 `# @` 为行前缀,编译时会被原样并入生成的 Go 源码;Go 导入通过 `@服务器.导入 = "..."` 在类声明处声明。 - 文件中存在大量 `Rg_` 开头的 Go 函数,作为火山类方法的嵌入式实现桥接(全项目 1480+ 个)。 ### 前端静态文件 - 位置:`src/static/`,在 `.vprj` 中通过 `@服务器.附属文件 = "static > static"` 声明,编译时自动复制到可执行文件同目录。 - 入口:`src/static/index.html`,主要逻辑分散在 `ui.js`、`messages.js`、`sessions.js`、`workspace.js`、`terminal.js` 等原生 JS 文件中。 - 第三方库位于 `src/static/vendor/`(js-yaml、katex、smd)。 ### 添加新 HTTP 路由 1. 在 `src/路由.wsv` 的 `注册所有路由` 方法中,参考已有路由写法,使用 `Gin引擎类` 注册新路径。 2. 路由处理逻辑可放在对应的业务 `.wsv` 文件中,通过 `Rg_` 前缀的嵌入式 Go 函数实现。 3. 路由注册必须在静态文件服务(`注册静态文件服务`)之前完成,以避免通配路由冲突。 4. 当前项目共注册 364 条 HTTP 路由,涵盖会话、消息、供应商、看板、目标、技能、插件、MCP、工作区、文件管理、终端、Git/Worktree、回滚、隧道、IM 适配器、认证(OAuth/Passkey)、Voldev IDE、OpenCut、Photopea、Cron 等模块。 ### 看板 worker 模式 当环境变量 `HERMES_KANBAN_TASK_ID` 非空时,程序进入 worker 模式:加载指定任务 → 调用 LLM 执行 → 标记 `done` 或 `blocked` → 退出,**不启动 HTTP 服务器**。该模式由主服务在派发任务时以子进程方式调用。 --- ## 路线图 - [ ] 前端从原生 JS 逐步迁移到组件化结构 - [ ] 完善 MCP 工具市场与权限审批流 - [ ] 增加更多模型供应商预设 - [ ] 完善 Android 平台的终端与 IM 适配器适配 - [ ] 提供 Linux/macOS 一键交叉编译脚本 --- ## 贡献指南 欢迎通过 Issue 和 Pull Request 参与贡献: 1. Fork 仓库并创建特性分支(`feat/xxx`、`fix/xxx`)。 2. 修改请在火山服务器软件开发平台 IDE 中完成并通过编译,确保不破坏现有路由与配置合并链。 3. 提交信息建议使用 Conventional Commits 风格(`feat:`、`fix:`、`docs:`)。 4. PR 请说明改动范围、影响的模块(路由 / 配置 / 前端 / 数据库等)以及验证方式。 --- ☕ 请作者喝杯咖啡 如果这个项目对您有帮助,欢迎打赏支持,您的每一份支持都是我持续更新的动力 ❤️ ![输入图片说明](https://private-user-images.githubusercontent.com/191743700/615544878-7d265e92-2433-46c7-8a9e-c6748d755257.png?jwt=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3ODYxMTYxNTUsIm5iZiI6MTc4NjExNTg1NSwicGF0aCI6Ii8xOTE3NDM3MDAvNjE1NTQ0ODc4LTdkMjY1ZTkyLTI0MzMtNDZjNy04YTllLWM2NzQ4ZDc1NTI1Ny5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjYwODA3JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI2MDgwN1QxNTE3MzVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1mMzFhM2JiNDhiODEyOTUyNWNkM2FiMjg3OGI1Nzk4OTZlYTUwYjhlMzA0Y2NkYzUwNTIxZmRhZDFmNjVjOTBjJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZyZXNwb25zZS1jb250ZW50LXR5cGU9aW1hZ2UlMkZwbmcifQ.wcU8SDCtQIyH52T0AYRHZjSuRLWZ_efzqMnMFo6IQ-8) 如果这个项目对您有帮助,请给个 ⭐ Star 支持一下,让更多的人看到 VoldpAiAgent ## 开源协议 本项目基于 [MIT License](LICENSE) 开源。 --- ## 免责声明 本项目仅供学习与技术研究使用,不提供任何明示或暗示的担保。使用者应自行承担因使用本项目而产生的任何风险与责任。项目中涉及的所有第三方模型、API、前端资源的版权归各自所有者所有,使用时请遵循对应的服务条款与开源协议。