refactor: unify tool reason requirements

This commit is contained in:
2026-10-28 16:43:04 +08:00
parent 7d47a2df86
commit c3050b602b
20 changed files with 97 additions and 46 deletions
+2
View File
@@ -403,6 +403,8 @@ Agent 服务的 API 前缀是 `/api/v1`,路径不再包含 `/agent/chat`。生
这里是现有 HTTP/SSE 服务的 `tjwater` 扩展,映射 OpenCode 原生用户收件箱;不等同于 OpenAI WebSocket 的 `response.steer` 事件,官方协议边界见 [Mid-turn steering](https://developers.openai.com/api/docs/guides/steering)。验证命令 `bun tests/integration/response-input-smoke.ts` 使用隔离 OpenCode 和本机确定性模型,验证模式切换及队列后续输出,不调用付费推理。
工具说明统一使用 `reason`,填写时用一句话说明具体目的或业务依据。普通查询不额外注入该参数,地图、图表和 SCADA 展示工具的说明可选;缺少可选说明不会触发警告。数据权限申请、处置提案和计划变更保留必填理由;`memory_manager` / `skill_manager` 的 `list` 可省略,其余修改操作在内部桥接接口强制校验非空理由。说明随调用进入审计(`reasonProvided` 仅表示是否提供),进度中有值才显示“说明”,不替代授权、审批或执行回执。新工具只使用 `reason`,旧事件别名仅兼容读取。
流使用 `response.created`、`response.in_progress`、`response.output_item.added/done`、`response.content_part.added/done`、`response.output_text.delta/done` 和终态 `response.completed/failed/incomplete`,带单调递增的 `sequence_number`。中止返回 incomplete;未知原因不伪造标准 incomplete reason。进度、审批、问题、凭据续期、地图和富文本展示通过 `tjwater.<事件名>` 扩展携带 `response_id`。前端使用 Responses transport 接入现有 useChat 和 UIMessage 渲染;UIMessage 不再是生成接口的网络协议。标准流语义见 [OpenAI Responses streaming](https://developers.openai.com/api/docs/guides/streaming-responses)。
当前支持文本、受权会话续接和流式/非流式生成;`previous_response_id`、客户端指定 tools、图片/文件输入及其余未实现参数均返回400,不能将此接口宣称为完整 OpenAI API 代理。模型推理仍由 OpenCode 执行,上游 provider 协议沿用 `agent-models.json` 的配置。`GET /session/:session_id/stream` 保留独立的会话状态订阅,事件包含 state、token、progress、done 等,用于历史恢复和已运行任务跟随;Server 的 `/api/v1/workbench/events` 继续承载业务事件。