mcpField
C
cyrus-setup-launch

cyrus-setup-launch

github.com/cyrusagentsAgent 工作流8791.0k 次安装今天更新
代码仓库

关于 cyrus-setup-launch

用于汇总 Cyrus 配置并启动服务的设置技能,涵盖后台持久运行、按需启动 ngrok、检查启用沙盒的证书信任状态以及服务状态验证。

主要功能

  1. 01汇总已配置的服务
  2. 02使用 pm2 或 systemd 设置持久运行
  3. 03在已配置时启动 ngrok
  4. 04检查沙盒证书信任状态
  5. 05验证本地服务状态

适用场景

  1. 01设置 Cyrus 在后台持续运行或重启后启动
  2. 02分配 Linear 问题前检查服务是否就绪
  3. 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 在后台持续运行?

  1. pm2(推荐)——Node.js 进程管理器。设置简单,崩溃时会自动重启,并内置日志管理。适合大多数用户。
  2. systemd(仅限 Linux)——操作系统级服务管理器。开机时自动启动,并通过 systemctl 管理。适合专用 Linux 服务端。
  3. 都不用——暂时只需在前台运行 cyrus(之后可以再设置持久运行)。
选项 1:pm2

Agent 应直接运行以下所有命令:

  1. 检查是否已安装 pm2(which pm2)。如果尚未安装,则安装(npm install -g pm2)。
  2. 启动 Cyrus:pm2 start cyrus --name cyrus
  3. 保存进程列表:pm2 save
  4. 运行 pm2 startup——该命令会输出一个特定于系统的命令。Agent 也应运行该输出命令(通常需要 sudo)。

设置完成后,告知用户以下实用命令:

  • pm2 logs cyrus — 查看日志
  • pm2 restart cyrus — 重启
  • pm2 stop cyrus — 停止
选项 2:systemd(仅限 Linux)

Agent 应直接运行以下所有命令:

  1. 获取服务文件所需的实际值:

    CYRUS_BIN=$(which cyrus)
    CYRUS_USER=$(whoami)
    
  2. 写入服务文件:

    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
    
  3. 启用并启动:

    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 中 @提及它,试试看!

评论

支持 Markdown