Skip to content
Discussion options

You must be logged in to vote

先给结论:你的复现质量很高,但机制结论需要修正——源码证据不支持"ToolRuntime 未被实例化 / systemPrompt 注入失败导致残缺 tools 服务"的假设;这个报错更可能是我们已知家族的第四次报告(#1337#1633#1665 同签名),而干净安装能复现恰恰说明这次是发布打包层面的变体。

1. 源码证据:ctx.tools 能解析 ⇒ 它必然是 ToolRuntime 实例

  • 全仓只有一处 super(ctx, 'tools')packages/core/tools/src/index.ts:827)——没有第二个服务用 'tools' 名字注册,不存在"残缺 tools 服务"。
  • 调度器是类字段初始化器(:796 readonly [TOOL_RUNTIME_SCHEDULER]: ToolRuntimeScheduler = {...})——只要 ToolRuntime 被构造,字段必然存在,与 systemPrompt 注入无关。
  • 所以 ctx.tools 解析成功 + ctx.tools[TOOL_RUNTIME_SCHEDULER] 为 undefined 只剩一种机制:ctx.tools 是另一份物理拷贝的 dsh-tools 构造的实例TOOL_RUNTIME_SCHEDULER 是 unique symbol(tools/src/index.ts:466),每份拷贝在磁盘上求值都得到不同的 Symbol 实例——agent-loop 用自己拷贝的 Symbol 去索引外来拷贝实例的字段 → undefined → undefi…

Replies: 6 comments 1 reply

Comment options

You must be logged in to vote
1 reply
@Jaffett
Comment options

Answer selected by Jaffett
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Comment options

You must be logged in to vote
0 replies
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
4 participants