Here.Now
将静态站点发布到 {slug}.here.now,并将私有文件存储在云盘(Drives)中,以便智能体之间进行交接。
技能元数据
| 来源 | 可选 — 使用 hermes skills install official/productivity/here-now 安装 |
| 路径 | optional-skills/productivity/here-now |
| 版本 | 1.15.3 |
| 作者 | here.now |
| 许可证 | MIT |
| 平台 | macos, linux |
| 标签 | here.now, herenow, publish, deploy, hosting, static-site, web, share, URL, drive, storage |
参考:完整 SKILL.md
以下是 Hermes 在触发此技能时加载的完整技能定义。这是技能激活时智能体看到的指令。
here.now
here.now 允许智能体发布网站并将私有文件存储在云盘(Drives)中。
使用 here.now 执行两项任务:
- 站点(Sites):在
{slug}.here.now发布网站和文件。 - 云盘(Drives):将私有智能体文件存储在云文件夹中。
当前文档
在回答有关 here.now 功能、特性或工作流的问题之前,请阅读当前文档:
阅读文档的时机:
- 在对话中首次进行与 here.now 相关的交互时
- 当用户询问如何执行某项操作时
- 当用户询问哪些功能是可能的、受支持的或推荐的时候
- 在告知用户某项功能不受支持之前
需要查阅当前文档的主题(不要仅依赖本地技能文本):
- 云盘(Drives)和云盘共享
- 自定义域名
- 支付和支付网关
- 分叉(forking)
- 代理路由和服务变量
- 句柄(handles)和链接
- 限制和配额
- SPA 路由
- 错误处理和修复
- 功能可用性
如果文档与实时 API 行为不一致,请以实时 API 行为为准。
如果文档获取失败或超时,请继续使用本地技能和实时 API/脚本输出。对于活跃操作,优先采用实时 API 行为。
要求
- 必需二进制文件:
curl,file,jq - 可选环境变量:
$HERENOW_API_KEY - 可选云盘令牌变量:
$HERENOW_DRIVE_TOKEN - 可选凭据文件:
~/.herenow/credentials - 技能辅助脚本路径:
${HERMES_SKILL_DIR}/scripts/publish.sh用于发布站点${HERMES_SKILL_DIR}/scripts/drive.sh用于私有云盘存储
创建站点
PUBLISH="${HERMES_SKILL_DIR}/scripts/publish.sh"
bash "$PUBLISH" {file-or-dir} --client hermes
输出实时 URL(例如 https://bright-canvas-a7k2.here.now/)。
底层这是一个三步流程:创建/更新 -> 上传文件 -> finalize(最终化)。只有 finalize 成功后,站点才会上线。
如果没有 API 密钥,这将创建一个匿名站点,该站点将在 24 小时后过期。 如果保存了 API 密钥,站点将是永久性的。
文件结构: 对于 HTML 站点,请将 index.html 放在要发布的目录根目录下,而不是子目录中。目录的内容将成为站点根目录。例如,发布 my-site/,其中存在 my-site/index.html — 不要发布包含 my-site/ 的父文件夹。
你也可以发布没有任何 HTML 的原始文件。单个文件会获得丰富的自动查看器(图片、PDF、视频、音频)。多个文件会获得自动生成的目录列表,包含文件夹导航和图片画廊。
更新现有站点
PUBLISH="${HERMES_SKILL_DIR}/scripts/publish.sh"
bash "$PUBLISH" {file-or-dir} --slug {slug} --client hermes
更新匿名站点时,脚本会自动从 .herenow/state.json 加载 claimToken。传递 --claim-token {token} 以覆盖。
经过身份验证的更新需要保存的 API 密钥。
使用云盘(Drive)
当用户希望为智能体文件提供私有云存储时使用云盘:文档、上下文、记忆、计划、资产、媒体、研究、代码以及任何其他应持久保存但不作为网站发布的内容。
每个登录账户都有一个名为 My Drive 的默认云盘。
DRIVE="${HERMES_SKILL_DIR}/scripts/drive.sh"
bash "$DRIVE" default
bash "$DRIVE" ls "My Drive"
bash "$DRIVE" put "My Drive" notes/today.md --from ./notes/today.md
bash "$DRIVE" cat "My Drive" notes/today.md
bash "$DRIVE" share "My Drive" --perms write --prefix notes/ --ttl 7d
使用 scoped 云盘令牌进行智能体之间的交接。如果你收到一个 herenow_drive 共享块,请使用其 token 作为针对 api_base 的 Authorization: Bearer <token>,在存在 pathPrefix 时尊重它,并在写入时保留 ETags。pathPrefix 为 null 表示完全访问云盘。如果该技能可用,优先使用 drive.sh;否则直接调用列出的 API 操作。
API 密钥存储
发布脚本从以下来源读取 API 密钥(首次匹配生效):
--api-key {key}标志(仅用于 CI/脚本 — 避免在交互式使用中使用)$HERENOW_API_KEY环境变量~/.herenow/credentials文件(推荐用于智能体)
要存储密钥,请将其写入凭据文件:
mkdir -p ~/.herenow && echo "{API_KEY}" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
重要:收到 API 密钥后,请立即保存 — 自行运行上述命令。不要要求用户手动运行它。避免在交互式会话中通过 CLI 标志(例如 --api-key)传递密钥;凭据文件是首选的存储方法。
切勿将凭据或本地状态文件(~/.herenow/credentials, .herenow/state.json)提交到源代码控制中。
获取 API 密钥
要从匿名(24小时)站点升级为永久站点:
- 询问用户的电子邮件地址。
- 请求一次性登录代码:
curl -sS https://here.now/api/auth/agent/request-code \
-H "content-type: application/json" \
-d '{"email": "user@example.com"}'
- 告知用户:“请检查您的收件箱,查找来自 here.now 的登录验证码,并将其粘贴到此处。”
- 验证验证码并获取 API 密钥:
curl -sS https://here.now/api/auth/agent/verify-code \
-H "content-type: application/json" \
-d '{"email":"user@example.com","code":"ABCD-2345"}'
- 自行保存返回的
apiKey(不要要求用户执行此操作):
mkdir -p ~/.herenow && echo "{API_KEY}" > ~/.herenow/credentials && chmod 600 ~/.herenow/credentials
状态文件
每次创建或更新站点后,脚本会将数据写入工作目录中的 .herenow/state.json:
{
"publishes": {
"bright-canvas-a7k2": {
"siteUrl": "https://bright-canvas-a7k2.here.now/",
"claimToken": "abc123",
"claimUrl": "https://here.now/claim?slug=bright-canvas-a7k2&token=abc123",
"expiresAt": "2026-02-18T01:00:00.000Z"
}
}
}
在创建或更新站点之前,您可以检查此文件以查找先前的 slug。
仅将 .herenow/state.json 视为内部缓存。
切勿将此本地文件路径作为 URL 呈现,也切勿将其用作身份验证模式、过期时间或认领 URL 的真实来源。
如何告知用户
对于已发布的站点:
- 始终分享当前脚本运行生成的
siteUrl。 - 阅读并遵循脚本标准错误输出(stderr)中的
publish_result.*行以确定身份验证模式。 - 当
publish_result.auth_mode=authenticated时:告知用户该站点是永久性的并已保存到其账户中。无需认领 URL。 - 当
publish_result.auth_mode=anonymous时:告知用户该站点将在 24 小时后过期。分享认领 URL(如果publish_result.claim_url非空且以https://开头),以便他们可以永久保留该站点。警告用户认领令牌仅返回一次,无法恢复。 - 切勿告知用户检查
.herenow/state.json以获取认领 URL 或身份验证状态。
对于 Drives:
- 不要将 Drive 文件描述为公共 URL。
- 告知用户,除非通过 scoped token 共享,否则 Drive 内容是私有的。
- 在与另一个 agent 共享访问权限时,优先使用具有狭窄
pathPrefix和短 TTL 的 scoped token。
publish.sh 选项
| 标志 | 描述 |
|---|---|
--slug {slug} | 更新现有站点而非创建新站点 |
--claim-token {token} | 覆盖匿名更新的认领令牌 |
--title {text} | 查看器标题(非 HTML 站点) |
--description {text} | 查看器描述 |
--ttl {seconds} | 设置过期时间(仅限已认证) |
--client {name} | 用于归属的 Agent 名称(例如 hermes) |
--base-url {url} | API 基础 URL(默认:https://here.now) |
--allow-nonherenow-base-url | 允许向非默认的 --base-url 发送身份验证请求 |
--api-key {key} | 覆盖 API 密钥(优先使用凭证文件) |
--spa | 启用 SPA 路由(为未知路径提供 index.html) |
--forkable | 允许其他人 fork 此站点 |
超出 publish.sh 范围
对于 Drive 操作,请使用 drive.sh 或 Drive API。对于更广泛的账户和站点管理——删除、元数据、密码、支付、域名、句柄、链接、变量、代理路由、fork、复制等——请参阅当前文档: