syros 是做什么的?
在您自己的GCP项目中,于沙箱化的Cloud Run Jobs中运行Claude Agent SDK代理——包含审计追踪、人工审批门、代理、定时部署、平台连接器、Agent技能,且零常驻成本。
概述
Syros 是一个开源平台,允许您在 Google Cloud Platform (GCP) 的沙箱化 Cloud Run Jobs 中运行 Claude Agent SDK 代理。它提供了企业级功能,例如完整的审计追踪、人工审批门、定时部署以及 Slack 和 Jira 等平台连接器。该平台采用零常驻成本模型,按使用量付费。
先决条件
- 一个 Google Cloud Project
- 已安装并配置了
gcloudCLI - Claude Code 访问权限
- GitHub 仓库(用于托管代理代码)
设置
1. GCP 环境配置
# 启用所需 API
gcloud services enable cloudbuild.googleapis.com run.googleapis.com secretmanager.googleapis.com
# 创建服务账号
gcloud iam service-accounts create syros-agent --display-name="Syros Agent"
# 授予必要权限
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member="serviceAccount:syros-agent@YOUR_PROJECT_ID.iam.gserviceaccount.com" --role="roles/run.admin"
gcloud projects add-iam-policy-binding YOUR_PROJECT_ID --member="serviceAccount:syros-agent@YOUR_PROJECT_ID.iam.gserviceaccount.com" --role="roles/secretmanager.secretAccessor"
2. 创建服务账号密钥
gcloud iam service-accounts keys create syros-key.json --iam-account=syros-agent@YOUR_PROJECT_ID.iam.gserviceaccount.com
3. 设置广播机制
Syros 使用发布/订阅进行心跳和任务通知。创建一个主题并订阅:
gcloud pubsub topics create syros-events
gcloud pubsub subscriptions create syros-sub --topic=syros-events
创建代理
代理代码结构
Syros 要求每个代理都有一个包含 main.py 的特定结构:
my-agent/
├── main.py
├── requirements.txt
└── skill.json(可选)
示例 main.py
from syros import Agent
agent = Agent(name="my-agent")
@agent.task
def process_data(input: str) -> str:
# 您的代理逻辑
return f"处理完成:{input}"
if __name__ == "__main__":
agent.run()
部署
使用 Claude Code 部署代理:
claude code --cd my-agent/
在 Claude 中,运行:
> syros_deploy
这将自动从您的 GitHub 仓库构建 Docker 镜像,将其推送到 Google Container Registry,并部署为 Cloud Run Job。
配置
环境变量
您可以在 skill.json 文件中配置环境变量:
{
"env": {
"SLACK_BOT_TOKEN": "secret:slack-token",
"JIRA_API_TOKEN": "secret:jira-token"
},
"schedule": "0 9 * * 1-5" // Cron 表达式
}
秘密管理
Syros 集成 Secret Manager 用于安全存储凭据:
echo -n "my-secret-value" | gcloud secrets create slack-token --data-file=-
用法
运行代理
手动触发代理:
gcloud run jobs execute my-agent
查看日志
gcloud logging read "resource.type=cloud_run_job AND resource.labels.job_name=my-agent"
审计追踪
所有代理执行都会被记录到 Cloud Logging,并带有结构化元数据,便于审计。
支持的平台
- Slack: 通过 Syros Slack 连接器发送/接收消息
- Jira: 自动创建和更新工单
- 自定义 Webhook: 通过 Webhook 连接器集成任何平台
许可
MIT