Skip to content

评论区bug 本轮运行失败messages.28: tool_addition blocks can only be in system messages #367

Closed as not planned

Description

@T-Auto

更新到dsh-ops v0.4.1出现了新的bug,旧对话会显示新增工具和移除工具,并触发报错:本轮运行失败messages.28: tool_addition blocks can only be in system messages (request_id: 35febeb1-fe2e-43c9-a291-7ccb4367694c),我自检了一下发现问题出现在dsh-ops v0.4.1更新后,我把这个插件关掉之后重启DSH,旧对话就恢复正常了,然后我让大肥鱼自检,他给我的反馈是:会话中途工具集变更会触发 DSH 内核的 tool_addition 序列化 bug(+ 禁用后 promptPolicy 残留)`
会话中途工具集变更会触发 DSH 内核的 tool_addition 序列化 bug(+ 禁用后 promptPolicy 残留)````markdown

环境

  • dsh-ops 0.4.1(peer: @deepseek-ai/dsh ^0.2.0-rc.2, cordis ^4.0.4)

  • 宿主: DSH 0.2.1-rc.2, Windows 11, 模型 deepseek-flash## 结论先说

不是你们的 payload 写错了。 证据:

  • 在 dsh-ops / @dsh-ops 的 node_modules 全量 grep tool_addition → 0 命中

  • DSH 内核明确校验 "tool-change blocks require developer role",

插件无法自行写入该块

  • 报错来自 DeepSeek 服务端对 beta mid-conversation-tool-changes-2026-07-01

的契约校验## 但你们是稳定触发器

会话中调用 ops_discover_tools 换出/换入一批工具时,

GUI 会显示「工具已更新 · 新增 3 个,移除 4 个」

(本次实测:新增 ops_bash / ops_discover_tools / ops_read_files,

移除 ops_glob / ops_grep / ops_inspect_local_file / ops_replace)。

此后下一轮请求 100% 失败: messages.800: 'tool_addition' blocks can only be in 'system' messages

(INVALID_REQUEST)会话就此报废,只能新开会话。

Activity

  1. Haoming9527 commented on Oct 24, 2026

    @Haoming9527
    Collaborator

    I am documenting the host/provider tool_addition serialization boundary and a bounded fresh-session/static-tool troubleshooting path. OPS does not construct provider message roles, so this documentation will not claim a serializer implementation fix.

  2. Haoming9527 commented on Oct 24, 2026

    @Haoming9527
    Collaborator

    按宿主 / provider 序列化边界关闭本仓库的问题记录;不是宣称旧会话已被修复。

    已核对 OPS 源码:插件通过宿主工具注册 API 发布能力,不构造 tool_addition 块,也不选择 provider 消息角色。DSH 的会话层要求工具变化出现在内部 developer 消息,而 DeepSeek 适配器负责把它转换为 wire system 消息。可核对宿主源码:会话校验、DeepSeek 序列化。这里引用的是核查过的源码,不代表报告中的 0.2.1-rc.2 安装或已有历史已升级。

    OPS discovery 的工具变化确实可能触发该宿主路径。#400 已补充中英文说明和有界诊断:在新会话创建前确定配置及 alwaysLoaded,运行中保持工具集稳定;关闭 discovery 会失去仅由它提供的按需能力。此方法不修复旧历史,也不保证所有 provider 兼容。该文档 PR 的 Linux/macOS/Windows 与 required CI 已通过,尚未合入。

    如果仍复现,请向 DSH / 对应 provider 适配器提交准确版本、provider/model、request ID、工具增删列表,以及能显示错误消息角色的最小脱敏片段。现有证据支持在宿主序列化层修正这一拒绝;在 OPS 中改工具名称或重写历史角色不解决该契约问题。

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

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions