Repository navigation
Releases
v0.7.0
v0.7.0
这一版有四部分改动:
- 新增“新建子会话”的确认卡片,子会话在侧栏里嵌套显示。
- 输入框改成一个随状态切换的按钮,并修复了停止按钮在几种情况下“按了没反应”的问题。
- 运行动画移出主线程。
- 重写了会话事件的处理,实时观看一轮和事后重新打开显示一致。
子会话
- 模型想新开子会话(
subagent/subagent_fork)时,对话里会先出现一张确认卡片:- 点「新建会话」,创建子会话;
- 点「在这里做」,模型留在当前会话完成。
- 完全访问权限下不询问。同一轮里并行的多个请求会逐个询问。
- 子会话在侧栏里嵌套在主会话下面。子会话运行时,主会话那一行也显示运行线。
- 仪表盘的子代理卡片新增「新建」入口,可以直接把任务交给一个子会话,不会再问一次。
scripts/ds-agent --allow-child-sessions:允许派出去的主 Agent 在这一次运行里委派子会话,包括--attach。
输入框与停止
- 输入框右侧只有一个按钮:
- 空闲时是发送;
- 运行中,输入框为空时是停止;
- 运行中,输入了内容就变回发送,效果和回车一样,按设置插话或排队。
- 不论按钮显示的是什么,按
Esc都会停止本轮。原来运行中并排出现的「直接发送」「排队」按钮合并进了这一个按钮。 - 修复:正在查看一次性子会话时,停止按钮和
Esc以前不发任何请求,现在能停下它。仪表盘上每个运行中的子会话都有停止按钮。 - 修复:停止没成功时不再毫无反应。以下情况都会写进对话:
- Host 未连接;
- 会话还没接上 Host;
- 取消请求失败(附原因);
- 请求发出后,Host 仍显示这一轮在运行。
会话与对话记录
- 实时观看一轮和事后重新打开,显示的内容一致。
- 失败、被中断或达到上限的一轮,会在对话里写明。没跑完的工具显示为「已中断」,不再显示成已完成。
- 后台会话和语音任务按 Host 的状态结束:Dock 不再一直显示运行中,每个结束的任务只提示一次。
- 审批和提问弹窗写明是哪个会话发起的。Host 报错回到出错的那个会话。
- 重新打开会话时,以下内容都会保留:
- 命令分组;
- 失败时已经输出的文字;
- 跨历史页的工作流运行;
- 早期消息背后的工具详情。
- 新会话不再在第一条消息上方多出一行占位文字。
- 子代理有实时的工具卡片和队列更新。工作流的成员和重试次数实时显示。
- 打开会话时不再抖动或塌缩:
- 不完整的快照不会再覆盖已显示的历史;
- 展开的工具组滚动后保持展开;
- 自动滚到底部做了限流。
性能
- 运行线、运行小条和等待波浪改由 Core Animation 驱动。一个会话运行时,App 的 CPU 占用从 34.2% 降到 0.5%(亮屏时测得,和空闲时相同)。
- 发布构建开启了编译优化,主程序体积从 21.7 MB 降到 12.1 MB。
兼容性与迁移
- 运行要求不变:Apple Silicon,macOS 14 或更高。
- 内置 DSH runtime 仍为
0.2.1-rc.2。npm 上已有更新的候选版本,本版没有升级。 - 设置、工作区、凭据和会话继续复用,无需迁移。
- 升级前请先退出旧版 App。不要同时运行两个副本(例如
/Applications里一个、源码dist目录里一个),否则它们会互相占用会话的写锁,出现session/writer-held。 - 运行中排队发送:用回车(按「设置 → 通用」里“已有队列时回车”的选项)或 ⌘回车。
- 签名变化后,第一次使用语音时,macOS 可能会再次询问麦克风权限。
已知限制
- 运行中输入框里有文字时,按钮显示为发送。想停止,请按
Esc或先清空输入框。 - 如果一轮需要稍长时间才能停下(例如正在结束一个子进程),可能先看到「已请求停止,但 Host 仍显示这一轮在运行」,随后才出现「本轮已中断」。
- 以下几种情况只有 Host 恰好在特定时刻崩溃或断线才会出现:
- 重连期间仍在排队的语音任务,可能被提前提示为完成;
- 重连修复可能把一个已丢弃的工具结果带进重建的运行中工具。
- 从内存缓存恢复的会话,只保留快照末尾那部分的工具详情(此前版本也是如此)。
- 偶发崩溃的根因尚未确定。App 会把被系统吞掉的异常记录到
~/Library/Application Support/DeepSeek Harness/dsh/exception-diag.log,遇到崩溃时请附上这个文件。 - 用于回归测试的真实会话样本不随仓库发布,对应的对照测试在 CI 上会显示为跳过。
- Claude Code、Codex、ZCode 等外部 Runtime 仍需在本机单独安装和认证。
- 发布包为 ad-hoc 签名,未经过 Apple 公证。
验证
- Swift 原生单测:
396/396,包括用真实会话样本做的对照测试;独立的 Core 层单测:16/16。 - 全套检查(
./scripts/test-macos-native.sh --unit)通过:类型检查、各项门禁,以及所有界面检查和原生契约检查。 - 停止流程端到端验证:用接了模拟模型的打包 Host 驱动 App 的真实控制器,在模型输出中、工具执行中分别按停止,都在 250 ms 内结束本轮。
- 构建产物的 Host 握手和读写 API smoke 通过。
plutil -lint与codesign --verify --deep --strict通过;内置 DSH runtime 为0.2.1-rc.2。- ZIP SHA-256:
87a6dfe67d08048af5803b174d002fa1ddedb5ba12636df8cc22da701841efe7
安装
下载 DeepSeek-Harness-0.7.0-arm64.zip,解压后把 DeepSeek Harness.app 拖入「应用程序」。
这是 ad-hoc 签名、未经过 Apple 公证的构建。 首次打开时如果被 Gatekeeper 拦截,可以任选一种方式放行:
- 双击打开被拦后,到 系统设置 → 隐私与安全性,在页面底部点击 仍要打开;
- 或者在终端执行:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"也可以从源码构建:
git clone https://github.com/luochenw/deepseek-harness-macos.git
cd deepseek-harness-macos
./scripts/build-macos-app.shv0.6.0
v0.6.0
这一版把 App 迁移到 DSH 0.2 运行时,并重做了会话、工具活动和侧栏的原生体验;同时修复了展开大命令组时整个 App 卡死的问题。
DSH 0.2 与会话
- 内置 DSH runtime 从
0.1.1-rc.2升级到0.2.1-rc.2:本机认证传输、实时流式输出、队列恢复。 - 打开已有会话时,先立即显示最近内容并恢复输入,再在后台按页补齐完整历史;已到达的历史逐页补到上方,阅读位置保持不动,不再需要手动「载入更早消息」。完整历史按 Host 会话版本缓存,切回未变化的会话时立即恢复。
- 会话滚动更稳:行高按实测值保持,加载历史或实时修复时不会跳动,也不再出现大片空白。
- 外部 Agent 接入:App 运行时会发布本机 Host 地址,
scripts/ds-agent优先把任务派到 App 的 Host 上执行,会话实时出现在侧边栏;App 未运行时自动退回 headless。Host 意外退出会自动重启,App 退出时 Host 随之退出。
工具活动与正文
- 运行中的思考和工具活动收在一条折叠状态栏里,持续显示最新的思考、正文或工具动作;结束后收敛为可展开的「思考过程」。
- 同一轮的连续工具调用合并成一行「执行了 N 条命令 · 其中 M 条修改了文件」,点击展开;修改文件的指令带铅笔图标和「改」标签,多行脚本和 heredoc 显示为可读摘要。
- 所有工具执行统一为两级折叠,展开后只列指令,超过 320pt 在内部滚动;
run_code展开为真实的子调用。 - 正文使用更大的阅读字号和行距;代码块支持行数提示、折叠和一键复制。
- 评分栏只出现在一轮结束后的最后一条回复下面。
输入与界面
- 输入框可直接粘贴截图或多张图片,草稿显示缩略图,可单张删除、点击放大。
- 运行中输入框保持可用:队列为空时直接发送到当前轮,已有排队消息时才出现排队操作。
- 模型标签打开统一的选择面板,同时显示模型目录和当前模型支持的推理强度。
- 输入框上方以紧凑指标显示上下文占用、Token、缓存命中;设置 → 用量显示当前会话的累计用量和耗时。
- 运行中在主窗口非输入区域按
Esc可终止当前任务。 - 统一的原生设计系统:从 App 图标采样的水蓝
#A2E4E0作为唯一主色。 - 菜单栏图标改为 Dock 角标:有会话等待审批或提问时显示「!」,有任务运行时显示「•」。(为规避 macOS 27 测试版的系统崩溃,移除了菜单栏图标。)
侧栏
- 会话按项目折叠,每个项目默认显示最近 5 个;正在运行的会话不会被折叠,排在 5 个以外也始终可见。
- 运行中的会话用行底一根缓慢往返的深青色线标出(包括从 App 外部发起的会话),浅色和深色模式下都清楚可见;遵循系统的「减弱动态效果」设置。
- 会话时间按系统时区以中文显示「刚刚 / 分钟前 / 昨天 / 月日」。
修复
- 展开命令很多的分组时 App 卡死:展开一组 64 条命令会让主线程一直满载、无法恢复。现在每次布局只对命令分类一次并按内容缓存,正则改为预编译。离屏测量(调试构建):64 条命令的组重复刷新从约 105 ms 降到接近 0,打开含 103 条命令的会话从 871 ms 降到约 125 ms。
- 侧栏的运行标记过淡(浅色模式下对比度只有 1.15:1),以及排在第 5 个之后的运行中会话被折叠看不到。
- 语音:安装麦克风监听前先检查格式,并记录被系统吞掉的异常,用于诊断偶发崩溃。
兼容性与迁移
- 运行要求不变:Apple Silicon,macOS 14 或更高。
- 旧版会话需要升级:用 DSH 0.1 创建的会话在侧栏标为「待升级」。打开时会询问是否把它的磁盘格式升级到 DSH 0.2;升级后旧版客户端可能无法再读取,建议先在归档或导出中保留备份。
- 升级前请先退出旧版 App。同时运行两个 App 副本(例如
/Applications里一个、源码dist目录里一个)会互相占用会话的写锁,出现session/writer-held。 - 设置、工作区和凭据继续复用,无需手动迁移。
- 从源码构建需要 Node.js 与 npm,首次准备 DSH runtime 需要联网。
已知限制
- 偶发崩溃的根因尚未确定。App 会把被系统吞掉的异常记录到
~/Library/Application Support/DeepSeek Harness/dsh/exception-diag.log,遇到崩溃时请附上这个文件。 - 运行中的大命令组,每到一条新命令会重新分类一次(103 条时约 27 ms,调试构建)。
- 特别长的回复第一次显示时有一次性的排版开销。
- 用于回归测试的真实会话夹具不随仓库发布,对应的金测在 CI 上会显示为跳过。
- Claude Code、Codex、ZCode 等外部 Runtime 仍需在本机单独安装和认证。
- 发布包为 ad-hoc 签名,未经过 Apple 公证。
验证
- Swift 原生单测:
315/315。 - 全套检查通过:类型检查、
main.swift行数、目录与规则文件卡口、代码风格卡口、设计系统、设置、Agent 平台策略与界面、附件栏、工具展示、子代理上下文、工作台(含真实WKWebViewloopback)、权限输入框、会话历史、思考区和原生契约检查。 - 构建产物的 Host 握手和读写 API smoke 通过。
plutil -lint与codesign --verify --deep --strict通过;内置 DSH runtime 为0.2.1-rc.2。- ZIP SHA-256:
313761875fa00b29d58bcd2ed879803b13b7571d4411b57992a511b756ef513b
安装
下载 DeepSeek-Harness-0.6.0-arm64.zip,解压后把 DeepSeek Harness.app 拖入「应用程序」。
这是 ad-hoc 签名、未经过 Apple 公证的构建。 首次打开如被 Gatekeeper 拦截,可任选一种方式:
- 双击打开被拦后,到 系统设置 → 隐私与安全性,在页面底部点击 仍要打开;
- 或在终端执行:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"也可以从源码构建:
git clone https://github.com/luochenw/deepseek-harness-macos.git
cd deepseek-harness-macos
./scripts/build-macos-app.shv0.5.1
v0.5.1
窄窗口与工作台布局修复
- 修复右侧工作台打开时,窄窗口中的侧边栏与输入框互相覆盖或被裁切的问题。
- 主窗口新增紧凑三栏布局:侧栏、会话区和工作台会按可用宽度协同收缩。
- 运行中的输入框控件在窄会话列自动分为两行,模型选择、停止、插话和排队按钮保持完整可用。
- 异常恢复到低于最小尺寸的窗口时,工作台会暂时退出布局并保留标签状态,窗口变宽后自动恢复。
- 新增
1024x736运行态整窗快照和确定性布局测试。
DSH Runtime 打包
- 发布包只内置仓库指定的 npm
latestDSH runtime,当前为0.1.1-rc.2。 - 源码构建不再读取开发机的全局 DSH,也不再回退到 rc.6/rc.7。
- 构建会核对 npm
latest,在dist下隔离缓存精确版本后再打包;旧版DSH_SOURCE会被拒绝。 - Runtime 补丁、Host 启动参数和内置插件依赖已收敛到单一版本。
文档
- 更新中英文构建说明与第三方归属说明。
- 删除 README 中重复的“未经官方认可”措辞,仍保留“非官方”定位和完整开源归属。
兼容性与迁移
- 运行要求不变:Apple Silicon,macOS 14 或更高。
- 无用户数据迁移步骤;现有会话、工作区和设置继续复用。
- 从源码构建需要 Node.js 与 npm,首次准备 DSH runtime 需要联网。
已知限制
- 工作台标签仅在当前 App 进程内保留。
- Browser 标签仍由用户操作,不提供 Agent 页面控制能力。
- Claude Code、Codex 和 ZCode 等外部 Runtime 仍需在本机单独安装并认证。
- 发布包为 ad-hoc 签名,未经过 Apple notarization。
验证
- Swift 原生单测:
134/134。 - Agent Platform 与工作台 Runtime 测试:
99/99。 - 工作台多宽度/深色/整窗快照、真实
WKWebViewloopback smoke、权限输入框和长会话快照通过。 - 默认构建在机器全局仍安装 DSH
0.1.0-rc.7时,产物仍固定内置 npmlatest0.1.1-rc.2。 - Packaged Host 读写 RPC、权限、Agent Profile、Batch 与模型可调用工作台工具 smoke 通过。
plutil -lint与codesign --verify --deep --strict通过。- ZIP SHA-256:
91799d89a87b7484042d7c710c708bd56186ce35ad80edb7c2c0a14c21d67843
安装
下载 DeepSeek-Harness-0.5.1-arm64.zip,解压后把 DeepSeek Harness.app 拖入“应用程序”。
这是 ad-hoc 签名、未经过 Apple 公证的构建。 首次打开如被 Gatekeeper 拦截,可任选一种方式:
- 双击打开被拦后,到 系统设置 → 隐私与安全性,在页面底部点击 仍要打开;
- 或在终端执行:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"也可以从源码构建:
git clone https://github.com/luochenw/deepseek-harness-macos.git
cd deepseek-harness-macos
./scripts/build-macos-app.shv0.5.0
v0.5.0
右侧多标签工作台
- 新增会话级、可调宽、可折叠的右侧工作台,支持多个 Browser、Markdown、执行、Agent 和工具详情标签。
- 浏览器标签保留页面、表单、滚动位置和前进后退栈;Markdown 阅读器支持标题目录、任务列表、表格、代码、本地图片、相对链接和外部文件更新。
- 视觉延续“果冻海”主题,并统一复用现有圆角、间距和色彩令牌;已覆盖窄栏、常用宽度、宽栏、整窗和深色快照。
模型可调用的工作台工具
- Host 新增
open_workbench_browser和open_workbench_markdown,模型可以请求为当前任务打开网页或工作区内的 Markdown。 - 原生端只在工具成功结算后执行请求;普通工具调用、Code Mode、后台会话和延迟到达的子会话元数据均有独立关联与重试处理。
- 模型浏览器持续限制为 HTTP(S),不能通过重定向、新窗口或下载升级为本地文件或外部应用 scheme。
- 模型 Markdown、后续链接和本地图片限制在来源会话 cwd 内,并通过同一文件描述符完成类型、大小、真实路径和读取校验。
- 浏览器与文档内容不会回传 Agent;模型不能读取 DOM、注入脚本、点击页面或获取文档正文。
长会话与交互改进
- 对话区使用最多 240 条消息的滑动渲染窗口,并通过稳定消息锚点支持前后浏览和历史 prepend;2,000 条混合消息快照已纳入门禁。
- 听写根据 App 前后台路由:前台进入当前对话,后台派发独立会话;听写期间切换会话不会覆盖新会话草稿。
- 中文输入法组合期间按回车不再误发送;运行中按 Esc 可以停止当前对话。
- Queue/Steer、权限菜单、Agent Profile、工具详情和会话切换继续使用原会话归属与在途锁,减少异步串会话和重复提交。
生命周期、构建与合规
- 会话切换和归档会释放对应 Browser/Markdown 资源;下载使用同目录临时文件后原子替换,失败不会删除已有目标。
- 最低系统版本调整为 macOS 14,构建和测试显式固定 deployment target,并验证产物
minos。 - 构建复制真实 Node 可执行文件并校验目标架构;发布包内补齐 Node.js、DSH、sharp-libvips、GPLv3 和 LGPLv3 归属文件。
- 本次 Apple Silicon 发布包固定内置 DSH
0.1.1-rc.2。
已知限制
- 工作台标签只在当前 App 进程内保留,重启后不会自动恢复,以避免持久化敏感 URL 或重放有副作用的请求。
- Browser 目前由用户操作,不提供 Agent 页面控制能力。
- Claude Code、Codex 和 ZCode 等外部 Runtime 仍需在本机单独安装并认证。
- 发布包为 Apple Silicon、ad-hoc 签名且未经过 Apple notarization。
验证
- Swift 原生测试:
130/130。 - Agent Platform 与工作台 Runtime 测试:
100/100。 - 工作台多宽度/深色快照、真实
WKWebViewloopback smoke、权限/输入框和长会话快照通过。 - 打包 Host smoke 通过:工作台插件 active,两个模型工具进入 Agent/Batch 工具面,权限、设置和 Agent Batch 路径正常。
plutil -lint、codesign --verify --deep --strict通过,应用二进制minos 14.0。- ZIP SHA-256:
59d4dccd3a5243cf4f6e6908efed9048216b0f9477e9c7fee512c2ef2a49cc7f
安装
下载 DeepSeek-Harness-0.5.0-arm64.zip,解压后把 DeepSeek Harness.app 拖入“应用程序”。
这是 ad-hoc 签名、未经过 Apple 公证的构建。 首次打开如被 Gatekeeper 拦截,可任选一种方式:
- 双击打开被拦后,到 系统设置 → 隐私与安全性,在页面底部点击 仍要打开;
- 或在终端执行:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"也可以从源码构建:
git clone https://github.com/luochenw/deepseek-harness-macos.git
cd deepseek-harness-macos
npm install -g @deepseek-ai/dsh@0.1.1-rc.2
./scripts/build-macos-app.sh要求:Apple Silicon,macOS 14 或更高。
v0.4.0
原生权限模式与运行中输入
权限控制
- 输入框底部新增 Host 原生权限菜单,动态展示当前 Host 提供的预设。
- 支持 只读(
read-only)、工作区访问(workspace-write)和 完全访问(danger-full-access)。 - 当前会话权限与新会话默认权限分别管理:当前会话通过
/permission切换,设置页通过 revisionedsettings.mutate保存默认值。 - 启用完全访问前会显示明确风险确认;完全访问不受文件沙箱限制,也不会发起审批请求。
运行中继续输入
- Agent 执行期间输入框保持可用,可选择 插话发送(Steer)追加到当前轮,或 排队发送(Queue)等待下一轮。
- 设置页新增“运行中按回车”偏好;Command-Enter 使用另一种提交方式。
- 排队消息与待处理插话分别展示,支持编辑、删除及 Queue→Steer。
- 草稿和图片只在 Host 接受后清理;读取或 RPC 失败会保留输入。
- 子代理追问、运行中斜杠命令和跨会话切换使用一致的提交锁与错误归属。
兼容性
- 内置 DSH
0.1.1-rc.2。 commands/execute适配 rc.2 所需的images: [],并保留旧 Host 载荷回退。
验证
- 原生测试:
103/103通过。 - SwiftUI 权限/输入框快照通过。
- 打包 Host smoke 通过,包括权限默认值、新会话继承和当前会话切换。
codesign --verify --deep --strict与plutil -lint通过。- ZIP SHA-256:
e8c6d21ecdc42425822c2cd38841a8e7c4ad6151f91dbab76e58cb7c79d2ee58
安装
下载 DeepSeek-Harness-0.4.0-arm64.zip,解压后把 DeepSeek Harness.app 拖进“应用程序”。
这是 ad-hoc 签名、未经过 Apple 公证的构建。 首次打开如被 Gatekeeper 拦截,可任选一种方式:
- 双击打开被拦后,到 系统设置 → 隐私与安全性,在页面底部点击 仍要打开;
- 或在终端执行:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"也可以从源码构建:
git clone https://github.com/luochenw/deepseek-harness-macos.git
cd deepseek-harness-macos
./scripts/build-macos-app.sh要求:Apple Silicon,macOS 13 或更高。
v0.3.1
悬浮圈与图标改版:白昼浅湖 + 跃身鲸
这一版换掉了 app 的视觉基调。悬浮圈从深海夜色(月亮升落)变成白昼浅湖,主体是一条跃出海面的鲸;转录尾部的运行指示器和 App 图标共用同一套形状与配色。
样式
- 水改成真半透明的浅湖色。此前底层是接近不透明的深青,读起来是色块不是水。现在三层水各自半透明,深色是层与层叠出来的,能看穿。
- 主体是一条原创的跃身鲸,与任何第三方标识无关。它是画面里唯一的深色,所以焦点只有一个。
- 边缘自带对比度:内圈一道自上而下由亮转暗的高光描边,外圈一条极淡的暗线。此前那条半透明白边压在浅色窗口上等于不存在,压在深色桌面上又是一条硬白线。现在白窗、深色桌面、彩色壁纸、浅灰面板上都分得开。
- 投影修正:面板阴影改由界面层绘制。系统对透明内容的窗口阴影只按第一帧计算且不再更新,逐帧动画下会在圆的边上留一圈发灰的死边。
动画
- 有没有海浪,就是在不在跑。空闲时圈里只有一只鲸静静浮着,一点水都没有;开始运行海水涨上来,鲸开始跃出海面;跑完海水退去,回到那只鲸。不用再靠"它动没动"去判断。
- 运行动画不再有空窗。旧的月亮弧线每 5 秒有约 1.3 秒天上什么都没有,看起来像卡住了。现在鲸全程可见,最低点半沉在水里。
- 跃身的姿态跟着轨迹走:上升抬头、顶点放平、下落低头。
- 循环首尾无跳变:抬升、翻转、漂移都是周期的连续函数。
- 语音听写换成淡水纹:每圈由暗色伴影、柔光带和一道细亮线三层叠成,慢慢荡开。此前是三圈高对比的实心环,读起来像雷达扫描。第一圈现在贴着圆边推出,不再从半空冒出来。
- 浪面恢复规则:三层浪共用同一个波形周期,浪峰平行推进、间距均匀。
交互
- 鼠标移到悬浮圈上会变成手型,圆会轻微放大、描边和投影加深。
- 完成提醒的红点改成弹出并带一圈柔光,出现时更容易被余光捕捉到。
安装
下载 DeepSeek-Harness-0.3.1-arm64.zip,解压后把 DeepSeek Harness.app 拖进「应用程序」。
这是 ad-hoc 签名、未经过 Apple 公证的构建,首次打开会被 Gatekeeper 拦下。两种放行方式,任选其一:
- 双击打开被拦后,到 系统设置 → 隐私与安全性,在最下面找到提示,点 仍要打开;
- 或者在终端执行:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"不想用预编译包的话,可以从源码构建:
git clone https://github.com/luochenw/deepseek-harness-macos.git
cd deepseek-harness-macos
./scripts/build-macos-app.sh构建产物在 dist/DeepSeek Harness.app。
要求:Apple Silicon、macOS 13 或更高。
v0.3.0
中文 | English below
主要变化
- 新增统一 Agent Platform:支持 DSH、Claude Code、Codex 和 ZCode 的 Profile、批量执行、重试、集成与持久化恢复。
- 补齐 Agent/Subagent 原生体验,包括上下文投影、附件轨道、内联工具结果展示和无工作区会话。
- 内置 DSH Runtime 升级到
0.1.1-rc.2,适配新版 Session Projection、Host 描述和默认打开浏览器行为,同时保留对0.1.0-rc.6/0.1.0-rc.7的开发兼容。 - 强化运行时补丁边界、依赖版本校验、CI 隔离和打包 Host 冒烟测试。
下载(Apple Silicon)
DeepSeek-Harness-0.3.0-arm64.zip 需要 macOS 13+ 和 Apple Silicon。Intel Mac 请从源码构建。
**Gatekeeper 提示:**此构建采用 ad-hoc 签名,未经 Apple 公证。首次启动若被拦截,请打开“系统设置 → 隐私与安全性”,点击“仍要打开”;也可运行:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"
从源码构建:
npm install -g @deepseek-ai/dsh@0.1.1-rc.2
./scripts/build-macos-app.sh验证
- Swift 单元测试:80/80
- Agent Platform Node 测试:95/95
- 原生类型检查、契约与 UI 快照检查通过
- 打包 Host 读写 RPC 与 Agent Platform smoke 通过
- Runtime 完整性、Info.plist 和严格 codesign 校验通过
English
Highlights
- Added the unified Agent Platform with profiles, batch execution, retries, integration, and durable recovery across DSH, Claude Code, Codex, and ZCode.
- Completed more of the native Agent/Subagent experience, including context projections, the attachment rail, inline tool presentation, and sessions without a workspace.
- Upgraded the bundled DSH Runtime to
0.1.1-rc.2, adapting to the new Session Projection and Host contracts and browser-launch behavior while retaining development compatibility with0.1.0-rc.6and0.1.0-rc.7. - Tightened runtime patch boundaries, dependency-version validation, CI isolation, and packaged Host smoke coverage.
Download (Apple Silicon)
DeepSeek-Harness-0.3.0-arm64.zip requires macOS 13+ on Apple Silicon. Build from source for Intel Macs.
Gatekeeper: This build is ad-hoc signed and not notarized. If macOS blocks the first launch, use System Settings → Privacy & Security → Open Anyway, or run:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"
Build from source:
npm install -g @deepseek-ai/dsh@0.1.1-rc.2
./scripts/build-macos-app.shVerification
- Swift unit tests: 80/80
- Agent Platform Node tests: 95/95
- Native typecheck, contract, and UI snapshot checks passed
- Packaged Host read/write RPC and Agent Platform smoke passed
- Runtime integrity, Info.plist, and strict codesign verification passed
v0.2.1
中文 | English
维护性发布——没有用户可见的变化。这是一次内部质量/架构清理,不是功能或修复发布。
改了什么
- 补齐了真正的测试基础设施:给之前零覆盖的纯逻辑加了单测(
./scripts/test-macos-native.sh --unit),smoke 测试也从只测读路径扩展到覆盖一条设置写路径。 - 把单文件 3364 行的
main.swift巨石拆到 504 行,HarnessController的方法和 View 都按功能域搬进独立文件(DSH<Feature>.swift/<Feature>View.swift)。现在有 CI/本地双重 gate 强制main.swift只能缩小、不能再长回一个大杂烩。 - CI 从只跑 typecheck 升级为每次推送都跑 typecheck → 单测 → 构建 → smoke 完整四步。
以上改动都不涉及运行时行为——每一步都用同一套 typecheck/单测/构建/smoke 验证过,逐批次进行,每批还额外过了一轮独立的对抗式代码 review。如果你不碰源码,升级前后不会有任何肉眼可见的差异。
完整决策记录见 .agents/notes/implemented/architecture/2026-08-18-quality-remediation-plan.md。
下载(Apple Silicon)
DeepSeek-Harness-0.2.1-arm64.zip —— 需要 macOS 13+ 的 Apple Silicon 机器。Intel Mac 请从源码构建(见下文)。
Gatekeeper 提示。 这个构建是 ad-hoc 签名、未经公证(背后没有 Apple 开发者账号)。macOS 首次启动会拦截:
- 解压,把 DeepSeek Harness.app 拖进
/Applications,双击——macOS 会拦下来。- 打开 系统设置 → 隐私与安全性,往下滚,点 仍要打开。
- 或者在终端里:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"如果你不想信任一个未公证的二进制(这个顾虑很合理!),从源码构建只需要一条命令:
./scripts/build-macos-app.sh(构建机器需要 Node +
npm install -g @deepseek-ai/dsh;构建出来的 app 是自包含的。)
从 0.2.0 升级
直接把新的 .app 覆盖旧的即可——不需要迁移配置,不会重置设置。
验证
./scripts/test-macos-native.sh—— typecheck + 契约测试 +main.swift行数 gate./scripts/test-macos-native.sh --unit—— 针对swiftc自建库目标的 12 个单测断言./scripts/build-macos-app.sh—— 完整构建./scripts/test-macos-native.sh --smoke—— 启动打包后的 Host,验证只读 API 和一条设置写路径的完整往返main.swift拆分的 10 个批次,每批合并前都额外跑过一轮隔离环境下的多 agent 对抗式代码 review。
English
中文说明在上面 ↑ | English
Maintenance release — no user-visible changes. This is an internal quality/architecture cleanup, not a feature or bugfix release.
What changed
- Added real test infrastructure: a unit-test harness (
./scripts/test-macos-native.sh --unit) for pure logic that previously had zero coverage, and an expanded smoke test that now exercises a settings write path, not just reads. - Decomposed the app's single 3,364-line
main.swiftmonolith down to 504 lines, movingHarnessController's methods and views out into focused, feature-scoped files (DSH<Feature>.swift/<Feature>View.swift). A CI/local gate now enforces thatmain.swiftcan only shrink, never grow back into a dumping ground. - CI now runs typecheck → unit tests → build → smoke on every push, up from typecheck-only.
None of this touches runtime behavior — every step above was verified against the same typecheck/unit/build/smoke suite, batch by batch, plus an independent adversarial code review pass per batch. If you're not touching the source, there's nothing to notice after upgrading.
Full rationale and the batch-by-batch decision log: .agents/notes/implemented/architecture/2026-08-18-quality-remediation-plan.md.
Download (Apple Silicon)
DeepSeek-Harness-0.2.1-arm64.zip — requires macOS 13+ on Apple Silicon. Intel Macs: build from source (see below).
Gatekeeper note. This build is ad-hoc signed and not notarized (no Apple Developer account behind it). macOS will warn on first launch:
- Unzip, drag DeepSeek Harness.app to
/Applications, double-click — macOS will block it.- Open System Settings → Privacy & Security, scroll down, click Open Anyway.
- Or from a terminal:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"If you'd rather not trust an un-notarized binary (reasonable!), building from source takes one command:
./scripts/build-macos-app.sh(needs Node +
npm install -g @deepseek-ai/dshon the build machine; the built app is self-contained.)
Upgrading from 0.2.0
Drop the new .app in over the old one — no config migration needed, no settings reset.
Verification
./scripts/test-macos-native.sh— typecheck + native contract checks +main.swiftsize gate./scripts/test-macos-native.sh --unit— 12 unit-test assertions against aswiftc-built library target./scripts/build-macos-app.sh— full build./scripts/test-macos-native.sh --smoke— boots the bundled Host and verifies both read-only Host APIs and a settings write round-trip- Each of the 10
main.swift-decomposition batches additionally went through an isolated, adversarial multi-agent code review before merging.
v0.2.0
Voice dictation, a floating status bubble, real concurrent sessions, and an experimental cross-session messaging capability.
Highlights
- Voice dictation with a wake word: on-device speech recognition with a configurable wake word, live transcript streaming into the composer, and voice commands to end/cancel a turn. First mic use auto-enables the wake word; wake-triggered tasks dispatch into their own background session instead of hijacking the one you're looking at, with a floating bubble and notification that jump straight to the dispatched session.
- Floating always-on-top bubble: a small status window that stays visible across spaces — live scene while a session runs, an unseen-completion dot when something finished while you were away.
- Real concurrent sessions: per-session run state and live sidebar dots, so multiple sessions genuinely running at once no longer bleed into each other's status.
- Settings overhaul: official vs. custom provider configuration cleanly separated, API key values visible inline (password-style, revealable) instead of write-only, desktop-app-style toggle rows.
- Cross-session relay (experimental, off by default): a Settings toggle mounts a Host-side plugin giving the model
list_sessions/send_to_session/notify_session_on_donetools, so one session can discover and message another directly. Off by default; enabling it lets your sessions coordinate with each other, not just with you. See the design note for the full threat-model discussion (trust-boundary disclaimers in every relayed message, rate limiting, human approval still required on the receiving end for anything sensitive). - Composer, transcript, and sidebar polish: full skill roster in the slash menu, native
/exportand/model, imported-folder chips, follow-scroll fixes, moon-transit running indicator, and a good number of smaller conversation/animation fixes.
Download (Apple Silicon)
DeepSeek-Harness-0.2.0-arm64.zip — requires macOS 13+ on Apple Silicon. Intel Macs: build from source (see below).
Gatekeeper note. This build is ad-hoc signed and not notarized (no Apple Developer account behind it). macOS will warn on first launch:
- Unzip, drag DeepSeek Harness.app to
/Applications, double-click — macOS will block it.- Open System Settings → Privacy & Security, scroll down, click Open Anyway.
- Or from a terminal:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"If you'd rather not trust an un-notarized binary (reasonable!), building from source takes one command:
./scripts/build-macos-app.sh(needs Node +
npm install -g @deepseek-ai/dshon the build machine; the built app is self-contained.)
Upgrading from 0.1.0
Drop the new .app in over the old one — no config migration needed. The cross-session relay toggle defaults to off even on an existing install.
Verification
./scripts/test-macos-native.sh— typecheck + native contract checks./scripts/build-macos-app.sh— full build, including a manifest integrity check that now also covers in-house plugin packages./scripts/test-macos-native.sh --smoke— boots the bundled Host and verifies read-only Host APIs- The cross-session relay feature was additionally verified end-to-end against a real model in an isolated Host config copy at every milestone, plus a dedicated multi-angle code review pass before merging — see the design note for details and what's deliberately deferred.
v0.1.0
First public release: an independent, unofficial SwiftUI/AppKit native macOS client for DeepSeek Harness — no WebView, no Electron. The app bundles Node.js and a complete DSH runtime, so it runs without any global Node or dsh install.
Highlights
- Native three-pane interface: sessions grouped by workspace, streaming transcript, run/stop state, keyboard shortcuts.
- Workspace chips with git branch / worktree awareness, Codex-style composer with auto-growing input.
- Live-streaming subagent overlay on the conversation pane, with read-only vs continuable distinction.
- Persistent menu bar item + system notifications for approvals, agent questions, and turn completion.
- Native settings: real model catalog from the Host, custom endpoint configurations, write-only credential handling (the app never displays a saved key).
- Finder integration, error diagnostics, revision-conflict-safe settings editor.
Download (Apple Silicon)
DeepSeek-Harness-0.1.0-arm64.zip — requires macOS 13+ on Apple Silicon. Intel Macs: build from source (see below).
Gatekeeper note. This build is ad-hoc signed and not notarized (no Apple Developer account behind it). macOS will warn on first launch:
- Unzip, drag DeepSeek Harness.app to
/Applications, double-click — macOS will block it.- Open System Settings → Privacy & Security, scroll down, click Open Anyway.
- Or from a terminal:
xattr -rd com.apple.quarantine "/Applications/DeepSeek Harness.app"If you'd rather not trust an un-notarized binary (reasonable!), building from source takes one command:
./scripts/build-macos-app.sh(needs Node +
npm install -g @deepseek-ai/dshon the build machine; the built app is self-contained.)
First run
- Open the app and pick a workspace folder — this is where DSH gets file and terminal access.
- Open Settings, pick a model or add a Custom Configuration (base URL + API key for any compatible endpoint).
- Type a task and run.
Verification
./scripts/test-macos-native.sh— typecheck + native contract checks (now also running in CI)./scripts/test-macos-native.sh --smoke— boots the bundled Host and verifies read-only Host APIs