logo
3
1
WeChat Login
fix: 用 HERMES_HOME 替代软链接实现 CNB 漫游持久化

Hermes Agent on CNB

Hermes Agent 打包为 CNB 云原生开发环境,开箱即用。

Hermes Agent 是什么

Hermes Agent 是由 Nous Research 开发的智能 AI Agent,集成在 CNB 云原生开发环境中,支持代码编写、调试和自主执行。

核心能力:

  • 自主执行 — 内置工具(终端、文件操作、浏览器、代码执行、视觉、Web 搜索等),不只是说话,是真的动手
  • 持久记忆 — 支持跨会话记忆,记住用户偏好和项目上下文
  • 技能系统 — 可自动学习并保存技能,越用越聪明
  • 子代理协作 — 支持派生子代理并行处理复杂任务
  • MCP 集成 — 预配置 CNB MCP 服务器,可直接操作仓库、查阅知识库
  • 云原生开发 — 与 CNB 平台深度集成,一键启动开发环境
  • 双模式运行 — 支持开发调试模式(VS Code)和 Web 终端模式(ttyd)

快速开始

1. 启动开发环境

在仓库页面点击「云原生开发」按钮,环境会自动构建并启动。

使用 docker.cnb.cool/xbotter/hermesagent:latest 镜像,预装 Hermes Agent,支持 VS Code 远程开发。

2. Web 终端

仓库页面还提供「Web 终端」按钮,启动基于 Hermes Agent 的终端环境(ttyd),适用于无 IDE 的轻量交互场景。

配置说明

AI 模型(已预配置)

开发环境启动时,init.sh 会自动将 CNB 平台的 AI 端点注入到配置中,无需手动配置 API Key 和 endpoint。

默认使用 glm-5.1 模型,上下文长度 200K tokens。如需切换模型,编辑 hermes-config.yaml

MCP 服务器(已预配置)

预配置了两个 CNB MCP 服务器,启动时自动注入 CNB Token:

服务器说明
cnbCNB 平台操作(仓库、流水线等),通过 @cnbcool/mcp-server 提供
cnb-knowledgeCNB 知识库查询,默认关联 cnb/feedback 仓库

记忆持久化

通过设置 HERMES_HOME 环境变量指向 CNB 漫游目录(~/.cnb/hermes-data/),所有 Hermes 数据直接存入漫游路径,无需软链接。CNB 的 file-keeper 机制会自动在环境销毁时备份、下次启动时恢复 ~/.cnb/ 目录内容。

持久化的数据:

数据路径说明
配置文件~/.cnb/hermes-data/config.yaml模型、MCP 服务器等配置
环境变量~/.cnb/hermes-data/.envAPI Key 等密钥
长期记忆~/.cnb/hermes-data/memories/MEMORY.md + USER.md
会话历史~/.cnb/hermes-data/sessions/所有对话记录
自学技能~/.cnb/hermes-data/skills/Agent 自动创建的技能
人格设定~/.cnb/hermes-data/SOUL.mdAgent 的身份和风格
会话数据库~/.cnb/hermes-data/state.dbSQLite 会话索引

漫游容量上限 100MB。

仓库上下文

启动时 init.sh 会根据 CNB_REPO_SLUG 自动在 /workspace/.hermes.md 生成仓库上下文,帮助 Agent 理解当前工作环境,避免跨仓库混淆。

Hermes 配置结构

~/.cnb/hermes-data/ ← HERMES_HOME (CNB 漫游目录) ├── config.yaml # 主配置(模型、MCP 服务器、终端、记忆、压缩等) ├── .env # API Key 和密钥 ├── SOUL.md # Agent 人格(系统提示词第一位) ├── state.db # SQLite 会话索引 ├── memories/ # 长期记忆 (MEMORY.md + USER.md) ├── sessions/ # 会话历史 ├── skills/ # 自学技能 ├── cron/ # 定时任务 └── logs/ # 运行日志

启动流程

环境启动时执行以下步骤:

  1. entrypoint.sh — 加载 CNB 环境变量,设置 API Key 和 Base URL
  2. init.sh — 创建 HERMES_HOME 目录结构,生成 .hermes.md 仓库上下文,注入 MCP Token

两种开发模式

两种模式使用同一个 Hermes Agent 镜像,都支持 Hermes 的全部能力:

模式触发方式用途
VS Code 开发云原生开发按钮开发调试,完整 IDE 支持
Web 终端Web 终端按钮轻量终端交互(ttyd)

故障排查

常见问题:

问题解决方案
API Key 无效检查 CNB_TOKEN 是否正确注入:echo $OPENAI_API_KEY
模型不可用编辑 hermes-config.yaml 切换模型
记忆丢失检查 ~/.cnb/hermes-data/ 是否存在且不为空
MCP 服务器不可用检查 hermes mcp list,确认 CNB Token 已注入
HERMES_HOME 未生效检查 echo $HERMES_HOME,应为 /root/.cnb/hermes-data

更多文档

仓库结构

. ├── .cnb.yml # CNB 流水线 + 开发环境配置 ├── .cnb/web_trigger.yml # Web 终端触发按钮配置 ├── Dockerfile # Hermes Agent 镜像构建 ├── hermes-config.yaml # Hermes 预置配置(模型、MCP 服务器等) ├── hermes-env # Hermes 预置环境变量占位 └── docker/ ├── entrypoint.sh # 容器入口,注入 CNB 环境变量 └── init.sh # 初始化脚本(目录结构、仓库上下文、MCP Token)