平台 systemPrompt、SDK 的 system 和 systemAppend 是三段不同的系统文本。默认 fallback 下,显式 system(含 [])替换平台段;prepend 把平台段放在代码段之前。systemAppend 只追加,不触发替换。管理端修改平台正文用的是应用管理者令牌,终端运行用的是另一套凭据。
文本放在哪个进程
Windows Electron 由主进程装配 SDK。渲染进程只提交用户输入和展示结果,不持有 appkey,也不持有管理访问令牌。单轮调用省略 system、只传 systemAppend 时,默认策略使用平台角色,并在后面加上宿主说明。
Android、iOS、鸿蒙客户端不通过协议设置 system。主智能体在自托管的 @tansr/serve 上运行,platform.system 与 platform.systemAppend 写在服务端工厂配置里,遵守同一张真值表。设备只使用业务登录态,应用密钥留在 serve。
低阶 runAgent 不拉取平台 bundle,调用方自己把完整系统段交给 system。注入模型客户端的 query 同样不装配平台配置,但显式 systemAppend 仍接在 system 之后。
管理接口和运行令牌不能混用
修改平台提示词调用 PUT /v1/apps/{id}/config,身份是拥有该应用管理权限的登录访问令牌。它不是终端 app_user,也不能用 appkey 代替。组织应用要带 x-tansr-org。systemPrompt 最多 16000 个 Unicode 字符;null 或纯空白清空正文,不重置策略。请求中缺席的字段保持原值,所以只改策略时可以只传 systemPromptPolicy。
运行时的短期 app_user 只供已登录用户的那次 SDK 调用。把管理令牌或 appkey 放进桌面渲染进程、手机包或提示词正文,都不属于这套装配。提示词会进入模型请求;桌面端还会收到 bundle,平台提示词对客户端不是机密。
默认覆盖和下一轮生效
| 条件 | 进入请求的业务段 |
|---|---|
fallback,未传 system,平台有角色 |
平台角色 |
fallback,传入具体 system |
只有代码段 |
fallback,传入 [] |
没有业务段 |
prepend,传入具体 system,平台有角色 |
先平台角色,再代码段 |
prepend,传入 [],平台有角色 |
平台角色 |
systemAppend 排在上表选出的业务段之后,然后才是该入口实际装配的工具、Skills 或 MCP 指南。SDK 不会把重复粘贴的平台段自动去重。prepend 不是权限控制。
平台正文和策略在每个新一轮开始前刷新,进行中的工具循环不更换。刷新失败时本轮不调用模型,尚未执行的用户消息不写入持久历史。事件为 turn.error(application_prompt_refresh_failed)和随后的 turn.aborted。applicationPrompt 只有 policy 和 source,没有正文,也不包含 systemAppend。
文档写明该能力自 @tansr/sdk 0.13.0、@tansr/serve 0.8.0 起提供;2026-10-20 npm 上的现行发布版为 SDK 0.19.0、serve 0.15.1。更早消费端可能忽略平台段。一次固定生成不必迁到这套装配。字段说明见应用系统提示词与 SDK 拼接策略。本文没有复跑管理接口或模型调用。