Commit Graph
5432 Commits
Author SHA1 Message Date
yudshj c93d021286 fix(ci): isolate compiler scans and verify Office render results 2026-11-04 18:18:00 +08:00
yudshj edd38f1d66 refactor(office): office 工具拆成 office_render/office_convert/office_recalculate,加载 Office 技能后按需声明
- tool-office 注册三个工具,参数规则由各自 schema 表达,运行时拒绝其他工具的参数
- 三个工具共用 when:本 agent 成功加载过 activationSkills 中的技能(内存标记),或上一次请求头已声明 office_*;加载后下一步声明,之后不移除
- Office 技能改用新工具名,加入工具不可用时重新加载 office 的说明和旧格式先转换的说明
- Client 卡片按工具名分派,图片子槽改为 tool.call.office_render.images
- 删除未发布 office 工具的两份升级指南,新增 office-operation-tools 指南,只记录已发布版本的变化
- 刷新 catalog、snapshot、SDK expected 与 Agent Note
2026-11-04 18:17:59 +08:00
yudshj 012088543a fix(office): PDF 导出后不再渲染,合并 DSH_BUNDLED_PRIMARY_RUNTIME 到 DSH_PRIMARY_RUNTIME
- office 路由技能:PDF 导出写明验收(复制的文件非空且以 `%PDF-` 开头)并在此停止;保留排版类任务主动渲染。office 工具让渲染只差一次调用后,模型常在导出后渲染 result.pdf 验收,e2e「exports PDF」因此失败。
- office-pptx / office-xlsx 删去不提供操作的免责句。
- Desktop、SDK 与 web-app 配置只读 DSH_PRIMARY_RUNTIME,空值视为未设置;SDK 启动器在用户未设置时才填入下载缓存路径。
- e2e 断言附带工具调用诊断;render 检测改用记录的 office 调用,新增 render-context.spec.ts。
- 同步 office 快照、README 与升级指南。
2026-11-04 18:17:58 +08:00
yudshj 78da437976 refactor(office): 移除 render/recalculate/export-pdf 技能,改为直接调用 office 工具 2026-11-04 18:17:58 +08:00
yudshj 611e42b9a5 fix(office): 输出清理限定在自有目录,缓存命中前确认读权限
- office-kit:启动 sweep 只处理 session-<hash>/<uuid> 格式的真实目录,不跟随 symlink;删除成功后才释放记账,失败保留并重试,dispose 等待全部删除;容量腾不出时 save 明确失败
- office-kit / web-app 测试:显式使用临时 outputDirectory,不再清理真实 $DSH_HOME
- tool-office:交给 kit 前读 1 字节并重核 version,缓存命中也受当次读权限约束
- 文档:升级指南与 README 写明 render 不再保存图片文件、原生引擎在 Host 内运行;skill-office 链接 #7677;清理 Office-to-PDF 旧描述并重新生成 catalog
- 客户端:renderImages 改用 useCallback;e2e 补 assertNever,依赖按字母序
2026-11-04 18:17:58 +08:00
yudshj 50ba635949 feat(office): Office 操作改为常驻的原生 office 工具
- 新包 @deepseek-ai/dsh-tool-office 提供常驻的 office 工具(render / convert / recalculate),由 office-kit 在 Host 中直接调用 Kit 的 JS API;标准模式与 PTC 通过同一个工具调用
- render 的页面图片直接进入工具结果(有数量、像素与字节上限);convert / recalculate 的结果写入 office-kit 按 Session 划分的私有输出目录,由模型用 shell 复制到工作区,fs 与 Host 代码不写用户工作区
- 删除为 shell 执行 Kit CLI 而存在的代码:skill-office 的 node / cli / kitRoot、resolveKitCli、DSH_BUNDLED_OFFICE_CLI / DSH_BUNDLED_OFFICE_NODE / DSH_BUNDLED_RUNTIME_ROOT 与 Electron 下的独立 Node 检查;打包 smoke 改为经 office-kit 真实渲染、转换与重算
- office 由 web-app 的 standard / ptc 预设与 sdk-app 挂载,minimal 不挂载;操作技能正文与目录描述指向 office 工具
- 新增 Agent Note,部分取代 progressive-office-skills 的 shell 执行决定;同步 README、子系统页、catalog 与升级指南(含已保存预设的迁移步骤)

本 PR 的 snapshot 统一在这个提交里重新生成,前 4 个提交中的 snapshot 不一定和那一步的代码对应。
2026-11-04 18:17:58 +08:00
yudshj a220e017b5 refactor(office): 合并为 office-kit,Kit 缺失时降级而非加载失败
- Kit CLI 由 office-kit/locate 在 Host 中定位(含 ASAR 映射与可选 root 越界检查),删除 Desktop 壳的 office-cli 与诊断文件;生产版 Desktop 由壳通过 DSH_BUNDLED_RUNTIME_ROOT 显式传入 Kit 根目录,开发版与 Web 不检查
- office-to-pdf 与 office-kit-resolver 合并为 @deepseek-ai/dsh-office-kit,由同一包定位 Kit 并提供转换服务
- Kit 缺失时 provider 照常注册,转换请求以 OfficeKitError unavailable 拒绝,之后安装 Kit 无需重载
- 类型统一使用 OfficeKit 前缀(OfficeKitRequest/Result/Priority/Key),同步消费方、文档、升级指南与 catalog
- 处理 ds-review-bot 意见,并更新 unknown 断言基线

本 PR 的 snapshot 统一在这个提交里用 keyless refresh 重新生成,前 3 个提交中的 snapshot 不一定和那一步的代码对应。
2026-11-04 18:17:57 +08:00
yudshj ee06bf3f9b fix(office): 升级 LibreOffice Kit 到 0.2.3,Kit CLI 定位失败时隔离并保留技能
- 将 Kit 引擎包解析提取为 office-engine-resolver,并与 master 的发布配置对齐
- LibreOffice Kit 升级到 0.2.3 正式版
- Desktop 的 Office CLI 改由 skill-office 解析 Kit,去掉 desktop-host 对 Kit 的依赖
- Kit 缺失时给出可操作错误;Office CLI 定位失败时隔离错误并保留 Office 技能
- 按 Kit 0.2.3 的 helper 授予 macOS JIT 权限,并按新 Host 签名转发夹具参数
2026-11-04 18:17:57 +08:00
yudshj 498d436db5 fix(office): 技能文件缺失时不再阻止 Desktop Host 启动,Office 改由 Desktop profile 挂载
- skill-office 在技能文件缺失或元数据解析失败时降级为持久失败,不再阻止 Desktop Host 启动
- Office 改由 Desktop profile 的 yaml 挂载,载体路径由 Desktop 壳通过 Host 环境传入
- 升级 LibreOffice Kit 到 rc.4,移除 Desktop Host 的引擎钩子,runtimeArchivePath 内联到 cli.ts 并删除 office-engine.ts
- 按平台原生路径和当前 Host 参数布局更新 web-app 与 desktop-host 测试夹具
2026-11-04 18:17:57 +08:00
winewill 0d03fb3ca3 Merge master into desktop channel version policy 2026-11-04 15:30:38 +08:00
std4453 0ddca24030 Merge pull request #7569 from deepseek-harness/ux/session-menu-open-in-app
feat(client): 将 Open in 收进 Session 菜单并适配窄屏
2026-11-04 15:26:58 +08:00
winewill 90ff03beb7 Merge pull request #7777 from deepseek-harness/fix/desktop-artifact-zip-mtime
fix(desktop): 保留 Actions 安装包 ZIP 中的文件修改时间
2026-11-04 15:10:19 +08:00
zhc e85a3f90be Merge master into ux/session-menu-open-in-app
重新生成冲突的 ui-conversation 双语配对记录与 slot 目录;其余改动自动合并。
2026-11-04 14:31:49 +08:00
Dudu-0223 db109a62fb Merge master into feat/subagent-catalog-names 2026-11-04 14:16:00 +08:00
Yichen Jiang 2cee373847 Merge pull request #7358 from deepseek-harness/worktree/continue-generation-after-failure
feat(web): continue generation after transient request failures
2026-11-04 14:09:33 +08:00
winewill e0e2c63a9c fix(desktop): bridge workflow modes for older sources 2026-11-04 13:57:19 +08:00
zhc 39471d572d Merge master and fix CI on shared menu branch
- 合并最新 master,无冲突。
- 清理 `no-unknown-casts` 基线中已失效的 `session-log-export` 测试条目。
- 会话行 ⋯ 改为共享 `contextMenu.button` 后会显示 tooltip;它在气泡尺寸
  测量完成后才可见,原用例在假时钟下立即记录,结果取决于渲染时机。用例
  改为等待该 tooltip 可见,快照 `more-hover` 阶段记录该 tooltip。
- 删除子菜单几何用例中对父卡片施加 `transform` 的步骤。它验证的是已删除
  的逐帧移动跟踪;产品中的菜单卡片不带 transform,CSS 锚点对 transform
  的跟随由浏览器决定,WebKit 在负载下不稳定。行外边距、字号、父列表滚动
  与视口缩窄的真实布局验证保留。
2026-11-04 13:56:23 +08:00
winewill d65fd521b5 fix(desktop): clarify workflow version mode names 2026-11-04 13:51:39 +08:00
Dudu-0223 bb3ac8e304 Merge master into feat/subagent-catalog-names 2026-11-04 13:51:31 +08:00
winewill fa302c8343 Merge pull request #7636 from deepseek-harness/build/desktop-publish-recovery
feat(desktop): 官网安装包发布恢复与 GitHub 产物归档拆分
2026-11-04 13:17:10 +08:00
Yichen Jiang 36ed2133ff Merge remote-tracking branch 'origin/master' into worktree/continue-generation-after-failure
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-11-04 12:50:23 +08:00
CreatixChu a0567adccb Merge pull request #7797 from deepseek-harness/feat/cua-publish-source-reuse
feat(release): 自动复用源码一致的 CUA helper 并简化发布输入
2026-11-04 12:21:32 +08:00
Ziya d70967e36b Merge pull request #6586 from deepseek-harness/experiment/home-code-ripple
feat(web): play a pixel and code whale on blank home clicks
2026-11-04 04:07:26 +00:00
Dudu-0223 a6f6b98053 Merge master into feat/subagent-catalog-names 2026-11-04 12:04:15 +08:00
Yichen Jiang 9ee92455c4 Merge pull request #7788 from deepseek-harness/worktree/forge-diff-base-branch-4ffd61
feat(forge): add a base branch picker to local changes and restyle merge
2026-11-04 11:38:17 +08:00
Yichen Jiang 46983a077f Merge remote-tracking branch 'origin/master' into worktree/continue-generation-after-failure 2026-11-04 11:27:00 +08:00
creatixchu 985afb0941 test(release): narrow native HTTP request assertions 2026-11-04 11:10:47 +08:00
winewill 6ad048912e Merge current publication recovery into artifact timestamp fix
# Conflicts:
#	apps/desktop/packaging/README.i18n.yaml
#	apps/desktop/packaging/README.md
#	apps/desktop/packaging/README.zh.md
#	scripts/macos-package-workflow.spec.ts
#	scripts/windows-package-workflow.spec.ts
2026-11-04 11:05:13 +08:00
creatixchu 72b3dfdc6f fix(release): query helper artifacts with native Node fetch 2026-11-04 11:03:12 +08:00
Turtle cfa6f7359e fix(experimental): reject the experimental prefix in new package names
Freeze the existing prefixed directories in
LEGACY_PREFIXED_EXPERIMENTAL_PACKAGE_DIRECTORIES and reject the prefix
elsewhere. Record the naming decision in a new Agent Note and keep the
plugin identity note's facts current.

Refs #7841
2026-11-04 04:59:30 +08:00
Turtle 22f0226e49 docs(experimental): forbid the experimental prefix in new package names
New experimental packages use @deepseek-ai/dsh-<name> so that promotion
keeps their npm names. The workspace gate message now points at
EXPERIMENTAL_PACKAGE_NAME_EXCEPTIONS instead of the prefix.

Refs #7841
2026-11-04 04:38:55 +08:00
_Kerman b0dd2f044e Merge pull request #7770 from deepseek-harness/fix/ptc-run-code-call-limit
fix(ptc): 按超时预算限制 run_code 工具调用总数
2026-11-03 20:40:14 +08:00
creatixchu 9e761119bb test(release): share standalone helper fixture setup 2026-11-03 17:42:25 +08:00
creatixchu 681cf973e2 fix(release): verify helper CLI execution on clean checkouts 2026-11-03 17:29:37 +08:00
creatixchu 41beadfa2a fix(release): verify helper producers and preserve rerun artifacts 2026-11-03 17:09:19 +08:00
winewill df37050b48 Fail visibly when website preparation outputs are missing 2026-11-03 16:09:48 +08:00
Dudu-0223 7b2d7841dd Merge master into subagent naming fixes 2026-11-03 15:52:55 +08:00
creatixchu 3f579d45eb fix(release): bind helper builds to the Actions run commit 2026-11-03 15:49:44 +08:00
Yichen Jiang 00fbab4c14 Merge remote-tracking branch 'origin/master' into worktree/continue-generation-after-failure
# Conflicts:
#	docs/persistence-schema.json
2026-11-03 15:28:52 +08:00
winewill 8ecdc76b41 Merge master and align desktop publication recovery 2026-11-03 15:20:56 +08:00
creatixchu 47d7788fe5 perf(release): skip run details for nonmatching helper artifacts 2026-11-03 15:15:28 +08:00
creatixchu aa035e6845 feat(release): reuse CUA helper builds with matching source bytes 2026-11-03 15:05:26 +08:00
Yichen Jiang 2fb4ea0bec Merge origin/master into worktree/continue-generation-after-failure 2026-11-03 14:08:46 +08:00
Yichen Jiang e2f5686a13 Merge pull request #3372 from deepseek-harness/feat/mcp-manager-core
feat(mcp): 支持插件注册与 Remote 管理的 MCP 服务器
2026-11-03 06:07:04 +00:00
winewill ece8f7cb77 Merge pull request #7495 from deepseek-harness/feat/desktop-update-channels
feat(desktop): 在设置中切换更新渠道
2026-11-03 14:03:04 +08:00
Yichen Jiang 61addcbcb9 Merge remote-tracking branch 'origin/master' into worktree/forge-diff-base-branch-4ffd61 2026-11-03 13:49:51 +08:00
Dudu-0223 9f57925000 Merge remote-tracking branch 'origin/master' into feat/subagent-catalog-names
# Conflicts:
#	docs/persistence-schema.json
#	docs/tool-catalog.i18n.yaml
2026-11-03 13:49:18 +08:00
Yichen Jiang fcc1becf11 feat(forge): choose the base branch of local changes
The Branch scope of the local changes view compared only with the
automatic fork point. Its header now names the checked-out branch and a
searchable base branch menu that lists the automatic fork point, then
remote-tracking and local branches; a chosen branch compares with its
merge base with HEAD. The choice lives in the view tab, a missing or
unrelated branch offers the default instead of a retry, and local Branch
review quotes name the base they were compared with.

Refs #7781
2026-11-03 13:49:13 +08:00
gengruilin d9d3b80fe3 Merge remote-tracking branch 'origin/master' into feat/mcp-manager-core 2026-11-03 13:37:58 +08:00
imccyu 70d9b57f5c Merge pull request #7565 from deepseek-harness/feat/web-search-fetch-settings
feat(web): 网页搜索与获取设置页分开选择 Search 与 Fetch,Search 默认改为 DeepSeek Search API
2026-11-03 13:31:41 +08:00