Compare commits

...
16 changed files with 26 additions and 26 deletions
+2 -2
View File
@@ -14,7 +14,7 @@ Every event Hub accepts is recorded, whether or not it ran anything. That record
**Project → Activity** lists routed trigger runs and their execution state.
**Connections → Known unrouted events** is the organization-level view of accepted provider events that did not start a configured trigger. Hub records one of four bounded reasons:
**Integrations → Known unrouted events** is the organization-level view of accepted provider events that did not start a configured trigger. Hub records one of four bounded reasons:
| Reason | Meaning |
| --------------------------- | ------------------------------------------------------------ |
@@ -27,7 +27,7 @@ Every event Hub accepts is recorded, whether or not it ran anything. That record
Work down this list.
1. **Is the event in the project's Activity?** If not, check **Connections → Known unrouted events** and use its reason to distinguish routing, source, filter, and configuration failures.
1. **Is the event in the project's Activity?** If not, check **Integrations → Known unrouted events** and use its reason to distinguish routing, source, filter, and configuration failures.
2. **Is the event anywhere at all?** If not, the event never reached Hub. Check the provider's own delivery log: GitHub's App → Advanced → Recent Deliveries, or Slack's Event Subscriptions page. Then check that the app is subscribed to that event type.
3. **Is your user in `from_users`?** This is the most common cause. GitHub uses your login; Slack and Discord use the user ID, not the display name. See [find your Slack IDs](/docs/hub/triggers/slack#find-your-slack-ids) and [find your Discord IDs](/docs/hub/triggers/discord#find-your-discord-ids).
4. **Did the invocation match?** On GitHub, `contains` must appear in the comment body. On Slack and Discord the bot must be mentioned, and `pattern` or its legacy `contains` alias must prefix the text after the mention.
+2 -2
View File
@@ -12,7 +12,7 @@ Hub 接受的每个事件都会被记录,无论它是否运行了任何内容
**Project → Activity** 列出已路由的触发器运行及其执行状态。
**Connections → Known unrouted events** 是组织级视图,列出已接受但没有启动任何已配置触发器的 Provider 事件。Hub 会记录以下四种原因之一:
**Integrations → Known unrouted events** 是组织级视图,列出已接受但没有启动任何已配置触发器的 Provider 事件。Hub 会记录以下四种原因之一:
| 原因 | 含义 |
| --------------------------- | -------------------------------------------- |
@@ -25,7 +25,7 @@ Hub 接受的每个事件都会被记录,无论它是否运行了任何内容
按这个列表逐项排查。
1. **事件是否出现在项目的 Activity 中?** 如果没有,请查看 **Connections → Known unrouted events**,根据其中的原因区分路由、来源、过滤器和配置方面的失败。
1. **事件是否出现在项目的 Activity 中?** 如果没有,请查看 **Integrations → Known unrouted events**,根据其中的原因区分路由、来源、过滤器和配置方面的失败。
2. **事件是否出现在任何地方?** 如果没有,说明事件从未到达 Hub。请查看 Provider 自己的投递日志:GitHub 的 App → Advanced → Recent Deliveries,或 Slack 的 Event Subscriptions 页面。然后确认应用订阅了该事件类型。
3. **你的用户是否在 `from_users` 中?** 这是最常见的原因。GitHub 使用你的登录名;Slack 和 Discord 使用用户 ID,而不是显示名称。参见[查找 Slack ID](/docs/hub/triggers/slack#find-your-slack-ids) 和[查找 Discord ID](/docs/hub/triggers/discord#find-your-discord-ids)。
4. **调用是否匹配?** 在 GitHub 上,评论正文中必须出现 `contains`。在 Slack 和 Discord 上,必须提及机器人,并且提及之后的文本必须以 `pattern`(或其旧别名 `contains`)开头。
+2 -2
View File
@@ -18,7 +18,7 @@ Each organization trigger is one self-contained YAML file. Keep triggers in your
## Generated starter trigger
Run `paseo hub init` from the repository the agent should work in. Setup selects an app connection and an available agent runtime, asks which user may trigger it, validates the result, and writes one file. It then asks whether to deploy. Interactive `paseo hub login` connects the daemon and points to this command; it does not write trigger files.
Run `paseo hub init` from the repository the agent should work in. Setup selects an integration connection and an available agent runtime, asks which user may trigger it, validates the result, and writes one file. It then asks whether to deploy. Interactive `paseo hub login` connects the daemon and points to this command; it does not write trigger files.
For a Slack connection named `my-team`, the generated document looks like this:
@@ -56,7 +56,7 @@ run:
required: true
```
`connection` is the app connection's slug in your organization. `target.daemon` is the connected daemon's slug and `target.cwd` is the absolute directory where you ran setup. `agent` contains the provider, model, and execution mode you selected from the daemon. The mode is required.
`connection` is the integration connection's slug in your organization. `target.daemon` is the connected daemon's slug and `target.cwd` is the absolute directory where you ran setup. `agent` contains the provider, model, and execution mode you selected from the daemon. The mode is required.
`continuation.mode: conversation` keeps follow-ups in the same provider conversation on the same agent. The prompt asks the agent to reply and then call `hub.finish_execution`; replying alone does not finish the execution.
+2 -2
View File
@@ -16,7 +16,7 @@ nav: 配置
## 生成的起步触发器 {#generated-starter-trigger}
在 Agent 要工作的仓库中运行 `paseo hub init`。设置流程会选择一个应用连接和一个可用的 Agent 运行时,询问哪个用户可以触发它,校验结果并写入一个文件,然后询问是否部署。交互式的 `paseo hub login` 会连接 daemon 并提示你运行这条命令;它不会写入触发器文件。
在 Agent 要工作的仓库中运行 `paseo hub init`。设置流程会选择一个集成连接和一个可用的 Agent 运行时,询问哪个用户可以触发它,校验结果并写入一个文件,然后询问是否部署。交互式的 `paseo hub login` 会连接 daemon 并提示你运行这条命令;它不会写入触发器文件。
对于名为 `my-team` 的 Slack 连接,生成的文档如下:
@@ -54,7 +54,7 @@ run:
required: true
```
`connection` 是应用连接在你组织中的 slug。`target.daemon` 是已连接 daemon 的 slug,`target.cwd` 是你运行设置流程时所在的绝对目录。`agent` 包含你从 daemon 中选择的 Provider、模型和执行模式。模式是必填的。
`connection` 是集成连接在你组织中的 slug。`target.daemon` 是已连接 daemon 的 slug,`target.cwd` 是你运行设置流程时所在的绝对目录。`agent` 包含你从 daemon 中选择的 Provider、模型和执行模式。模式是必填的。
`continuation.mode: conversation` 让后续请求在同一个 Agent 的同一段 Provider 对话中进行。提示词要求 Agent 先回复,再调用 `hub.finish_execution`;只回复并不会结束执行。
+1 -1
View File
@@ -75,7 +75,7 @@ paseo hub permissions grant hub.execute
paseo hub permissions revoke hub.execute
```
Until it is granted, Hub keeps the daemon for identity and presence only. The Daemons page shows it as **Connected only** with the grant command, and Home's checklist reads **Cannot run agents**. [Hub security](/docs/hub/security#choose-daemon-authority) covers what the permission allows once granted.
Until it is granted, Hub keeps the daemon for identity and presence only. The Daemons page shows it as **Connected only** with the grant command, and Home's checklist says the daemon cannot run agents yet. [Hub security](/docs/hub/security#choose-daemon-authority) covers what the permission allows once granted.
## Reference it from configuration
+1 -1
View File
@@ -73,7 +73,7 @@ paseo hub permissions grant hub.execute
paseo hub permissions revoke hub.execute
```
在授予之前,Hub 只把该 daemon 用于身份和在线状态。Daemons 页面会把它显示为 **Connected only** 并给出授权命令,Home 清单会显示 **Cannot run agents**。授予后该权限允许做什么,见 [Hub 安全](/docs/hub/security#choose-daemon-authority)。
在授予之前,Hub 只把该 daemon 用于身份和在线状态。Daemons 页面会把它显示为 **Connected only** 并给出授权命令,Home 清单会提示该 daemon 还无法运行 Agent。授予后该权限允许做什么,见 [Hub 安全](/docs/hub/security#choose-daemon-authority)。
## 在配置中引用它 {#reference-it-from-configuration}
+1 -1
View File
@@ -10,6 +10,6 @@ category: Hub
[Paseo Hub](https://hub.paseo.sh) is the managed service. Create an account and your organization starts on the Free plan: one seat, a monthly allowance of agent runs, no card, and no expiry. Upgrade to Pro from **Billing** in Hub when you want unlimited runs, more seats, or invitations. The [Hub page](/hub) carries the current price and the figures each plan includes.
Signing in opens **Home**, the same four-step checklist the [quickstart](/docs/hub/quickstart) walks through: connect an app, connect a daemon, create a trigger, run it.
Signing in opens **Home**, the same four-step checklist the [quickstart](/docs/hub/quickstart) walks through: connect an integration, connect a daemon, create a trigger, run it.
To start now, [run Hub yourself](/docs/hub/self-hosting). Projects, configuration, triggers, daemons, and activity use the same model in both forms. The managed service owns its GitHub App, Slack app, and Discord application; a self-hosted Hub uses apps you create and control, and has no plans or billing at all.
+1 -1
View File
@@ -8,6 +8,6 @@ nav: 托管版
[Paseo Hub](https://hub.paseo.sh) 是托管服务。创建账号后,你的组织从 Free 套餐开始:一个席位、每月一定额度的 Agent 运行次数,无需绑卡,也不会过期。需要无限次运行、更多席位或邀请成员时,在 Hub 的 **Billing** 中升级到 Pro。[Hub 页面](/hub)列出了当前价格以及各套餐包含的额度。
登录后会打开 **Home**,也就是[快速开始](/docs/hub/quickstart)中走过的四步清单:连接一个应用、连接一个 daemon、创建一个触发器、运行它。
登录后会打开 **Home**,也就是[快速开始](/docs/hub/quickstart)中走过的四步清单:连接一个集成、连接一个 daemon、创建一个触发器、运行它。
想现在就开始,可以[自己运行 Hub](/docs/hub/self-hosting)。两种形式中的项目、配置、触发器、daemon 和活动使用相同的模型。托管服务拥有自己的 GitHub App、Slack 应用和 Discord 应用;自托管的 Hub 使用你自己创建和控制的应用,并且完全没有套餐或计费。
+1 -1
View File
@@ -36,7 +36,7 @@ Your daemons keep running agents where they always did. Hub decides when to ask
└── slack-help.yml
```
The file names the app connection, allowed user, daemon, working directory, agent runtime, prompt, and outputs. Setup validates it and asks whether to deploy. Mentioning the bot then starts an agent on your machine. [Quickstart](/docs/hub/quickstart) runs it end to end; the [generated starter trigger](/docs/hub/configuration#generated-starter-trigger) shows what setup wrote.
The file names the integration connection, allowed user, daemon, working directory, agent runtime, prompt, and outputs. Setup validates it and asks whether to deploy. Mentioning the bot then starts an agent on your machine. [Quickstart](/docs/hub/quickstart) runs it end to end; the [generated starter trigger](/docs/hub/configuration#generated-starter-trigger) shows what setup wrote.
## Reading order
+1 -1
View File
@@ -34,7 +34,7 @@ daemon 在一台机器上为你运行 Agent。Paseo Hub 是位于 daemon 之上
└── slack-help.yml
```
这个文件指定了应用连接、允许的用户、daemon、工作目录、Agent 运行时、提示词和输出。设置流程会校验它并询问是否部署。之后提及机器人,就会在你的机器上启动一个 Agent。[快速开始](/docs/hub/quickstart)完整地跑通了这个过程;[生成的起步触发器](/docs/hub/configuration#generated-starter-trigger)展示了设置流程写入的内容。
这个文件指定了集成连接、允许的用户、daemon、工作目录、Agent 运行时、提示词和输出。设置流程会校验它并询问是否部署。之后提及机器人,就会在你的机器上启动一个 Agent。[快速开始](/docs/hub/quickstart)完整地跑通了这个过程;[生成的起步触发器](/docs/hub/configuration#generated-starter-trigger)展示了设置流程写入的内容。
## 阅读顺序 {#reading-order}
+4 -4
View File
@@ -22,8 +22,6 @@ Open the address it prints, normally <http://localhost:3000>, and create the ope
The first run needs no database, Docker, environment variables, or API keys. Hub creates an embedded database and your organization.
Hub opens **Home**, a checklist of the four things that have to be true before a mention starts an agent: connect an app, connect a daemon, create a trigger, run it. The steps below are those four. Home derives each one from what your organization actually has, prints the command the next step needs, and collapses once all four are done.
## 2. Connect Slack
**Set up your apps** explains how to create the Slack app and gives you a manifest to paste into Slack. Keep **Socket Mode** selected. It connects out from Hub and needs no public address or HTTPS.
@@ -48,6 +46,8 @@ Run it on the machine where your code lives, in the repository the agent should
Approve the login in the browser tab that opens. Leave the Hub tab open: it watches for the daemon and shows **Daemon connected** by itself. Choose **Continue** when the daemon is connected.
Hub opens **Home** with four **Get started** steps: **Connect an integration**, **Connect a daemon**, **Create a trigger**, and **Run it**. The first unfinished step shows a hint and an action. Completed steps show a check and their result; later steps show only their title. The checklist collapses once all four are done.
## 4. Create the starter trigger
After approving login, answer **Yes** to **Connect this daemon to Paseo Hub?** and **Allow Hub automations to run agents on this daemon?**. Execution permission defaults to no, so enable it explicitly for this setup. If you answered no, Home shows the daemon as connected but unable to run agents, with the command that fixes it: `paseo hub permissions grant hub.execute`.
@@ -58,7 +58,7 @@ Then run:
paseo hub init
```
Choose **Custom endpoint** and confirm `http://localhost:3000`. Setup reuses your login and daemon connection, then lists the app connections ready for this trigger. With one Slack workspace connected, it selects that connection automatically. With several usable connections, choose the **Trigger connection**. If none is ready, setup sends you to **Hub → Apps** and stops before selecting an agent or writing files.
Choose **Custom endpoint** and confirm `http://localhost:3000`. Setup reuses your login and daemon connection, then lists the integration connections ready for this trigger. With one Slack workspace connected, it selects that connection automatically. With several usable connections, choose the **Trigger connection**. If none is ready, setup sends you to **Hub → Apps** and stops before selecting an agent or writing files.
| Question | What it wants |
| --------------------------------------- | --------------------------------------------------------------------------------------------- |
@@ -68,7 +68,7 @@ Choose **Custom endpoint** and confirm `http://localhost:3000`. Setup reuses you
Providers must expose a selectable model and execution mode. If there is no default mode, choose the one the agent should use. Hub runs agents unattended, so it accepts only Claude, Codex, and OpenCode, and it checks the model, mode, and options against your daemon before deploying. Another provider, or a value the daemon does not offer, is refused here rather than at the first run.
[Find your Slack IDs](/docs/hub/triggers/slack#find-your-slack-ids) explains how to copy your member ID. The Slack workspace comes from the selected app connection.
[Find your Slack IDs](/docs/hub/triggers/slack#find-your-slack-ids) explains how to copy your member ID. The Slack workspace comes from the selected connection.
Setup validates the trigger and writes:
+4 -4
View File
@@ -20,8 +20,6 @@ npx @getpaseo/hub
首次运行不需要数据库、Docker、环境变量或 API key。Hub 会创建内嵌数据库和你的组织。
Hub 会打开 **Home**,这是一份清单,列出了提及能够启动 Agent 之前必须满足的四件事:连接一个应用、连接一个 daemon、创建一个触发器、运行它。下面的步骤就是这四件事。Home 会根据你的组织实际拥有的内容判断每一项,打印下一步需要的命令,并在四项全部完成后收起。
## 2. 连接 Slack {#2-connect-slack}
**Set up your apps** 说明了如何创建 Slack 应用,并提供一份可以粘贴到 Slack 中的 manifest。保持选择 **Socket Mode**。它由 Hub 主动向外连接,不需要公开地址或 HTTPS。
@@ -46,6 +44,8 @@ paseo hub login http://localhost:3000
在打开的浏览器标签页中批准登录。保持 Hub 标签页打开:它会监测 daemon,并自动显示 **Daemon connected**。daemon 连接后,选择 **Continue**。
Hub 会打开 **Home**,其中的 **Get started** 包含四个步骤:**Connect an integration**、**Connect a daemon**、**Create a trigger** 和 **Run it**。第一个未完成的步骤会显示提示和操作。已完成的步骤会显示勾选标记和结果,后续步骤只显示标题。四项全部完成后,清单会收起。
## 4. 创建起步触发器 {#4-create-the-starter-trigger}
批准登录后,对 **Connect this daemon to Paseo Hub?** 和 **Allow Hub automations to run agents on this daemon?** 都回答 **Yes**。执行权限默认为否,因此请为本次设置显式开启。如果你回答了否,Home 会显示 daemon 已连接但无法运行 Agent,并给出修复命令:`paseo hub permissions grant hub.execute`。
@@ -56,7 +56,7 @@ paseo hub login http://localhost:3000
paseo hub init
```
选择 **Custom endpoint** 并确认 `http://localhost:3000`。设置流程会复用你的登录和 daemon 连接,然后列出可用于此触发器的应用连接。如果只连接了一个 Slack 工作区,它会自动选择该连接。如果有多个可用连接,请选择 **Trigger connection**。如果没有任何连接就绪,设置流程会把你引导到 **Hub → Apps**,并在选择 Agent 或写入文件之前停止。
选择 **Custom endpoint** 并确认 `http://localhost:3000`。设置流程会复用你的登录和 daemon 连接,然后列出可用于此触发器的集成连接。如果只连接了一个 Slack 工作区,它会自动选择该连接。如果有多个可用连接,请选择 **Trigger connection**。如果没有任何连接就绪,设置流程会把你引导到 **Hub → Apps**,并在选择 Agent 或写入文件之前停止。
| 问题 | 需要填写的内容 |
| ---------------------------------- | -------------------------------------------------------------------------- |
@@ -66,7 +66,7 @@ paseo hub init
Provider 必须提供可选择的模型和执行模式。如果没有默认模式,请选择 Agent 应该使用的模式。Hub 以无人值守的方式运行 Agent,因此只接受 Claude、Codex 和 OpenCode,并会在部署前根据你的 daemon 检查模型、模式和选项。其他 Provider,或 daemon 不提供的值,会在这里就被拒绝,而不是等到第一次运行。
[查找 Slack ID](/docs/hub/triggers/slack#find-your-slack-ids) 说明了如何复制你的成员 ID。Slack 工作区来自所选的应用连接。
[查找 Slack ID](/docs/hub/triggers/slack#find-your-slack-ids) 说明了如何复制你的成员 ID。Slack 工作区来自所选的集成连接。
设置流程会校验触发器并写入:
+1 -1
View File
@@ -44,4 +44,4 @@ Leading declared inputs follow the mention. Hub exposes the remaining text as `$
Turn on **Settings → Advanced → Developer Mode**, then right-click to **Copy Server ID** for `guild`, **Copy Channel ID** for `channels`, and **Copy User ID** for `from_users`. All three are numeric snowflakes; quote them so YAML keeps them as strings.
[Guided setup](/docs/hub/quickstart) fills `guild` from the Discord app you connected and asks you for your user ID.
[Guided setup](/docs/hub/quickstart) selects the Discord connection and asks for your user ID. The connection limits the trigger to that server.
+1 -1
View File
@@ -42,4 +42,4 @@ Discord 过滤器使用 ID,而不是服务器名称、显示名称或 Hub 连
打开 **Settings → Advanced → Developer Mode**,然后右键选择 **Copy Server ID** 获取 `guild`,**Copy Channel ID** 获取 `channels`,**Copy User ID** 获取 `from_users`。三者都是数字 snowflake;请加上引号,让 YAML 把它们当作字符串。
[引导式设置](/docs/hub/quickstart)会根据你连接的 Discord 应用填好 `guild`,并询问你的用户 ID。
[引导式设置](/docs/hub/quickstart)会选择 Discord 连接,并询问你的用户 ID。该连接会将触发器限制在对应的服务器。
+1 -1
View File
@@ -54,4 +54,4 @@ Hub consumes consecutive declared headers and exposes the remainder as `${{ pase
| `from_users` | Your avatar → **Profile** → **⋮** → **Copy member ID**. Member IDs start with `U`. |
| `channels` | Channel name → **About**. The channel ID is at the bottom of the panel and starts with `C`. |
[Guided setup](/docs/hub/quickstart) fills `workspace` from the Slack app you connected and asks you for your member ID, so a generated starter already carries both.
[Guided setup](/docs/hub/quickstart) selects the Slack connection and asks for your member ID. The connection limits the trigger to that workspace.
+1 -1
View File
@@ -52,4 +52,4 @@ Hub 会读取连续的已声明头部,并把剩余部分作为 `${{ paseo.prom
| `from_users` | 你的头像 → **Profile** → **⋮** → **Copy member ID**。成员 ID 以 `U` 开头。 |
| `channels` | 频道名称 → **About**。频道 ID 位于面板底部,以 `C` 开头。 |
[引导式设置](/docs/hub/quickstart)会根据你连接的 Slack 应用填好 `workspace`,并询问你的成员 ID,因此生成的起步配置已经包含这两项。
[引导式设置](/docs/hub/quickstart)会选择 Slack 连接,并询问你的成员 ID。该连接会将触发器限制在对应的工作区。