docs: add Windows scheduled task script for auto-starting HAPI Runner
Add a PowerShell one-liner script to README that creates a logon-triggered scheduled task to automatically start `hapi runner start` on Windows login. Includes install, uninstall, and manual control commands. via HAPI (https://hapi.run) Co-Authored-By: HAPI <[email protected]>
This commit is contained in:
@@ -68,26 +68,57 @@ brew install tiann/tap/hapi
|
|||||||
|
|
||||||
### 2. 配置连接 Hub
|
### 2. 配置连接 Hub
|
||||||
|
|
||||||
**Windows (PowerShell):**
|
> `hapi auth login` 只录入 token,服务器地址仍需单独配置。
|
||||||
|
|
||||||
|
**方式一:配置文件(推荐)**
|
||||||
|
|
||||||
|
编辑 `~/.hapi/settings.json`:
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"apiUrl": "http://服务器IP:3006",
|
||||||
|
"cliApiToken": "你在 docker-compose.yml 里填的令牌"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
然后用 `hapi auth login` 验证(或直接保存后生效)。
|
||||||
|
|
||||||
|
**方式二:交互式录入 token**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hapi auth login
|
||||||
|
```
|
||||||
|
|
||||||
|
按提示粘贴 CLI_API_TOKEN 即可,Token 自动保存到 settings.json。
|
||||||
|
但 `HAPI_API_URL` 仍需通过方式一写入 settings.json 或通过方式三设置环境变量。
|
||||||
|
|
||||||
|
**方式三:环境变量**
|
||||||
|
|
||||||
|
<details>
|
||||||
|
<summary>Windows (PowerShell)</summary>
|
||||||
|
|
||||||
```powershell
|
```powershell
|
||||||
$env:HAPI_API_URL="http://服务器IP:3006"
|
$env:HAPI_API_URL="http://服务器IP:3006"
|
||||||
$env:CLI_API_TOKEN="你在 docker-compose.yml 里填的令牌"
|
$env:CLI_API_TOKEN="你在 docker-compose.yml 里填的令牌"
|
||||||
```
|
```
|
||||||
|
|
||||||
> 将以上两行加入 `$PROFILE`(PowerShell 配置文件)避免重复设置:
|
> 将以上两行加入 `$PROFILE` 避免重复设置:
|
||||||
> ```powershell
|
> ```powershell
|
||||||
> notepad $PROFILE
|
> notepad $PROFILE
|
||||||
> ```
|
> ```
|
||||||
|
</details>
|
||||||
|
|
||||||
**Windows (CMD):**
|
<details>
|
||||||
|
<summary>Windows (CMD)</summary>
|
||||||
|
|
||||||
```cmd
|
```cmd
|
||||||
set HAPI_API_URL=http://服务器IP:3006
|
set HAPI_API_URL=http://服务器IP:3006
|
||||||
set CLI_API_TOKEN=你在 docker-compose.yml 里填的令牌
|
set CLI_API_TOKEN=你在 docker-compose.yml 里填的令牌
|
||||||
```
|
```
|
||||||
|
</details>
|
||||||
|
|
||||||
**macOS / Linux:**
|
<details>
|
||||||
|
<summary>macOS / Linux</summary>
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
export HAPI_API_URL="http://服务器IP:3006"
|
export HAPI_API_URL="http://服务器IP:3006"
|
||||||
@@ -95,6 +126,14 @@ export CLI_API_TOKEN="你在 docker-compose.yml 里填的令牌"
|
|||||||
```
|
```
|
||||||
|
|
||||||
> 建议将这两行写入 `~/.bashrc` 或 `~/.zshrc` 避免重复设置。
|
> 建议将这两行写入 `~/.bashrc` 或 `~/.zshrc` 避免重复设置。
|
||||||
|
</details>
|
||||||
|
|
||||||
|
其他认证命令:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
hapi auth status # 查看当前登录状态
|
||||||
|
hapi auth logout # 退出登录
|
||||||
|
```
|
||||||
|
|
||||||
### 3. 启动 AI 会话
|
### 3. 启动 AI 会话
|
||||||
|
|
||||||
@@ -119,6 +158,105 @@ hapi opencode
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Windows 开机自启 Runner(可选)
|
||||||
|
|
||||||
|
如果你希望每次登录 Windows 后 **Runner 自动在后台启动**(无需保持终端打开,Web 端可随时创建新会话),可以使用以下一键脚本:
|
||||||
|
|
||||||
|
### 一键安装脚本
|
||||||
|
|
||||||
|
在 PowerShell 中执行(管理员权限**不需要**,普通用户权限即可):
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# 检查 hapi CLI 是否已安装
|
||||||
|
$hapi = Get-Command "hapi" -ErrorAction SilentlyContinue
|
||||||
|
if (-not $hapi) {
|
||||||
|
Write-Host "[错误] 未找到 hapi CLI,请先执行:npm install -g @twsxtd/hapi" -ForegroundColor Red
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# 检查 settings.json 是否已配置
|
||||||
|
$hapiHome = Join-Path $env:USERPROFILE ".hapi"
|
||||||
|
$settingsPath = Join-Path $hapiHome "settings.json"
|
||||||
|
if (-not (Test-Path $settingsPath)) {
|
||||||
|
Write-Host "[警告] 未找到 ~/.hapi/settings.json,请先配置 Hub 连接地址和 Token" -ForegroundColor Yellow
|
||||||
|
Write-Host "配置路径: $settingsPath" -ForegroundColor Yellow
|
||||||
|
}
|
||||||
|
|
||||||
|
# 如果任务已存在,先删除
|
||||||
|
$existing = Get-ScheduledTask -TaskName "HAPI Runner" -ErrorAction SilentlyContinue
|
||||||
|
if ($existing) {
|
||||||
|
Write-Host "[信息] 发现已存在的 HAPI Runner 任务,正在重新创建..." -ForegroundColor Cyan
|
||||||
|
Unregister-ScheduledTask -TaskName "HAPI Runner" -Confirm:$false
|
||||||
|
}
|
||||||
|
|
||||||
|
# 创建触发器:用户登录时触发
|
||||||
|
$trigger = New-ScheduledTaskTrigger -Logon
|
||||||
|
|
||||||
|
# 创建操作:隐藏窗口启动 runner
|
||||||
|
$action = New-ScheduledTaskAction `
|
||||||
|
-Execute "powershell.exe" `
|
||||||
|
-Argument '-WindowStyle Hidden -Command "hapi runner start"'
|
||||||
|
|
||||||
|
# 创建运行主体:当前用户
|
||||||
|
$principal = New-ScheduledTaskPrincipal `
|
||||||
|
-UserId $env:USERNAME `
|
||||||
|
-LogonType Interactive
|
||||||
|
|
||||||
|
# 任务设置
|
||||||
|
$settings = New-ScheduledTaskSettingsSet `
|
||||||
|
-AllowStartIfOnBatteries `
|
||||||
|
-DontStopIfGoingOnBatteries `
|
||||||
|
-StartWhenAvailable `
|
||||||
|
-ExecutionTimeLimit (New-TimeSpan -Hours 72) `
|
||||||
|
-MultipleInstances IgnoreNew
|
||||||
|
|
||||||
|
# 注册任务
|
||||||
|
Register-ScheduledTask `
|
||||||
|
-TaskName "HAPI Runner" `
|
||||||
|
-Trigger $trigger `
|
||||||
|
-Action $action `
|
||||||
|
-Principal $principal `
|
||||||
|
-Settings $settings `
|
||||||
|
-Force | Out-Null
|
||||||
|
|
||||||
|
# 验证
|
||||||
|
$task = Get-ScheduledTask -TaskName "HAPI Runner" -ErrorAction SilentlyContinue
|
||||||
|
if ($task) {
|
||||||
|
Write-Host "[成功] HAPI Runner 计划任务已创建!" -ForegroundColor Green
|
||||||
|
Write-Host " 任务名: HAPI Runner" -ForegroundColor Gray
|
||||||
|
Write-Host " 触发器: 用户登录时自动启动" -ForegroundColor Gray
|
||||||
|
Write-Host " 命令 : powershell -WindowStyle Hidden -Command `"hapi runner start`"" -ForegroundColor Gray
|
||||||
|
Write-Host " 执行 : $env:USERNAME" -ForegroundColor Gray
|
||||||
|
Write-Host "" -ForegroundColor Gray
|
||||||
|
Write-Host "下次登录 Windows 时 Runner 将自动启动。" -ForegroundColor Green
|
||||||
|
Write-Host "你也可以手动启动: Start-ScheduledTask -TaskName `"HAPI Runner`"" -ForegroundColor DarkGray
|
||||||
|
} else {
|
||||||
|
Write-Host "[失败] 任务创建失败,请检查权限或手动排查。" -ForegroundColor Red
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### 卸载/移除任务
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
Unregister-ScheduledTask -TaskName "HAPI Runner" -Confirm:$false
|
||||||
|
Write-Host "HAPI Runner 计划任务已删除。"
|
||||||
|
```
|
||||||
|
|
||||||
|
### 手动控制
|
||||||
|
|
||||||
|
```powershell
|
||||||
|
# 立即启动
|
||||||
|
Start-ScheduledTask -TaskName "HAPI Runner"
|
||||||
|
|
||||||
|
# 查看状态
|
||||||
|
Get-ScheduledTask -TaskName "HAPI Runner" | Get-ScheduledTaskInfo
|
||||||
|
|
||||||
|
# 停止任务(会停止 runner 进程)
|
||||||
|
Stop-ScheduledTask -TaskName "HAPI Runner"
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 手机 / 网页端访问
|
## 手机 / 网页端访问
|
||||||
|
|
||||||
### Web
|
### Web
|
||||||
|
|||||||
Reference in New Issue
Block a user