Skip to content
Discussion options

You must be logged in to vote

这不是你的用法问题,是设计里缺一个判断。我按 0.1.1-rc.2 源码核了一遍,你的定位是对的,而且缺口比你写的更具体。

根因就在那一个 handler 里。 @deepseek-ai/dsh-goal-round-driveragent/status 监听:

ctx.on('agent/status', ({ agent, status }) => {
  if (status === 'idle') {
    // …(只处理"目标已被取消"这一个分支)…
    requestDrive(state)

requestDrive 在 idle 上无条件触发,driver 里没有任何"这个 agent 是不是正在等什么"的概念。所以你的对照实验(job_output(wait: true) 在回合内阻塞就不注入)不是巧合——触发条件就是那个 idle 检查点本身,与你调不调等待工具无关,你这句话写得完全准确。

问题的一般形状idle 被当成"没事可做"的代理指标,而它不是。它只表示"当前没有回合在跑"。一个刚按工具文档建议结束回合、等后台通知的 agent,和一个真做完了的 agent,在这个信号上完全一样。

但判断所需的数据已经有了,而且就在同一个进程里的公开服务上。 JobsService 有:

abstract list(caller?: Agent): JobSnapshot[]

同步、按 agent 归属、返回当前快照。而 goal-round-driver 的 peerDependencies 只有 dsh-agent / dsh-goal / d…

Replies: 1 comment

Comment options

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