DSH iOS 移动版:在 iPhone 和 iPad 上本机运行 DeepSeek Harness,界面完全原生,不连电脑和服务器。Run DSH (DeepSeek Harness) natively on iPhone and iPad: no computer, no server.
翻译准备中
正在加载完整 README。
查看完整 README ↗node、pnpm、python3、pip、git、ffmpeg,还有 rg、jq、curl、sed、awk 等常用命令。pip install 能装纯 Python 的包,venv 也能用。带编译扩展的包(numpy、pandas 等)暂时装不了。clone、commit、branch、merge、stash、pull、push 等日常操作都能用,输出和真 git 一致,Agent 照常读懂。私有仓库用 HTTPS 加 Token 认证。ffmpeg 和 ffprobe 编进 App,能读几乎所有音视频格式(包括 iPhone 拍的 HEVC 视频和 MKV、WebM),能抽帧、抽音轨、剪辑、转码,FFmpeg 自带的滤镜都能用。H.264、HEVC 编码走手机的硬件编码器。没有 x264、VP9、MP3 编码。模型调用仍然需要联网,用 DeepSeek 账号或 API Key 都可以。
引擎就跑在手机里,所以智能体能直接用 iPhone 自带的能力。说一句「明天下午 3 点约了牙医,记进日历,提前一小时提醒我」,日程和提醒就出现在系统自带的 App 里。
日历 · 提醒事项 · 闹钟 · 通讯录 · 健康 · 照片 · 文件 · 音乐 · 位置 · 地图 · 智能家居 · 邮件和短信,还有图像识别、语音转写等本机识别。
每一项都要你自己在侧边栏的「本机能力」里开启,没开的智能体用不了。开启后你装的插件也能用,用过哪些有记录可查。
功能和 DSH 官方 Web UI 对齐,官方能做的这里都能做,界面则用 SwiftUI 完全重写,iPhone 和 iPad 各按自己的习惯适配。在这之上还有官方没有的:本机能力、灵动岛和锁屏 Live Activity、小组件、Siri 和快捷指令、切到后台继续跑、iPad 多窗口。
远程客户端要电脑一直开着,Fish Pocket 不用:引擎就在手机里,掏出来随时随地都能用。在手机上直接运行的方案里,它也是目前最快的:Node、Git、Python 和 FFmpeg 都是原生代码,不经过模拟器。
| Fish Pocket | 远程客户端 | 手机里跑网页版 | iOS 上的 Linux 模拟器(iSH、UTM SE) | |
|---|---|---|---|---|
| 引擎在哪里 | 手机 | 电脑或服务器 | 手机 | 手机 |
| 界面 | 完全原生 SwiftUI | 看具体项目 | 官方 Web UI | 终端或官方 Web UI |
| 电脑要开着吗 | 不用,有手机就行,随时随地 | 要,电脑得一直开着联网 | 不用 | 不用 |
| 灵动岛和锁屏状态 | 有 | 看具体项目 | 看具体项目 | 没有 |
| 调用日历、提醒事项、健康等本机能力 | 能,逐项由你开启 | 看具体项目 | 看具体项目 | 不能 |
| 完整的 Linux 工具 | 没有,只有内置命令、Node、Python 和 FFmpeg | 有 | 看具体项目 | 有 |
| 运行速度 | 手机上直接运行的方案里最快:Node、Git、Python、FFmpeg 都是原生代码 | 取决于那台电脑 | 看具体项目 | 特别慢,CPU 指令要逐条解释执行 |
直接安装,需要 iOS 17 或更高版本:
自己编译:你需要 macOS、Xcode 27 或更高版本、Node 24 和 xcodegen,构建 libgit2 还需要 cmake 或 uv。要在 iPhone Duo 上铺满屏幕,需要用 Xcode 27.1 或更高版本编译,更早的版本编出来的包在 Duo 上只按普通 iPhone 的大小显示。
git clone https://github.com/imsai-sh/fish-pocket.git
cd fish-pocket && scripts/run-sim.sh
脚本会自动下载 nodejs-mobile、Python 和预编译的 FFmpeg、构建 libgit2、组装引擎,然后装到模拟器上运行。默认设备是 iPhone 17 Pro,可以用 SIM_DEVICE 指定。
想装到真机上,先把 app/project.yml 和 scripts/run-device.sh 里的 com.wsw.dsh-ios 换成你自己的 Bundle ID,再运行:
DEVELOPMENT_TEAM=<你的团队 ID> scripts/run-device.sh
iOS 不允许 App 创建子进程,也不允许运行下载的二进制。所以这里不模拟 Linux 虚拟机,而是把 Node、Python 这些运行时以原生代码嵌进 App,再用 DSH 自己的服务接缝换掉“执行世界”。引擎文件一行都没改。
原生嵌入的组件:
| 组件 | 怎么嵌进 App | 给智能体提供 |
|---|---|---|
| Node 24(nodejs-mobile) | 预编译的动态框架,引擎跑在它上面;node、pnpm 各开一个 Worker 线程 | 引擎本身、node、pnpm、pnpx |
| Python 3.15(python.org 官方 iOS 构建) | 动态框架,每个 Python 进程是一个子解释器,跑在自己的线程上 | python3、pip、venv |
| libgit2 1.9 | 静态链接,通过 N-API 调用 | git |
| FFmpeg 9.0 | 从官方源码编译成动态框架(LGPL),预编译包放在本仓库的 Release 里,每次运行一个线程,同一时间只跑一个 | ffmpeg、ffprobe |
| 系统框架(ImageIO、Vision、EventKit、HealthKit 等) | 通过 N-API 桥接 | 图片处理和本机能力 |
iOS 不允许起子进程,所以这些运行时的“进程”都是 App 里的线程:每个有自己的管道、工作目录和退出处理。它们共用一层路径视图(native/root),看到的文件和引擎完全一致。
我们按下载量从 DSH 社区抽取了前 50 个第三方插件作为样本,在 iOS 引擎上逐个走完安装、启用、冷启动和卸载。这只是抽样,不代表只支持这 50 个,其他插件同样可以安装。
| 结果 | 数量 |
|---|---|
| 直接可用 | 42 |
| 允许或跳过安装脚本、指定版本或重启 App 后可用 | 6 |
| 暂不可用 | 2 |
这里的“可用”指插件能被引擎加载,功能没有逐个试用。逐个插件的结果见 #18。
Fish Pocket 是一款开源的 iOS App,把 DeepSeek Harness(简称 DSH)的整个 Agent 引擎装进 iPhone 和 iPad,在本机运行。不用连电脑,也不用连服务器,界面用 SwiftUI 原生重写。
功能对齐,官方 Web UI 能做的 Fish Pocket 都能做。区别是引擎跑在手机和平板本机,不用开电脑;界面用 SwiftUI 重写,是 iPhone 和 iPad 的原生体验;还多了本机能力、灵动岛、小组件、Siri 和 iPad 多窗口这些官方没有的功能。
不用。远程客户端需要一台一直开着联网的电脑,Fish Pocket 的引擎就在 App 里,有手机就能用。只有调用模型时需要联网。
App 免费,代码以 MIT 协议开源,商用需要先取得授权,见许可证。模型调用用你自己的 DeepSeek 账号或 API Key,费用由模型服务商收取,不经过 Fish Pocket。
能。用 TestFlight 公测安装,全球可用,包括中国大陆。App Store 版目前只在中国大陆以外的地区上架。
不会传给我们:我们不运营任何服务器。会话和工作区留在你的设备上,模型请求直接发给你选择的服务商,详见隐私政策。
远程控制是例外,而且要你自己登录才会开启:电脑上的会话经 Agents Anywhere 的服务器(官方云服务或你自己部署的)转发,本机的会话不受影响。电脑和云服务器怎么连,见远程控制说明。
只有你在「本机能力」里开启对应的那一项之后才能,没开的它用不了。用到时,读到的内容会随对话发给你选择的模型服务商。健康、通讯录和照片只读不写。
默认使用 DeepSeek,用账号登录或者填 API Key 都可以,也可以配置其他模型服务商。
不是。这是独立的开源社区项目,与深度求索(DeepSeek)不存在隶属、合作、授权或背书关系。
更多问答见官网。
以上为 README 的开头部分。其余内容请阅读原文。 查看完整 README ↗