What version of Kimi Code is running?
0.19.2
Which open platform/subscription were you using?
Kimi Code OAuth
Which model were you using?
kimi-for-coding
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
WebSearch 和 FetchURL 这两个工具会忽略每次调用的取消信号。当一次请求正在进行时按 ctrl c 中断本回合,底层的 http 请求不会被取消,会在后台继续跑,遇到慢或挂起的服务器会一直挂到 undici 的默认超时
代码事实:
- ExecutableToolContext 带有 signal(packages/agent-core/src/loop/types.ts:119)
- 但 FetchURLTool.execution / WebSearchTool.execution 只解构了 toolCallId,丢了 signal
- UrlFetcher.fetch / WebSearchProvider.search 的 options 没有 signal 字段
- LocalFetchURLProvider / MoonshotFetchURLProvider / MoonshotWebSearchProvider
调 fetch() 时既不传 signal 也没有超时
其它 I/O 工具都把 ctx.signal 透传进实际工作,
这两个网络工具是例外,但是没有注释说明,可能并非有意。
What steps can reproduce the bug?
- 让 FetchURL/WebSearch 走本地抓取路径(LocalFetchURLProvider),目标是一个
会长时间不返回 body 的慢速服务器。
- 工具调用进行中按 ctrl c 中断回合。
- 观察:底层请求没有被取消,而不是随回合中止立即结束。
单元层面可复现:给 provider.fetch(url, { signal }) 传入一个 AbortController 的
signal,可以发现 signal 没有被转发到底层 fetch()。
What is the expected behavior?
ctrl c 时,正在进行的 WebSearch / FetchURL 的底层 http 请求应当被立即取消,和其它 I/O 工具一致(把 ctx.signal 一路透传到 fetch 的 signal 选项)
Additional information
修复方向:给 UrlFetcher / WebSearchProvider 的 options 增加可选 signal,从工具透传 ctx.signal,在各 provider 把它传给 fetch(url, { signal })。我已准备好相应补丁(改动大概 80多行,含测试)。是否愿意我提 PR?
What version of Kimi Code is running?
0.19.2
Which open platform/subscription were you using?
Kimi Code OAuth
Which model were you using?
kimi-for-coding
What platform is your computer?
Microsoft Windows NT 10.0.26200.0 x64
What issue are you seeing?
WebSearch 和 FetchURL 这两个工具会忽略每次调用的取消信号。当一次请求正在进行时按 ctrl c 中断本回合,底层的 http 请求不会被取消,会在后台继续跑,遇到慢或挂起的服务器会一直挂到 undici 的默认超时
代码事实:
调 fetch() 时既不传 signal 也没有超时
其它 I/O 工具都把 ctx.signal 透传进实际工作,
这两个网络工具是例外,但是没有注释说明,可能并非有意。
What steps can reproduce the bug?
会长时间不返回 body 的慢速服务器。
单元层面可复现:给 provider.fetch(url, { signal }) 传入一个 AbortController 的
signal,可以发现 signal 没有被转发到底层 fetch()。
What is the expected behavior?
ctrl c 时,正在进行的 WebSearch / FetchURL 的底层 http 请求应当被立即取消,和其它 I/O 工具一致(把 ctx.signal 一路透传到 fetch 的 signal 选项)
Additional information
修复方向:给 UrlFetcher / WebSearchProvider 的 options 增加可选 signal,从工具透传 ctx.signal,在各 provider 把它传给 fetch(url, { signal })。我已准备好相应补丁(改动大概 80多行,含测试)。是否愿意我提 PR?