@crvouga/mockingbird-service-hermes

中文文档
1.11.0发布于 2026/11/11MITTypeScriptES Module构建来源已验证近 30 天下载 3040

Hermes 同行运行的 API 模拟器带有可移植脚本的生命周期控制.

中文使用文档
文档目录12 节
  1. 安装
  2. 使用量
  3. 路线和控制
  4. API 密码
  5. 脚本运行
  6. A. 同上文的提交和合成范围
  7. 停止和逻辑重新启动
  8. 保留和历史
  9. 过失和消费者情况
  10. 故意不模拟
  11. HTTP 重放实例
  12. 核查和证据

@crvouga/ mockingbird-service-hermes (英语)

本地模拟器。 真正的API合同. 部分 嘲笑鸟。 。 。 .

Hermes代理公司公共同行运营的API在建模拟器 v2026.8.31提交、投票和停止工作,同时明确进行合成生命周期观察. 事件、批准和引导仍然得不到支持。 没有代理或推论运行. API 证据.md 记录来源支持的语义和空白; 支助 记录当前操作支持.

安装

bun add @crvouga/mockingbird-service-hermes

使用量

import { createServer } from "@crvouga/mockingbird-service-hermes/server"

// Test setup: the emulator on an ephemeral loopback port.
const server = await createServer({ seed: 42 })

// Application code: the peer HTTP client's base URL is server.url.
const baseUrl = server.url
const accepted = await fetch(`${baseUrl}/v1/runs`, {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({ input: "synthetic prompt" }),
})
console.log(await accepted.json()) // { run_id, status: "started", replayed: false }
await server.close()

使用便携式 HermesAPI 仅供供应商使用. createRuntime 添加健康、 命名空间、 管理控制、 断层、 时钟、 度量器、 仅元数据 并共享时间线检查站。 它不需要赫尔墨斯安装, 提供者账户,即时数据,API密钥,或本地服务. 没有听众, createRuntime().fetch(request) 服务于相同过程中的路径.

管理员控制共享源 :

import { createServer } from "@crvouga/mockingbird-service-hermes/server"

const server = await createServer() // ephemeral loopback port
try {
  console.log(await (await fetch(`${server.url}/__admin/health`)).json())
} finally {
  await server.close()
}

CLI是: 校对: mockingbird-hermes serve --port 8827。指向 HTTP 客户端的基础 URL 时间 http://127.0.0.1:8827;在执行队列直到脚本时立即提交返回. 节点条目与可移植获取条目是分开的.

路线和控制

POST /v1/runs 承认逃跑 GET /v1/runs/{run_id} 民意调查. POST /v1/runs/{run_id}/stop 请求中断。 活动、核准和引导 返回一个只使用模拟器的501个信封 error.type 联 合 国 mockingbird_unsupported 财务报告和审定财务报表 error.code 联 合 国 operation_not_implemented。 。 。 . 丢失的运行使用被绑 run_not_found 404号信封. 返回未知路径 404. 只有模拟器的错误并不声称有真正的Hermes拒绝行为.

  • GET /__admin/health 识别 hermes 运行时间.
  • 选择孤立的命名空间 x-mockingbird-namespace 或者说 /__admin/ns/<name>/…。 。 。 .
  • POST /__admin/reset 清除选中的提供者状态和时间线。 共享时钟, 断层和诊断期刊保留其标准的独立寿命.
  • POST /__admin/clock 控制共享时钟.
  • POST /__admin/faults 配置范围操作/路径/方法故障规则; DELETE /__admin/faults 清除他们。 命名为 Hermes 的预设在下面记录 .
  • GET /__admin/requests 显示请求的元数据, 查询值 或全权证书. DELETE /__admin/requests 清除选定的诊断历史.
  • POST /__admin/checkpoints 抓取共享的时间线状态 。 通过检查 POST /__admin/branches/<name>/checkout 与 { "checkpoint": "cp_…" }。 。 。 .

现有共享 adminKey 选项控制管理员访问。 没有基于证书的 名称空间映射或 Hermes 提供者认证逻辑被引入.

API 密码

便携式进口:

  • HermesAPI: 提供者 fetch 财务报告和审定财务报表 reset,带有命名空间并共享 SQLite 存储.
  • HERMES_NAMESPACE: 默认存储命名空间, hermes。 。 。 .
  • createRuntime:标准服务运行时间和共享控制.
  • document:附加说明的OpenAPI合同.
  • operationIds:所有清点操作.
  • supportedOperationIds数字 : RunCreate, (中文(简体) ), RunGet,以及 RunStop。 。 。 .

只有节点 /server 条目导出 :

  • createServer: 返回 runtime, (中文(简体) ), server, (中文(简体) ), url, (中文(简体) ), host, (中文(简体) ), port,以及 close。 。 。 .
  • DEFAULT_PORT: CLI默认为8827;程序调用默认为麻黄口.
  • serveTarget:共享 CLI 服务器目标.

类型包括: HermesAPIOptions, (中文(简体) ), HermesRuntime, (中文(简体) ), HermesRuntimeOptions, (中文(简体) ), OperationId, (中文(简体) ), SupportedOperationId, (中文(简体) ), HermesServer,以及 HermesServerOptions。 。 。 . 可执行文件 mockingbird-hermes 提供 serve。 。 。 .

脚本运行

import { createServer } from "@crvouga/mockingbird-service-hermes/server"

const server = await createServer({ seed: 42 })
const baseUrl = server.url
const json = { "content-type": "application/json" }

// Application code: submit a run.
const accepted = await fetch(`${baseUrl}/v1/runs`, {
  method: "POST",
  headers: json,
  body: JSON.stringify({ input: "synthetic prompt" }),
})
const { run_id } = (await accepted.json()) as { run_id: string }

// Test control: script the outcome. No agent runs, so nothing moves until you do.
await fetch(`${baseUrl}/__admin/hermes/runs/${run_id}/observe`, {
  method: "POST",
  headers: json,
  body: JSON.stringify({ status: "completed", output: "synthetic result" }),
})

// Application code: poll the run.
const status = await fetch(`${baseUrl}/v1/runs/${run_id}`)
console.log(await status.json())
await server.close()

入学返回 { run_id, status: "started", replayed: false }存储 状态开始于 queued重复投票不会推进执行或时间. 在提交、观察和投票时使用相同的命名空间。 可选 session_id 缺勤或虚伪时默认运行的ID. model 默认为 hermes-agent 仅当不存在时; 保留明确的无效或空值, 如 在被钉住的操纵器里。 一个有效的 X-Hermes-Session-Key 被反射而不产生 对话 ID 或认证证书。 模式路由和记录 没有模拟。 ID是决定性不透明六分弦,与会话分开.

观察控制器接受 status数字 : queued, (中文(简体) ), running, (中文(简体) ), waiting_for_approval, (中文(简体) ), stopping, (中文(简体) ), completed, (中文(简体) ), failed, (中文(简体) ), cancelled,或 interrupted它接受可选 last_event· ; approval 只在等待的时候; error 仅用于失败/中断 output, (中文(简体) ), usage, (中文(简体) ), pending_steer 仅限 已完成。 用法有三种非负整数: input_tokens, (中文(简体) ), output_tokens, (中文(简体) ), total_tokens。完成默认为空输出和零计数. 终端观测不能改变(409);无效的控制有效载荷返回400 不改变状态。 这些是模拟器控制,而不是额外的赫尔墨斯路线.

时间戳为Unix秒从共享时钟. 运行记录及其身份 序列使用共享存储和时间线;重置后清除. 没有计时器, 代理 手柄或提示被存储。 投票结果内容不在日记. 根部/最后输入元素、主机室和无效内存镜头 目前返回明确的模拟器只501个响应。 见这些限度的证据.

A. 同上文的提交和合成范围

发送 Idempotency-Key 准备送货 相同的复试返回 202 与 原始运行的ID,其当前状态, replayed: true,以及 Idempotency-Replayed: true。带有相同范围密钥返回的已改变的有效载荷 409个 idempotency_key_conflict。同时期相同的请求保留一次运行. 空/ 空白密钥禁止分解; 其他密钥必须包含 1–255 可见 Python风格修饰后的ASCII字符. 校验错误不保留任何内容 .

指纹覆盖了整个解剖的JSON尸体, 包括未知的字段, 被修剪的 X-Hermes-Session-Key。对象密钥顺序无关紧要;数组 顺序和会话/体位的更改。 原始整数/浮取形式跟随 Python : 1 财务报告和审定财务报表 1.0 冲突, 1.0 财务报告和审定财务报表 1e0 重放, 负浮零不同 从正零。 Lone Unicode 代词返回一个明确的仿真器,只返回 501; Python 无法将 UTF-8 编码为指纹 .

POST /__admin/hermes/scope 与 { "profile": "synthetic-profile", "identity": "synthetic-listener" } 在 当前的鸟类命名空间。 默认为 default 财务报告和审定财务报表 unauthenticated-test-listener。只使用合成标签,不使用证书. 改变范围将保留地和公共投票隔开;恢复范围 进入它的运行。 会话ID和内存密钥不是范围选择器,而且 无记名文本被忽略 。 此控制不执行认证 .

保留地和拥有地在重建 HermesAPI 同样的 SQLite客户端和命名空间. 终端重播在建模后进行校验 适配器重建. 实际进程/磁盘耐久性和未完成的重新启动 模拟结果的是下面明确的重新启动控制。 共享 时间线恢复了范围,保留并一起运行记录;重新设置清除. 没有添加公共密钥搜索端点 。 请求体被用散列来记忆和 - 存储的保留包含关键、散列、运行身份和持久观察.

停止和逻辑重新启动

POST /v1/runs/{run_id}/stop 返回 200 { run_id, status: "stopping" } 页:1 当地积极工作。 重复的停止请求保持中间状态。 使用 observe 脚本最终结果 : cancelled 对于承认中断, completed 当正常完成赢得比赛时,或 failed 用于执行失败. 停止终端运行返回其完全不变状态,而不是重新取消 . 丢失或无法进入的运行返回 404 run_not_found。 。 。 .

POST /__admin/hermes/restart 与 { "owner": "stale" } 模型损失 当前命名空间的网关。 它丢弃缓存的观测结果, 并保留幸存的可持久键 该名称空间中所有合成剖面的保留。 未完成的按键 运行成为 interrupted 当下一次调查、重播或停止时 The gateway restarted before this run settled. 财务报告和审定财务报表 run.interrupted。 。 。 . 其创建时间戳保持不变;其更新时间戳反映了第一个 观察。 终端运行保留其状态和结果. 重试旧货 键重放被中断的运行; 新键创建了不同的运行.

使用 { "owner": "alive" } 在网关替换后模拟另一个现场主人. 密钥观察保持不变, 但停止未完成的外国工作返回 409个 run_not_active明确 observe 能代表主人的终极 已完成。 无论是读取 PID 、 中断一个真正的进程, 还是运行一个代理 . 这是合乎逻辑的假设,而不是过程/磁盘耐久性保证。 共享时间线 恢复所有者旗并运行/保留状态.

保留和历史

受控时钟管辖两个独立的保留层. 缓存 completed, (中文(简体) ), failed 财务报告和审定财务报表 cancelled 更新年龄越大的结果过期 1小时以上;平等生存 interrupted 除外。 模拟器评价 在无背景的情况下,在进入或观察时扫描了60秒 进程. POST /__admin/hermes/sweep 与 {} 明确执行一次扫描 当前时钟, 返回 cacheRemoved 财务报告和审定财务报表 simulated: true。 。 。 .

键入式终端预订仅在其持久更新年龄严格时到期 超过24小时。 有效的按键录入触发了这种干扰,包括 请求随后发生冲突。 投票和没有钥匙的录取并不严格 持久行. 积极的保留从不因年龄而过期。 投票可以恢复一个 缓存拆迁后保留耐用结果,甚至超过24小时; 缓存结果也可能暂时超过其被挤压的保留。 缺少结果 返回普通的 404 run_not_found,没有发明过期状态.

相同状态进度观测更新缓存时间戳,但不持久 新的进度有效载荷,除非选定的可持久域发生变化。 逻辑重启 清除缓存的观测结果和水合物,仅能幸存持久行. 时间线 恢复两层,所有权,扫描时间表和控制的时钟. 这些是共享存储和逻辑重起保障,而不是进程崩溃或磁盘 耐久之证. SSE缓冲器和主机房保留仍留在子集外.

过失和消费者情况

使用 POST /__admin/faults 与 { "preset": "hermes_submit_accepted_drop" } 改为 接受一次新的运行,失去反应。 共享日记记录接受和 其检查站,尽管交货失败。 重试同一体和独能键 以恢复原运行。 校验失败仍然返回正常错误 .

其他一发预设是: hermes_poll_timeout (推迟一次民意测验 1 000 ms), hermes_throttled (429带有被绑定的默认容量信封),以及 hermes_draining (503与被钉入排水口袋). 两种拒绝预设 包含 Retry-After: 1 并跑在录取前。 这些是明确的设想; 它们不会自动计算容量或模拟真正的排水网关. 要脚本执行器失败, 请使用 observe 与 status: "failed" 合成 error 文本,然后投票或重播相同的运行.

节点HTTP消费者固定器拥有一次性服务器并使用独立的 HTTP 客户端可以测试丢失的响应,重播,投票,停止,客户端最后期限和 过期。 它不进口 " 倡议 " 或强制实行消费者再试验政策。 财产 比较合格的同行业务和坚持覆盖范围 注入有计划的有效生命周期差异,以测试参照国。 自我平等是 一致性证据,而不是独立的 Hermes 运行时兼容性索赔.

故意不模拟

提示、指示和历史经过验证后被丢弃. 合成结果文本可以通过观测控制来存储并被重置来清除. Kanban尝试,客户接收/回收政策,推断,Python调度员, 不包括主机工具执行和证书执行。 没有出口 网络用户、服务商或代理程序。 公共同行管理身份证将保留 与消费者摄取量和Kanban身份无关.

原始证据不是运行时间均等。 包/共享控制测试没有建立 与真实的Hermes进程兼容。 选入 被钉住的甲骨文 单独通过33个有记录的公开HTTP 比较,包括新进程 SQLite 重新启动;其替换和 限制仍然是明确的。 保持这个包WIP,直到满足独立的就绪要求.

HTTP 重放实例

开始 mockingbird-hermes serve --port 8827,然后提交合成投递:

curl -sS http://127.0.0.1:8827/v1/runs \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: example-delivery' \
  -d '{"input":"synthetic prompt"}'

重复相同的请求返回相同的 run_id 和重播标题. 票价 GET /v1/runs/<run_id>; 请求中断使用 POST /v1/runs/<run_id>/stop停止反应是中间的。 填写 假设 POST /__admin/hermes/runs/<run_id>/observe使用 JSON 机体 例如 { "status": "cancelled" }然后再次投票。 只使用合成输入 和结果数据。 不需要Python调度器或Kanban集成.

核查和证据

包裹还在 妇女6个库存业务中有3个得到支持; SSE事件、核准执行和引导仍然排除在外。 运出 甲骨文指南, (中文(简体) ), 源代码表,以及 记录的比较 制作准确的上游针 和可检查的替代物。 仅在单独授权后运行预告 其依赖性、可支配数据库和处理操作。 普通包装测试 不需要这些业务或供应商证书.

从此仓库运行 bun test packages/service/hermes 和包裹的 typecheck, (中文(简体) ), lint, (中文(简体) ), generate:check, (中文(简体) ), openapi:check, (中文(简体) ), build, (中文(简体) ), portability 财务报告和审定财务报表 pack:check 剧本. 根号 bun run check 还验证目录和生成 文档新鲜度。 文件目录游乐场使用相同的便携式 运行时间;其状态为本地到浏览器.

版本与发布记录

@crvouga/mockingbird-service-hermes 共发布 22 个版本,首次发布于 2026/10/05;过去 12 个月发布了 22 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
1.11.0latest2026/11/11今天
1.10.92026/11/038 天前
1.10.82026/11/038 天前
1.10.72026/11/038 天前
1.10.62026/11/038 天前
1.10.52026/11/038 天前

关于 @crvouga/mockingbird-service-hermes 的常见问题

@crvouga/mockingbird-service-hermes 是什么?

Hermes 同行运行的 API 模拟器带有可移植脚本的生命周期控制.

如何安装 @crvouga/mockingbird-service-hermes?

在项目目录运行 npm install @crvouga/mockingbird-service-hermes,或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mockingbird-hermes,可以用 npx mockingbird-hermes 直接运行。

@crvouga/mockingbird-service-hermes 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@crvouga/mockingbird-service-hermes 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@crvouga/mockingbird-service-hermes 可以商用吗?

@crvouga/mockingbird-service-hermes 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@crvouga/mockingbird-service-hermes 的下载量有多少?

根据 npm 官方下载统计,@crvouga/mockingbird-service-hermes 在 2026/10/11 – 2026/11/09 这 30 天内被下载 3,040 次,日均约 101 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@crvouga/mockingbird-service-hermes 还在维护吗?

最新版本 1.11.0 发布于 2026/11/11(今天);至今共发布 22 个版本,其中过去 12 个月发布了 22 个;首次发布于 2026/10/05。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。