开发文档 · 当前 UI
先验证决策结构,再接入真实模型
Playground 先在浏览器校验 State 与问题;本地 Mock 不发送数据,登录后的真实运行会经过同源 Go API、SQLite 会话、额度、预算与 Provider 路由。
实现状态(2026-09-20):编辑器、模板、前后端权威校验、Google OIDC、SQLite 会话、额度/预算、脱敏日志、Cloudflare 与 OpenCode Adapter 均已实现。真实供应商是否可调用仍取决于生产 Secret、明确授权和现场联调,不把“代码已具备”写成“外部服务已就绪”。
当前流程
编辑在浏览器,真实调用走受保护后端
“本地 Mock”会等待约 650 ms 后在浏览器构造响应,显示值只用于界面测试。“真实运行”要求有效 Google 会话和当前条款确认,并由服务端执行用户/IP 限流、每日额度、全局成本预留、Provider 选择、响应 Schema 校验和脱敏日志。自定义草稿仍只保留在当前页面内存。
请求预览
State 与 Questions
文本模式把 State 保留为字符串,JSON 模式会先解析为对象或数组。问题 ID 成为响应键;instructions 承担完整语义。
{
"state": "The customer was charged twice.",
"questions": {
"department": {
"type": "choice",
"instructions": "Which team should handle this?",
"criteria": {
"billing": "Payments and refunds",
"technical": "Bugs and outages",
"sales": "Pricing and upgrades"
}
}
}
}POST /api/playground 已作为网站同源内部接口实现,并要求 Session、CSRF Token 与幂等键。它不是公共 API,不发行用户密钥,也不对外承诺长期兼容性、SLA 或商业转售授权。
前端校验
当前编辑器采用的限制
- STATE
- 必填;最多 32 KiB;JSON 模式必须能够解析。
- 问题数量
- 每次 1–8 个。
- 问题 ID
- 以小写字母开头,仅含小写字母、数字和下划线;请求内唯一。
- INSTRUCTIONS
- 至少 8 个字符,不能只依赖 ID 表达含义。
- CHOICE
- 2–255 个名称唯一的候选项。
- SCORE
- 2–10 个从低到高排列的等级。
- NOUL
- 返回“是”的概率;True/False 说明同时填写或同时留空。
- 校验边界
- 前端校验用于即时反馈;Go API 会重新执行未知字段、大小、深度、数量和结果概率等权威校验。
Choice
从固定名称集合中选择一个
候选名称会成为稳定的程序值,说明用于消除语义重叠。候选集合可能不完整时,应显式增加 other 或 none_of_the_above。
Score
从低到高定义有序等级
索引从 0 开始,结果可按各等级概率计算加权分数,因此可能是非整数。等级顺序属于协议的一部分,不能只看最大概率项。
Noul
读取“是”的概率
Noul 返回 Yes 概率,不替业务生成阈值或执行布尔命令。是否自动处理仍应由风险、权限和人工复核策略决定。
Mock 响应
用于验证结果界面,不代表模型能力
{
"request_id": "td_mock_...",
"model": "jev-ui-mock",
"answers": {
"department": {
"type": "choice",
"choice": "billing",
"confidence": 0.58,
"probabilities": {
"billing": 0.58,
"technical": 0.30,
"sales": 0.12
}
}
},
"usage": {
"input_tokens": 24,
"output_tokens": 0,
"cost_usd": null
},
"elapsed_ms": 128
}- Choice 显示获选项、confidence 和全部候选概率。
- Score 显示概率加权分数、图例和各等级概率。
- Noul 只显示 Yes/No 概率,不单列 confidence。
服务端边界
真实调用必须由服务端承担
浏览器只向同源内部接口提交真实请求。服务端负责登录会话、权威 Schema 校验、限流、预算、幂等、Provider 路由、错误映射和脱敏日志;供应商密钥不会进入浏览器。生产启用前还必须完成 Provider 与 TypeSafe 授权审查和真实计费核对。
后台首版采用单 API 实例与本地 SQLite,保存账户、会话、额度、预算和脱敏审计元数据,不保存完整 State。只有需要多实例、持续写入竞争或更高可用性时才迁移 PostgreSQL。
国际化计划
简体中文为主语言,六种语言使用独立 URL
根路径 / 直接提供简体中文首页,不使用语言前缀,也不会根据 IP、浏览器语言或未来英文版的上线状态改变默认入口。后续译文分别使用 /en、/zh-tw、/ja、/ko 和 /fr,用户可通过页头语言入口主动切换。
当前状态:仓库现在只有简体中文页面。页头语言入口会如实标记其他语言仍在筹备,不会先生成空页面、混用中文内容或输出虚假的 hreflang。每种译文完成后才会开放对应 URL,并加入 sitemap。
从概念到配置