Skip to content

「运行中」会话里带文字回车发送,批注块被宿主 steerQueue 路径丢弃(1.4.10 / DSH 0.1.5-rc.2) #61

Description

@ramonfeng

环境

  • dsh-annotation 1.4.10(npm @changfenhuang/dsh-annotation)
  • 宿主 DSH 0.1.5-rc.2,macOS + Chrome

复现(100%)

  1. 在一个 agent 正在运行 的会话里(composer 处于 queue/steer 状态),划选助手回复的一段文字 → Annotate
  2. 输入框里输入文字(如「我做了两项标注(annotation),现在可以发送吗?」)
  3. 按 Enter

实际

消息发出(走宿主运行中会话的 agent/inbox/spliced 通道),但批注块不在消息里——会话日志(session.v3.jsonl)里该 user/message 的 text 只剩用户输入的文字,没有「我批注了以下 N 处内容…」块,模型自然无法按批注逐条回应。空闲会话同操作一切正常。

期望

批注块与输入的文字一起到达模型。

根因分析(读 1.4.10 client.js)

带文字的 onKeyDown 路径在 capture 阶段 attachAndSend → setDraft 后交回宿主(注释:「已有文字时交回 composer,保留宿主的 Queue / Steer 策略」)。宿主运行中走 accelerated 的 steerQueue 路径,且在 React 重渲染前读取草稿——capture 阶段写入的批注块不在它读到的状态里,整段被丢。纯批注的 Cmd/Ctrl+Enter 路径已经用 stopPropagation + submit('queue') 绕开了同一个宿主限制(运行中可正常送达),但带文字路径没有同样的处理。

本地 workaround(已验证送达)

带文字路径同样接管:attached 后 preventDefault + stopPropagation + submitAttached()(submit('queue')),空闲/运行中都能把「批注块+问题」作为一条消息发出。副作用是不再「保留宿主的 Queue/Steer 策略」,希望上游能以更干净的方式修(运行中接管,或让 steerQueue 路径读取 setDraft 之后的最新草稿)。

证据

会话日志事件:user/message text=「我做了两项标注(annotation),现在可以发送吗?」,同一时刻 agent/inbox/spliced target=next-turn,消息内无批注块。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions