DSH Plugins Marketplace

DSH Plugins

Plugins

/

dsh-stateless-chat-mode

d

dsh-stateless-chat-mode

Identified

Stateless Chat Mode: A single-turn dialogue agent preset for DeepSeek Harness. Each turn sends only your new input, while the interface retains the full conversation history.

dsh-stateless-chat-mode

给 DeepSeek Harness 用的无上下文 Chat 模式 Agent 预设:你发一句,模型回一句;下一句再发时,之前整段对话对模型来说不存在。

界面上对话记录一条不少,只有模型看不到。

新建会话时选 Stateless Chat。

和另外两个模式的关系

ChatExtreme ChatStateless Chat
系统提示词聊天人设空空
AGENTS.md / 技能目录有无无
工具联网搜索无无
历史上下文保留保留每轮清空

Extreme Chat 是"不给模型任何附加信息",但它仍然记得你说过的话。Stateless Chat 在此之上再切断历史:模型每次只看到你最新那一句。

怎么做到"界面保留、模型看不到"

这不是清空界面,也不是删除日志,而是在模型可见的 surface 上做遮蔽。

DSH 里同一份会话有两个读法:

  • session.deriveMessages() —— 模型看到的历史,只读取 surface 上未被 shadow 的节点(dsh-session/lib/index.js:1681)
  • session.snapshotEvents() —— 界面读的原始事件日志(dsh-session/lib/index.js:1454),完全不看 surface

所以只要在 surface 上遮蔽,模型就看不到历史,界面照旧。

这正是 compaction-basic 遮蔽旧轮次的官方做法:追加一个带 surfaceOp: { op: 'replace', startSeq, endSeq } 的节点,把一段连续 surface 节点整体替换成它自己。

替换成空 content 的 system 消息:deriveEventMessage() 对 system/message 有特判,content.length === 0 时返回 null,不产生任何 wire message(dsh-session/lib/types/surface.js:91-97)。等于"占住 surface 位置,但不给模型任何东西"。

边界怎么定

插件挂在 agent/pre-step 上,时机很关键:此时本轮用户输入还没有进入 surface(agent-loop.js:670 的 claim 只发事件,append 发生在 :860)。

所以不能按"最后一条用户消息"切,而按 turn/start 切:上一个 turn/start 之后新增的 surface 节点属于当前轮,之前的全部遮蔽。

几种情形:

  • 第一轮开始:没有可遮蔽的历史,什么都不做
  • 第二轮开始:把上一轮的 user + assistant 整体替换成一个空 system 节点
  • 单轮多步(工具调用):当前轮已产生的节点在边界之后,保持可见

遮蔽失败只记一条 warn,不会让整轮对话失败——最坏情况是这一轮多带上一些历史。

安装

需要 DeepSeek Harness 0.2.1-rc.1 或更高版本。

plugin_manager install_bundle target github:TongenShen/dsh-stateless-chat-mode

安装后重启 DSH,新建会话时在预设选择里选 Stateless Chat。

注意事项

  • 预设 id 是 stateless-chat,显示名 Stateless Chat,order: 0。
  • 只对新建会话生效;已经开始的会话保持原来的预设。
  • 完全无系统提示词,模型收不到任何角色、语言、格式约束。回答风格飘忽属预期。
  • 模型确实不记得上一轮。要它"接着刚才说的继续"是做不到的,这是设计目标而非缺陷。
  • 界面上你仍然能看到完整对话,方便回翻。日志也完整保存,session.snapshotEvents() 读得到全部内容。
  • 没有压缩:历史每轮都被遮蔽,上下文压力不会累积,也就不需要压缩。

卸载

plugin_manager remove_bundle target dsh-stateless-chat-mode

然后重启 DSH。

License

MIT

Comments

Loading…