Skip to content
dsh.fish
Bundle

dsh-mobile-shell

Mobile-adaptive DSH web UI: on narrow screens the sidebar rail is hidden and the directory opens as an overlay drawer, so the conversation gets the full width.

Source
Yui-Little
stars
8 stars
License
MIT
Updated
Updated 2 hours ago

Readme

# dsh-mobile-shell

DeepSeek Harness Web 的移动端外壳插件。窄屏(< 1024px)下隐藏左侧 rail、目录变为侧滑抽屉、会话区独占全宽,并附带插件市场、会话状态面板、设置适配、自定义推理参数等移动端增强。纯 client 插件,宽屏下与未安装时完全一致。

[![Release v0.1.8](https://img.shields.io/badge/release-v0.1.8-5B4CF0?style=flat-square)](package.json)
[![License: MIT](https://img.shields.io/badge/license-MIT-0B7285?style=flat-square)](LICENSE)
[![DSH](https://img.shields.io/badge/DSH-Web%20Profile-5B4CF0?style=flat-square)](cordis.patch.yml)

## 效果

| 会话主页(全宽) | 目录抽屉 | 设置面板 | 插件市场 |
| --- | --- | --- | --- |
| ![会话主页](assets/hero.png) | ![目录抽屉](assets/drawer.png) | ![设置面板](assets/settings.png) | ![插件市场](assets/market.png) |

## 特性

### 移动端布局

- **侧滑抽屉**:窄屏隐藏左侧 rail,目录变为 overlay 侧滑抽屉(约 280px),点击会话行切换并自动收起,行内按钮(三点菜单等)不触发收起
- **全宽会话**:会话区独占视口宽度,消息文字 16px → 15px,左右留白 32px → 20px,行宽更充分
- **避开摄像头**:打开目录的浮动按钮置于左缘 y≈72px(摄像头带下方),不遮挡内容
- **会话头部重排**:移动端按 [目录按钮] [会话名称] [模式徽标] 排列
- **状态栏适配**:viewport 加 `viewport-fit=cover`,各表面按 `env(safe-area-inset-top)` 下移;`theme-color` 跟随主题自动切换;`touch-action: manipulation` 禁用双击放大与 300ms 延迟(保留双指缩放)

### 设置面板

- **近全宽 Sheet**:官方 800px 双栏弹窗改为近全宽底部 sheet,导航标签两行全可见、条目保持横向、Appearance 一行三选一、高度自适应、淡入动画
- **白色卡片风格**:设置项以白色区块分隔,整体扁平清爽
- **插件市场入口**:设置面板导航新增「Plugin Market」条目,点击进入内置插件市场页

### 插件市场

- **分类下拉**:按分类筛选插件
- **排序**:更新时间 / Star 两种排序,切换即时刷新
- **HH:mm 时间徽标**:更新时间始终显示 HH:mm 格式
- **GitHub 风格 README 弹窗**:点击插件卡片查看详情,README 以 GitHub 风格渲染
- **一键安装即热加载**:安装按钮触发 `dsh plugin add`,安装完成后自动热加载(无需重启),并通过 toast 提示结果
- **EN→ZH 翻译**:README 支持中英语言切换,英文 README 自动翻译为中文(MyMemory 分块翻译 + LLM 兜底)

> ⚠️ 市场内一键安装**不保证稳定成功**(受网络 / 构建环境影响)。推荐复制仓库链接,直接用 `dsh` 命令安装(见下方[安装](#安装))。

### 会话状态面板

- **Status 标签页**:在会话头部新增 Status 标签(与 Chat / Trajectory 并列),展示轮数 / 步数 / 耗时 / TTFT / 缓存命中 / token 用量
- **统计栏一行滚动**:所有指标收进一条固定高度(28px)的横向滚动条,底部不被撑高

### 自定义推理参数

- **Reasoning Effort 配置**:为自定义 provider 的模型添加 reasoning effort 选项(off / low / high / xhigh / max)
- **reasoningEfforts 自动回填**:模型未声明 `reasoningEfforts` 时自动补全默认值
- **协议切换安全**:`thinkingFormat` / `supportsReasoningEffort` 等 completions 专属开关不再自动写入模型配置,provider 在 openai-completions / openai-responses 之间任意切换都不会触发保存校验报错

### 其他增强

- **聊天字号调节**:底部字号滑轨,实时调整消息文字大小并持久化
- **Enter 换行**:输入框 Enter 换行、Shift+Enter 发送(移动端友好)
- **附件折叠**:`[附件]` 块折叠为原生 `<details>`,输入区不被撑高
- **会话行三点菜单**:长按或右键会话行弹出三点菜单(重命名 / Fork / 归档),菜单弹出时抽屉保持打开
- **更新通知**:插件版本更新后一次性 toast 提示「手机UI插件已更新 v0.1.0,本页已是新界面」
- **中英双语**:zh / en 两套 locale,UI 文案跟随系统语言

## 安装

```sh
dsh plugin --profile web add github:Yui-Little/dsh-mobile-shell
```

仓库自带构建产物,一条命令直接安装,安装后即热加载生效(无需重启)。

本地开发:

```sh
dsh plugin --profile web add link:/path/to/dsh-mobile-shell
```

## 构建

```sh
pnpm install
pnpm build
```

产物 `lib/` 与源码同步入库,改动源码后重新构建再提交。

## 验证

- `pnpm verify` 类型检查;`dsh --profile web --dump-config` 应出现插件层
- 移动端(390px):rail 消失、抽屉开合/遮罩、设置 sheet 适配、插件市场加载、Status 标签页渲染
- 桌面端(≥ 1024px):与未安装时一致

## 兼容性

- 需要 `:has()` 选择器(Chromium 105+)
- `prefers-reduced-motion: reduce` 下自动禁用动画

## 致谢

- 侧滑抽屉方案源自 [mexiaosqwq/dsh-web-mobile](https://github.com/mexiaosqwq/dsh-web-mobile)(MIT),本插件在其基础上重写扩展,仅保留移动端抽屉与适配部分

## License

[MIT](LICENSE)

Install

dsh plugin --profile web add github:Yui-Little/dsh-mobile-shell

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source