xuxie:DSH 空响应恢复与有界 reasoning-only 续写

前言

在 DeepSeek Harness(DSH)里跑主代理时,常见两类「没有答案」的输出:模型正常 stop,但正文块全是空白;或流里只有思考块、没有面向用户的正文。官方 pi-ai adapter 会把「完全没有内容块」的情况转成 EMPTY_RESPONSE 并走 llm-retry;但若已有块结构却内容为空,或停止时只剩 reasoning,任务界面仍可能像「沉默结束」。xuxie 是社区插件,复用 Host 正式扩展点,在官方重试分工之外做有界补答,并在配额用尽时显式失败,而不是把沉默当成完成。

这是什么

xuxie(仓库 yueyexiayu/dsh-xuxie)由维护者 yueyexiayu 发布,当前版本 v0.2.2,许可证 MIT。目录分类为「模型推理」。一句话定位:DSH 桌面插件,用于 空响应恢复 与 有界 reasoning-only 续写;不替代任务是否完成的判断——已有非空正文但任务未完,不由 xuxie 接管,持续目标应使用 Goal 等官方机制。

核心功能

下面介绍 README 中已写明的六项分工,均基于 Host 0.2.x 正式服务,不修改 DSH 核心、模型选择或搜索插件。

与官方重试分工

官方 0.2.1-alpha.2 起,零内容块的正常 stop 已由 pi-ai adapter 转为 EMPTY_RESPONSE;xuxie 不重复转换零块,也不改写官方错误。仅当存在一个或多个正文/思考块且全部为空或空白、仍为正常 stop 时,才用官方 BlockAssembler 补充 EMPTY_RESPONSE,再交给官方 llm-retry。重试未启用、禁用该错误或耗尽时,明确报错;本插件转换的失败响应不携带成功 replay state。

有界 reasoning-only 续写

当停止原因属于「只有思考」时,插件在 agent/turn-stopping 放入候选提醒,在 agent/pre-step 与其他钩子、middleware 处理后再决定是否保留。默认每轮最多 2 次实际入模提醒(maxSteersPerTurn);若已有其他继续输入,让其优先,移除自己的候选且不消耗续写次数。

续写耗尽时的显式失败

仍只有思考且配额耗尽时,记录 turn/end.reason.kind: error,错误码 XUXIE_NO_ANSWER,经官方 agent/error 展示;不以正常完成结束。此判定不会抢在后置 Stop hook 之前阻止其接管。

路由与作用范围

默认只处理主代理路由 xai、openai、openai-codex;默认排除同进程子代理/Agent Teams 成员,不干预会话标题、压缩等辅助模型请求。providers 与 models 为实际模型路由的精确名称,两项都满足才处理;空列表表示允许所有。

尊重停止边界

取消、异常、工具调用、截断及本轮静默标记不额外催促。本轮任一步发生 max-tokens 后,xuxie 不再额外续写,也不再把空白响应转换为错误(官方 adapter 自身错误及其重试不受此开关控制)。

轻量状态与消息来源

通过官方 session projection 增量维护本轮事实,恢复/重载时按需重建;不调用 snapshotEvents(),不持有完整历史思考。提醒使用来源 plugin:xuxie;本机 jiyi 在最终 turn/end 后采集并过滤插件来源,避免把提醒记作人类偏好。

安装与启用

插件目录放在 $DSH_HOME/plugins/xuxie。在当前 profile 的 cordis.patch.yml 中添加如下片段(路径与配置键以 README 为准):

- insert:
    - id: xuxie
      name: ../../plugins/xuxie/lib/index.js
      config:
        enabled: true
        maxSteersPerTurn: 2
        includeSubagents: false
        providers: [xai, openai, openai-codex]
        models: []
        skipIfAnswered: true

说明要点:

  1. maxSteersPerTurn:非负整数;设为 0 时不发续写请求,遇到需要补答的正常 reasoning-only 输出会直接显式失败。
  2. skipIfAnswered: true(默认):不重复补写本轮之前已给出的正常正文或附件;带 tool-call 的文字视为工具前说明,仍允许后续只有思考时补答。
  3. enabled: false:仍清理尚未消费的本插件提醒,但不注册续写、空响应处理或状态投影。
  4. 未知配置键或无效值在加载时明确报错。

依赖当前 Host 的 loader、agents、llm、sessionProjections;通过正式 ctx.loader.import() 复用官方 LLM 实现,不另装一套 LLM 或复制组装/重试逻辑。

桌面端更新插件或 patch 后,须完全退出 DeepSeek Harness(macOS:⌘Q)再打开;刷新网页不会重新加载 Host 插件。新会话与恢复的旧会话的后续轮次生效,不追溯补写已结束的历史输出。

典型用法

本轮临时关闭 xuxie

用户需要有意保持静默或等待时,可在当前消息中加入:

<!-- xuxie:off -->

该轮 xuxie 既不补答,也不把空白响应转换为错误;下一轮自动恢复。该标记不是 DSH 全局静默或重试开关:完全没有内容块的响应仍可能由官方 adapter 产生 EMPTY_RESPONSE,官方重试仍按 provider 策略执行。

配置级关闭

将 cordis.patch.yml 中 enabled 设为 false,或通过上述标记按轮关闭。

续写提示仍要求模型遵守用户的格式、静默、等待及权限要求。

适用场景与注意

适合谁:在主代理上使用 xai / OpenAI / OpenAI Codex 路由,且常遇到「正常结束却无正文」或「只有思考、没有用户可见答案」的开发者。

务必知晓:

  • xuxie 是输出恢复插件,不判断自然语言任务是否完成;模型已写非空正文时,即使任务未完也不会继续催促。
  • 一次续写可能引出工具链、多次模型请求和官方重试;maxSteersPerTurn 限制的是实际进入会话的插件提醒次数,不是总调用或 token 预算。
  • 插件以当前 DSH Host 进程权限运行;安装前应阅读 源码 与 MIT 许可证,自行评估信任边界。
  • 社区目录 skillhub.cn 插件页 为独立站点,与 DeepSeek / 幻方无官方从属关系。

维护者提供的本地验证命令(不调用在线模型):

node --check lib/index.js
node --check lib/detect.js
node --check lib/empty-response.js
node --test test/*.test.mjs
# 验证官方发行版:
DSH_OFFICIAL_ROOT=/path/to/extracted-runtime node --test test/*.test.mjs

结尾

xuxie 在官方空响应与重试链路上做精确分工:空白块补 EMPTY_RESPONSE、reasoning-only 有界提醒、耗尽则 XUXIE_NO_ANSWER,避免把沉默当答案。目录与文档:skillhub.cn/plugins/yueyexiayu/dsh-xuxie · GitHub: yueyexiayu/dsh-xuxie。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye