把 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-tuinpm 源 · dsh-grok-tui 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 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 │ ╰─────────────────────────────────╯
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
chen-001/dsh-grok-tui
把 grok-build 的 TUI 当作 DeepSeek Harness dsh 的前端:界面是 grok…
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,804已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,350已汉化DSH
71.5
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 151,506已汉化DSH
71.1
AI 矢量设计工具ZSeven-W/openpencil
全球首个 AI 原生开源矢量设计工具。
★ 7,027已汉化DSH
71.1
这是你的仓库?认领条目