其他
Cyrus 配置完成后:汇总集成状态…
当 Cyrus 已完成初始化配置,需要打印配置摘要并启动/常驻代理时使用。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
Cyrus 配置完成后:汇总集成状态、设特定
解决思路
- 安全约束:绝不对 `~/.cyrus/.env` 或 `~/.cyrus/` 内任何文件使用 `Read`、`Edit` 或 `Write` 工具;仅用 `Bash` 命令(如 `grep`、`printf >>` 等)与环境文件交互,机密绝不能读入对话上下文。
- 运行 `grep '^CYRUS_BASE_URL=' ~/.cyrus/.env 2>/dev/null | cut -d= -f2-` 读取 Base URL。
- 运行 `grep -c '^LINEAR_CLIENT_ID=' ~/.cyrus/.env 2>/dev/null` 检查 Linear 配置。
- 运行 `gh auth status 2>&1 | head -1` 检查 GitHub CLI 认证状态。
- 运行 `grep -c '^SLACK_BOT_TOKEN=' ~/.cyrus/.env 2>/dev/null` 检查 Slack 配置。
- 运行 `cat ~/.cyrus/config.json 2>/dev/null` 读取仓库配置。
- 运行 `grep -c -E '^(ANTHROPIC_API_KEY|CLAUDE_CODE_OAUTH_TOKEN)=' ~/.cyrus/.env 2>/dev/null` 检查 Claude 认证。
- 打印格式化摘要,包含 Endpoint、Claude、Surfaces(Linear、GitHub、Slack)、Repositories;已配置项用 ✓,跳过/未配置项用 ✗。
- 让 Cyrus 作为后台进程运行以便保持存活并在重启后恢复;如果可用,用 `AskUserQuestion` 询问“你希望如何让 Cyrus 在后台保持运行?”并给出选项:1) pm2(推荐);2) systemd(仅 Linux);3) Neither——先前台运行 `cyrus`,以后可再设置持久化。
- pm2 选项:检查是否安装 pm2(`which pm2`);如果未安装,运行 `npm install -g pm2`。
- pm2 选项:运行 `pm2 start cyrus --name cyrus` 启动 Cyrus。
- pm2 选项:运行 `pm2 save` 保存进程列表。
- pm2 选项:运行 `pm2 startup`,它会打印系统特定命令;代理也应运行该输出命令(通常需要 `sudo`)。
- pm2 选项完成后告知用户常用命令:`pm2 logs cyrus` 查看日志,`pm2 restart cyrus` 重启,`pm2 stop cyrus` 停止。
- systemd 选项(仅 Linux):解析服务文件实际值,运行 `CYRUS_BIN=$(which cyrus)` 和 `CYRUS_USER=$(whoami)`。
- systemd 选项:运行 `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`。
- systemd 选项:运行 `sudo systemctl daemon-reload`。
- systemd 选项:运行 `sudo systemctl enable cyrus`。
- systemd 选项:运行 `sudo systemctl start cyrus`。
- systemd 选项完成后告知用户常用命令:`sudo systemctl status cyrus` 检查状态,`sudo journalctl -u cyrus -f` 查看日志,`sudo systemctl restart cyrus` 重启。
- Foreground 选项:直接运行 `cyrus`。
- 如果用户在 endpoint 步骤配置了 ngrok,运行 `ngrok start cyrus`。
- 如果使用 pm2,也持久化 ngrok:运行 `pm2 start "ngrok start cyrus" --name ngrok`,然后运行 `pm2 save`。
- 如果 `~/.cyrus/config.json` 中 `sandbox.enabled: true`,检查 egress proxy CA 证书是否已在系统 keychain 中受信任。
- 检查 sandbox 是否启用:运行 `grep -o '"enabled":\s*true' ~/.cyrus/config.json 2>/dev/null | head -1`。
- 如果 sandbox 启用,macOS 上运行 `security find-certificate -c "Cyrus Egress Proxy CA" /Library/Keychains/System.keychain 2>&1` 检查信任状态。
- macOS 上如果找到证书(exit code 0):报告 ✓ trusted;询问是否在 `config.json` 中设置 `sandbox.systemWideCert: true` 以跳过 per-session cert env vars。
- macOS 上如果未找到证书(exit code 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` 检查证书是否存在。
- Linux 上如果证书不存在:运行 `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`;这会跳过 per-session cert env vars(`NODE_EXTRA_CA_CERTS`、`GIT_SSL_CAINFO` 等),因为 OS cert store 会为所有工具处理信任。
- 如果用户拒绝系统范围信任,Cyrus 仍可工作——它会设置 per-session cert env vars;但一些工具(Bun、.NET、macOS 上使用 SecureTransport 的 curl)只会在系统范围信任下工作。
- Cyrus 启动后验证监听:运行 `curl -s http://localhost:3456/status`,应返回 `{"status":"idle"}` 或类似结果。
- 尝试将 Linear 议题分配给 Cyrus,或在 Slack 中 @mention,以验证完整流程。
- 完成提示:`✓ Cyrus is running and ready. Assign a Linear issue or @mention in Slack to test it out!`,即 Cyrus 正在运行并已就绪,分配 Linear 议题或在 Slack 中 @mention 来测试。
适用边界 · 注意事项
- 仅适用于 Cyrus 已完成初始化配置后的启动/汇总阶段;尚未配置 endpoint、Linear/GitHub/Slack/Claude、仓库或 sandbox 时不要使用。
- 没有安装 Cyrus CLI,或缺少所需集成/账号(Linear、GitHub、Slack、Claude、ngrok 等)时不要使用。
- systemd 持久化选项仅适用于 Linux;非 Linux 环境不要使用 systemd,应改用 pm2 或前台运行。