Hermes × VS Code 完全指南:从 NASA 航天测控到 Nous AI 编码助手

本文覆盖两个都叫 "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 市场安装(推荐,飞行软件开发者首选)
  1. 打开 VS Code
  2. 切到扩展视图:Ctrl+Shift+X(macOS:Cmd+Shift+X
  3. 搜索 "Hermes"
  4. 安装扩展 Hermes (ID:jet-propulsion-laboratory.hermes
  5. (可选)安装 Hermes FPrimejet-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 里:

  1. 装好扩展(见 3.1)
  2. 状态栏底部把连接模式从 Local 切到 Remote
  3. 设置 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/backendout/uplinkout/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-referencecomDriverTcpServer,所以地面用 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。

  1. Ctrl+Shift+PTasks: Run Task
  2. hermes-fprime-deployment
  3. 点击齿轮图标生成 .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.1 Uplink(Hermes 主动)

VS Code rover 面板 里的 Uplink pane:

  1. 点 ➕ 加文件 → 填目标路径 → 自动开始上行
  2. 完成后文件旁会出现 ✅

⚠️ 流控:Hermes 默认按物理链路的极限速度上行,飞控可能扛不住。生产中建议中间加 relay 限速。

2.5.4.2 Downlink(FSW 主动)

Hermes 本身不主动 发起下行,FSW 通常用类似 FileHandling.fileDownlink.SendFile 的命令触发。Hermes 负责接收并追踪缺失/损坏的片段。

下行完成后的产物(默认在 workspace 的 .hermes/ 目录):

  1. <fsw>-<timestamp>-.<ext>:实际文件
  2. <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 踩坑预警

  1. Windows 后端:能跑但没回归测试覆盖率,生产用建议 Linux/macOS
  2. 文档不全:项目还在从内网迁 GitHub,文档"in the works",可能踩到未写明的坑
  3. Uplink 速率:默认满速,FSW 扛不住需要自己加流控
  4. Telemetry 内存:每个通道上限 10k 样本,长测试记得 Clear Data
  5. 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 Clientformulahendry.acp-client)------这是 Hermes Agent 复用的官方 ACP 客户端。

② 配置 Hermes Agent

打开 VS Code 设置(Ctrl+,),搜 acp.agents,加这段 JSON:

json 复制代码
{
  "acp.agents": {
    "Hermes Agent": {
      "command": "hermes",
      "args": ["acp"]
    }
  }
}

Windows 上 hermes CLI 默认在 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_sessionallow_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--checkhermes doctorhermes 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/ 目录

四、参考资料


如果觉得有用,欢迎点赞 / 收藏 / 评论三连。有问题或者想看哪部分深挖,留言告诉我~