Skip to content

fix: 插话一律立即 steer 并显示,不再缓存 - #7

Merged
better-er merged 5 commits into
mainfrom
fix/steer-interjection
Oct 29, 2026
Merged

better-er merged 5 commits into
mainfrom
fix/steer-interjection

Conversation

@better-er

Copy link
Copy Markdown
Owner

问题

  1. 按下回车后这条消息要立刻出现在会话里。
  2. 模型要在最近一步就看到,不等下一个暂停点或新 turn。

agent.steer 就是这两个语义:消息进 next-step inbox,dsh 显示成 steering 消息;插件不需要自己回显,也不该把消息先存起来。

0.1.5 在没有暂停点时把插话塞进插件队列,等下一个暂停点或 turn 结束后才补发,两条都落空。

原因

  • release 在没有暂停点时把消息塞进 pendingMessages,靠下一个暂停点或 agent/status 转 idle 时的 followup 补发。
  • 队列里的消息既不在会话里显示,也不被模型看到。
  • 队列、预放行与 idle 补发交错,送达时机取决于暂停点什么时候出现。

改动

  • 主机 release 不再缓存:挂着暂停点就放行并把消息并入该步;没有暂停点就立即 agent.steer,由 dsh 在最近一步认领,空闲时 steer 自己开新 turn。
  • 删除 pendingMessages 队列、预放行与 idle 补发;release 只返回 released 与 delivered。
  • 该步 reject 或 next() 抛错时,已并入的插话立即重新 steer,交回 dsh 的 inbox;没有活 agent 可投时写错误日志,不静默丢弃。
  • inject 增加 agents,经 ctx.get('agents') 再退回 ctx.agents 取活 agent;agent/status 与 agent/pre-step 载荷里的 agent 也记下来,热加载错过状态事件后仍能立即 steer。
  • 客户端不自己做本地回显:消息交给 dsh 的 steer 后自然显示为 steering 消息,避免重复渲染。
  • 暂停判断看三处:本步已领取批次里有用户消息、插话还在 inbox 等认领、下一轮队列里有消息,任一成立就放过这一步,不再挂暂停点;插话被丢弃或已送达后恢复暂停。
  • 状态收敛为 enabled、pausePoint 两个字段,删除 busy、pendingMessages 与队列相关监听;agent/status 只保留用来记住活 agent。
  • 客户端去掉 busy 与 pendingMessageCount,删除「N 条已排入下一步」提示。
  • 版本升到 0.1.6。

测试

  • pnpm typecheck、pnpm test 49 项 4 个文件全过、pnpm build 通过。
  • 覆盖暂停点放行并入、无暂停点立即 steer、插话未认领时开暂停不暂停、本步带插话时放行、下一轮队列有消息时放行、丢弃后恢复暂停、无 agent 时返回未送达、该步 reject 后重新 steer、reject 且无 agent 写错误日志、steer 抛错经 RPC 报错、图片经附件服务准入、参数校验、RPC 通道。

兼容性

  • 新增依赖 ctx.get('agents')、ctx.agents 与 Agent.steer()、Agent.inbox,升级 dsh 时需复查。
  • 关闭开关会放行当前暂停点;插件不再持有待发插话。
  • 文件附件仍不支持插话。

检查清单

  • 类型检查
  • 单测
  • 构建与产物
  • 手工回归

@better-er
better-er merged commit 3c41a8e into main Oct 29, 2026
1 check passed
@better-er
better-er deleted the fix/steer-interjection branch October 29, 2026 00:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant