# deepseek-harness-tui

> 把 TUI 终端插件开发技能注入 dsh Creator 的 cordis preset，让 Creator 写动态插件时按终端语义而非浏览器语义路由。

## Metadata

- Author: [@openma-ai](https://github.com/openma-ai)
- Repo: <https://github.com/openma-ai/deepseek-harness-tui.git>
- GitHub: [openma-ai/Martty](https://github.com/openma-ai/Martty)
- Stars: 45
- Language: Rust
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Homepage: <https://martty.sh>
- Topics: `agent`, `agents`, `deepseek-harness`, `deepseek-harness-plugin`, `deepseek-harness-plugin-dev`, `deepseek-harness-plugins`, `dsh-plugin`, `dsh-plugins`, `tui`, `tui-rs`
- Forks: 4
- Open Issues: 1
- Last push: 2026-08-21T02:15:18.000Z
- Added: 2026-08-20T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:openma-ai/deepseek-harness-tui/npm/creator
```

## Wiki

## 一句话定位
deepseek-harness-tui 内部携带的 Creator 教学子 bundle：当 dsh Creator 在 `cordis` preset 下编写动态插件时，自动向其附加 TUI 终端开发技能与路由提示，避免把终端能力错写成 Web 假设。

## 核心能力
- 在 dsh Creator 的 `cordis` preset 中注册 `tui-plugin-development` 教学技能，教模型用 inspect 的窄能力而不是猜测
- 向 Creator 的系统提示追加 TUI/Cordis 双技能路由规则：先加载通用 `cordis-plugin-development`，再按需加载 TUI 配套
- 通过 profile 自带的 `dsh-scope` 模块挂入 standing scope，不复制或修改上游 Creator 组合
- 跟随 Creator 卸载自动撤销：skill 和 systemPrompt 章节在同一 fiber 内回收，不污染全局目录
- 无 TTY 依赖、无原生二进制：作为 Host 端纯 JS overlay，与 TUI 主进程解耦运行

## 技术实现
- **语言**: JavaScript (Node.js, ES modules)
- **关键依赖**: `@deepseek-ai/cordis`（peer）、`@openma/deepseek-harness-acp`（父包传递依赖）、通过 `ctx.loader.import('@deepseek-ai/dsh-scope')` 读取 profile 模块
- **架构模式**: Cordis Host overlay（`insert` 行），`name = 'tui-creator-overlay'`，`inject = ['agentPresets', 'skills', 'systemPrompt', 'loader']`，在 `apply` 中用 `ctx.effect` 收集 disposer
- **入口文件**: `npm/creator/` 子 bundle 指向 `npm/lib/creator-overlay.js`，后者读取 `npm/skills/tui-plugin-development/SKILL.md` 作为 skill 内容

## 适用场景
当 Creator 在 dsh 上生成动态 Plugin 并希望保留 TUI 终端扩展能力（主题、原生槽位、本地命令、slider Overlay、当前 ACP Session 配置）时，宿主通过本子 bundle 自动给 Creator 加上 TUI 教学，让模型能正确选择 inspect 的窄能力服务而不是套用通用 Cordis / Web 假设；非 TUI 路径则继续走通用 `cordis-plugin-development`。

## 前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| dsh | 0.1.0-rc.6+ | devDependencies 引用此版本；需 dsh Creator preset `cordis` 提供 `agentPresets`/`skills`/`systemPrompt`/`loader` 服务 |
| Node.js | >=18 | npm/package.json 中 `engines.node` 声明 |
| 平台 | 跨平台 | 仅运行于 dsh Host 进程；不依赖 TUI 主包的 Rust 原生二进制 |
| 原生模块 | 无 | 纯 JS overlay，不引入任何 native binding |

## 安装方式
```bash
dsh plugin --profile web add github:openma-ai/deepseek-harness-tui/npm/creator
```

## 配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| preset | string | 选择要附加 TUI 教学的 Creator preset 名称；空字符串会被拒绝 | `cordis` |

## 常见问题

**Q: 这个 creator 子 bundle 跟 dsh Creator 是同一回事吗？**

A: 不是。它是一个轻量 Host overlay，在 Creator 现有的 `cordis` preset 的 standing scope 上挂一层 TUI 教学 skill 和路由提示；不复制、不 fork、不修改 Creator 自身的组合。

**Q: 可以不装 dsh-tui 主包、单独用这个 creator 子 bundle 吗？**

A: 不行。它不是单独发布的 npm 包，是 `@openma/deepseek-harness-tui` 主包内部的子 bundle，安装命令里的 `npm/creator` 子路径只用于 dsh 插件市场的打包标识。

**Q: 普通用户在终端里能看到这个 skill 吗？**

A: 看不到。skill 只对 Creator agent 内部生效，不在用户交互界面直接显示；它的作用是改变 Creator 生成插件时的推理路由。

**Q: 它会影响 cordis 之外的其它 Creator preset 吗？**

A: 不会。overlay 通过 `agentPresets.standingKeyFor('cordis')` 拿到 cordis 的 standing scope key 再挂自己的 fiber，只有这一层会看到 TUI skill；其它 preset 看全局目录时不会出现它。

**Q: 卸载时 skill 和路由提示会一起消失吗？**

A: 会。apply 用 `ctx.effect` 注册的清理函数在 fiber 终止时触发 `overlay.dispose()`，把已注册的 skill 和 systemPrompt 章节一并撤销。

**Q: 装了之后还需要额外配置吗？**

A: 默认不需要。可选项是 `preset` 字符串（默认 `cordis`），只在你想把 TUI 教学挂到别的 Creator preset 时才需要写。

## 上手难度
入门 — 单条配置项（可选 `preset`），其余完全自动跟随 dsh Creator preset；只要目标 dsh profile 已启用 `cordis` preset 即生效。

## 已知问题与限制
- `npm/lib/creator-overlay.js:42` 拒绝空字符串 preset，未配置时该字段会被忽略而不报错
- `npm/lib/creator-overlay.js:47` 若 profile 未挂 `@deepseek-ai/dsh-scope` 模块，会直接抛错（需 profile 提供此模块）
- `npm/lib/creator-overlay.js:54` 与 `:65` 在 preset scope 缺少 `skills.register` 或 `systemPrompt.section` 服务时抛错，需确认 dsh Creator 版本兼容
- `npm/lib/creator-overlay.js:25` 与 `:31` 在内置 `SKILL.md` 缺失 frontmatter 或 description 时抛错，属于构建/打包异常
- `host/README.md:5-7` 明确：本子 bundle **不是独立 npm 包，也不可作为独立 Cordis plugin bundle 挂载**，必须随主包安装
- 不修改 Creator 自身组合，意味着上游 Creator preset 升级后需重启 profile 才能看到新版本组合（`docs/architecture.md:71-72`）

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [deepseek-harness-tui](https://deepseek-plugin.org/plugins/openma-ai/deepseek-harness-tui/npm/creator)
Wiki generated by AI (model: `MiniMax-M3`)
