关于 cyrus-setup-launch
用于汇总 Cyrus 配置并启动服务的设置技能,涵盖后台持久运行、按需启动 ngrok、检查启用沙盒的证书信任状态以及服务状态验证。
主要功能
- 01汇总已配置的服务
- 02使用 pm2 或 systemd 设置持久运行
- 03在已配置时启动 ngrok
- 04检查沙盒证书信任状态
- 05验证本地服务状态
适用场景
- 01设置 Cyrus 在后台持续运行或重启后启动
- 02分配 Linear 问题前检查服务是否就绪
- 03检查已启用沙盒的证书信任
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ cyrusagents/ cyrus --skill cyrus-setup-launch安装后在 Claude Code 中输入/cyrus-setup-launch确认已加载。
详细介绍
关键:切勿使用 Read、Edit 或 Write 工具读取或修改 ~/.cyrus/.env 或 ~/.cyrus/ 中的任何文件。只能使用 Bash 命令(grep、printf >> 等)与环境文件交互——绝不能将密钥读入对话上下文。
启动设置
打印已完成设置的摘要,并提供启动 Cyrus 的选项。
第 1 步:收集配置
读取当前状态:
# Base URL
grep '^CYRUS_BASE_URL=' ~/.cyrus/.env 2>/dev/null | cut -d= -f2-
# Linear
grep -c '^LINEAR_CLIENT_ID=' ~/.cyrus/.env 2>/dev/null
# GitHub
gh auth status 2>&1 | head -1
# Slack
grep -c '^SLACK_BOT_TOKEN=' ~/.cyrus/.env 2>/dev/null
# Repositories
cat ~/.cyrus/config.json 2>/dev/null
# Claude auth
grep -c -E '^(ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN)=' ~/.cyrus/.env 2>/dev/null
第 2 步:打印摘要
打印格式化摘要:
┌─────────────────────────────────────┐
│ Cyrus Setup Complete │
├─────────────────────────────────────┤
│ │
│ Endpoint: https://your-url.com │
│ Claude: ✓ API key configured │
│ │
│ Surfaces: │
│ Linear: ✓ Workspace connected │
│ GitHub: ✓ CLI authenticated │
│ Slack: ✓ Bot configured │
│ │
│ Repositories: │
│ • yourorg/yourrepo │
│ • yourorg/another-repo │
│ │
└─────────────────────────────────────┘
已配置的项目使用 ✓,已跳过或未配置的项目使用 ✗。
第 3 步:让 Cyrus 持续运行
Cyrus 需要作为后台进程运行,才能保持运行并在重启后重新启动。如果有 AskUserQuestion 工具,请使用该工具询问:
你希望如何让 Cyrus 在后台持续运行?
- pm2(推荐)——Node.js 进程管理器。设置简单,崩溃时会自动重启,并内置日志管理。适合大多数用户。
- systemd(仅限 Linux)——操作系统级服务管理器。开机时自动启动,并通过
systemctl管理。适合专用 Linux 服务端。- 都不用——暂时只需在前台运行
cyrus(之后可以再设置持久运行)。
选项 1:pm2
Agent 应直接运行以下所有命令:
- 检查是否已安装 pm2(
which pm2)。如果尚未安装,则安装(npm install -g pm2)。 - 启动 Cyrus:
pm2 start cyrus --name cyrus - 保存进程列表:
pm2 save - 运行
pm2 startup——该命令会输出一个特定于系统的命令。Agent 也应运行该输出命令(通常需要sudo)。
设置完成后,告知用户以下实用命令:
pm2 logs cyrus— 查看日志pm2 restart cyrus— 重启pm2 stop cyrus— 停止
选项 2:systemd(仅限 Linux)
Agent 应直接运行以下所有命令:
-
获取服务文件所需的实际值:
CYRUS_BIN=$(which cyrus) CYRUS_USER=$(whoami) -
写入服务文件:
sudo tee /etc/systemd/system/cyrus.service > /dev/null << EOF [Unit] Description=Cyrus AI Agent After=network.target [Service] Type=simple User=$CYRUS_USER EnvironmentFile=/home/$CYRUS_USER/.cyrus/.env ExecStart=$CYRUS_BIN Restart=always RestartSec=10 [Install] WantedBy=multi-user.target EOF -
启用并启动:
sudo systemctl daemon-reload sudo systemctl enable cyrus sudo systemctl start cyrus
设置完成后,告知用户以下实用命令:
sudo systemctl status cyrus— 检查状态sudo journalctl -u cyrus -f— 查看日志sudo systemctl restart cyrus— 重启
选项 3:前台运行
直接运行:
cyrus
第 4 步:启动 ngrok(如适用)
如果用户在端点步骤中配置了 ngrok,Agent 应启动它:
ngrok start cyrus
如果使用 pm2,还应让 ngrok 持续运行:
pm2 start "ngrok start cyrus" --name ngrok
pm2 save
第 5 步:信任沙箱 CA 证书(如果启用了沙箱)
如果用户的 ~/.cyrus/config.json 中 sandbox.enabled: true,请检查系统钥匙串是否信任出口代理 CA 证书。
检查是否启用了沙箱:
grep -o '"enabled":\s*true' ~/.cyrus/config.json 2>/dev/null | head -1
如果启用了沙箱,请检查信任状态:
# macOS — check System keychain for the Cyrus CA
security find-certificate -c "Cyrus Egress Proxy CA" /Library/Keychains/System.keychain 2>&1
- 如果找到证书(退出代码为 0):报告 ✓ 已信任。询问是否要在 config.json 中设置
sandbox.systemWideCert: true,以跳过每个会话的证书环境变量。 - 如果未找到证书(退出代码为 44):告知用户,并询问是否运行信任命令:
sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ~/.cyrus/certs/cyrus-egress-ca.pem
在 Linux 上,使用 test -f /usr/local/share/ca-certificates/cyrus-egress-ca.crt 检查。如果证书不存在:
sudo cp ~/.cyrus/certs/cyrus-egress-ca.pem /usr/local/share/ca-certificates/cyrus-egress-ca.crt
sudo update-ca-certificates
系统级信任设置完成后,询问是否要在 config.json 中设置 sandbox.systemWideCert: true。这样可以跳过每个会话的证书环境变量(NODE_EXTRA_CA_CERTS、GIT_SSL_CAINFO 等),因为操作系统证书存储会为所有工具处理信任。
如果用户拒绝设置系统级信任,Cyrus 仍然可以正常工作——它会为每个会话设置证书环境变量。但某些工具(Bun、.NET,以及在 macOS 上使用 SecureTransport 的 curl)只有在设置系统级信任后才能工作。
第 6 步:验证是否正在运行
Cyrus 启动后,验证它是否正在监听:
curl -s http://localhost:3456/status
应返回 {"status":"idle"} 或类似内容。
然后,尝试将一个 Linear 问题分配给 Cyrus,或在 Slack 中 @提及它,以验证整个流程是否正常运行!
完成
✓ Cyrus 正在运行,已准备就绪。分配一个 Linear 问题或在 Slack 中 @提及它,试试看!