dsh-plugin-discussion-intent
jinplu/dsh-plugin-discussion-intent
An intent-calibrated DSH discussion mode that prevents complex conversations from drifting and turns them into evidence-based next steps.
安装
dsh plugin --profile web add github:jinplu/dsh-plugin-discussion-intentREADME
DSH Discussion Mode
为复杂思考设计的 DSH 讨论模式:保持用户意图、控制讨论焦点,把探索收敛成有依据的下一步。
核心卖点 · 快速开始 · 四行 Rail · 讨论可续 · 设计边界
概念导图:图中文字对应实际产品能力,不代表 DSH 界面截图。
Discussion Mode 让你守住目标、边界和评价标准;模型负责拆解、比较和收敛。/discussion 只设深度,不装主题。下一句才开始讨论。你明确说过的话和模型理解分开呈现;改根问题必须 /discussion accept,工作焦点可以随讨论下沉;问卷选择算你说过的话。适合研究方向、产品策略、技术路线和跨方案取舍。
✨ 核心卖点
- 意图不漂移:目标、边界、评价标准和否定项持续注入。根问题须你接受才改;工作焦点可下沉。问卷选择算你说过的话。新证据先当候选。建议和下一步不得与仍有效的否定矛盾。
- 子代理模型自选:点顶栏芯片或
/discussion model从当前 catalog 选择并记住。未选就 spawn 会失败。父线程模型不变。 - 从模糊到可执行:不必先填主题。
/discussion 1|2|3只设深度。改题须你接受。 - 四行 Rail 随时纠偏:默认一条顶栏(
讨论中+ 当前焦点)。点开才显示四行。讨论进行中隐藏官方 Goal 条。落盘用图标。点模型芯片只出浮层,不展开 Rail。 - 讨论可续:检查点写入工作区,重启可恢复。保存失败会提示。
🧭 为什么不是普通聊天或长记忆
| 普通 AI 对话 | Discussion Mode |
|---|---|
| 模型可能按最近的信息重述问题 | 用户明确的目标、边界、否定项与评价标准持续作为讨论依据 |
| 模型总结容易看起来像用户已作出的决定 | 明确分开呈现“你已明确”与“当前理解” |
| 新论文、局部机制或子问题可能直接成为叙事中心 | 新信息先作为候选;升格为根问题必须 /discussion accept;工作焦点可带 returnTo 下沉 |
| 深入局部后容易忘记原本要解决什么 | Rail 显示工作焦点;根问题已锁定且不同时,同一行写出 工作焦点 · ↑根问题 |
| 讨论结束时可能只有观点,没有决策路径 | 收敛为建议、风险、待验证点与下一步行动 |
它是单场复杂讨论的控制层,不是长记忆,也不是一次性问答。Discussion Mode 是插件内部服务(1=fast | 2=default | 3=deep),不是 DSH 全局模式。不改 DSH 主仓,不写自定义会话事件。
🚀 快速开始
dsh plugin --profile web add @jinplu/dsh-plugin-discussion-intent
/discussion start or resume, default intensity, no topic
/discussion 1|2|3 set depth only
/discussion model list catalog and current subagent model
/discussion model <p>/<id> persist subagent model for the next spawn
/discussion accept <id> accept a pending topic/frame change
/discussion reject <id> reject it
/discussion off pause; state kept
不要在命令后写 topic。3 是深度。缺偏好或方向时用原生 ask_user_question;能检索的事实不反问。
🗺️ 讨论状态与四行 Rail
- 标题 / 目标 / 根问题:你接受后才生效。首句只装工作焦点;之后打字的 decision,或带
?/?的 goal,才可锁定空的根问题 - 工作焦点可随合格的
returnTo下沉;改根问题仍须/discussion accept - You:仍有效的决定、否定、非目标和评价标准;过程句(
spawn subagents)和刷新句不算 - 问卷选择由宿主写入 decision,算你说过的话,但不自动变成根问题
- 候选方案、证据、当前理解、建议、下一步
Web 输入框上方是只读 Rail。默认折叠成一条顶栏:讨论中 + 当前焦点(120 字)+ 强度 / 子代理 / 落盘。点顶栏展开四行;值列默认两行,点一行展开全文。点模型芯片选下次 spawn。Pending 时五行。/discussion off 后消失。
💾 讨论可续、过程可信
实质更新前先写 Markdown,再写 JSON:
.dsh/discussions/<session-id>.json 权威状态
.dsh/discussions/<session-id>.md 人类可读检查点
写入失败会报错。重启同一会话即可恢复。不写自定义会话事件。
🛡️ 设计边界
/discussion 1|2|3
→ 只设深度,未命名检查点,不推断主题
→ 用户下一句开始讨论
→ 每次实质回复前更新讨论状态(先写 Markdown,再写 JSON)
→ 标题/目标/根问题改写变成 Pending Frame Changes;合格的工作焦点下沉立即生效
→ /discussion accept <id> 或 /discussion reject <id>
→ 系统提示策略重注 Human Frame + Web Rail
→ 完全退出 DSH 后从侧车恢复
→ 继续讨论或 /discussion off
依赖已发布的 DSH 0.1.0-rc.6 公共接口。无 webServer 时功能完整,只是没有 Rail。
子代理模型一开始为空。第一次 spawn 时从当前 catalog 提问;跳过不会继承父线程模型。
官方 rc.6 没有 contributeRun。研究证据保持为候选,升格须 Pending Frame Change。
细节见 Runtime integration,状态见 Roadmap。
🧪 本地开发
需要 Node.js 22+ 和 package.json 指定的 pnpm 版本。
pnpm install
pnpm typecheck
pnpm test
pnpm build
pnpm pack:check
pnpm test:consumer
test:consumer 把真实 tarball 装进临时 DSH profile,验收 dump-config、启动、命令、工具、落盘、Rail 与重启恢复。可用 DSH_SMOKE_DSH_REPO / DSH_SMOKE_DSH_VERSION 覆盖 DSH 版本。
Contributing
参阅 CONTRIBUTING.md。安全问题请按 SECURITY.md 说明报告。