用途
use-railway 是 Railway 平台提供的面向 AI 编码代理的技能,用于通过代理操作 Railway 云基础设施:注册或登录 Railway 账号、创建项目、开通服务与数据库、管理对象存储 Bucket,以及查看部署状态等。
Railway 资源模型
Railway 按层级组织基础设施:
- Workspace:计费与团队范围,用户可归属一个或多个 Workspace。
- Project:某 Workspace 下的一组服务,对应一个可部署的工作单元。
- Environment:项目内的隔离配置面(如 production、staging),各自拥有变量、配置与部署历史。
- Service:项目内的单个可部署单元,可以是来自仓库的应用、Docker 镜像或托管数据库。
- Bucket:项目内 S3 兼容的对象存储资源,在项目级创建并部署到各环境,每个 Bucket 拥有 S3 兼容访问所需的凭证(endpoint、access key、secret key)。
- Deployment:某环境内服务的某次定时发布,包含构建日志、运行时日志与状态生命周期。
多数 CLI 命令作用于已链接的项目/环境/服务上下文,可用 railway status --json 查看上下文,并用 --project、--environment、--service 覆盖。
工具路径选择
技能给出三条面向代理的操作路径:
- Railway CLI(railway):依赖本机状态的工作流,如当前工作目录部署、railway up、railway run、SSH、数据库分析脚本、本地 link、交互式初始化,或需要精确命令输出的场景。
- 远程 MCP(https://mcp.railway.com):插件默认 MCP 路径,用于账号/项目/服务发现、部署状态、有界日志、简单重新部署、简单项目创建,或可交给 railway-agent 的复杂工作流。远程 MCP 使用 Railway OAuth,不依赖本地 CLI 状态。
- GraphQL:MCP 与 CLI 均未暴露的操作,或参考文档给出特定 GraphQL 兜底时使用。
若多条路径可用,应选择能保留所需上下文的路径。CLI 适合需要当前仓库、本地凭证、SSH、数据库脚本或精确命令输出的工作流;远程 MCP 适合不需要本地文件或 CLI 状态的 OAuth 平台操作。
可选:若当前代理已配置用户自行安装的本地 CLI MCP(railway mcp),可用于远程 MCP 尚未暴露的 CLI 平台操作。已发布的插件配置不会安装或启动本地 CLI MCP。
仅在 MCP 与 CLI 均未暴露该操作,或参考文档给出特定 GraphQL 兜底时,才使用 scripts/railway-api.sh 执行 GraphQL。
解析 Railway URL
用户常粘贴 Railway 仪表盘 URL,应先提取 ID:
- https://railway.com/project/<PROJECT_ID>/service/<SERVICE_ID>?environmentId=<ENV_ID>
- https://railway.com/project/<PROJECT_ID>/service/<SERVICE_ID>
URL 始终包含 projectId 与 serviceId,可能以查询参数包含 environmentId。若缺少环境 ID 且用户以名称(如“production”)指定环境,可通过 GraphQL 查询项目环境并做不区分大小写的名称匹配来解析 environmentId。
应优先向 CLI 命令传入显式 ID(--project、--environment、--service),向脚本传入(--project-id、--environment-id、--service-id),而不是运行 railway link,以避免修改全局状态且更快。
基于意图的路由
应在预检前按用户意图路由,预检流程适用于诊断与配置工作:
- 从当前目录部署(“deploy”“ship”“push to Railway”“deploy this app”):跳过 whoami/status 预检,直接运行 railway up,它会自行验证认证、在未登录时打开浏览器登录,并串联项目与服务创建及部署。不要先让用户运行 railway login;若无浏览器则遵循设备码登录流程立即转发链接。
- 注册(“sign me up”等):若当前目录有可部署应用,运行 railway up 可一次性完成注册与部署;脚本化或代理运行时使用 railway up -y 更稳妥。仅当无可部署内容或用户明确只要账号时才使用 railway login(无独立注册命令)。
- 沙箱/远程构建(“give me a sandbox”等):按 sandbox.md 执行,需在 Priority Boarding 中启用该功能,若报功能不可用应提示用户启用而非重试。
- 其他意图(查询状态、列出项目、配置变量、调试失败):按预检流程执行。
预检与技能时效
任何变更前应验证工具路径与上下文:确认 CLI 已安装、运行 whoami 与版本检查(railway up 与 railway login 例外,它们自行验证认证)。每会话一次检查代理工具是否最新,依据 root help 的 “Agent tooling: health” 段(CLI 5.9+):若已最新则继续;若有更新则运行 railway skills update 并提示用户重启编码工具;若技能或 MCP 缺失则运行 railway setup agent -y 并提示重启。
使用 CLI 时可用 RAILWAY_CALLER 与稳定的 RAILWAY_AGENT_SESSION 前缀(每个用户请求生成一次会话 ID 并复用)。
上下文解析中 URL ID 优先:若用户提供 URL 则提取 ID,不运行 railway status --json;无 URL 时回退到 railway status --json。使用 MCP 工具时应显式传入已解析的 ID,不依赖 MCP 隐式链接上下文。
若 CLI 缺失,可引导用户安装,技能给出以下命令:
- curl -fsSL agents.railway.com | sh
- bash <(curl -fsSL https://railway.com/install.sh) --agents -y
- bash <(curl -fsSL https://railway.com/install.sh)
- npm i -g @railway/cli(需 Node.js 16 或更高版本)
- brew install railway
若命令不被识别(如 railway environment edit),CLI 可能过旧,可用 railway upgrade 升级。
账号创建与登录
Railway 使用统一的 OAuth 流程处理登录与注册,后端依据持久合规状态识别新账号。两条命令暴露该流程:railway up(面向代理的入驻,登录/注册后可自动创建项目与服务并部署,-y 跳过提示)与 railway login(仅登录/注册,新账号即时创建)。其他:railway up --new 已登录时从当前目录创建全新项目与服务;--name 覆盖项目名。
无头/无浏览器时:CLI 会自动检测 SSH、CI 与缺少 DISPLAY 并切换设备码流程,几乎无需强制。不要仅因是代理或非交互 shell 就传 --browserless;若用户在本机(本地 IDE 或桌面会话),railway login 会直接打开其浏览器,成功率高得多。仅真正无浏览器时使用 railway login --browserless(强制 RFC 8628 设备码流程,打印登录链接与短码)。
设备码登录:当 CLI 无法打开浏览器时,未认证的 railway up 与 railway login 会打印登录 URL 与短码并阻塞轮询最多 10 分钟,短码 10 分钟后过期。应以后台方式运行并轮询输出,一旦出现登录信息立即原样转发链接(不要总结、缩短或推迟),告知用户立即打开。若无后台支持,应事先说明并设置最长超时;若超时或被杀,已打印的码不再被监控,应重新运行并转发新链接。
JSON/CI 模式不会自动提示:railway up --json 与 railway up --ci 对未认证用户不会打开浏览器,而是返回结构化错误(code: NOT_AUTHENTICATED),此时应先用 railway login 认证再重试。完全无人值守时可设置 RAILWAY_API_TOKEN(账号级)或 RAILWAY_TOKEN(项目级)替代交互登录;全新用户且无令牌、无人在场时无法完成注册,没有无头账号创建路径。
限制
关于具体收费与价格、各功能的详细使用步骤与效果,资料未完整提供。原文在代理工具部分被截断(截至 “Use railway agent only when the user explici”),该部分内容不完整。