# 在 dsh-TUI 中使用 DSMM

TUI 适配面向 `@deepseek-harness-tui/dsh-tui` **0.16.1** 的公开接口，并要求实际 DSH 运行时满足 **`>=0.2.1-rc.2 <0.3.0`**。需要包含此适配的 DSMM 构建；接口核对不能替代真实终端联调。

## 加载位置

使用 TUI 的 **dsh 内核**，将 DSMM 安装并启用在 TUI 实际使用的原生 profile 中，默认名为 `dsh-tui`。Desktop 是另一套部署：装在 Desktop 中的插件不会自动出现在 TUI 中，也不要复制 Desktop 的凭据或整个 profile。

DSMM 通过原生 bundle 加载核心服务，再通过 TUI 的托管接口注册命令和设置。仅把包放进依赖列表，不代表插件已经启用。Web 配置页不会转换成终端界面；TUI 不提供另一套复杂方案编辑器。

## 常用操作

| 入口 | 用途 |
| --- | --- |
| `/dsmm` | 打开操作菜单 |
| `/dsmm status`、`/dsmm status json` | 查看当前会话状态和部署中的待生效设置，或输出结构化快照 |
| `/dsmm deepwork`、`/dsmm deepwork off` | 开启或关闭当前会话的 Deepwork 模式 |
| `/dsmm config` | 修改少量 Global 选项，包括模块开关、默认模式、语言、工作流和根模型策略 |
| `/dsmm profiles` | 浏览已保存方案，选择未来默认方案，或在当前符合条件的根会话中应用方案 |
| `/settings` 中的 DSMM 区块 | 修改当前原生 profile 的简单覆盖项 |

TUI 使用单一 `/dsmm` 入口，命令权限整体启用或撤销，不分别授权各个子命令。Desktop 的 `/dsmm-status` 和可配置名称的 `/deepwork` 命令保持原样。

管理命令会显示具体目标和值，并要求在终端确认。取消、超时，或确认期间会话、权限、插件发生变化，都不会继续使用旧确认写入。命令参数不能代替确认。一次确认不产生长期授权，也不会改变 Web 端原有的身份检查。

`/dsmm deepwork <message>` 会在开启模式后提交一条 steer 消息。如果模式已经改变而消息没有确认提交，结果会分别说明；不会自动重发消息。

## 配置写到哪里

- **`/settings` 写当前原生 profile。** 选择值后即保存，没有额外的 Save 步骤；按 Esc 不会撤销已保存的值。布尔选项包含继承、开启和关闭。选择继承只清除本层覆盖，不把默认值写回。冲突处理由原生设置服务负责。
- **`/dsmm config` 写 Global。** 这是同一 DSH Home 共享的配置，可能影响其他部署的后续激活。保存前会显示字段、值和范围。原生 profile 的显式覆盖仍优先于 Global。
- **具名方案仍用现有存储。** 在支持的配置界面准备好复杂的角色模型、备用路由和工作流设置，再在 TUI 中选择。TUI 不编辑任意 JSON、文件路径或凭据。未来默认选择按当前原生 profile 与 DSMM 条目作用域保存，不等于为所有部署设默认。

保存配置不等于修改正在运行的会话。状态会区分待生效配置和当前会话实际捕获的配置。应用方案仍要求根会话及相关子任务真正空闲，遵守原有 revision、权限和维护检查；不能用终端确认绕过活动任务保护。

## 让根会话按配置选模型

在 **TUI 的原生 profile** 中把 `rootModelPolicy` 设为 `configured`，并为有效角色配置 `primary` 和 `fallbackRoutes`。普通会话还需开启 Deepwork；配置本身不会打开已关闭的模块或赋予角色权限。

- `native` 是默认值，保留 DSH 原生模型选择。
- `configured` 让符合条件的根会话按已捕获配置路由，不需要在终端再调整模型。未设置 primary 时继承原生基础路由，不生成一个默认模型。
- 这是**部署策略**。同一部署中的 Web 会话也遵循它；独立 Desktop 部署保持默认值时不受影响。具名方案可以提供角色路由，但不能改变该策略。
- 备用模型不是遇到任何错误都切换。仅允许既有规则认可的模型／服务商缺失或无输出限流等情况，并受重试预算限制。取消、凭据／权限／配额错误和已经产生部分输出的请求不会借此换模型重试。

路由不会修改原生模型选择器或 `Agent.options`。DSH 在请求路由前进行的历史图片能力检查等限制仍然存在；详见[模型路由](model-routing.md)和[兼容性说明](compatibility.md)。

## 权限与验证边界

TUI 的权限策略仍由它自己的 profile 决定。0.16.1 的 Windows 默认配置使用 `danger-full-access` 和审批 `never`；有审批界面不代表会话允许弹出审批。DSMM 不会为了适配自动改变这些设置，也不把子任务的审批限制解除。

托管服务或命令权限失效后，DSMM 停止管理操作，不退回不受托管的命令入口。已生效的模型策略与管理界面分开：管理服务暂时不可用，不会自行取消仍有效的配置路由。

真实 TUI 安装、终端交互、插件准入／卸载以及原生任务控制需要单独联调。类型检查、源码测试或 mock 对话框通过，不能证明这些界面已经可用。安装和启动测试应使用隔离的 Home/profile，不操作现有会话或复制用户凭据。
