首页开发
Developers

在 Raise 上开发业务系统,开发者只写业务。

身份、权限、审计、多端和助手由平台提供。开发者用 Go 或 TypeScript SDK 写后端,用 React 应用 SDK 写页面,按 k3 协议声明对象、操作和权限点;契约测试证明应用遵守协议,之后装进组织,或在应用市场上架。

1 创建开放平台登记 2 开发k3 CLI · SDK契约测试 L0–L3 3 提交版本自动检查版本不可变 4 人工审核权限点、出网声明与功能是否匹配 5 上架应用市场 6 组织安装固定版本角色映射权限点 7 结算按期结算单 开发者任何时候看不到组织的数据:没有生产 shell、没有数据库凭据、看不到请求内容。
Toolchain

两个服务端 SDK、一个应用 SDK 和一个命令行,覆盖从写代码到发布。

SDK

Go SDK 与 TypeScript SDK 版本号相同,一起发布。

换令牌、重试、分页、幂等键和 Webhook 验签都在 SDK 里,开发者不用自己拼签名和重试。

  • Go SDK:raise-go。模块 github.com/21stware/raise-go,要求 Go 1.26 及以上。公共模块代理可装,平台也带一个只读的模块代理。
  • TypeScript SDK。@21stware/raise-sdk,零运行时依赖,跑在 Node.js 18+、Deno、Bun 和 Cloudflare Workers 上,从平台的开发者门户下载安装。
  • React 应用 SDK。应用页面用 @21stware/raise-app-sdk 与套件包 @21stware/raise-app-kit。平台自带应用的页面用的也是这个套件包。
GET /open/v1/whoami
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	"github.com/21stware/raise-go"
)

func main() {
	c := raise.New(os.Getenv("CLIENT_ID"), os.Getenv("CLIENT_SECRET"),
		raise.WithTenant(os.Getenv("TENANT")),
		raise.WithBaseURL("https://api."+os.Getenv("DOMAIN")+"/open/v1"),
	)
	me, err := c.Platform.Whoami(context.Background())
	if err != nil {
		log.Fatal(err) // *raise.Error:err.Code、err.RequestID
	}
	fmt.Println(me.Tenant, me.App, me.Scopes)
}

客户端密钥只放在服务端,不打进浏览器页面或小程序前端。

k3 CLI

从 k3 app init 到 k3 publish。

01 · k3 app init

应用模板

k3 app init 从 Go 后端加 React 前端的模板生成项目。模板随平台一起构建,并跑契约测试。

02 · manifest.json

清单

应用在清单里声明对象、操作和权限点,助手按声明使用它。清单随版本审核;接入等级写在清单的 level 里,由契约测试证明。

03 · k3 dev

k3 CLI 与本地 devkit

k3 dev 在本机起身份服务、草稿服务和预览工作台;k3 dev --test-enterprise 让本机进程以测试企业里那个应用的身份运行。

04 · k3 contract

契约测试

契约测试证明应用遵守协议,之后装进组织,或在应用市场上架。

05 · k3 publish

调试与发布

k3 logs 看调用日志和脱敏后的错误;k3 listen、k3 trigger 收发测试事件;k3 publish 上传版本、跑检查、提交审核。

k3 app init
k3 app init my-app --module example.com/my-app
cd my-app
go build ./...
生成 Go 服务端、React 页面和清单 manifest.json快速开始 →
k3 protocol

应用在清单里声明对象、操作和权限点,助手按声明使用它。

清单随版本审核。助手需要知道「应用能做什么」,读清单;需要数据和结果,调应用的后端,以成员本人的身份。接入等级写在清单的 level 里,由契约测试证明。

等级应用得到什么应用要做什么
L0 嵌入在工作台面板里打开清单与导航
L1 可链接助手给出链接,成员点开进到应用的页面路由接受引用和筛选,声明对象的页面
L2 感知助手知道成员正在看什么报告当前页面与选中的 k3:// 引用,声明哪些内容要遮盖
L3 可起草、可操作助手起草变更、请求动作,成员在应用自己的页面里审阅声明操作,提供预演与执行接口,每个操作声明审阅方式

等级不由开发者自报:审核人员用 k3 contract 实测,记下实测等级,组织按实测等级启用应用。

Interfaces

两个接口、一种事件、一座 MCP 桥,约定处处一样。

开放接口与应用接口用同一种错误信封。

同一个 Idempotency-Key、同样的限流响应头。两份接口参考都由接口描述文件生成,可以下载导入自己的工具。

HTTP ≥ 400 · 错误信封
{
  "error": {
    "code": "scope_required",
    "message": "this call needs the scope platform:ping",
    "requestId": "9f2c7a3b4e1d5f60",
    "docUrl": "https://dev.${DOMAIN}/docs/errors#scope_required",
    "details": {}
  }
}
接口给谁用能做什么
开放接口 /open/v1组织授权的集成、代表组织的应用读多维表和组织通讯录,读写客户档案;也可以代表一位终端客户(小程序用户)调用
应用接口 /app/v1已安装的应用调用平台能力:客户中心、站点访客、经营记账、审计链、成员、事件、记录链接;范围在清单里声明
Webhook任何接了事件的后端平台把事件推到 https 地址,同一个信封、同一种签名,失败重试
MCP外部 Agent以登录成员的委托令牌调用平台的工具;已安装应用声明的操作出现在工具列表里,调用结果进草稿

平台调用应用时(操作的预演与执行、事件、服务)带签名断言,应用用平台公布的公钥验签。

Test & live

测试与正式两套密钥,测试在测试企业里做。

密钥前缀决定环境。

测试密钥只能用在开发者组织自己的测试企业,正式密钥只能用在真实的组织;拿错了,平台返回 wrong_environment。

  • 两种前缀。kwo_test_ 与 kwo_live_;每个应用每个环境最多 5 把,可限 IP,轮换有重叠期。
  • 测试企业。数据独立、不计费,可以带示例客户、多维表和测试员工;草稿版本也能试装。
  • 以测试员工身份进入。测试店长、测试前台、测试员工各一位,用一次性的登录地址进到工作台。
  • 期限。每个开发者组织同时最多 3 个测试企业,每个存活 30 天,可延期到 90 天。
k3 test-enterprise
k3 test-enterprise create "分销联调" --email sbx-admin@example.com --sample general
k3 test-enterprise list
密钥只打印一次本地开发与测试企业 →
Run & ship

应用可以由平台托管运行,也可以由开发者自己运行。

由谁运行不在创建时选,由每个版本的清单决定。分发方式由开发者组织决定:只给自己的组织用,或在应用市场上架。

  • 托管运行

    清单写了 runtime.image 的版本由平台运行。有自己数据的应用有自己的模式 app_<id> 和同名角色,迁移在发布时执行。

  • 自建应用

    属于某个组织的开发者组织建的应用,只在这个组织里用。版本提交后自动通过,不经审核。

  • 应用市场上架

    版本提交后不可变,先过自动检查(清单、版本、界面地址、运行配置),再经人工审核,通过后由开发者决定何时上架。

在 Raise 上开发的业务系统可以作为自己的产品售卖:经应用市场上架、计费与结算,或带许可证交付。商业授权

Data boundary

开发者看得到自己的应用,看不到任何组织的数据。

开发者组织在身份中心里是独立的组织,它的令牌不带组织,所以没有任何组织接口会接受它。运行信息只经三条路径给到开发者。

  • 应用级的指标。按应用汇总,不按组织列出。
  • 脱敏后的错误。不含请求体、字段值、令牌。
  • 限时诊断。组织明确批准后才有:只读,写进组织的审计链,可撤销。
  • 没有的。生产环境的 shell、数据库凭据、原始日志。
组织层 业务数据归组织 会员、订单、合同、知识库 成员、部门、角色、数据范围 审计链(只追加) 应用配置与品牌 行级安全在数据库里强制 看不到 开发者层 应用本身,不含任何组织数据 代码、版本、manifest 模板、知识包、市场资料 聚合指标、脱敏错误 收款与结算 代码被当作不可信第三方运行 平台层 运营,默认没有权限 账户、计费、许可证 市场目录、审核 平台遥测、全局配置 看不到任何组织的业务数据 技术支持进入:组织批准、限时、只读、全程记录、随时撤销(break-glass)

第一次调用从测试密钥开始。

注册开发者组织,建一个应用和一个测试企业,拿一把测试密钥,用 Go 或 TypeScript SDK 调用第一个接口。开发文档从这一步讲起。