🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

终端交互界面 DanielOu1208/deepseek-harness-tui

DeepSeek Harness
DanielOu12083 天前有提交已提供中文文档扫描:含敏感能力

面向官方 DeepSeek Harness 的专注、终端原生界面。

34.9/100
综合分
7
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/31 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:要求 dsh 0.1.0-rc.6,而最新版为 0.2.1-rc.5。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add DanielOu1208/deepseek-harness-tui
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:需留意
是什么
dsh 原生插件 · ui
装得上吗
实装验证未通过(dependency_conflict),装前请到仓库确认最近更新与 issue
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 3 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
⚠︎ 实装验证未通过(dependency_conflict · 2026/9/29) ——可能是验证环境差异,装前建议到 GitHub 仓库确认最近更新与 issue。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

要求 dsh 0.1.0-rc.6,而最新版为 0.2.1-rc.5

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包@chalk/dsh-tui(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✗dsh CLI 依赖要求 0.1.0-rc.6 · 最新 0.2.1-rc.5 不兼容
✓入口文件main/exports/bin 已声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 19:29:12

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件
查看扫描证据(共 21 处,展示前 21 条)
  • 读取本地文件
    lib/src/drafts.js:44
    metadata = await lstat(path);
  • 读取本地文件
    lib/src/drafts.js:57
    raw = await readFile(path, 'utf8');
  • 删除本地文件
    lib/src/drafts.js:94
    await unlink(path);
  • 写入本地文件
    lib/src/drafts.js:132
    await mkdir(this.configuredRoot, { recursive: true, mode: 0o700 });
  • 写入本地文件
    lib/src/drafts.js:133
    await chmod(this.configuredRoot, 0o700);
  • 读取本地文件
    lib/src/drafts.js:137
    root = await realpath(this.configuredRoot);
  • 读取本地文件
    lib/src/drafts.js:144
    const metadata = await lstat(root);
  • 写入本地文件
    lib/src/drafts.js:170
    await rename(temporary, path);
  • 写入本地文件
    lib/src/drafts.js:171
    await chmod(path, 0o600);
  • 删除本地文件
    lib/src/drafts.js:176
    await unlink(temporary).catch(() => { });
  • 读取本地文件
    lib/src/prompt-controller.js:168
    const metadata = await stat(absolute);
  • 读取本地文件
    lib/src/prompt-controller.js:174
    const data = new Uint8Array(await readFile(absolute));
  • 读取本地文件
    lib/src/session-insights.js:90
    const metadata = await stat(absolute);
  • 读取本地文件
    lib/src/launcher.js:126
    const path = candidates.find(candidate => existsSync(candidate));
  • 读取本地文件
    lib/src/launcher.js:132
    const manifest = JSON.parse(readFileSync(packageManifestPath(), 'utf8'));
  • 执行外部命令来自配置/变量
    lib/src/launcher.js:139
    const child = spawn(process.execPath, [bin, '--profile', PROFILE, ...args], { stdio: 'inherit' });
  • 读取本地文件
    lib/src/clipboard-image.js:24
    return new Uint8Array(await readFile(command.outputFile));
  • 删除本地文件递归
    lib/src/clipboard-image.js:93
    await rm(tempRoot, { recursive: true, force: true });
  • 删除本地文件
    lib/src/export.js:274
    await unlink(path);
  • 写入本地文件
    lib/src/export.js:303
    await chmod(temporary, 0o600);
  • 写入本地文件
    lib/src/export.js:312
    await rename(temporary, target);
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh@deepseek-ai/dsh-app-boot@deepseek-ai/dsh-cmdline@deepseek-ai/dsh-credentials@deepseek-ai/dsh-credentials-local@deepseek-ai/dsh-home-paths@deepseek-ai/dsh-launch-environment@deepseek-ai/dsh-tool-ask-user@deepseek-ai/schemastery@deepseek-ai/dsh-base@deepseek-ai/cordis-plugin-loader
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

1 张 · 点击查看大图

功能亮点

  • 终端原生交互界面
  • 独立交互层

DeepSeek Harness 官方运行时的独立 Pi TUI 交互层

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness TUI 面向官方 DeepSeek Harness 的专注、终端原生界面。 CI CodeQL Node.js 22.19+ License: MIT 使用隔离的 Harness home 从编译后的 TUI 中实际截取。未使用任何模型请求或私有会话数据。 一个面向官方 DeepSeek Harness 的独立终端 UI,使用 @earendil-works/pi-tui 渲染。 本包不会 fork 或替换 Harness。官方运行时仍然负责 agent 循环、模型、工具、权限、会话、检查点、压缩、目标、技能、MCP、子代理、配置文件和凭据。本包添加了 deepseek 启动器、一个 Cordis 配置文件包,以及终端交互层。 状态: 实验性 MVP,固定使用 DeepSeek Harness 0.1.0-rc.6。在 Harness 仍为预发布软件期间,请保持启动器和配置文件包版本一致。 亮点 | 官方运行时 | 在不 fork Harness agent 循环或持久化模型的情况下,添加终端交互层。 | | 快速控制 | 无需离开输入框即可切换 plan/build 模式、推理强度、转录详情和权限。 | | 持久化工作流 | 按工作区恢复、重命名、fork、归档、检查、导出和整理会话。
展开完整文档(README 剩余 1 节)
DeepSeek Harness TUI

面向官方 DeepSeek Harness 的专注、终端原生界面。

CI
CodeQL
Node.js 22.19+
License: MIT

使用隔离的 Harness home 从编译后的 TUI 中实际截取。未使用任何模型请求或私有会话数据。

一个面向官方 DeepSeek Harness 的独立终端 UI,使用 @earendil-works/pi-tui 渲染。

本包不会 fork 或替换 Harness。官方运行时仍然负责 agent 循环、模型、工具、权限、会话、检查点、压缩、目标、技能、MCP、子代理、配置文件和凭据。本包添加了 deepseek 启动器、一个 Cordis 配置文件包,以及终端交互层。

状态: 实验性 MVP,固定使用 DeepSeek Harness 0.1.0-rc.6。在 Harness 仍为预发布软件期间,请保持启动器和配置文件包版本一致。

亮点

| 官方运行时 | 在不 fork Harness agent 循环或持久化模型的情况下,添加终端交互层。 |
| 快速控制 | 无需离开输入框即可切换 plan/build 模式、推理强度、转录详情和权限。 |
| 持久化工作流 | 按工作区恢复、重命名、fork、归档、检查、导出和整理会话。 |
| 可见状态 | 查看当前活动模型、推理级别、权限模式、工作状态和大致上下文占用情况。 |

要求

- Node.js 22.19 或更新版本
- 一个 DeepSeek API key
- macOS、Linux 或 Windows

安装

一次全局安装即可提供启动器、匹配的官方 Harness 0.1.0-rc.6 运行时,以及此 TUI 包:

npm install --global --install-links github:DanielOu1208/deepseek-harness-tui

请保留命令中的 --install-links。对于 GitHub 源码安装,它会让 npm 将包复制到全局前缀中,而不是让启动器链接到 npm 的临时检出目录。

在不创建或更改 Harness 状态的情况下确认启动器:

deepseek --version
deepseek --help
第一次普通的 deepseek 启动会通过官方 Harness profile API 在 $DSH_HOME/profiles/tui(通常是 ~/.dsh/profiles/tui)下创建或补全官方 tui profile。现有的 profile 文件和用户补丁层会被保留。

认证

使用掩码终端输入存储密钥:

deepseek auth

密钥通过官方 Harness 凭据服务写入。它使用 $DSH_HOME/.credentials.yaml(通常是 ~/.dsh/.credentials.yaml),遵循 Harness 文件安全规则,并且从不打印密钥。

在不泄露凭据的情况下检查认证状态:

deepseek auth status

移除由 Harness 存储的密钥:

deepseek auth logout

登出会请求确认,并默认保留凭据。

继承的 DEEPSEEK_API_KEY 优先,并且有意设为只读。当它存在时,auth、auth status 和 auth logout 会说明环境正在提供当前生效的密钥。请在启动 deepseek 的 shell、服务、CI 配置或其他环境中更改或取消设置它;启动器不会声称覆盖或移除它。

从项目或用户 .env 文件继承的密钥也会连同其来源一并报告。deepseek auth logout 不会声称删除这些文件;请改为从所报告的 .env 来源中移除该密钥。

运行

deepseek
deepseek "explain this repository"
deepseek --cwd /path/to/project
deepseek --resume session-xxxxxxxx

参数会原样转发给官方 Harness tui profile。标准输入、标准输出、标准错误、终止信号以及 Harness 退出状态都会由启动器传递。

在 TUI 内:

- Enter 提交提示词。
- Escape 关闭当前菜单或问题,而不停止 agent。
- Ctrl+C 关闭打开的 panel 并停止当前回合;再次按下则退出。
- 当提示词为空时,Ctrl+D 退出。
- F2 打开设置列表。
- Shift+Tab 在 plan 和 build 模式之间切换。在活动回合期间,Harness 会在下一个安全的模型步骤应用该切换。
- Shift+Up 和 Shift+Down 提高或降低下一次模型请求的推理强度。该快捷键会在所公布的最高和最低级别处停止。
- 当平台提供支持时,Ctrl+V 从系统剪贴板附加受支持的图像;/attach path 是可移植的备选方案。
- Up/Down 和 Enter 操作菜单;Space 切换复选框答案。
- / 打开 Harness 命令。
- @ 打开文件补全。
- Transcript detail 默认为 Normal,可从 F2 → Transcript detail 更改。

页脚显示相对于活动模型容量的近似上下文占用,例如 ctx ~42K/1M (4%)。该估算描述的是下一次提示词,而不是计费用量,并且会在压缩后立即更新。在第一个 provider 用量样本之前,页脚会将已知容量显示为 ctx —/1M。
未知的斜杠命令会提交给官方 Harness 命令服务。其可用性取决于所组合的配置文件。

常见的本地命令:

| 命令 | 用途 |
| /help | 显示本地和官方 Harness 命令 |
| /new | 启动一个新会话 |
| /sessions、/resume | 按标题、ID 或工作目录搜索会话 |
| /resume | 直接打开已知会话 |
| /session [session-id] | 重命名、分叉或单向归档会话 |
| /workspaces | 按工作区浏览未归档的会话 |
| /model、/reasoning | 更改下一次模型请求 |
| /permission | 设置 read-only、workspace-write 或 danger-full-access 工具访问权限 |
| /settings 或 F2 | 打开 Pi 风格的设置列表 |
| /busy | 在代理运行时选择排队或引导行为 |
| /queue [prompt] | 管理排队的工作或将单独的后续轮次加入队列 |
| /steer | 在当前轮次的下一个安全步骤注入指导 |
| /attach [path] | 管理待处理的图像或附加 PNG、JPEG、GIF 或 WebP 文件 |
| /deliverables | 浏览成功的变更工具所报告的路径 |
| /inspect | 搜索模型步骤、工具调用、嵌套调用、计时和错误 |
| /stats | 显示整个会话的计时以及提供方令牌/缓存总计 |
| /activity | 检查后台作业、工作流和子代理后代 |
| /export [markdown\|json] | 原子性地导出当前会话,并移除已识别的图像负载 |
| /stop | 停止当前轮次并保持 TUI 打开 |
| /pause | 停止、刷新、打印恢复 ID 并退出 |
| /exit | 刷新并退出 |

旧的单数拼写 /setting 仍为兼容性而接受,但在补全和帮助中隐藏。

会话导航器按最近活动排序,并包含当前会话、持久化的非子代理分叉会话、工作目录和短会话 ID。/new 创建一个不相关的会话;/session 可以在已完成轮次的边界处创建分叉。子代理拥有的会话不进入普通导航,可在 /activity 下查看。当有排队消息等待时,切换会被阻止,因为否则处置活动的 Harness 代理会丢弃该排队工作。如果某个轮次正在运行且没有排队工作,TUI 会在停止前询问。

在 Harness 0.1.0-rc.6 中,归档是单向的:/session 会给出强烈警告并默认选择取消。归档日志仍然持久保留,可通过 /sessions archived 找到,但当前运行时没有暴露安全的取消归档操作。

裸 /queue 可以查看待处理工作、就地替换纯文本项,以及移除尚未被认领的项。运行时未暴露队列重排序功能,因此 TUI 不会用私有的收件箱状态来模仿它。
文本草稿按会话保存在 $DSH_HOME/tui/drafts/v1 下,使用仅所有者可访问的私有文件,并在导航期间恢复。待处理的图片有意不持久化。TUI 通过官方附件服务验证并存储图片,在终端历史中显示 [image],且不要求终端特定的内联图形支持。

/export 在写入仅所有者可访问的 Markdown 或带版本号的 JSON 文件之前,会先刷新当前会话。官方图片附件、常见的 image/image_url 记录、二进制值以及 data:image URL 的原始或编码载荷会被移除,而引用元数据会被保留。插件事件结构是可扩展的,因此分享导出内容前请务必检查;导出内容仍可能包含敏感提示词、工具输出、本地路径以及无法识别的插件自定义数据。

danger-full-access 允许不受限制的工具访问。仅当当前会话和工作目录可信时才使用它。

转录详情

TUI 在保持用户提示词和助手回答可读的同时,减少内部转录噪声:

- Compact 显示单行上下文和工具活动。
- Normal 增加结构化的工具结果和有用的简短预览。
- Debug 显示有界推理、注入的上下文、工具输出和常规运行时事件。

所选模式全局保存在 Harness dsh-tui 设置命名空间中,并实时生效。它仅改变终端呈现:模型上下文和持久会话事件保持不变。调试输出仍有渲染安全限制;对于更大的原始内容,持久化的 Harness 会话仍是权威来源。

运行时和提供方设置

F2 包含只读的提供方能力与 Host 插件摘要。提供方配置文件仍位于 $DSH_HOME/settings.yaml;TUI 配置文件组合仍位于 $DSH_HOME/profiles/tui;用户代理预设仍位于 $DSH_HOME/.agent-presets。已注册的设置命名空间仍可从 F2 → Advanced runtime settings 更改。凭据从不显示;使用 deepseek auth status 检查其来源。

F2 → Support and feedback 会调用官方 /feedback 命令。其确认信息会说明会话共享是已启用、受反馈门控、已禁用还是未配置。

更新

npm install --global --install-links github:DanielOu1208/deepseek-harness-tui
deepseek --version

启动器会将随附的 Harness 包保持在匹配的 0.1.0-rc.6 版本线上。更新全局包不会清除会话、凭据、设置或用户拥有的配置文件补丁。

卸载

npm uninstall --global @chalk/dsh-tui

卸载该包会保留 $DSH_HOME 下的 Harness 用户数据。仅当你确实想要同时删除凭据、设置、配置文件和会话时,才移除该目录。

本地开发

git clone https://github.com/DanielOu1208/deepseek-harness-tui.git
cd deepseek-harness-tui
npm install
npm test
npm run build
npm link
deepseek --help

要在不接触真实 Harness 主目录的情况下测试打包构建,请将 DSH_HOME 指向一个临时目录,并直接调用编译后的启动器。

架构

deepseek launcher
-> official dsh profile boot (tui)
-> @deepseek-ai/dsh-base
-> @chalk/dsh-tui
-> pi-tui terminal interaction

捆绑包覆盖层是 cordis.patch.yml。它将此启动解析器和 TUI 运行器组合在 @deepseek-ai/dsh-base 之上;它不会将 Harness 运行时复制到此仓库中。

实时更新的 Web–TUI 能力对等矩阵 记录了哪些功能受支持、有意保持终端原生,或仍在计划中。

故障排除

deepseek: command not found

启用链接复制后重新安装:

npm install --global --install-links github:DanielOu1208/deepseek-harness-tui

然后检查 npm 的全局前缀:

npm config get prefix

在 macOS 和 Linux 上,该前缀内的 bin 目录必须在 PATH 中。更改 PATH 后请启动新的 shell,或运行 hash -r 以清除旧的命令查找缓存。

deepseek auth 提示环境凭据为只读

运行:

deepseek auth status

如果它报告 env (read-only),请在启动进程的环境中取消设置 DEEPSEEK_API_KEY。根据设计,已存储的凭据无法覆盖继承的环境变量。

凭据文件权限

在 POSIX 系统上,官方提供程序会拒绝组或其他用户可读的凭据文件:

chmod 700 "${DSH_HOME:-$HOME/.dsh}"
chmod 600 "${DSH_HOME:-$HOME/.dsh}/.credentials.yaml"

检查组合后的配置文件

独立启动器会转发应用程序参数,而官方启动器级别的诊断信息仍可通过捆绑的 dsh 可执行文件使用。用于开发检查:

deepseek --dump-config

捆绑栈应包含 @deepseek-ai/dsh-base 和 @chalk/dsh-tui。

仅重置 TUI 配置文件

将 $DSH_HOME/profiles/tui 移开,然后再次运行 deepseek。启动器将在下一次更改状态的启动时初始化一个干净的配置文件。凭据和会话位于该配置文件目录之外。

安全注意事项

- 切勿将凭据放入此仓库、提示、截图、问题或终端日志中。
- deepseek --help 和 deepseek --version 不会初始化配置文件或打开凭据存储。
- 凭据文件权限可防止其他操作系统用户访问,但无法防止已以你的用户身份运行的进程。
- 会话遥测仍由官方基础配置文件控制,除非明确启用,否则默认处于禁用状态。

上游参考

- DeepSeek Harness
- DeepSeek Harness CLI 参考
- DeepSeek 凭证提供程序

许可证

MIT。请参阅 LICENSE 和 THIRD_PARTY_NOTICES.md。
预览分享卡片长什么样 ↓DanielOu1208/deepseek-harness-tui
分享 · DeepSeek Harness Hub
DanielOu1208/deepseek-harness-tui

面向官方 DeepSeek Harness 的专注、终端原生界面。

这是你的仓库?认领条目

回到顶部