TypeDecide 首页

开发文档 · 当前 UI

先验证决策结构,再接入真实模型

Playground 先在浏览器校验 State 与问题;本地 Mock 不发送数据,登录后的真实运行会经过同源 Go API、SQLite 会话、额度、预算与 Provider 路由。

实现状态(2026-09-20):编辑器、模板、前后端权威校验、Google OIDC、SQLite 会话、额度/预算、脱敏日志、Cloudflare 与 OpenCode Adapter 均已实现。真实供应商是否可调用仍取决于生产 Secret、明确授权和现场联调,不把“代码已具备”写成“外部服务已就绪”。

当前流程

编辑在浏览器,真实调用走受保护后端

编辑输入 State 与问题
校验生成请求 JSON
运行本地 Mock 或登录后调用

“本地 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

从固定名称集合中选择一个

候选名称会成为稳定的程序值,说明用于消除语义重叠。候选集合可能不完整时,应显式增加 othernone_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。

模型和生态产品分别维护在 模型目录生态产品,Provider 只属于内部集成,不设置公开 Provider 页面。

国际化计划

简体中文为主语言,六种语言使用独立 URL

根路径 / 直接提供简体中文首页,不使用语言前缀,也不会根据 IP、浏览器语言或未来英文版的上线状态改变默认入口。后续译文分别使用 /en/zh-tw/ja/ko/fr,用户可通过页头语言入口主动切换。

当前状态:仓库现在只有简体中文页面。页头语言入口会如实标记其他语言仍在筹备,不会先生成空页面、混用中文内容或输出虚假的 hreflang。每种译文完成后才会开放对应 URL,并加入 sitemap。

从概念到配置

打开 Playground,亲手构造一次决策

开始调试