星海智算开发文档
应用开发开发教程

接入用户运行会话

接入用户运行会话:沿用平台当前公开 SDK 合同,区分本地模拟、联网调试与正式运行。

用户打开应用后,前端把 launchCode 交给应用自己的后端。应用使用进程级 RuntimeClient 交换启动码。正式运行所需地址和应用凭据由平台自动提供,业务代码不填写凭据路径:

from jusp_sdk.runtime import RuntimeClient

runtime_sessions = RuntimeClient(
    app_key="your-app",
)

def exchange_runtime(body: dict) -> dict:
    session = runtime_sessions.exchange_request(body)
    identity = session.identity()
    return {
        "sessionId": session.session_id,
        "tenantId": identity.tenant_id,
        "accountId": identity.account_id,
        "roles": list(identity.roles.roles),
        "expiresAt": session.expires_at,
    }

exchange_request 严格只接受 {"launchCode": "..."}。启动码被并发提交时只有一个请求成功;应用把失败映射为“请重新打开应用”,不能退回旧身份链。

需要重新确认会话时:

session = runtime_sessions.resolve(session_id)
if session.app_roles.allows("your-app.editor"):
    ...

SDK 默认缓存成功解析 1 秒、最多 2048 项,并合并同步客户端对同一 session 的并发解析;不会越过 expiresAt。安全敏感功能可以创建 resolve_cache_ttl_seconds=0 的客户端关闭缓存。

运行会话默认有效 24 小时。应用可以在用户持续使用期间提前续期,而不必等待会话失效:

session = runtime_sessions.resolve(session_id)
session = runtime_sessions.renew_if_needed(
    session,
    min_remaining_seconds=6 * 60 * 60,
)
# 如果 session_id 变化,把新的 ID 原子替换到应用自己的 HttpOnly Cookie。

续期会重新读取当前账号、组织关系和应用角色,不沿用陈旧权限;同一初始登录最多连续续期七天,此后应引导用户从应用中心重新打开。已过期会话不能续期,权限撤销或应用不可用也不会降级放行。


返回应用开发 · 下一步:在应用中调用模型