{"_id":"@dsh-tui/dsh-tui","name":"@dsh-tui/dsh-tui","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.2":{"name":"@dsh-tui/dsh-tui","description":"Claude Code-style interactive terminal UI for DeepSeek Harness agents","version":"0.1.2","type":"module","main":"lib/index.js","types":"lib/types/index.d.ts","exports":{".":{"types":"./lib/types/index.d.ts","default":"./lib/index.js"},"./startup":{"types":"./lib/types/startup.d.ts","default":"./lib/startup.js"},"./prompt":{"types":"./lib/types/prompt.d.ts","default":"./lib/prompt.js"},"./invariant":{"types":"./lib/types/invariant.d.ts","default":"./lib/invariant.js"},"./cordis.patch.yml":"./cordis.patch.yml","./src/*":"./src/*","./package.json":"./package.json"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/dsh-tui/dsh-tui.git"},"dsh":{"bundle":{"patch":"./cordis.patch.yml"}},"scripts":{"build":"tsc -p tsconfig.json && tsdown","test":"vitest run","typecheck":"tsc -p tsconfig.json --noEmit"},"engines":{"node":"^22.19 || >=24"},"dependencies":{"commander":"^14.0.0","diff":"^9.0.0","get-east-asian-width":"1.6.0","marked":"18.0.5","saxes":"6.0.0"},"peerDependencies":{"@deepseek-ai/cordis":"^4.0.1","@deepseek-ai/cordis-plugin-loader":"^1.0.0-rc.5","@deepseek-ai/dsh-agent":"^0.1.0-rc.6","@deepseek-ai/dsh-agent-loop":"^0.1.0-rc.6","@deepseek-ai/dsh-cmdline":"^0.1.0-rc.6","@deepseek-ai/dsh-commands":"^0.1.0-rc.6","@deepseek-ai/dsh-compaction":"^0.1.0-rc.6","@deepseek-ai/dsh-goal":"^0.1.0-rc.6","@deepseek-ai/dsh-invariants":"^0.1.0-rc.6","@deepseek-ai/dsh-llm":"^0.1.0-rc.6","@deepseek-ai/dsh-llm-retry":"^0.1.0-rc.6","@deepseek-ai/dsh-session":"^0.1.0-rc.6","@deepseek-ai/dsh-session-persistence":"^0.1.0-rc.6","@deepseek-ai/dsh-session-projection":"^0.1.0-rc.6","@deepseek-ai/dsh-session-projection-cache":"^0.1.0-rc.6","@deepseek-ai/dsh-session-query":"^0.1.0-rc.6","@deepseek-ai/dsh-session-reference":"^0.1.0-rc.6","@deepseek-ai/dsh-session-title":"^0.1.0-rc.6","@deepseek-ai/dsh-skill":"^0.1.0-rc.6","@deepseek-ai/dsh-subprocess":"^0.1.0-rc.6","@deepseek-ai/dsh-system-prompt":"^0.1.0-rc.6","@deepseek-ai/dsh-token-meter":"^0.1.0-rc.6","@deepseek-ai/dsh-tool-cordis":"^0.1.0-rc.6","@deepseek-ai/dsh-tool-workflow":"^0.1.0-rc.6","@deepseek-ai/dsh-tools":"^0.1.0-rc.6","@deepseek-ai/dsh-user-approval":"^0.1.0-rc.6","@deepseek-ai/dsh-user-questions":"^0.1.0-rc.6","@deepseek-ai/schemastery":"^3.18.1"},"peerDependenciesMeta":{"@deepseek-ai/dsh-session-persistence":{"optional":true},"@deepseek-ai/dsh-session-query":{"optional":true},"@deepseek-ai/dsh-skill":{"optional":true}},"devDependencies":{"@earendil-works/pi-tui":"0.80.7","@types/node":"^24.0.0","@xterm/headless":"5.5.0","tsdown":"^0.22.14","typescript":"^5.9.0","vitest":"^3.0.0"},"_id":"@dsh-tui/dsh-tui@0.1.2","gitHead":"e634ea95670a3d336a68cc8479a2baa30da025d1","bugs":{"url":"https://github.com/dsh-tui/dsh-tui/issues"},"homepage":"https://github.com/dsh-tui/dsh-tui#readme","_nodeVersion":"22.22.0","_npmVersion":"10.9.4","dist":{"integrity":"sha512-nbxryAR+OvwxEcbaJJwEJODPXe2Aknx+FHKXsi/mWfDu3NGOkAAD2C35X0odfCsTkiVCIrt0QiWZ7w4qUhH2Jg==","shasum":"9da377284f519fd6877ad798be165aa027cfb953","tarball":"https://registry.npmjs.org/@dsh-tui/dsh-tui/-/dsh-tui-0.1.2.tgz","fileCount":84,"unpackedSize":937810,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHmXtcp92tK4sjfWn2Wsxd/zHLSv13t+5d9AtX31Oiu0AiEA7usurdr1oXZahhDYZ17g7qgUPq9D4sTmt8/H/hSyhuA="}]},"_npmUser":{"name":"thomaslwang","email":"thomaslwang@gmail.com"},"directories":{},"maintainers":[{"name":"thomaslwang","email":"thomaslwang@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dsh-tui_0.1.2_1786674189834_0.83754207606565"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-14T02:23:09.639Z","0.1.2":"2026-08-14T02:23:09.982Z","modified":"2026-08-14T02:23:10.238Z"},"maintainers":[{"name":"thomaslwang","email":"thomaslwang@gmail.com"}],"description":"Claude Code-style interactive terminal UI for DeepSeek Harness agents","homepage":"https://github.com/dsh-tui/dsh-tui#readme","repository":{"type":"git","url":"git+https://github.com/dsh-tui/dsh-tui.git"},"bugs":{"url":"https://github.com/dsh-tui/dsh-tui/issues"},"license":"MIT","readme":"# @dsh-tui/dsh-tui\n\n[English](README.md) | 中文\n\n[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 智能体的交互式终端（TUI）入口——在终端里获得 Claude Code / Codex 同款的对话体验，以树外（out-of-tree）dsh 插件 bundle 的形式安装。基于 [`@earendil-works/pi-tui`](https://www.npmjs.com/package/@earendil-works/pi-tui) 构建。\n\n它组合在官方 `@deepseek-ai/dsh-base` bundle 之上，与官方 web 界面共享同一套插件生态——shell 与文件系统工具、技能、子代理、工作流、沙箱审批——不 fork、不魔改。\n\n![dsh-tui 会话](docs/tui.png)\n\n## 功能\n\n- 模型输出与思考过程的流式 Markdown 渲染\n- 工具调用卡片（terminal / diff / generic 三种渲染意图）；Ctrl+O 三档切换：预览 → 展开 → 隐藏\n- 工具审批与 `ask_user_question` 对话框，含 plan 模式评审\n- `@文件` 路径自动补全与 `@session` 会话引用卡片\n- 斜杠命令：`/model`（含推理力度选择）、`/resume`、`/compact`、`/details`、`/help`，以及其他插件注册的全部命令\n- 常驻 todo 面板、token 用量与上下文压力状态栏、会话标题\n- 可配置主题；从 `COLORTERM` 自动检测真彩色\n\n## 安装\n\n需要 Node `^22.19 || >=24` 和 `dsh` CLI（`npm i -g @deepseek-ai/dsh@next`）。\n\n```sh\ndsh plugin --profile tui add @dsh-tui/dsh-tui\ndsh --profile tui                                      # 在当前目录开启会话\ndsh --profile tui --resume <session-id>                # 恢复历史会话\n```\n\n想跟踪仓库最新代码而非 npm 发布版，用 `add github:dsh-tui/dsh-tui`。git 安装的插件在安装时通过 `prepare` 脚本构建，pnpm 默认拦截构建脚本：若该 `add` 失败，按它打印的键名在 `~/.dsh/profiles/tui/pnpm-workspace.yaml` 里追加 `allowBuilds` 后重跑——\n\n```yaml\nallowBuilds:\n  \"@dsh-tui/dsh-tui\": true\n```\n\n在环境变量（或启动目录 / `$DSH_HOME` 下的 `.env`）里设置 `DEEPSEEK_API_KEY`。\n\n## 本地 / 自部署 DeepSeek 端点\n\n零代码配置，三选一：\n\n1. **环境变量**：`DEEPSEEK_BASE_URL=http://localhost:8000/v1` 搭配 `DEEPSEEK_API_KEY`。\n2. **设置文件（热加载）**：`$DSH_HOME/settings.yaml`\n\n   ```yaml\n   llm-deepseek:\n     baseURL: http://localhost:8000/v1\n   ```\n\n3. **OpenAI 兼容网关**（vLLM、SGLang 等）：在 profile 补丁（`$DSH_HOME/profiles/tui/cordis.patch.yml`）里声明一个 `llm-pi-ai` 路由并把默认模型指过去——参见 dsh 的 providers 指南。\n\n## 开发\n\n```sh\npnpm install   # 自动应用 pi-tui 补丁（patches/）\npnpm build     # tsc 类型声明 + tsdown 运行时打包\n```\n\npi-tui 钉在 0.80.7 并带一个 pnpm 补丁（编辑器提示符前缀能力），构建时打包进 `lib/`，因此仓库之外的安装方永远不会拿到未打补丁的副本。\n\n## 状态与已知限制\n\n- 基于 pre-release 的 `@deepseek-ai/dsh` rc 线开发，上游稳定前随时可能 breaking；peer 依赖钉在验证过的 rc 版本。\n- 恢复出来的测试套件（`tests/`）先于本次移植，目前尚不可运行。\n- 真实模型回合需要可达的 DeepSeek 兼容端点；请求之前的一切（组合、渲染、审批、resume）无需 key 即可工作。\n\n## 来源与许可\n\nMIT。TUI 实现恢复自 DeepSeek Harness 仓库历史（`packages/ui/tui`，上游于 commit `10bb9cbf4a` 移除），并移植到已发布的 rc API；上游版权声明保留在 [LICENSE](LICENSE) 中。\n","readmeFilename":"README.zh.md","_rev":"1-d38c82e70d0871a1be4a18a3d2c07643"}