本文覆盖两个都叫 "Hermes"、都跟 VS Code 联动的开源项目:NASA JPL 的航天测控扩展 与 Nous Research 的 AI 编码助手。所有命令、配置、ID 均来自一手资料。
目录
- [一、序:搜 "Hermes VS Code",你大概率会撞上两个名字](#一、序:搜 “Hermes VS Code”,你大概率会撞上两个名字)
- [二、第一个 Hermes:NASA JPL 航天测控扩展](#二、第一个 Hermes:NASA JPL 航天测控扩展)
- [2.1 核心能力](#2.1 核心能力)
- [2.2 基本信息](#2.2 基本信息)
- [2.3 三种安装方式](#2.3 三种安装方式)
- [2.4 Quick Start:5 步连上飞行软件](#2.4 Quick Start:5 步连上飞行软件)
- [2.5 日常工作流:4 大面板](#2.5 日常工作流:4 大面板)
- [2.6 架构小抄](#2.6 架构小抄)
- [2.7 谁该用?什么场景?](#2.7 谁该用?什么场景?)
- [2.8 踩坑预警](#2.8 踩坑预警)
- [三、第二个 Hermes:Nous Research AI 编码助手](#三、第二个 Hermes:Nous Research AI 编码助手)
- [3.1 三步接入](#3.1 三步接入)
- [3.2 验证环境](#3.2 验证环境)
- [3.3 ACP 模式下能用什么](#3.3 ACP 模式下能用什么)
- [3.4 几个用得上的细节](#3.4 几个用得上的细节)
- [3.5 审批策略:四种粒度](#3.5 审批策略:四种粒度)
- [3.6 可选:浏览器工具](#3.6 可选:浏览器工具)
- [3.7 常见踩坑](#3.7 常见踩坑)
- [3.8 其他编辑器](#3.8 其他编辑器)
- 四、参考资料
一、序:搜 "Hermes VS Code",你大概率会撞上两个名字
"Hermes" 这个名字在 VS Code 生态里至少撞了两次------一个把 VS Code 变成卫星地面站,另一个把 VS Code 变成 Cursor 式的 AI 编程环境。同名不同命,混在一起讲容易误导读者。
为了先帮你建立全景,下面这张对比表值得收藏:
| 维度 | NASA JPL Hermes | Nous Hermes Agent |
|---|---|---|
| 一句话 | 航天器遥测/指令的 VS Code 前端 | AI 编码助手的 VS Code 集成 |
| 用途 | 卫星、机器人、FSW 测控 | 在编辑器里写代码、调工具、流式思考 |
| 发布者 | NASA JPL(喷气推进实验室) | Nous Research |
| VS Code 扩展 | 专属 jet-propulsion-laboratory.hermes |
复用通用 formulahendry.acp-client |
| 通信协议 | 内部后端(Go binary)+ TCP / CCSDS | ACP(Agent Client Protocol),stdio |
| 开源仓库 | github.com/nasa/hermes | hermes-agent(本地安装) |
| 文档站 | nasa.github.io/hermes | 本文第三章附中文指引 |
| 最新版本 | v4.0.10(2026-05-21) | acp 0.16.0 |
下文 第二章 讲第一个(航天测控),第三章 讲第二个(AI 编码)。按需阅读。
二、第一个 Hermes:NASA JPL 航天测控扩展
官方定义:
Hermes is a plugin driven spacecraft telemetry processing and commanding framework built around a variety of mature open-source software.
一句话:把航天器地面站的复杂性藏到 VS Code 后面。
2.1 核心能力
- ✅ VS Code 内置指令系统:自动补全、参数校验、指令分发
- ✅ 遥测数据库:支持多种 DB 后端持久化下行数据
- ✅ 可插拔处理框架:处理飞行软件下行链路
- ✅ 开箱即用支持 F Prime(NASA 自研飞行软件框架,火星探测器/立方星在用)
- ✅ Grafana 集成:做综合监控仪表盘
2.2 基本信息
| 项目 | 内容 |
|---|---|
| 发布者 | Jet Propulsion Laboratory(NASA) |
| 最新版本 | 4.0.10(2026-05-21) |
| 扩展 ID | jet-propulsion-laboratory.hermes |
| F Prime 配套扩展 | jet-propulsion-laboratory.hermes-fprime |
| 价格 | Free |
| 类别 | Visualization |
| 安装量 | ~1,500 |
| VS Code 引擎 | ^1.98.0 |
| 平台 | Windows x64/ARM、macOS Intel/ARM、Linux x64/ARM64 |
| 仓库 | https://github.com/nasa/hermes |
| 文档站 | https://nasa.github.io/hermes/ |
官方提示:项目正从 JPL 内网迁到 GitHub,文档仍在完善中 。README 原文:
"Hermes is currently undergoing migration from our internal deployment to public Github. Documentation is in the works."
2.3 三种安装方式(开发者首选 → 生产运维 → 离线)
Hermes 提供了三种部署形态,按使用场景选择。
2.3.1 VS Code 市场安装(推荐,飞行软件开发者首选)
- 打开 VS Code
- 切到扩展视图:
Ctrl+Shift+X(macOS:Cmd+Shift+X) - 搜索 "Hermes"
- 安装扩展 Hermes (ID:
jet-propulsion-laboratory.hermes) - (可选)安装 Hermes FPrime :
jet-propulsion-laboratory.hermes-fprime
市场链接:marketplace.visualstudio.com/items?itemName=jet-propulsion-laboratory.hermes
包含什么?
- 完整的 VS Code 集成(遥测查看器、指令界面、序列编辑器)
- 后端二进制已捆绑(按平台自动选择)
- 默认启用本地后端模式,开箱即用
🪟 Windows 用户注意 :Windows 构建支持,但后端服务不在 Windows 上跑回归测试。生产建议把 Hermes 后端放在 Linux/macOS 上跑,VS Code 通过远程模式连过去。
2.3.2 独立后端二进制(生产环境 / 任务运维)
适合:测试台架、CI/CD、任务运维、需要多 VS Code 实例共享后端。
bash
# 1. 从 GitHub Releases 下载
# hermes-<version>-<platform>.tar.gz
# 2. 解压
tar -xvf hermes-<version>-<platform>.tar.gz
# 3. 启动后端,监听 6880 端口
./backend --bind-type tcp --bind :6880
然后在 VS Code 里:
- 装好扩展(见 3.1)
- 状态栏底部把连接模式从 Local 切到 Remote
- 设置
hermes.host.url,例如http://0.0.0.0:6880
2.3.3 离线 / CI 环境安装(手动 .vsix)
需要指定版本或离线部署时:
bash
# 从 GitHub Releases 下载两个 .vsix:
# hermes-core-<version>-<platform>.vsix
# hermes-fprime-<version>.vsix # F Prime 支持
code --install-extension hermes-core-<version>-<platform>.vsix
code --install-extension hermes-fprime-<version>.vsix
注意:每个平台专属
.vsix里已经包含了该平台的后端二进制,下载时一定要匹配你的 OS/架构。
2.3.4 源码构建(贡献者 / 二次开发)
需要的环境:
- Go 1.25+
- Node.js 20+
- Yarn
bash
git clone https://github.com/nasa/hermes.git
cd hermes
yarn install
# 一把梭
make all
# 或分开构建
make go # 所有 Go 二进制:backend / uplink / sqlrecord ...
yarn build # VS Code 扩展
构建产物:
- Go 二进制:
out/backend、out/uplink、out/sqlrecord等 - Node 脚本:
out/*.js - VS Code 打包:
src/extensions/out/*.js
2.4 Quick Start:5 步连上飞行软件
官方 Quick Start 是基于 F Prime 编写的,但工作流对其他框架同样适用。本节跟着 fprime-sensors-reference 走一遍。
2.4.1 启动 Hermes 后端(Local Mode)
扩展默认是 offline 模式------没有后端可连。要连飞控,必须先把后端拉起来。
方法:看 VS Code 底部状态栏 的连接项,选 Local Mode。

Local Mode 启动后,VS Code 终端会显示后端日志,用于排错。
Remote Mode 用于把后端部署到测试台架或任务运维服务器上(见 3.2)。
2.4.2 搭建 F Prime 开发环境
bash
git clone --recursive git@github.com:fprime-community/fprime-sensors-reference.git
cd fprime-sensors-reference
# Python 虚拟环境
python3 -m venv fprime-venv
source fprime-venv/bin/activate
pip install -r lib/fprime/requirements.txt
2.4.3 构建飞行软件
bash
cd FprimeSensorsReference/ReferenceDeployment
fprime-util generate
fprime-util build
构建成功后,Hermes 会自动识别生成的字典(dictionary),顶部会出现 rover 面板。
2.4.4 启动 FSW + 创建 Profile
Profile 是 Hermes 后端插件的入口------它定义了"怎么连到某个外部软硬件"。
F Prime 有两种 Profile:
- FPrime Server:Hermes 开 TCP 服务器,等飞控连过来
- FPrime Client:Hermes 主动连飞控的 TCP 服务器
在示例里,fprime-sensors-reference 的 comDriver 是 TcpServer,所以地面用 FPrime Client 反向连过去。
先把飞控跑起来:
bash
build-artifacts/Darwin/FprimeSensorsReference_ReferenceDeployment/bin/FprimeSensorsReference_ReferenceDeployment \
-a 0.0.0.0 -p 8000
然后在 VS Code 里新建 Profile,填好 dictionary 和 protocol,点 ▶ 启动。看到 Profile 变绿------握手成功。
💡 通信协议有两种:
ccsds:行业标准(CCSDS TC Frame 上行 / TM Frame 下行),F Prime 4.1+ 默认fprime:轻量自定义协议,非飞控场景用
2.4.5 用 VSCode Task 一键启动(推荐)
不想每次手动启 FSW + 建 Profile?用 Hermes FPrime 扩展的 task。
Ctrl+Shift+P→Tasks: Run Task- 选
hermes-fprime-deployment - 点击齿轮图标生成
.vscode/tasks.json
示例配置(关键字段已标注):
json
{
"type": "hermes-fprime-deployment",
"title": "FprimeSensorsReference_ReferenceDeployment",
"profileProvider": "FPrime Client", // (1)
"profileSettings": {
"name": "ReferenceDeployment.ReferenceDeployment",
"address": "0.0.0.0:8000",
"dictionary": "ReferenceDeployment.ReferenceDeployment",
"protocol": "ccsds"
},
"fswCommand": "build-artifacts/Darwin/FprimeSensorsReference_ReferenceDeployment/bin/FprimeSensorsReference_ReferenceDeployment -a 0.0.0.0 -p 8000",
"group": "build",
"problemMatcher": [],
"label": "fprime: ReferenceDeployment.ReferenceDeployment: Deploy",
"detail": "Create profile and optionally start FSW for ReferenceDeployment.ReferenceDeployment"
}
(1) 一定要把默认的
FPrime Server改成FPrime Client------本示例里 FSW 才是 TCP 服务器。
之后再跑 Tasks: Run Task,task 会:启动 FSW → 建临时 Profile → 自动连 → 退出时清理。绿了就是通了。
2.5 日常工作流:4 大面板
连上之后,你的 VS Code 多出 3 个面板 (Events、Telemetry、Uplink)和一种特殊文件(.hermes.md Notebook)。
2.5.1 命令 Notebook:.hermes.md
Hermes 用 VS Code Notebooks(类 Jupyter 但底层不是 Jupyter)来组织指令序列,文件后缀是 .hermes.md。
新建 .hermes.md 后,添加代码单元格 ,把语言模式切到 fprime,左下角会出现这条代码单元要发往的连接名。
指令格式:
bash
# 相对时间指令
R[HH]:[MM]:[SS] component.MNEMONIC [args...]
经典握手测试:
bash
R00:00:00 CdhCore.cmdDisp.CMD_NO_OP
点 ▶ 执行单元格------指令逐行下发到飞控,遇到第一条失败就停。执行期间收到的事件会显示在单元格下方。
🔤 字典切换 :Hermes 支持加载多个 dictionary,VSCode 右下角
{}处可切换。FSW 连接后,对应字典会自动选中。
2.5.2 Hermes: Events 面板
VS Code 底部面板里的 Hermes: Events 是所有事件的实时日志流。
| 区域 | 功能 |
|---|---|
| 1. EVR 表格 | 内存中的全部事件 + 过滤 |
| 2. 时间格式 | SCLK(原始星载时钟)/ UTC / Local |
| 3. 严重级别过滤 | 按 Severity 过滤,多 FSW 时还能按 Source 过滤 |
| 4. 消息过滤 | 按消息字符串搜索 |
| 5. Follow | 自动滚到最新事件 |
| 6. Clear Log | 清空内存,长测试时建议定时清 |
2.5.3 Hermes: Telemetry 面板
遥测面板有 两栏:
- Telemetry Table:所有通道的最新值
- Telemetry Plot:勾选 numeric 通道后实时画时序图(最多 10k 样本/通道)

| 区域 | 功能 |
|---|---|
| 1. Table | 最新值 + 过滤 |
| 2. Plot Select | 勾选画图 |
| 3. Plot | 时序图 |
| 4. Legend | min/max/last,点可临时隐藏 |
| 5. 时间格式 | SCLK/UTC/Local |
| 6. Source 过滤 | 多 FSW 时按 component/name 过滤 |
| 7. Clear Data | 清内存(每个通道上限 ~10k 样本) |
| 8. Screenshot | 把图渲染成图片 |
| 9. Interpolation Mode | 线性/平滑/最近 |
| 10. Time Window | 相对当前时间的时间窗 |
📊 内置 plot 只是临时调试用,做综合 dashboard 推荐接 Grafana。
2.5.4 文件传输:Uplink & Downlink
通用模型:发送方发起传输。
2.5.4.1 Uplink(Hermes 主动)
VS Code rover 面板 里的 Uplink pane:
- 点 ➕ 加文件 → 填目标路径 → 自动开始上行
- 完成后文件旁会出现 ✅

⚠️ 流控:Hermes 默认按物理链路的极限速度上行,飞控可能扛不住。生产中建议中间加 relay 限速。
2.5.4.2 Downlink(FSW 主动)
Hermes 本身不主动 发起下行,FSW 通常用类似 FileHandling.fileDownlink.SendFile 的命令触发。Hermes 负责接收并追踪缺失/损坏的片段。
下行完成后的产物(默认在 workspace 的 .hermes/ 目录):
<fsw>-<timestamp>-.<ext>:实际文件<fsw>-<timestamp>-.<ext>.md.pb:protobuf 格式的元数据
2.6 架构小抄
┌─────────────────────────────────────────────────┐
│ VS Code Frontend (Hermes Extension) │
│ ┌─────────┐ ┌─────────┐ ┌──────────────────┐ │
│ │ .hermes │ │ Events │ │ Telemetry │ │
│ │ Notebook│ │ Panel │ │ Panel + Plot │ │
│ └────┬────┘ └────┬────┘ └────────┬─────────┘ │
│ └───────────┼───────────────┘ │
└───────────────────┼─────────────────────────────┘
│ WebSocket / TCP
┌───────────────────┼─────────────────────────────┐
│ Hermes Backend (Go binary, local or remote) │
│ ┌────────────────▼──────────────────┐ │
│ │ Plugin: FPrime Client / Server │ │
│ └────────────────┬──────────────────┘ │
│ │ CCSDS / fprime framing │
└───────────────────┼─────────────────────────────┘
│ TCP socket / radio / UART
┌───────────────────▼─────────────────────────────┐
│ Flight Software (F Prime on board) │
└─────────────────────────────────────────────────┘
三种部署形态的关系:
- 开发:VSCode 扩展内置 local 后端,TCP 直连 FSW(跑在同一台机器或局域网)
- 测试台架:后端部署在测试机,多个 VSCode 远程连同一后端
- 任务运维:后端 + 遥测数据库 + Grafana 构成完整地面系统
2.7 谁该用?什么场景?
✅ 适合:
- NASA / JPL 飞行软件团队
- 用 F Prime 做学术/商业航天项目(立方星、小卫星、探测器)
- 机器人 / UAV 等需要遥测+指令链路的嵌入式系统
- 教学场景:低成本演示"航天器怎么测控"
❌ 不太适合:
- 没有 FSW 的人------没有飞控连,Hermes 只是个空壳
- 想要开箱即用商业级 ground system------文档不全,需要自己摸索
- Windows-only 生产部署------官方建议后端跑 Linux/macOS
2.8 踩坑预警
- Windows 后端:能跑但没回归测试覆盖率,生产用建议 Linux/macOS
- 文档不全:项目还在从内网迁 GitHub,文档"in the works",可能踩到未写明的坑
- Uplink 速率:默认满速,FSW 扛不住需要自己加流控
- Telemetry 内存:每个通道上限 10k 样本,长测试记得 Clear Data
- F Prime 版本:4.1+ 才默认 ccsds,老项目可能是 fprime framing
三、第二个 Hermes:Nous Research AI 编码助手
这个 Hermes 跟第二章那个完全没关系------它是 Nous Research 出品的 AI 编码助手 (Hermes Agent),通过 ACP(Agent Client Protocol) 在 VS Code 里跑:VS Code 当客户端(装 ACP Client 扩展),Hermes 当 ACP server(hermes acp 进程),用 stdio 通信。装好之后体验跟 Cursor / Continue 类似------消息、工具调用、文件 diff、终端、审批 prompt、流式思考都渲染在编辑器里。
3.1 三步接入
① 装 VS Code 扩展
VS Code 市场装 ACP Client (formulahendry.acp-client)------这是 Hermes Agent 复用的官方 ACP 客户端。
② 配置 Hermes Agent
打开 VS Code 设置(Ctrl+,),搜 acp.agents,加这段 JSON:
json
{
"acp.agents": {
"Hermes Agent": {
"command": "hermes",
"args": ["acp"]
}
}
}
Windows 上
hermesCLI 默认在C:\Users\<user>\AppData\Local\hermes\hermes-agent\venv\Scripts\hermes。如果 VS Code 进程的 PATH 找不到,可以把command改成绝对路径。
③ 连接 & 开聊
- 左侧活动栏点 ACP Client 图标
- agent 下拉框选 Hermes Agent
- 点击连接,开始对话
3.2 验证环境
任何时候想确认 ACP 能不能跑:
bash
hermes acp --version # 应输出形如 0.16.0
hermes acp --check # 应输出 "Hermes ACP check OK"
hermes doctor
hermes status
如果模型 provider 没配,会提示缺凭据------跑 hermes model 走一遍交互式设置,或编辑 ~/.hermes/.env。
3.3 ACP 模式下能用什么
Hermes 在 ACP 模式用的是一个为编辑器场景精简过的 hermes-acp 工具集:
| 类别 | 工具 |
|---|---|
| 文件 | read_file / write_file / patch / search_files |
| 终端 | terminal / process |
| 网页 | 浏览器自动化(browser_navigate / browser_click 等) |
| 记忆 | memory / todo / session_search |
| 高级 | skills / execute_code / delegate_task / vision |
有意去掉了消息投递、cronjob 管理这类"不适合编辑器 UX"的功能。
3.4 几个用得上的细节
| 事项 | 行为 |
|---|---|
| 工作目录 | 绑定到 VS Code 当前 workspace,而不是 hermes 进程的 cwd |
| 配置共享 | ~/.hermes/.env、~/.hermes/config.yaml、~/.hermes/skills/、~/.hermes/state.db 都跟 CLI 共享 |
| 流式渲染 | 聊天、工具活动、文件 diff、终端、审批 prompt、流式思考块都直接在 VS Code 内显示 |
| 会话隔离 | list/load/resume/fork 只在当前 ACP server 进程内有效,重启进程会重置 |
3.5 审批策略:四种粒度
危险命令会弹回 VS Code 让用户选,比 CLI 多一档"会话级":
| 选项 | 范围 | 重启后 |
|---|---|---|
allow_once |
单次工具调用 | 不持久 |
allow_session |
当前 ACP 会话内所有匹配调用 | 不持久(会话结束清空) |
allow_always |
所有未来会话 | 写入 Hermes 永久允许列表 |
deny |
单次拒绝 | 不持久 |
推荐默认值 :不熟悉的命令先 allow_once;看到 agent 多次以同样模式正确执行,再升级到 allow_session;allow_always 只给真正幂等的命令(git status 之类)。
3.6 可选:浏览器工具
ACP 模式下的浏览器自动化依赖 agent-browser npm 包 + Chromium(不在 Python wheel 里)。首次使用前:
bash
hermes acp --setup-browser # 交互式,会提示确认 ~400 MB 下载
hermes acp --setup-browser --yes # 非交互式
引导脚本会幂等地:
- 装 Node.js 22 LTS 到
~/.hermes/node/(如果缺) - 装
agent-browser和@askjo/camofox-browser到该前缀(不需要 sudo) - 装 Playwright Chromium,或复用系统已有的 Chrome / Chromium
3.7 常见踩坑
| 现象 | 排查 |
|---|---|
| 扩展里看不到 Hermes Agent | 确认 hermes 在 PATH、ACP 扩展装好 |
| 启动立刻报错 | hermes acp --version → --check → hermes doctor → hermes status |
| 缺凭据 | hermes model 配 provider |
| Zed registry 启动器报找不到 uv | 安装 uv 后重启 Hermes Agent 线程 |
3.8 其他编辑器
| 编辑器 | 接入方式 |
|---|---|
| Zed | v0.221.x+ 通过官方 ACP Registry 安装外部 agent,搜"Hermes Agent";或 Zed settings 里手写 agent_servers 指向 hermes acp |
| JetBrains | 装 ACP 兼容插件,把路径指向 acp_registry/ 目录 |
四、参考资料
-
扩展市场:https://marketplace.visualstudio.com/items?itemName=jet-propulsion-laboratory.hermes
-
GitHub 仓库:https://github.com/nasa/hermes
-
Installation:https://nasa.github.io/hermes/getting-started/installation/
-
Quick Start:https://nasa.github.io/hermes/getting-started/quick-start/
-
Workflow:https://nasa.github.io/hermes/getting-started/workflow/
-
F Prime:https://github.com/nasa/fprime
-
F Prime JPL:https://fprime.jpl.nasa.gov
-
Grafana:https://grafana.com
-
CCSDS TC Frame:https://ccsds.org/Pubs/232x0b4e1c1.pdf
-
CCSDS TM Frame:https://ccsds.org/Pubs/132x0b3.pdf
-
ACP 中文文档:
hermes-agent/website/i18n/zh-Hans/docusaurus-plugin-content-docs/current/user-guide/features/acp.md -
ACP Client 扩展:
formulahendry.acp-client -
Agent Client Protocol:
https://github.com/agentclientprotocol/registry
如果觉得有用,欢迎点赞 / 收藏 / 评论三连。有问题或者想看哪部分深挖,留言告诉我~