查看 Markdown

Hub 中的 daemon

daemon 是你的一台运行 Paseo daemon 的机器。把它注册到你的 Hub 组织一次,之后触发器就可以引用它。

连接

先在这台机器上登录:

paseo hub login https://hub.example.com

CLI 会打印一个 URL 和一个验证码,并打开你的浏览器。批准后的登录保存在 PASEO_HOME 下。

在交互式终端中,登录流程会询问是否连接这个 daemon,并单独询问是否允许 Hub 自动化在其上运行 Agent。连接默认为是;执行权限默认为否。之后它会给出 Triggers 的链接,并打印 paseo hub init,用于以代码形式创建起步触发器。--json 或非 TTY 的登录只会登录。快速开始完整地介绍了连接和初始化。

如果你之前拒绝了连接,或者这台机器已经登录过,可以单独注册 daemon:

paseo hub connect

connect 使用当前的登录请求一个一次性的注册 token。daemon 用它换取自己的关系凭据;你的 CLI 登录永远不会被保存为 daemon 的权限。

Hub 根据 daemon 的主机名生成它的初始 slug。如果该 slug 在组织中已被使用,Hub 会添加一个简短的 daemon ID 后缀。你之后可以在 Hub 中重命名 daemon。

每个 daemon 有两个标识符:一个不可变的生成 ID 和一个友好的 slug。Hub 会把 slug 规范化为用连字符连接的小写单词,因此 Build Studio 会变成 build-studio。控制台显示的、配置中引用的都是 slug。

你可以稍后修改 slug,而不改变 daemon ID。如果在某个配置生效后重命名,就需要更新该配置。

对于无人值守的设置,传入组织 API key 而不保存它:

PASEO_HUB_URL=https://hub.example.com PASEO_HUB_API_KEY=paseo_pk_... paseo hub connect

地址的优先级依次为:显式的 [origin]、PASEO_HUB_URL、当前保存的登录,最后是 https://hub.paseo.sh。显式的 --api-key <secret> 优先于环境变量和与地址完全一致的已保存登录。

查看与撤销:

paseo hub status
paseo hub disconnect
paseo hub disconnect --force   # drop local authority when Hub is unreachable

一个 daemon 只有一个 Hub 关系。连接一个已有关系的 daemon 会被拒绝。

paseo hub logout 会移除当前的 CLI 登录。daemon 的关系是一个独立的身份,会保持连接。

在交互式终端中,退出登录时会询问是否断开注册到同一 Hub 的 daemon。如果接受,会先断开连接再删除登录,因此断开失败时你的凭据会保留。如果拒绝,只移除登录。

非交互式和 --json 的退出登录永远不会隐式断开 daemon:

paseo hub logout --disconnect-daemon           # remove both identities
paseo hub logout --disconnect-daemon --force   # drop local authority when Hub is unreachable

让 Hub 在其上运行 Agent

注册 daemon 并不会让 Hub 在其上启动 Agent。这需要单独的 hub.execute 权限,登录时会询问,默认为否。你可以随时在这台机器上授予它:

paseo hub permissions list
paseo hub permissions grant hub.execute
paseo hub permissions revoke hub.execute

在授予之前,Hub 只把该 daemon 用于身份和在线状态。Daemons 页面会把它显示为 Connected only 并给出授权命令,Home 清单会显示 Cannot run agents。授予后该权限允许做什么,见 Hub 安全。

在配置中引用它

environments:
  dev:
    kind: daemon
    daemon: my-macbook
    cwd: /Users/you/code/your-repo

daemon 是友好的 slug。配置激活时它会解析为不可变的 daemon ID,因此不存在的 daemon 会在激活时失败,而不是等到派发时才失败。

cwd 是那台机器上的路径。Hub 不会替你克隆任何东西;该目录必须已经存在。

要让执行不影响你的 worktree,请添加一个 worktree:

worktree:
  mode: branch-off
  newBranch: trigger-${{ paseo.execution.id }}
  base: origin/main

${{ paseo.execution.id }} 会渲染为本次执行的 UUID,因此每次执行都会从 origin/main 创建自己的分支。

环境字段列出了 newBranch 接受的值。setup 钩子和脚本见 Git worktree。

Hub 负责什么

对于由 Hub 派发的 Agent,Hub 负责创建、重连恢复、输出观察和完成。你自己启动的 Agent 不受影响。

如果 Hub 丢失了创建响应,或者 daemon 在执行过程中重启,Hub 会用相同的执行 id 重新发送同一个创建意图。daemon 会返回已有的 Agent,而不是再次运行提示词。已关闭或出错的 Agent 会被记录为中断;Hub 永远不会悄悄启动第二个。

状态

状态含义
Approval requiredCLI 正在等待你批准验证码
Connected在线并接受派发
Offline已注册但当前未连接
Revoked已从 Hub 移除访问权限

daemon 离线期间到达的事件会派发失败,并报告 daemon_not_connected。不会排队等待之后处理。事件会出现在项目的 Activity 中,触发器需要再次触发。离线的 daemon 还会阻止保存修改了目标或 Agent 的触发器,因为 Hub 会根据它检查该 Agent;参见保存时会根据 daemon 检查 Agent。

从 Daemons → Revoke daemon 撤销会从 Hub 一侧结束这段关系。daemon 会继续运行你的本地 Agent。

赞助商