ARTICLE · 1242306
DeepseekHarness手机版Mydsh适配iPhone Duo
DeepseekHarness手机版Mydsh适配iPhone Duo
最近把自用的 iOS 客户端改成了折叠屏可用的样子,中间踩到一个非常反直觉的坑,记录一下。
一、起因
我用开源项目 Whaleness(MIT 许可)改了个自己的 iOS 客户端 Mydsh:终端风格界面,连自己机器上的 DeepSeek Harness,手机上就能开 agent 干活。前几天想在 iPhone Duo 模拟器上跑一遍,第一眼就不对——界面只占左侧,右边空出一条,怎么调都调不掉。
〔图 1:修复前,界面右侧固定空出一条〕
二、它其实不是布局 bug
一开始我怀疑是自己把宽度写死了:翻代码、查 UIScreen、怀疑设备族声明,甚至把 iPhone-only 改成 iPad 兼容,全都没用。模拟器还特别别扭——闲置一会儿就熄屏,截出来的图全黑,来回折腾了很多轮。
后来换思路:把容器尺寸、安全区、实际内容框直接打日志。
代码块
container=867x611 safe=(0,84) columns=false
答案一下就清楚了:App 窗口是铺满的,内容也占满了容器。消失的那一条,是 iOS 给折叠设备预留的系统竖排栏区域——时间、wifi、状态图标会竖着显示在侧边。它不在我的容器里,但也不允许内容画上去。
〔图 2:实测日志,容器宽度与安全区〕
顺带一个坑:这个姿态下 UIScreen.main.bounds 返回 466×678,和真实容器差一大截。布局判断千万别用它,要用容器几何(GeometryReader / size class)。
三、怎么改
思路分两步:
内容不越过预留区——越过就会被 wifi 图标压住、被右边裁切(我第一版就这么干,当场翻车);
在另一侧补等量留白,让内容块在屏幕上视觉居中。
另外把分栏阈值从 900pt 降到 820pt:折叠内屏容器实测约 867pt,卡在 900 以下时,折叠设备会一直用手机单列布局,被拉宽后显得又空又挤。降下来之后,折叠态直接进双栏(左侧操作、右侧会话),这才像能干活的样子。
〔图 3:修复后,双栏与居中〕
四、顺手做的几个决定
只做 iPhone:iPad 没适配就不声明支持,省掉 App Store 的 iPad 截图要求,也避免用户装了难看;
删掉定位权限:后台保活只留静音音频,状态栏不再常驻定位箭头;
保留上游 MIT 署名,应用内新增「开源许可」页。
代码在 GitHub(MIT,欢迎拍砖): github.com/ChrisLou-bioinfo/dsh-mobile #iphone #duo #deepseek #harness















































































