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

Grok 终端前端 chen-001/dsh-grok-tui

DeepSeek Harnessv0.3.8
chen-00181 天前有提交已提供中文文档扫描:高危

把 grok-build 的 TUI 当作 DeepSeek Harness dsh 的前端:界面是 grok…

33.9/100
综合分
11
GitHub 星标
82
npm 周下载
—/5
用户评分

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add dsh-grok-tui
npm 源 · dsh-grok-tui 的发布者账号已校验与本仓库一致

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 81 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过
展开查看检查明细 ↓

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

✓npm 包dsh-grok-tui @ 0.3.8
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/24 14:52:27

🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0
🔴 扫描:高危尚无人工评估

静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。

安装时即执行脚本读写/删除本地文件发起外部网络请求
查看扫描证据(共 67 处,展示前 53 条)
  • 读取本地文件
    dist/index.js:233
    const buf = await readFile(path);
  • 读取本地文件
    dist/index.js:261
    const buf = await readFile(path);
  • 写入本地文件
    dist/index.js:311
    await writeFile(path, Buffer.concat(parts));
  • 读取本地文件
    dist/index.js:333
    raw = await readFile(unitPath, 'utf8');
  • 读取本地文件
    dist/index.js:512
    projects = await promises_readdir(sessionsRoot);
  • 读取本地文件
    dist/index.js:521
    const info = await promises_stat(log);
  • 读取本地文件
    dist/index.js:542
    projects = await promises_readdir(sessionsRoot);
  • 删除本地文件
    dist/index.js:549
    await rm(dir, {
  • 写入本地文件
    dist/index.js:1199
    await mkdir(dirname(path), {
  • 写入本地文件
    dist/index.js:1211
    await rename(tmp, path);
  • 删除本地文件
    dist/index.js:1214
    await rm(tmp, {
  • 发起网络请求
    dist/index.js:1231
    const response = await fetch(`${config.origin}/api/${method}`, {
  • 写入本地文件
    dist/index.js:1375
    writeFile(usageStatusFile(), `${JSON.stringify({
  • 写入本地文件
    dist/index.js:2025
    writeFile(path, model, 'utf8').catch(()=>{});
  • 删除本地文件
    dist/index.js:2245
    unlinkSync(socketPath);
  • 删除本地文件
    dist/index.js:2262
    unlinkSync(socketPath);
  • 删除本地文件
    dist/index.js:2272
    unlinkSync(socketPath);
  • 删除本地文件
    dist/index.js:2418
    unlinkSync(socketPath);
  • 写入本地文件
    src/acp-server.ts:423
    void writeFile(
  • 写入本地文件
    src/acp-server.ts:1649
    void writeFile(path, model, 'utf8').catch(() => {
  • 读取本地文件
    src/archive.ts:33
    raw = await readFile(unitPath, 'utf8')
  • 读取本地文件
    src/index.ts:313
    const value = readFileSync(config.lastModelFile, 'utf8').trim()
  • 读取本地文件
    src/leader.ts:198
    boundInode = statSync(socketPath).ino
  • 读取本地文件
    src/leader.ts:205
    if (!existsSync(socketPath)) {
  • 删除本地文件
    src/leader.ts:220
    unlinkSync(socketPath)
  • 读取本地文件
    src/leader.ts:234
    current = statSync(socketPath).ino
  • 删除本地文件
    src/leader.ts:244
    unlinkSync(socketPath)
  • 删除本地文件
    src/leader.ts:257
    unlinkSync(socketPath)
  • 读取本地文件
    src/leader.ts:402
    for (const line of readFileSync('/proc/net/unix', 'utf8').split('\n')) {
  • 读取本地文件
    src/leader.ts:410
    for (const entry of readdirSync('/proc')) {
  • 读取本地文件
    src/leader.ts:414
    for (const fd of readdirSync(`/proc/${pid}/fd`)) {
  • 删除本地文件
    src/leader.ts:471
    unlinkSync(socketPath)
  • 读取本地文件
    src/repair.ts:43
    const buf = await readFile(path)
  • 读取本地文件
    src/repair.ts:85
    const buf = await readFile(path)
  • 写入本地文件
    src/repair.ts:144
    await writeFile(path, Buffer.concat(parts))
  • 读取本地文件
    src/seq-scan.ts:29
    const buf = await readFile(path)
  • 读取本地文件
    src/session-health.ts:108
    const st = await stat(path)
  • 读取本地文件
    src/session-health.ts:130
    const fresh = await stat(path)
  • 读取本地文件
    src/session-health.ts:149
    const after = await stat(path)
  • 读取本地文件
    src/session-store.ts:50
    projects = await readdir(sessionsRoot)
  • 读取本地文件
    src/session-store.ts:57
    const info = await stat(log)
  • 读取本地文件
    src/session-store.ts:83
    projects = await readdir(sessionsRoot)
  • 删除本地文件递归
    src/session-store.ts:90
    await rm(dir, { recursive: true, force: true })
  • 读取本地文件
    src/workspace-attach.ts:103
    raw = await readFile(unitPath, 'utf8')
  • 读取本地文件
    src/workspace-attach.ts:166
    canonical = await realpath(cwd)
  • 读取本地文件
    src/workspace-attach.ts:179
    const canonical = await realpath(cwd)
  • 读取本地文件
    src/workspace-attach.ts:180
    return (await stat(canonical)).isDirectory() ? canonical : undefined
  • 写入本地文件
    src/workspace-attach.ts:268
    await mkdir(dirname(path), { recursive: true })
  • 写入本地文件
    src/workspace-attach.ts:278
    await rename(tmp, path)
  • 删除本地文件
    src/workspace-attach.ts:281
    await rm(tmp, { force: true })
  • 发起网络请求
    src/workspace-attach.ts:359
    const response = await fetch(`${config.origin}/api/${method}`, {
  • 读取本地文件
    src/workspace-attach.ts:446
    projects = await readdir(sessionsRoot)
  • 读取本地文件
    src/workspace-attach.ts:454
    sessions = await readdir(projectPath)
扫描于 2026/11/3(1 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-agent@deepseek-ai/dsh-llm@deepseek-ai/dsh-session@deepseek-ai/dsh-tools@deepseek-ai/dsh-user-questions
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

界面预览

1 张 · 点击查看大图

功能亮点

  • 作为dsh前端

README

由 DeepSeek 最新模型翻译生成
dsh-grok-tui 把 grok-build 的 TUI 当作 DeepSeek Harness (dsh) 的前端:界面是 grok 的,内核(提示词、工具、模型路由、会话持久化)由 dsh 提供。 dsh-grok-tui 安装 / Installation 前提:已安装 dsh 与 grok TUI 二进制(curl -fsSL https://x.ai/cli/install.sh | bash)。支持 macOS / Linux。 方式 A:npm 发布版 / Published npm package npm install -g dsh-grok-tui grok-dsh setup # 把 grok bridge 挂进 dsh web 的 profile(幂等,可重复执行) wire the grok bridge into the dsh web profile (idempotent) npx @deepseek-ai/dsh web # 启动官方 host / start the official host grok-dsh # 打开 TUI,直连运行中的 dsh web open the TUI, bridging to the running dsh web
展开完整文档(README 剩余 1 节)
dsh-grok-tui

把 grok-build 的 TUI 当作 DeepSeek Harness (dsh) 的前端:界面是 grok 的,内核(提示词、工具、模型路由、会话持久化)由 dsh 提供。

dsh-grok-tui

安装 / Installation

前提:已安装 dsh 与 grok TUI 二进制(curl -fsSL https://x.ai/cli/install.sh | bash)。支持 macOS / Linux。

方式 A:npm 发布版 / Published npm package

npm install -g dsh-grok-tui
grok-dsh setup # 把 grok bridge 挂进 dsh web 的 profile(幂等,可重复执行) wire the grok bridge into the dsh web profile (idempotent)
npx @deepseek-ai/dsh web # 启动官方 host / start the official host
grok-dsh # 打开 TUI,直连运行中的 dsh web open the TUI, bridging to the running dsh web

grok-dsh setup 是显式的(npm 全局安装不会静默改写你的 dsh 配置):它把 grok-server 行写进 ~/.dsh/profiles/web/cordis.patch.yml 并把插件软链进 profile 的 node_modules,npx @deepseek-ai/dsh web 随之携带 leader socket。host 已在运行时重装后需重启一次。

方式 B:git 完整安装 / Full installer

git clone https://github.com/chen-001/dsh-grok-tui.git
cd dsh-grok-tui && sh install.sh

这个安装脚本会自动完成同样的 bridge 挂载,然后构建 grok-dsh 启动器并写入你的 PATH。

两种方式安装后的行为完全一致(命令、herdr 侧栏自动配置、用量面板)。

使用 / Usage

先启动官方 host(推荐),再打开 TUI:

dsh web # 启动官方 host / start the official host
grok-dsh # 打开 TUI:检测到运行中的 dsh web 则直连,否则启动本窗口独立后端 open the TUI: bridges to a running dsh web, else starts a per-window backend grok-dsh stop # 停止所有独立后端 / stop all standalone backends grok-dsh status # 查看 host 桥 / 独立后端状态与 grok 版本 / host bridge & backend status, grok version grok-dsh restart # 重启当前窗口的独立后端 / restart this window's standalone backend

在哪个目录运行 grok-dsh,会话的工作目录就在哪个目录。独立后端与 dsh web 不要同时运行(两者写同一会话存储)。

用量指标展示 / Usage metrics

官方 grok 二进制即可显示 token 用量(状态栏 18K/1.0M context bar)。完整指标——缓存命中率、TTFT、TPS、输入/输出 token——在以下环境自动展示,无需编译任何 grok 源码:

推荐:在 herdr 中使用

在 herdr 的 pane 里运行 grok-dsh,指标实时显示在左侧 agents 列表的 grok 条目下(herdr 侧栏配置由安装自动完成,重启 herdr 或 reload config 后生效):

| token | 内容 | 示例 |
| dsh_cache | 缓存命中率 | 99.6% |
| dsh_ttft | 平均首 token 延迟 | 0.8s |
| dsh_tps | 平均输出速率 | 204.1/s |
| dsh_in / dsh_out | 累计输入/输出 token | 64 / 175 |

在 tmux 中使用

在 tmux 里运行 grok-dsh 会自动在 TUI 下方开一个用量面板窗格(按 q 关闭):

╭─ dsh usage ─────────────────────╮
│ cache hit 99.6% (18.0K read) │
│ input 64 tokens │
│ output 172 tokens │
│ total 18.1K tokens │
│ api calls 1 │
│ tool time 0.0s │
╰─────────────────────────────────╯
预览分享卡片长什么样 ↓chen-001/dsh-grok-tui
分享 · DeepSeek Harness Hub
chen-001/dsh-grok-tui

把 grok-build 的 TUI 当作 DeepSeek Harness dsh 的前端:界面是 grok…

这是你的仓库?认领条目

回到顶部