> For the complete documentation index, see [llms.txt](https://tinyhumans.gitbook.io/openhuman/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://tinyhumans.gitbook.io/openhuman/zh/gong-neng/hosting.md).

# 托管

把一个工作区文件夹放到互联网上：部署站点、设置数据库、配置环境变量、绑定域名并回滚。

代理可以将你工作区中的一个文件夹发布为一个线上网站；如果应用需要，还可以在后端配上数据库。可以在聊天中提出请求。部署就像其他工具调用一样，而不可逆的操作会经过 [审批门](/openhuman/zh/gong-neng/approval-gate.md).

{% hint style="info" %}
目前只有 Vercel 这一个提供商。设计上不绑定任何提供商，Railway、Cloudflare 和自托管目标都已列入计划，但其他方案目前都还不能用。
{% endhint %}

## 代理可以做什么

| 工具                          | 效果                                            |
| --------------------------- | --------------------------------------------- |
| `hosting_launch_site`       | 将工作区目录部署为一个线上网站。它还可以设置数据库并进行连接、设置环境变量，以及绑定域名。 |
| `hosting_deployment_status` | 构建是否已完成。                                      |
| `hosting_list_deployments`  | 某个网站最近的部署记录，按最新优先排序，包含状态和目标。                  |
| `hosting_deployment_logs`   | 某次部署的构建和运行时日志事件。                              |
| `hosting_rollback`          | 将生产环境指回一个更早且已构建完成的部署。                         |
| `hosting_list_sites`        | 该账户下的网站。                                      |
| `hosting_set_env`           | 为现有网站设置环境变量。                                  |
| `hosting_add_domain`        | 绑定一个自定义域名。                                    |
| `hosting_domain_status`     | 网站的域名是否已验证并正在提供服务。                            |
| `hosting_analytics`         | 过去 N 天的流量。                                    |

一次发布按唯一可行的顺序执行五个步骤：先创建网站，再创建数据库，在构建前连接数据库，设置环境，然后构建。任何在构建时读取环境变量的框架，若顺序不同都会出问题。该调用会在构建仍在运行时返回，因此代理会轮询 `hosting_deployment_status` 并且不会阻塞。

有回滚，但没有单独的 promote，因为回滚本身就是把较旧的部署提升为当前版本。它会拒绝从未完成构建的部署。提升一个失败的构建会让网站下线，而你还得再把它恢复。

## 它不会做什么

* **读取密钥。** 提供商会把托管数据库的连接字符串注入到网站的环境中。OpenHuman 只会知道变量名，而不会知道其值。这就是为什么一次发布会报告 `DATABASE_URL` 而不是一个 URL。
* **部署你没有命名的东西。** 目录检查会拒绝绝对路径、一个 `..` 越界路径，以及任何不是目录的内容。这里是决定哪些内容可以离开你机器的唯一位置，而一次部署会上传其所给文件夹下的每一个字节。

## 设置方法

```toml
[hosting]
provider = "vercel"
api_key = ""        # 留空以读取提供商自己的环境变量
team = ""           # 留空表示你的个人账户
```

使用 `api_key` 留空时，凭据来自 `TINYHOSTS_VERCEL_TOKEN`，然后 `VERCEL_TOKEN`。团队账户还会读取 `TINYHOSTS_VERCEL_TEAM_ID` 或 `VERCEL_TEAM_ID`.

`[components] hosting` 是 `true` 默认启用，并且是唯一的开关；旧版的 `[hosting] enabled = false` 会被一次性迁移为 `[components] hosting = false` 中查看并删除条目（见 [组件](/openhuman/zh/kai-fa/components.md)）。当它关闭，或者找不到任何凭据时，这十个工具根本不会注册。存在但不能工作的工具比缺失的工具更糟，因为模型会不断重试它。

配置错误的部分会作为错误记录，而不会被静默跳过。这意味着提供商名称未知，或者某个键在去掉空白后为空。保留 `api_key = ""` 是受支持的做法，用来交由提供商的环境变量处理，并不算配置错误。

## 另请参见

* [云端部署](/openhuman/zh/gong-neng/cloud-deploy.md)：托管 OpenHuman 核心本身，这是另一回事。
* [审批门控](/openhuman/zh/gong-neng/approval-gate.md)：一次部署如何获得你的确认。
* [Coder](/openhuman/zh/gong-neng/native-tools/coder.md)：在发布前先把东西构建好。
