turtle1999/turtle-ui
按现状提供,不提供任何担保。
项目介绍Project Overview
Turtle UI 是 dsh 的一个客户端 TUI 插件包,通过 profile bundle 的 patch 层在 dsh-base 之上绑定终端界面与代理,作为单一持久会话运行。适用于需要以 TUI 形式交互、复用 --resume/--session 参数启动或恢复 dsh 会话的场景。注意:从 git 安装时需先在 profile 的 pnpm-workspace.yaml 中登记 pnpm 打印的 allowBuilds 键,类型检查也仅在同级 harness 检出环境下可用。
Turtle UI is a dsh client plugin package that ships a TUI implementation as a profile bundle, layering over dsh-base to bind the terminal interface and a configured agent into one durable session. Use it to launch dsh with a terminal UI, or to resume or name sessions via --resume and --session under the tui profile. Note that git installs require registering the allowBuilds key pnpm prints into the profile's pnpm-workspace.yaml, and the typecheck gate only works in a sibling-checkout environment.
请帮我了解并安装插件:【turtle-ui】【https://github.com/turtle1999/turtle-ui】
把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.
或使用命令行安装(适合开发者)Or use CLI install (for developers)
命令行安装CLI Install
dsh plugin --profile tui add github:deepseek-harness/turtle-ui
把 turtle1999/turtle-ui 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
Turtle UI
The very first UI of dsh in a Friday afternoon
This repository contains the former packages/ui/tui implementation, its unit and terminal snapshot tests, and a dsh profile bundle patch. The TUI owns terminal presentation and input; DeepSeek Harness owns the agent, model, tools, persistence, and dsh launcher.
Development
Keep this repository and DeepSeek Harness as siblings:
~/git/deepseek-harness
~/git/turtle-ui
Install and build the sibling Harness, then Turtle UI:
(cd ../deepseek-harness && pnpm install && pnpm run build)
pnpm install
pnpm run build
The peer APIs come from the sibling Harness checkout. The standalone TypeScript and Vitest configurations intentionally resolve those sources through ../deepseek-harness; Vitest uses the Harness build for the goal host module instead of mixing that source module with transitive built packages. The patched @earendil-works/pi-tui is a devDependency bundled into lib/ at build time, so consumers install no pi-tui and need no patchedDependencies.
Run
Turtle UI is a dsh profile bundle: its package.json declares "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }, so installing it into a profile activates the patch layer automatically.
From a local checkout, build and install a copied file: package so its Harness peers resolve through the profile's managed fallback. Re-run the add after rebuilding to refresh the copy:
pnpm run build
dsh plugin --profile tui add file:.
dsh --profile tui
From git, with no checkout: the prepare script transpiles lib/ on the consumer's machine during install. pnpm ≥10 blocks that build until you allow it, so the first add fails with an allowBuilds hint; copy the exact key pnpm prints into the profile's pnpm-workspace.yaml and re-run:
dsh plugin --profile tui add github:deepseek-harness/turtle-ui # fails with the allowBuilds key
# add the printed key under allowBuilds in ~/.dsh/profiles/tui/pnpm-workspace.yaml
dsh plugin --profile tui add github:deepseek-harness/turtle-ui # builds and activates
dsh --profile tui
The prepare build (tsdown.prepare.config.ts) transpiles without type checking — the repo's type graph needs the sibling harness checkout, which consumers don't have. pnpm run typecheck in a sibling-checkout environment remains the type gate.
The bundle layer rides over @deepseek-ai/dsh-base and binds the TUI and configured agent to one durable session. The ordinary tui-startup provider injects the launcher's immutable ctx.cmdlineArgs, parses --resume, --session, and this app's --help, then provides tuiStartup; session-bound rows inject that service and read it from lazy config, so they cannot activate on the wrong session. A bare dsh --profile tui mints a fresh session id on every launch, --session <id> names a fresh session explicitly, and --resume <session> continues a persisted session. In-app /resume handoff and exit-message behavior still need the removed TUI-specific launcher and remain unavailable.
Checks
pnpm run typecheck
pnpm test
pnpm run build
nexu-io/open-design
amruthpillai/reactive-resume
esengine/DeepSeek-Reasonix
anywhere-labs/deepseek-harness-desktop
walkinglabs/learn-harness-engineering
YaoApp/yao
Devin-AXIS/iPolloWork