已关闭
[Feature] OpenAiCompatibleModelClient 支持 per-call timeout 配置,消费者不再需要装饰器补口 #189
yaojun97创建于 9月27日关闭于 26 天前
9月27日 添加了label:sig/sig-agent-core-java
openJiuwen-bot
9月27日 评论:
9月27日 评论:
欢迎来到 openJiuwen 社区
Hey @yaojun97 , 感谢你对社区的贡献.
机器人使用手册
有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。
联系指引
有疑问可以联系 SIG: sig-agent-core-java ,
维护者是: @shenwei21, @tianmingyong ,
审核者是: @foreach1991, @gcw_xJSJ32Ge, @jeffrey_qiao, @kangquansheng_makeIT, @xiongjie_makeit .


9月27日 修改了issue 的描述
xiaoming
9月28日 评论:
9月28日 评论:
基于最新 upstream/develop 核对,#189 所述 0.1.16/930 的 OkHttp applyCallTimeout(call, null) 路径已不是当前实现:OpenAiCompatibleModelClient 现在只是 OpenAIModelClient 的兼容别名。当前 ModelClientConfig.timeout 可配置默认时限,ModelInvokeOptions.timeout 可逐次覆盖;OpenAI 客户端会将有效值设置为 JDK HttpRequest.timeout。因此,“缺少超时配置入口、必须用装饰器注入参数”这一具体问题在 develop 上已不存在,建议关闭本 issue 当前版本。此处仅提出建议,不操作状态。
需要区分的是:现有请求超时并非跨所有重试和完整流式读取的整次模型调用总时限。ReAct 单次运行的总预算已整理为 #190;模型调用各阶段的超时语义另见 #171。若仍需要独立于 ReAct 的 Model.invoke 整次调用总时限,应单独明确该需求及验收范围,不能将当前请求超时视为已实现这一能力。


Paired: GitHub #357 ↔ GitCode #189
标题:
[Feature] OpenAiCompatibleModelClient 支持 per-call timeout 配置,消费者不再需要装饰器补口背景(agent-solution 仓 smartresearch-alpha 实测,agent-core-java 0.1.16)
ReActAgent.callModel固定传callTimeout = null;OpenAiCompatibleModelClient.applyCallTimeout(call, null)直接返回、不设 okhttp per-call 超时 ⇒ 单次模型调用无总时长上界;ModelClientConfig.timeout只进 read/write 超时(connect 另封 10s),不覆盖整次调用;DEFAULT_CALL_TIMEOUT_SECONDS = 180f回落,0.1.16 删除——相邻版本行为不同,消费者不易察觉。现状代价
smartresearch-alpha 被迫自造
CallTimeoutModel装饰器(null → 1200s)把「无上界」变显式上界,且必须经delegate.invoke虚分发(super.invoke直连会绕过链上其他装饰器,例如工具调用执法层的参数注入)。装饰器存在的唯一意义是补一个配置口。请求
ModelClientConfig(或ModelRequestConfig)暴露 per-call timeout 配置项,applyCallTimeout消费之;默认行为二选一(维持 0.1.16 现状,或回落 0.1.15 语义——请维护方定,但请写进文档)。落地后消费者可删除装饰器整类。开源先例
langgraph(TimeoutPolicy:run_timeout / idle_timeout 原生配置)、OpenAI codex(codex-rs 的
stream_idle_timeout_ms等原生旋钮)、openclaw(turn 级超时原生配置)——主流 agent 框架均原生暴露 per-call / 节点超时配置,未见过「靠给客户端套装饰器注入超时」的形态。(关联 #188:本 issue 为其夹逼公式 min(per-call, remaining) 提供前置配置口;两者可独立评审、独立落地。)