mcpField
C
createos

createos

github.com/nodeops-app云与 DevOps21.7k 次安装5 周前更新
代码仓库

关于 createos

CreateOS Platform Skills 是用于通过 CreateOS 管理云项目和部署工作负载的技能,涵盖多种部署方式、环境、域名及运维工具,并支持直接通过 MCP 操作。

主要功能

  1. 01从 GitHub、Docker 镜像或文件创建项目
  2. 02触发并检查部署
  3. 03管理环境与变量
  4. 04配置域名并验证 DNS
  5. 05查看日志、指标与安全扫描

适用场景

  1. 01从已连接的 GitHub 仓库部署 API
  2. 02无需 Git,上传文件部署原型
  3. 03设置独立的预发布与生产环境

MCP 相关

该技能指导 MCP 连接的 Agent 使用 CreateOS 工具管理项目、部署、环境和域名等。README 说明 MCP 会自动处理身份验证。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/nodeops-app/skills --skill createos

安装后在 Claude Code 中输入/createos确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

config/
config.json
references/
api-reference.md
deployment-patterns.md
scripts/
createos.py
deploy.sh
quick-deploy.sh

详细介绍

CreateOS 平台技能

将任何内容部署到生产环境 — AI Agent、API、后端、机器人、MCP 服务、前端、Webhook、Worker 等。

⚠️ 重要:身份验证

面向 AI Agent(MCP)— 使用此方式

通过 MCP(OpenClaw、MoltBot、ClawdBot、Claude)连接时,无需 API 密钥。 MCP 服务会自动处理身份验证。

MCP 端点: https://api-createos.nodeops.network/mcp

直接调用工具:

CreateProject(...)
UploadDeploymentFiles(...)
ListProjects(...)
面向 REST API(脚本/外部调用)

直接调用 REST 端点(curl、Python requests 等)时:

X-Api-Key: <your-api-key>
Base URL: https://api-createos.nodeops.network

通过 MCP 获取 API 密钥:CreateAPIKey({name: "my-key", expiryAt: "2025-12-31T23:59:59Z"})

🚀 MCP Agent 快速入门

直接部署文件(最快)
// 1. Create upload project
CreateProject({
  "uniqueName": "my-app",
  "displayName": "My App",
  "type": "upload",
  "source": {},
  "settings": {
    "runtime": "node:20",
    "port": 3000
  }
})

// 2. Upload files and deploy
UploadDeploymentFiles(project_id, {
  "files": [
    {"path": "package.json", "content": "{\"name\":\"app\",\"scripts\":{\"start\":\"node index.js\"}}"},
    {"path": "index.js", "content": "require('http').createServer((req,res)=>{res.end('Hello!')}).listen(3000)"}
  ]
})

// Result: https://my-app.createos.nodeops.network is live!
从 GitHub 部署(推送时自动部署)
// 1. Get GitHub installation ID
ListConnectedGithubAccounts()
// Returns: [{installationId: "12345", ...}]

// 2. Find repo ID
ListGithubRepositories("12345")
// Returns: [{id: "98765", fullName: "myorg/myrepo", ...}]

// 3. Create VCS project
CreateProject({
  "uniqueName": "my-app",
  "displayName": "My App", 
  "type": "vcs",
  "source": {
    "vcsName": "github",
    "vcsInstallationId": "12345",
    "vcsRepoId": "98765"
  },
  "settings": {
    "runtime": "node:20",
    "port": 3000,
    "installCommand": "npm install",
    "buildCommand": "npm run build",
    "runCommand": "npm start"
  }
})

// Auto-deploys on every git push!
部署 Docker 镜像
// 1. Create image project
CreateProject({
  "uniqueName": "my-service",
  "displayName": "My Service",
  "type": "image",
  "source": {},
  "settings": {
    "port": 8080
  }
})

// 2. Deploy image
CreateDeployment(project_id, {
  "image": "nginx:latest"
})

目录

  1. 简介
  2. 核心技能概览
  3. 项目管理技能
  4. 部署技能
  5. 环境管理技能
  6. 域名与路由技能
  7. GitHub 集成技能
  8. 分析与监控技能
  9. 安全技能
  10. 组织技能(应用)
  11. API 密钥管理技能
  12. 常见部署模式
  13. 最佳实践
  14. 故障排除与边缘情况
  15. API 快速参考

简介

什么是 CreateOS?

CreateOS 是一个云部署平台,旨在快速部署各种工作负载——从简单的静态网站到复杂的多 Agent AI 系统。它提供:

  • 三种部署方式:GitHub 自动部署、Docker 镜像、直接上传文件
  • 多环境支持:生产、预发布、开发环境,各自使用隔离的配置
  • 内置 CI/CD:在 git push 时自动构建和部署
  • 自定义域名:包含 SSL/TLS,支持 DNS 验证
  • 实时分析:请求指标、错误跟踪、性能监控
  • 安全扫描:检测部署中的漏洞
目标用户
用户类型主要用例
AI/ML 工程师部署 Agent、MCP 服务、RAG 流水线、大模型服务
后端开发者部署 API、微服务、Webhook、Worker
前端开发者部署 SPA、SSR 应用、静态网站
DevOps 工程师管理环境、域名、扩缩容和监控
机器人开发者托管 Discord、Slack、Telegram 机器人
支持的技术

运行时:node:18、node:20、node:22、python:3.11、python:3.12、golang:1.22、golang:1.25、rust:1.75、bun:1.1、bun:1.3、static

框架:nextjs、reactjs-spa、reactjs-ssr、vuejs-spa、vuejs-ssr、nuxtjs、astro、remix、express、fastapi、flask、django、gin、fiber、actix


核心技能概览

🔌 可用的 MCP 工具(直接调用,无需身份验证)

通过 MCP(OpenClaw、Claude 等)使用 CreateOS 时,可直接使用以下工具:

项目:

  • CreateProject - 创建新项目(vcs、image 或 upload 类型)
  • ListProjects - 列出所有项目
  • GetProject - 获取项目详情
  • UpdateProject - 更新项目元数据
  • UpdateProjectSettings - 更新构建/运行时设置
  • DeleteProject - 删除项目

部署:

  • CreateDeployment - 部署 Docker 镜像(image 项目)
  • TriggerLatestDeployment - 从 GitHub 触发构建(vcs 项目)
  • UploadDeploymentFiles - 上传要部署的文件(upload 项目)
  • UploadDeploymentBase64Files - 以 base64 格式上传二进制文件
  • UploadDeploymentZip - 上传 zip 压缩包
  • ListDeployments - 列出所有部署
  • GetDeployment - 获取部署状态
  • GetBuildLogs - 查看构建日志
  • GetDeploymentLogs - 查看运行时日志
  • RetriggerDeployment - 重试失败的部署
  • CancelDeployment - 取消排队中/正在构建的部署
  • WakeupDeployment - 唤醒休眠中的部署

环境:

  • CreateProjectEnvironment - 创建环境(production、staging 等)
  • ListProjectEnvironments - 列出环境
  • UpdateProjectEnvironment - 更新环境配置
  • UpdateProjectEnvironmentEnvironmentVariables - 设置环境变量
  • UpdateProjectEnvironmentResources - 调整 CPU/内存/副本数
  • AssignDeploymentToProjectEnvironment - 将部署分配到环境
  • DeleteProjectEnvironment - 删除环境

域名:

  • CreateDomain - 添加自定义域名
  • ListDomains - 列出域名
  • RefreshDomain - 验证 DNS
  • UpdateDomainEnvironment - 将域名分配到环境
  • DeleteDomain - 移除域名

GitHub:

  • ListConnectedGithubAccounts - 获取已连接的 GitHub 账户
  • ListGithubRepositories - 列出可访问的代码仓库
  • ListGithubRepositoryBranches - 列出分支

应用:

  • CreateApp - 创建应用以归组项目
  • ListApps - 列出应用
  • AddProjectsToApp - 将项目添加到应用

用户:

  • GetCurrentUser - 获取用户信息
  • GetQuotas - 查看使用限额
  • GetSupportedProjectTypes - 列出运行时/框架
功能技能
技能类别能力
项目管理创建、配置、更新、删除、转移项目
部署构建、部署、回滚、唤醒、取消部署
环境管理多环境配置、环境变量、资源扩缩
域名管理自定义域名、SSL、DNS 验证
GitHub 集成自动部署、分支管理、代码仓库访问
分析请求指标、错误率、性能数据
安全漏洞扫描、API 密钥管理
组织将项目归组到应用、管理服务
技术技能
技能描述
身份验证基于 API 密钥的身份验证,支持过期管理
构建 AI自动检测构建配置
Dockerfile 支持自定义容器构建
环境隔离为每个环境单独配置
资源管理CPU、内存、副本数扩缩

项目管理技能

技能:创建项目

创建新项目,并完整配置构建和运行时设置。

项目类型
类型描述最适合
vcs已连接 GitHub 的代码仓库带 CI/CD 的生产应用
imageDocker 容器部署预构建镜像、复杂依赖
upload直接上传文件快速原型、静态站点
VCS 项目创建

功能:关联 GitHub 仓库,以便在推送时自动部署。

用途:启用 GitOps 工作流——推送即可部署,无需手动干预。

实现方法:

CreateProject({
  "uniqueName": "my-nextjs-app",
  "displayName": "My Next.js Application",
  "type": "vcs",
  "source": {
    "vcsName": "github",
    "vcsInstallationId": "12345678",
    "vcsRepoId": "98765432"
  },
  "settings": {
    "framework": "nextjs",
    "runtime": "node:20",
    "port": 3000,
    "directoryPath": ".",
    "installCommand": "npm install",
    "buildCommand": "npm run build",
    "runCommand": "npm start",
    "buildVars": {
      "NODE_ENV": "production",
      "NEXT_PUBLIC_API_URL": "https://api.example.com"
    },
    "runEnvs": {
      "DATABASE_URL": "postgresql://...",
      "SECRET_KEY": "..."
    },
    "ignoreBranches": ["develop", "feature/*"],
    "hasDockerfile": false,
    "useBuildAI": false
  },
  "appId": "optional-app-uuid",
  "enabledSecurityScan": true
})

前提条件:

  • 已通过 InstallGithubApp 关联 GitHub 账户
  • 已向 CreateOS GitHub App 授予仓库访问权限

潜在问题:

  • vcsRepoId 不正确会导致部署失败
  • 缺少 port 设置会导致健康检查失败
  • 混淆 buildVars 和 runEnvs(构建时与运行时)
镜像项目创建

功能:部署预构建的 Docker 镜像,无需构建步骤。

用途:加快部署、支持复杂依赖、兼容现有 CI 流水线。

CreateProject({
  "uniqueName": "my-api-service",
  "displayName": "My API Service",
  "type": "image",
  "source": {},
  "settings": {
    "port": 8080,
    "runEnvs": {
      "API_KEY": "secret",
      "LOG_LEVEL": "info"
    }
  }
})

影响:

  • 没有构建日志(镜像已构建完成)
  • 必须单独管理镜像仓库
  • 通过镜像标签进行版本控制
上传项目创建

功能:直接上传文件进行部署——无需 Git。

用途:快速原型、迁移、由 CI 生成的构件。

CreateProject({
  "uniqueName": "quick-prototype",
  "displayName": "Quick Prototype",
  "type": "upload",
  "source": {},
  "settings": {
    "framework": "express",
    "runtime": "node:20",
    "port": 3000,
    "installCommand": "npm install",
    "buildCommand": "npm run build",
    "buildDir": "dist",
    "useBuildAI": true
  }
})
技能:更新项目设置

修改构建和运行时配置,无需重新创建项目。

UpdateProjectSettings(project_id, {
  "framework": "nextjs",
  "runtime": "node:22",
  "port": 3000,
  "installCommand": "npm ci",
  "buildCommand": "npm run build",
  "runCommand": "npm start",
  "buildDir": ".next",
  "buildVars": {"NODE_ENV": "production"},
  "runEnvs": {"NEW_VAR": "value"},
  "ignoreBranches": ["wip/*"],
  "hasDockerfile": false,
  "useBuildAI": false
})

边缘情况:

  • 更改 runtime 会在下次部署时触发重新构建
  • 更改 port 需要重新部署才能生效
  • ignoreBranches 仅影响之后的推送
技能:项目生命周期管理
操作工具使用场景
列出项目ListProjects(limit?, offset?, name?, type?, status?, app?)控制面板、搜索
获取详情GetProject(project_id)查看完整配置
更新元数据UpdateProject(project_id, {displayName, description?, enabledSecurityScan?})重命名、切换功能
删除DeleteProject(project_id)清理(异步删除)
检查名称CheckProjectUniqueName({uniqueName})创建前验证
技能:项目转移

在用户之间转移项目所有权。

1. Owner: GetProjectTransferUri(project_id) → returns {uri, token} (valid 6 hours)
2. Owner: Share URI with recipient
3. Recipient: TransferProject(project_id, token)
4. Audit: ListProjectTransferHistory(project_id)

安全影响:

  • 令牌 6 小时后过期
  • 转移不可撤销
  • 所有环境和部署都会一并转移

部署技能

技能:触发部署
VCS 项目

自动触发(推荐):推送到 GitHub 会自动触发部署。

手动触发:

TriggerLatestDeployment(project_id, branch?)
// branch defaults to repo's default branch
镜像项目
CreateDeployment(project_id, {
  "image": "nginx:latest"
})
// Supports any valid Docker image reference:
// - nginx:latest
// - myregistry.com/myapp:v1.2.3
// - ghcr.io/org/repo:sha-abc123
上传项目

直接上传文件:

UploadDeploymentFiles(project_id, {
  "files": [
    {"path": "package.json", "content": "{\"name\":\"app\",...}"},
    {"path": "index.js", "content": "const express = require('express')..."},
    {"path": "public/style.css", "content": "body { margin: 0; }"}
  ]
})

Base64 文件(用于二进制内容):

UploadDeploymentBase64Files(project_id, {
  "files": [
    {"path": "assets/logo.png", "content": "iVBORw0KGgo..."}
  ]
})

ZIP 上传:

UploadDeploymentZip(project_id, {file: zipBinaryData})

限制:

  • 每次上传最多 100 个文件
  • 较大的项目请使用 ZIP
技能:部署生命周期
┌─────────┐    ┌──────────┐    ┌───────────┐    ┌──────────┐
│ queued  │ →  │ building │ →  │ deploying │ →  │ deployed │
└─────────┘    └──────────┘    └───────────┘    └──────────┘
                    │                                 │
                    ↓                                 ↓
               ┌────────┐                       ┌──────────┐
               │ failed │                       │ sleeping │
               └────────┘                       └──────────┘
状态说明可执行操作
queued等待构建槽位取消
building正在构建取消、查看日志
deploying正在推送到基础设施等待
deployed已上线并提供流量服务分配到环境
failed构建或部署出错重试、查看日志
sleeping空闲超时(节省成本)唤醒
技能:部署操作
操作工具备注
列出ListDeployments(project_id, limit?, offset?)每页最多 20 条,更多结果请翻页
获取详情GetDeployment(project_id, deployment_id)完整状态、时间戳、URL
重试RetriggerDeployment(project_id, deployment_id, settings?)settings:“project”或“deployment”
取消CancelDeployment(project_id, deployment_id)仅适用于 queued/building 状态
删除DeleteDeployment(project_id, deployment_id)标记为异步删除
唤醒WakeupDeployment(project_id, deployment_id)重启休眠中的部署
下载DownloadDeployment(project_id, deployment_id)仅适用于上传项目
技能:使用日志调试

构建日志——调试编译/构建失败:

GetBuildLogs(project_id, deployment_id, skip?)
// skip: number of lines to skip (for pagination)

运行时日志——调试应用错误:

GetDeploymentLogs(project_id, deployment_id, since-seconds?)
// since-seconds: look back window (default: 60)

环境日志——汇总某个环境的日志:

GetProjectEnvironmentLogs(project_id, environment_id, since-seconds?)

环境管理技能

技能:创建环境

环境为同一代码库提供相互隔离的配置。

典型设置:

  • production — 线上流量,最大资源
  • staging — 预生产测试
  • development — 功能开发
VCS 项目环境(需要分支)
CreateProjectEnvironment(project_id, {
  "displayName": "Production",
  "uniqueName": "production",
  "description": "Live production environment",
  "branch": "main",
  "isAutoPromoteEnabled": true,
  "resources": {
    "cpu": 500,
    "memory": 1024,
    "replicas": 2
  },
  "settings": {
    "runEnvs": {
      "NODE_ENV": "production",
      "DATABASE_URL": "postgresql://prod-db:5432/app",
      "REDIS_URL": "redis://prod-cache:6379"
    }
  }
})
镜像项目环境(无需分支)
CreateProjectEnvironment(project_id, {
  "displayName": "Production",
  "uniqueName": "production",
  "description": "Live production environment",
  "resources": {
    "cpu": 500,
    "memory": 1024,
    "replicas": 2
  },
  "settings": {
    "runEnvs": {
      "NODE_ENV": "production"
    }
  }
})
技能:资源管理
资源最小值最大值单位影响
CPU200500毫核越高,处理速度越快
内存5001024MB越高,内存中的数据越多
副本数13实例越高,可用性越高
UpdateProjectEnvironmentResources(project_id, environment_id, {
  "cpu": 500,
  "memory": 1024,
  "replicas": 3
})

扩缩容注意事项:

  • 副本数 > 1 时,应用必须采用无状态设计
  • 超出内存限制会导致 OOM 终止
  • 达到 CPU 限制时会发生节流(不会终止)
技能:环境变量
UpdateProjectEnvironmentEnvironmentVariables(project_id, environment_id, {
  "runEnvs": {
    "DATABASE_URL": "postgresql://...",
    "API_KEY": "new-secret-key",
    "LOG_LEVEL": "debug",
    "FEATURE_FLAG_X": "enabled"
  },
  "port": 8080  // Image projects only
})

最佳实践:

  • 切勿将机密提交到代码中——请使用 runEnvs
  • 为不同环境设置不同的值
  • 更改变量后需重新部署才能生效
技能:部署分配

手动控制哪个部署为环境提供服务:

AssignDeploymentToProjectEnvironment(project_id, environment_id, {
  "deploymentId": "deployment-uuid"
})

使用场景:

  • 回滚到之前的部署
  • 切换蓝绿部署
  • 金丝雀发布(使用多个环境)

域名与路由技能

技能:添加自定义域名
CreateDomain(project_id, {
  "name": "api.mycompany.com",
  "environmentId": "optional-env-uuid"  // Assign immediately
})

响应中包含 DNS 说明:

Add CNAME record:
  api.mycompany.com → <createos-provided-target>
技能:域名验证流程
1. CreateDomain → Status: pending
2. Configure DNS at your registrar
3. Wait for DNS propagation (up to 48 hours)
4. RefreshDomain → Status: active (if verified)
RefreshDomain(project_id, domain_id)
// Only available when status is "pending"
技能:域名与环境分配

将域名流量路由到指定环境:

UpdateDomainEnvironment(project_id, domain_id, {
  "environmentId": "production-env-uuid"
})
// Set to null to unassign

多域名设置示例:

  • app.example.com → production 环境
  • staging.example.com → staging 环境
  • dev.example.com → development 环境
技能:域名操作
操作工具
列出ListDomains(project_id)
验证RefreshDomain(project_id, domain_id)
分配UpdateDomainEnvironment(project_id, domain_id, {environmentId})
删除DeleteDomain(project_id, domain_id)

GitHub 集成技能

技能:连接 GitHub 账户
InstallGithubApp({
  "installationId": 12345678,
  "code": "oauth-code-from-github-redirect"
})

流程:

  1. 用户在 CreateOS 中点击“Connect GitHub”
  2. 重定向到 GitHub 进行授权
  3. GitHub 携带 code 和 installationId 重定向回来
  4. 调用 InstallGithubApp 完成连接
技能:发现代码仓库
// 1. Get connected accounts
ListConnectedGithubAccounts()
// Returns: [{installationId, accountName, accountType}, ...]

// 2. List accessible repositories
ListGithubRepositories(installation_id)
// Returns: [{id, name, fullName, private, defaultBranch}, ...]

// 3. List branches for a repo
ListGithubRepositoryBranches(installation_id, "owner/repo", page?, per-page?, protected?)
// Returns: [{name, protected}, ...]

// 4. Get file tree (for monorepo path selection)
GetGithubRepositoryContent(installation_id, {
  "repository": "owner/repo",
  "branch": "main",
  "treeSha": "optional-tree-sha"
})
技能:自动部署配置

分支筛选——从自动部署中忽略指定分支:

UpdateProjectSettings(project_id, {
  "ignoreBranches": ["develop", "feature/*", "wip/*"]
})

自动晋级——自动将部署分配到环境:

CreateProjectEnvironment(project_id, {
  "branch": "main",
  "isAutoPromoteEnabled": true,
  // ... other settings
})

当 isAutoPromoteEnabled: true 时,该分支的成功部署会自动在对应环境中生效。


分析与监控技能

技能:综合分析
GetProjectEnvironmentAnalytics(project_id, environment_id, {
  "start": 1704067200,  // Unix timestamp (default: 1 hour ago)
  "end": 1704070800     // Unix timestamp (default: now)
})

返回内容:

  • 请求总数
  • 状态码分布
  • RPM(每分钟请求数)
  • 成功率
  • 命中最多的路径
  • 错误最多的路径
技能:单项指标
指标工具返回内容
请求总数GetProjectEnvironmentAnalyticsOverallRequests总数、2xx、4xx、5xx 计数
RPMGetProjectEnvironmentAnalyticsRPMRPM 峰值和平均值
成功率GetProjectEnvironmentAnalyticsSuccessPercentage(2xx + 3xx) / 总数
时间序列GetProjectEnvironmentAnalyticsRequestsOverTime随时间变化的各状态请求数
热门路径GetProjectEnvironmentAnalyticsTopHitPaths访问量最高的 10 个路径
错误路径GetProjectEnvironmentAnalyticsTopErrorPaths最容易出错的 10 个路径
分布GetEnvAnalyticsReqDistribution按状态码细分
技能:性能监控

识别问题:

  1. 检查 SuccessPercentage——数值下降表示存在问题
  2. 查看 TopErrorPaths——找出有问题的端点
  3. 分析 RequestsOverTime——发现流量模式
  4. 监控 RPM——检测流量峰值

安全技能

技能:漏洞扫描

启用扫描:

UpdateProject(project_id, {
  "enabledSecurityScan": true
})

触发扫描:

TriggerSecurityScan(project_id, deployment_id)

查看结果:

GetSecurityScan(project_id, deployment_id)
// Returns: {status, vulnerabilities, summary}

下载完整报告:

GetSecurityScanDownloadUri(project_id, deployment_id)
// Only when status is "successful"
// Returns signed URL for report download

重试失败的扫描:

RetriggerSecurityScan(project_id, deployment_id)
// Only when status is "failed"

组织技能(应用)

技能:分组项目

应用可对相关项目和服务进行逻辑分组。

CreateApp({
  "name": "E-Commerce Platform",
  "description": "All services for the e-commerce system",
  "color": "#3B82F6"
})
技能:管理应用内容
// Add projects to app
AddProjectsToApp(app_id, {
  "projectIds": ["project-1-uuid", "project-2-uuid"]
})

// Remove projects
RemoveProjectsFromApp(app_id, {
  "projectIds": ["project-1-uuid"]
})

// List projects in app
ListProjectsByApp(app_id, limit?, offset?)

// Same for services
AddServicesToApp(app_id, {"serviceIds": [...]})
RemoveServicesFromApp(app_id, {"serviceIds": [...]})
ListServicesByApp(app_id, limit?, offset?)
技能:应用生命周期
操作工具
列出ListApps()
更新UpdateApp(app_id, {name, description?, color?})
删除DeleteApp(app_id)

注意:删除应用会将关联项目/服务的 appId 设为 null(不会删除这些项目/服务)。


API 密钥管理技能

技能:创建 API 密钥
CreateAPIKey({
  "name": "production-key",
  "description": "API key for production CI/CD",
  "expiryAt": "2025-12-31T23:59:59Z"
})
// Returns: {id, name, key, expiryAt}
// IMPORTANT: key is only shown once at creation
技能:API 密钥操作
操作工具
列出ListAPIKeys()
更新UpdateAPIKey(api_key_id, {name, description?})
撤销RevokeAPIKey(api_key_id)
检查名称CheckAPIKeyUniqueName({uniqueName})
技能:用户与配额管理
GetCurrentUser()
// Returns: user profile information

GetQuotas()
// Returns: {projects: {used, limit}, apiKeys: {used, limit}, ...}

GetSupportedProjectTypes()
// Returns: current list of supported runtimes and frameworks

常见部署模式

模式:AI Agent 部署
CreateProject({
  "uniqueName": "intelligent-agent",
  "displayName": "Intelligent Agent",
  "type": "vcs",
  "source": {"vcsName": "github", "vcsInstallationId": "...", "vcsRepoId": "..."},
  "settings": {
    "runtime": "python:3.12",
    "port": 8000,
    "installCommand": "pip install -r requirements.txt",
    "runCommand": "python -m uvicorn agent:app --host 0.0.0.0 --port 8000",
    "runEnvs": {
      "OPENAI_API_KEY": "sk-...",
      "ANTHROPIC_API_KEY": "sk-ant-...",
      "LANGCHAIN_TRACING": "true",
      "AGENT_MEMORY_BACKEND": "redis"
    }
  }
})
模式:MCP 服务部署
CreateProject({
  "uniqueName": "my-mcp-server",
  "displayName": "Custom MCP Server",
  "type": "vcs",
  "source": {"vcsName": "github", "vcsInstallationId": "...", "vcsRepoId": "..."},
  "settings": {
    "runtime": "node:20",
    "port": 3000,
    "installCommand": "npm install",
    "runCommand": "node server.js",
    "runEnvs": {
      "MCP_TRANSPORT": "sse",
      "MCP_PATH": "/mcp"
    }
  }
})

MCP 端点:https://{uniqueName}.createos.nodeops.network/mcp

模式:RAG 流水线
CreateProject({
  "uniqueName": "rag-pipeline",
  "displayName": "RAG Pipeline Service",
  "type": "vcs",
  "settings": {
    "runtime": "python:3.12",
    "port": 8000,
    "runCommand": "uvicorn main:app --host 0.0.0.0 --port 8000",
    "runEnvs": {
      "PINECONE_API_KEY": "...",
      "PINECONE_ENVIRONMENT": "us-west1-gcp",
      "OPENAI_API_KEY": "...",
      "EMBEDDING_MODEL": "text-embedding-3-small",
      "CHUNK_SIZE": "512",
      "CHUNK_OVERLAP": "50"
    }
  }
})
模式:Discord/Slack 机器人
CreateProject({
  "uniqueName": "discord-bot",
  "displayName": "Discord Bot",
  "type": "image",
  "source": {},
  "settings": {
    "port": 8080,
    "runEnvs": {
      "DISCORD_TOKEN": "...",
      "DISCORD_CLIENT_ID": "...",
      "BOT_PREFIX": "!",
      "LOG_CHANNEL_ID": "..."
    }
  }
})

// Deploy with:
CreateDeployment(project_id, {"image": "my-discord-bot:v1.0.0"})
模式:多 Agent 系统
┌─────────────────────────────────────────────────┐
│                  App: Agent Swarm               │
├─────────────────┬─────────────────┬─────────────┤
│  Orchestrator   │   Worker Agent  │  Worker Agent│
│  (coordinator)  │   (researcher)  │  (executor) │
└────────┬────────┴────────┬────────┴──────┬──────┘
         │                 │               │
         └────── HTTP/gRPC communication ──┘
// 1. Create app
CreateApp({"name": "Agent Swarm"})

// 2. Create orchestrator
CreateProject({
  "uniqueName": "orchestrator",
  "type": "vcs",
  "appId": app_id,
  "settings": {
    "runEnvs": {
      "WORKER_RESEARCHER_URL": "https://researcher.createos.nodeops.network",
      "WORKER_EXECUTOR_URL": "https://executor.createos.nodeops.network"
    }
  }
})

// 3. Create workers
CreateProject({"uniqueName": "researcher", "appId": app_id, ...})
CreateProject({"uniqueName": "executor", "appId": app_id, ...})
模式:蓝绿部署
1. CreateProjectEnvironment "blue" with branch "main"
2. CreateProjectEnvironment "green" with branch "main"
3. CreateDomain "app.example.com" → assign to "blue"
4. Deploy new version to "green"
5. Test via green's environment URL
6. UpdateDomainEnvironment → switch to "green"
7. "blue" becomes the standby
模式:回滚
// 1. Find previous good deployment
ListDeployments(project_id, {limit: 10})
// Identify deployment_id of last known good

// 2. Assign to environment
AssignDeploymentToProjectEnvironment(project_id, environment_id, {
  "deploymentId": "previous-good-deployment-id"
})

最佳实践

安全
  1. 切勿将密钥硬编码 — 对所有敏感数据使用 runEnvs
  2. 启用安全扫描 — 尽早发现漏洞
  3. 轮换 API 密钥 — 设置合理的有效期
  4. 隔离环境 — 为不同环境使用不同的密钥
性能
  1. 合理配置资源 — 从小规模开始,根据指标扩容
  2. 使用副本保障可用性 — 生产环境至少 2 个
  3. 监控分析数据 — 为错误率飙升设置警报
  4. 优化构建 — 使用 npm ci,而非 npm install
可靠性
  1. 谨慎启用自动晋级 — 先在暂存环境中测试
  2. 保留之前的部署 — 以便快速回滚
  3. 使用健康检查 — 确保 port 与应用的监听端口一致
  4. 处理休眠部署 — 唤醒部署或配置保持活动机制
组织管理
  1. 使用应用 — 对相关项目进行逻辑分组
  2. 遵循命名规范 — 使用 {app}-{service}-{env} 模式
  3. 记录环境信息 — 为每个环境提供清晰的描述
  4. 清理未使用资源 — 删除旧项目和部署

故障排查与边缘情况

常见错误
错误诊断解决方案
构建失败GetBuildLogs修复代码错误,检查依赖项
运行时崩溃GetDeploymentLogs检查启动错误和缺失的环境变量
健康检查失败应用未在端口上响应确认 port 设置与应用端口一致
502 Bad Gateway应用在部署后崩溃检查日志;如果发生 OOM,则增加内存
域名待处理DNS 尚未传播等待 24-48h,并验证 CNAME 记录
超出配额GetQuotas升级套餐或删除未使用的资源
部署休眠空闲超时使用 WakeupDeployment 或添加保持活动机制
边缘情况

高负载场景:

  • 每个环境最多 3 个副本
  • 规模需求更高时,可考虑使用外部负载均衡器
  • 监控 RPM 并调整资源

Monorepo 项目:

  • 将 directoryPath 设置为子目录
  • 使用 GetGithubRepositoryContent 探索项目结构

私有 npm/pip 包:

  • 将身份验证令牌添加到 buildVars
  • 在仓库中使用 .npmrc 或 pip.conf

长时间运行的构建:

  • 构建超时时间为 15 分钟
  • 复杂构建请使用 hasDockerfile: true
  • 为镜像项目预先构建镜像

API 快速参考

项目生命周期
CreateProject → ListProjects → GetProject → UpdateProject → UpdateProjectSettings → DeleteProject
CheckProjectUniqueName | GetProjectTransferUri → TransferProject | ListProjectTransferHistory
部署生命周期
CreateDeployment | TriggerLatestDeployment | UploadDeploymentFiles | UploadDeploymentBase64Files | UploadDeploymentZip
ListDeployments → GetDeployment → AssignDeploymentToProjectEnvironment
RetriggerDeployment | CancelDeployment | DeleteDeployment | WakeupDeployment | DownloadDeployment
GetBuildLogs | GetDeploymentLogs
环境生命周期
CreateProjectEnvironment → ListProjectEnvironments → UpdateProjectEnvironment → DeleteProjectEnvironment
CheckProjectEnvironmentUniqueName | AssignDeploymentToProjectEnvironment
UpdateProjectEnvironmentEnvironmentVariables | UpdateProjectEnvironmentResources
GetProjectEnvironmentLogs
域名生命周期
CreateDomain → ListDomains → RefreshDomain → UpdateDomainEnvironment → DeleteDomain
GitHub 集成
InstallGithubApp → ListConnectedGithubAccounts
ListGithubRepositories → ListGithubRepositoryBranches → GetGithubRepositoryContent
分析
GetProjectEnvironmentAnalytics (comprehensive)
GetProjectEnvironmentAnalyticsOverallRequests | GetProjectEnvironmentAnalyticsRPM
GetProjectEnvironmentAnalyticsSuccessPercentage | GetProjectEnvironmentAnalyticsRequestsOverTime
GetProjectEnvironmentAnalyticsTopHitPaths | GetProjectEnvironmentAnalyticsTopErrorPaths
GetEnvAnalyticsReqDistribution
安全
TriggerSecurityScan → GetSecurityScan → GetSecurityScanDownloadUri
RetriggerSecurityScan
应用
CreateApp → ListApps → UpdateApp → DeleteApp
AddProjectsToApp | RemoveProjectsFromApp | ListProjectsByApp
AddServicesToApp | RemoveServicesFromApp | ListServicesByApp
API 密钥与用户
CreateAPIKey → ListAPIKeys → UpdateAPIKey → RevokeAPIKey
CheckAPIKeyUniqueName | GetCurrentUser | GetQuotas | GetSupportedProjectTypes
命名限制
字段最小值最大值模式
项目 uniqueName432^[a-zA-Z0-9-]+$
项目 displayName448^[a-zA-Z0-9 _-]+$
描述42048任意文本
环境 uniqueName432^[a-zA-Z0-9-]+$
环境 displayName448^[a-zA-Z0-9 _-]+$
API 密钥名称448^[a-zA-Z0-9-]+$
域名3255有效域名

另请参阅

如果用户要将现有项目从其他云平台迁移过来,而不是从头开始,请优先使用迁移类技能,而非通用的 createos 流程:

  • vercel-to-createos — 目前可用。当仓库包含 vercel.json、.vercel/ 或 @vercel/* 依赖项,或者用户提到从 Vercel 迁移时使用。
  • netlify-to-createos、railway-to-createos、heroku-to-createos、render-to-createos、flyio-to-createos — 预留占位项。在这些技能发布之前,请引导用户通过 mailto:[email protected] 联系迁移顾问。

有关完整的迁移技能索引,请参阅仓库根目录中的 MIGRATIONS.md。


最后更新:2025 年 1 月

评论

支持 Markdown