{/* This page is auto-generated from the skill's SKILL.md by website/scripts/generate-skill-docs.py. Edit the source SKILL.md, not this page. */}
Actual Setup
在 Hermes 中配置 Actual Computer (actual.inc) 推理。
Skill 元数据
| 来源 | 可选——使用 hermes skills install official/devops/actual-setup 安装 |
| 路径 | optional-skills/devops/actual-setup |
| 版本 | 2.0.0 |
| 作者 | shl0ms + Hermes Agent |
| 许可证 | MIT |
| 平台 | linux, macos, windows |
| 标签 | actual, actual-inc, provider, local-inference, relay, gguf, setup |
参考:完整 SKILL.md
INFO
以下是 Hermes 在触发此 skill 时加载的完整 skill 定义。这是 skill 激活时 agent 所看到的指令内容。
Actual Computer 配置 Skill
将 actual.inc(Actual Computer)配置为 Hermes 的推理提供商。Actual 会把用户自己的硬件变成一个私有推理集群,并通过两种方式暴露 OpenAI 兼容的 API:一个托管的端到端加密中继 https://api.actual.inc(使用 ac_ 密钥认证),以及一个本地设备端守护进程 http://127.0.0.1:8080(环回地址无需认证)。本 skill 不会替用户安装 Actual 守护进程——设备授权需要真人在浏览器中完成。
使用时机
- 用户想把 actual.inc 添加为推理提供商(云中继或本地)。
- 用户已有
ac_密钥,想让 Hermes 经由自己的 Actual 集群路由。 - 用户想通过 Actual 守护进程实现完全本地、设备端的推理。
- 故障排查:Actual 请求报出含义不明的 400 或空流。
前提条件
- Hermes 对
actual提供商提供一等支持(provider id 为actual,别名actual-computer、actualcomputer、aci)。在当前版本的 Hermes 上,不要把 Actual 配置为custom_providers/providers.actual.*条目——内置提供商已占用该名称,并自动处理 base-url 规范化、Responses 传输和本地免认证。 - 中继模式:需要一个 Actual 账户,以及从 https://actual.inc/user/keys 获取的
ac_推理密钥。 - 本地模式:用户已安装守护进程(
curl -fsSL "https://actual.inc/install" | bash),并通过运行一次actual、在浏览器中打开打印出的https://actual.inc/device?code=...URL 完成了设备授权。把该 URL 转发给用户并等待——切勿编造邮箱或代其授权。授权码 5 分钟后过期;重新运行actual获取新码。
运行方式
中继 / API 模式
- 把密钥放进
.env(仅放机密——绝不要放进 config.yaml): 在~/.hermes/.env末尾追加ACTUAL_API_KEY=ac_...。 - 用
terminal校验密钥并发现模型:curl -s https://api.actual.inc/v1/models -H "Authorization: Bearer $ACTUAL_API_KEY" - 选择提供商 + 模型:
hermes config set model.provider actual hermes config set model.default "MODEL_ID_FROM_DISCOVERY" - 端到端验证:
hermes chat -Q -q "Reply with exactly: ACTUAL_OK" --provider actual -m MODEL_ID
本地模式
- 真人已安装并授权守护进程(见前提条件)。
- 下载并加载模型(授权后即可脚本化执行):
actual models search "qwen2.5 0.5b instruct gguf" --limit 8 --no-prompt # 下载必须显式指定量化(否则会报 409 ambiguous_model_download): actual models download "Qwen/Qwen2.5-0.5B-Instruct-GGUF/Q4_K_M" actual models list # 记下已安装名称(与下载 id 不同) actual models load "qwen2.5-0.5b-instruct-q4_k_m" # 按已安装名称加载 - 让 Hermes 指向守护进程。当
ACTUAL_BASE_URL的主机为环回地址时,内置提供商会自动切换为本地免认证模式——无需密钥:在~/.hermes/.env末尾追加ACTUAL_BASE_URL=http://127.0.0.1:8080,然后:hermes config set model.provider actual hermes config set model.default "INSTALLED_MODEL_NAME" - 验证(缩减工具集——见下方上下文窗口陷阱):
hermes chat -Q -q "Reply with exactly: LOCAL_OK" --provider actual -m INSTALLED_NAME -t file,web
快速参考
| 项目 | 值 |
|---|---|
| 托管中继 | https://api.actual.inc/v1(裸主机名会自动规范化) |
| 本地守护进程 | http://127.0.0.1:8080/v1(环回地址免认证) |
| 密钥环境变量 | ACTUAL_API_KEY(ac_...) |
| Base URL 环境变量 | ACTUAL_BASE_URL(环回主机 ⇒ 本地免认证模式) |
| 提供商 id / 别名 | actual / actual-computer、actualcomputer、aci |
| 传输协议 | Responses API(codex_responses)——内置,勿覆盖 |
| 集群固定 | 在 config.yaml 中通过 providers.actual.extra_headers 设置 X-Cluster-ID 请求头 |
| 模型体积参考 | 0.5B Q4_K_M 约 470MB(玩具级),7-8B Q4_K_M 约 4.5GB(日常主力),32B 约 20GB |
常见陷阱
- reasoning_effort 陷阱(一等提供商已处理)。 Actual 的 SGLang/vLLM 后端只接受
none/low/medium/high/max;xhigh/ultra过去会报出含义不明的Expecting value: line 1 column 1 (char 0)(包装后的 HTTP 400)。内置提供商在传输层把xhigh→high、ultra→max做了钳制。若在旧版 Hermes 上仍因此出现 400,可按模型设置上限:在 config.yaml 中配置agent.reasoning_overrides.<model>: high。 - 小型本地模型的上下文窗口溢出。 Hermes 默认工具集约 26k token 的 schema,外加约 9k token 的系统提示词。一个以 32k 上下文加载的模型在第一轮对话前就会溢出,而 llama.cpp 系服务器只会发出一个裸
data: [DONE]——Hermes 会报Provider returned an empty stream with no finish_reason。这不是 SSE 的 bug。解决办法:限制工具(-t file,web)、用更大的n_ctx加载模型,或为完整工具集选择 ≥64k 上下文的模型。上游跟踪:#51448(勿新建 issue,在该 issue 补充证据)。相关但不同的问题:#65631(带 400 的 HTTP-200 SSE)、#56516(仅推理流)。 - 下载 id 与已安装名称的区别。
actual models download接受repo/QUANT,未显式指定量化会报 409;actual models load接受actual models list中显示的已安装名称。 - 推理型模型返回空内容。 GLM/Qwen 推理变体把思考过程放在单独的
reasoning字段里,可能把少量max_tokens全部消耗在推理上。在判定失败前,先给足 max_tokens。 - 不要创建名为
actual的自定义提供商。 较早的配置指南(一等支持之前)写的是providers.actual.*配置块。在当前 Hermes 上,内置提供商占用该名称;过时的自定义块会被忽略或产生冲突。删除它们,改用上面的环境变量 + model.provider 流程。
验证
# 中继:
hermes chat -Q -q "Reply with exactly: ACTUAL_OK" --provider actual -m MODEL
# 本地(小模型——缩减工具集):
hermes chat -Q -q "Reply with exactly: LOCAL_OK" --provider actual -m MODEL -t file,web
# 提供商状态(本地免认证会显示 key_source=local-offline):
hermes status
其他 OpenAI 兼容客户端(如 OpenCode)的用法,见 references/opencode.md。