已关闭
[Feature] OpenAiCompatibleModelClient 支持 per-call timeout 配置,消费者不再需要装饰器补口 #189
yaojun97创建于  9月27日关闭于  26 天前
yaojun97
yaojun97
9月27日 创建

Paired: GitHub #357 ↔ GitCode #189

来自 agent-solution 仓 smartresearch-alpha(agent-core-java 0.1.16 消费者,真 LLM e2e 实测背景)。
涉及分支:930(0.1.16 血统)。

标题:[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),不覆盖整次调用;
  • 0.1.15 曾有 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) 提供前置配置口;两者可独立评审、独立落地。)

likedislike
OopenJiuwen-bot成员
9月27日 添加了label:sig/sig-agent-core-java
openJiuwen-bot成员
9月27日 评论:

欢迎来到 openJiuwen 社区

Hey @yaojun97 , 感谢你对社区的贡献.

机器人使用手册

有关指令的使用,可以点击 此处 查看详情。开发人员可以在每个PR或Issue下方评论特定指令来触发机器人任务。

联系指引

有疑问可以联系 SIG: sig-agent-core-java ,
维护者是: @shenwei21, @tianmingyong ,
审核者是: @foreach1991, @gcw_xJSJ32Ge, @jeffrey_qiao, @kangquansheng_makeIT, @xiongjie_makeit .

likedislike
Oopenjiuwen-sync成员
9月27日 修改了issue 的描述
xiaoming成员
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 整次调用总时限,应单独明确该需求及验收范围,不能将当前请求超时视为已实现这一能力。

likedislike
Xxiaoming成员
26 天前 issue状态由 TODO 改变为 CLOSED
Xxiaoming成员
26 天前 关闭了 issue
Sshenwei成员
2 天前 关联了里程碑:agent-core-java v0.1.16