docs/RELEASE_NOTES_v0.4.0.md
Rama main · réplica de lectura del repositorio original.
# BailingHub v0.4.0:原生对话表单与聊天入口控制
`v0.4.0` 为官方网页聊天组件增加受约束的原生对话表单,并补齐聊天入口的默认展开与浏览器 Origin 白名单配置。表单沿用现有展示能力协商与非阻塞会话模型,不建立第二套任务状态或审批协议。
## 主要变化
- **原生对话表单**:官方零依赖 Widget 支持 `bailing-form` v1,可安全渲染文本、多行文本、数字、日期、布尔、单选和多选字段,并提供客户端/服务端双重校验、提交回执与历史恢复。
- **主动收集信息**:只有客户端明确声明支持 `bailing-form` 时,内置 LLM 才会收到受限表单输出指引。当上下文表明继续任务必须一次补齐多项信息时,模型可以主动输出表单,无需用户先要求“输出一个表单”。
- **非阻塞续聊**:源回答仍正常进入 `done`;提交、取消或跳过表单会在同一 thread 创建新的用户轮次和 job,不新增 `input_required`,也不改变既有 SSE 终态。
- **默认展开**:聊天入口外观新增默认关闭的 `default_open`。开启后现有官方嵌入脚本加载即展开,无需修改业务页面;原有 `data-open="1"` 强制展开方式继续兼容。
- **Origin 白名单防误配**:控制台只接受精确 `scheme://host[:port]`,保存时规范化并去重;非白名单浏览器 Origin 在创建任务前返回 403,非法或错误类型配置返回 400。
- **生态文档发现**:README 增加独立维护的 DeepSeek Harness 社区插件链接;该链接不进入 BailingHub Core,也不代表 DeepSeek 官方开发、认证、背书或采用。
## 安全与信任边界
- 表单 Schema 从源 job 的权威最终回复重新读取;服务端同时核对入口、身份、thread 与 `submission_id`,客户端不能用自带 Schema 改写提交规则。
- 表单不能请求密码、Token、API Key、私钥或支付凭据,也不能改变身份、路由、工具白名单、审批、业务权限或副作用闸门。
- 普通表单值会按既有聊天语义进入对话总账和模型上下文,部署方仍需执行自己的数据保留、隐私告知与合规策略。
- Origin 白名单只防浏览器直接盗嵌,不是服务端鉴权。空数组仍表示不限制;不带 Origin 的小程序或服务端请求继续按既有契约放行,需要限制此类调用时应使用签名或业务票据。
- 自定义或外部 executor 不会自动获得内置 LLM 的表单提示,接入方需要自行遵守同一公开输出契约。
## 兼容性与升级
- 公开契约增量到 `bailing.contract.v2.14`;`WIDGET_API` 与 `rendererApiVersion` 仍为 1。
- 没有新增数据库迁移,最新迁移仍为 `054_demo_dataset_state.sql`。
- Client API v1、Kernel Host API v1、Executor Protocol、ACC、SDK、工具签名、审批语义与业务系统最终授权保持不变。
- 既有聊天入口默认保持收起;既有 `allowed_origins: []` 继续表示不限制。需要限制网页嵌入时,应在控制台保存精确来源,不要填写路径、查询参数或通配符。
## 验证
发布门禁覆盖完整 `npm run release:check`、554 项 Core 测试、Widget 真实浏览器交互、控制台构建、双语文档、OSS 边界、安全扫描、Client API 契约与 npm 制品一致性检查。主动表单、提交续轮、刷新恢复、默认展开和非白名单浏览器拒绝也完成了真实端到端验证。
## 相关文档
- [公开运行时契约](CONTRACT.md)
- [Widget 渲染与表单契约](WIDGET_RENDERERS.md)
- [流式协议](STREAMING.md)
- [兼容性与升级](兼容性与升级.md)
- [English release notes](RELEASE_NOTES_v0.4.0.en.md)