DeepSeek Harness 首次启动引导演进:移除内测 Beta 通知的决策、遥测默认关闭与 settings.onboarding 缝合点设计
人工智能AI AgentAgent 框架DeepSeek【免费下载链接】deepseek-harnessDeepSeek Harness: Everything is a Plugin.项目地址https://gitcode.com/gh_mirrors/de/deepseek-harness点击查看免费下载本文依据 DeepSeek Harness 仓库中已归档的技术决策记录 2026-08-13-remove-first-run-beta-notice.md 展开。该决策讲述了产品发布前的一次关键产品简化从打包产物中彻底移除 GUI 首次启动时的全视口内测声明及其遥测上传引导文案同时保留底层设置缝合点为后续以共享模态框形式恢复的版本化测试阶段通知铺路。读者读完后将掌握DSH_TELEMETRY_MODE遥测开关的完整语义、settings.onboarding与ui-onboarding两个持久化/UI 缝合点的设计原则以及如何在保持既有设置文档有效的前提下安全地删除或恢复首次启动引导界面。一、背景首次启动时的全视口内测声明在本次决策实施之前DeepSeek Harness 的每个 GUI 首次启动都会打开一个占满整个视口的内部测试声明内测声明页面。这个页面的内容由两部分构成内部测试框架文案向用户说明当前产品处于内测阶段遥测引导说明告知用户如何通过环境变量DSH_TELEMETRY_MODE启用 Session Log会话日志上传。这一设计在当时已经失去了存在意义。依据同期归档的决策 2026-08-10-telemetry-default-off.md会话遥测SessionTelemetryBackend在模式mode未设置时已经解析为DISABLED——即默认不发送任何遥测数据。换句话说这个全视口声明中唯一真正具有操作性的引导内容只剩下一段教用户如何主动打开遥测的说明。更根本的问题是产品边界内测框架文案本身绝不能出现在发布release构建中。一个面向正式发布的构建不应该在首次启动时向用户呈现这是内部测试的声明。无论文案如何措辞这个全视口插页的框架性语义都与发布产品的定位冲突。二、决策移除而非改写面对上述问题团队做出的决策是从装配好的产品中彻底移除首次运行通知而不是重新措辞保留。理由很清晰——在发布构建中呈现内测框架本身就是违规行为而一个没有实质性内容的强制首启插页只会给用户带来纯粹的摩擦friction。2.1 被删除的部分决策明确列出了被移除的具体实现要素通知组件notice component渲染全视口内测声明的 UI 组件确认存储acknowledgement store记录用户是否已确认该声明的状态存储文案所有者copy owner持有通知文案的模块本地化键locale keys通知文案对应的多语言键值。这些要素随本决策一起从装配产物中删除。ui-settings-general包没有为settings.onboarding安置任何步骤事实上该步骤在原始设计中就不存在于此包中后被ui-settings-models承担详见下文。2.2 被刻意保留的部分ui-onboarding 命名空间与删除动作形成鲜明对比的是Host 端保留了ui-onboarding设置命名空间的注册。这一点至关重要因为已存储的用户设置文档settings.yaml中已经包含ui-onboarding这一 section设置缝合点settings seam会针对已注册的命名空间校验已存储文档如果同时取消注册该命名空间所有已存在的设置文档都会因校验失败而失效。保留注册是一个零成本操作却能让所有存量用户文档保持有效。这一决策体现了设置系统设计中向后兼容优先的核心原则删除一个 UI 特性不等于破坏用户已有的持久化数据。对应实现位于 packages/client/ui-settings-general/src/index.ts其中apply函数在存在 settings provider 时注册ui-onboarding命名空间并绑定welcomeNoticeVersion: z.string()的 schema。三、遥测开关的源码级语义DSH_TELEMETRY_MODE 与硬性关闭开关本次移除的遥测引导文案之所以可以安全删除前提是遥测系统本身已经有了清晰的默认关闭语义。这一部分在 2026-08-10-telemetry-default-off.md 中完整记录并在当前仓库源码中落地。3.1 模式解析未设置即 DISABLED后被 feedback-gated 默认取代会话遥测后端 packages/session/session-telemetry-otel/src/index.ts 定义了模式枚举export enum SessionTelemetryMode { FEEDBACK_ONLY FEEDBACK_ONLY, DISABLED DISABLED, } export const DEFAULT_TELEMETRY_MODE SessionTelemetryMode.FEEDBACK_ONLY从源码可以看出当前仓库的默认模式已经是FEEDBACK_ONLY该默认值由 2026-08-25 的 feedback-gated 默认决策确立更早的 telemetry-default-off 决策曾将未设置模式解析为DISABLED。在DISABLED分支src/index.ts中后端不构造任何 OTel provider、processor 或 exporter只监听session/event在用户提交反馈时以日志警告形式告知反馈未通过 OpenTelemetry 上传所有数据停留在本地会话日志中。resolveModesrc/index.ts对运行时未知值采取**失败关闭fail-closed**策略任何不在枚举中的值都会被assertNever直接抛出防止绕过模式校验。3.2 硬性关闭开关DSH_TELEMETRY_DISABLED除了模式枚举还存在一个权威的、在启动早期生效的硬性关闭开关。CLI 的 profile 启动流程 apps/cli/src/profile-boot.ts 将process.env.DSH_TELEMETRY_DISABLED注入 profile 上下文其行为由 apps/cli/tests/telemetry-switch.spec.ts 的测试用例完整锁定未设置或为空保留配置的遥测模式不产生任何补丁patch任意非空值包括1、0、false、no这类看似假值的字符串生成{ id: session-telemetry-otel, disabled: true }补丁直接禁用遥测行组合中没有遥测行开关平凡满足——没有遥测行就没有可禁用的对象同样不生成补丁。这意味着部署方可以用一个环境变量在任何配置层面强制关闭遥测且该开关的判定发生在 Cordis 树挂载之前具有最高权威性。3.3 部署立场显式的环境选择CLI 行为参考文档 apps/cli/reference/README.md 的 Shared deployment behavior 一节第 110-112 行记录了当前完整的部署立场基础 bundle 默认挂载 DeepSeek 会话日志上传以及 feedback-gated 的 OTel 上传DSH_TELEMETRY_MODEDISABLED禁用 OTel 投递FULL被拒绝FULL is rejected不是别名任何非空DSH_TELEMETRY_DISABLED都会禁用遥测行DSH_TELEMETRY_OTLP_URL用于选择 collector启用的导出可能包含完整会话内容消息文本、工具参数与结果、工作区路径部署方须自行负责脱敏规则。因此遥测 opt-in 始终是部署环境的显式选择而不是产品首次启动时向最终用户呈现的引导内容。这正是本次移除通知中遥测文案的底气所在产品不再需要教用户打开遥测因为是否打开是部署者的职责。四、settings.onboarding 缝合点与 ui-onboarding 命名空间的协作本次决策的另一个技术核心是缝合点seam概念的运用删除一个 UI 步骤不代表删除它所在的扩展点恢复时只需要在新的实现者中重新注册即可。4.1 移除阶段的缝合点状态在移除阶段settings.onboarding这个 UI 槽位slot没有被任何包安置步骤。ui-settings-general只负责注册ui-onboarding持久化命名空间见上文 2.2不负责任何首启 UI。这体现了持久化契约与呈现实现的分离命名空间属于数据平面onboarding 步骤属于 UI 平面二者可以独立演进。4.2 恢复阶段的重新注册后续决策 2026-08-13-shared-modal-product-onboarding.md 恢复了简洁的测试阶段通知但刻意选择了不同的呈现方式与文案并复用了同一个settings.onboarding缝合点和同一个持久化字段。当前实现位于 packages/client/ui-settings-models/src/client/index.tsctx.slots.inject(settings.onboarding, () ctx.slots.register({ name: settings.onboarding, id: welcome-notice, order: -100, inject: welcomeInjected, }, WelcomeNotice)) ctx.slots.inject(settings.onboarding, () ctx.slots.register({ name: settings.onboarding, id: deepseek-official, order: 0, inject: deepSeekOnboardingInjected, }, DeepSeekOnboardingDialog))两个步骤由同一个客户端 Cordis 插件ui-settings-models注册步骤槽位 IDorder职责版本化内测通知welcome-notice-100展示当前文案版本的测试阶段声明仅 Continue 确认DeepSeek 凭据引导deepseek-official0当且仅当无任何可用 provider 时引导输入官方 DeepSeek Key由于 shell 只挂载第一个未完成的条目两个对话框不会堆叠welcome-noticeorder 更小先出现用户确认后才轮到deepseek-official。4.3 版本化确认字段welcomeNoticeVersion通知的文案版本与持久化字段在 packages/client/ui-settings-models/src/onboarding-copy.ts 中定义export const WELCOME_NOTICE_SETTINGS_NAMESPACE ui-onboarding export const WELCOME_NOTICE_ACK_FIELD welcomeNoticeVersion export const WELCOME_NOTICE_VERSION 2026-08-13.1注释明确说明仅当通知发生实质性变化且需要所有用户重新确认时才应递增版本号且确认比较是精确相等exact equality。这样settings.yaml中持久化的welcomeNoticeVersion字段记录的是用户确认过的具体文案版本——这与移除决策中保留字段与后端契约的目标完全一致被恢复的通知复用了welcome-notice移除前就存在的字段没有引入新的持久化契约。确认写入逻辑位于 packages/client/ui-settings-models/src/client/welcome-store.tsloopback 浏览器通过 settings scope 将welcomeNoticeVersion写入 Host 持久化若写入失败或未持久化acknowledge()返回false并进入error状态界面显示the acknowledgement did not persist。4.4 远程浏览器的进程本地回退值得注意的是确认机制的双轨设计welcome-store.tsloopback 浏览器ui-onboarding命名空间可用确认通过 settings API 持久化到 Host非 loopback远程浏览器Client 在 Host 侧禁用设置持久化scope 处于 memory 模式确认只停留在进程本地刷新后通知会再次出现。这一设计保证了即使无法持久化也不会破坏 UI 流程——通知照常展示用户照常确认只是记得住的范围不同。4.5 共享模态框不静默完成强制引导恢复后的两个步骤共享同一个OnboardingModal组件packages/client/ui-settings-models/src/client/OnboardingModal.tsx。该组件有两个关键行为#rootinert挂载期间将应用根节点设为inert页面其余部分不可交互构成真正的模态阻塞忽略隐式关闭onClose被绑定为ignoreImplicitDismissEscape 键与遮罩点击不会静默完成强制 onboarding 步骤——每个步骤只暴露自己的显式操作按钮Continue / Save / Configure later。配套的通知组件 WelcomeNotice.tsx 只在未确认当前版本时渲染已确认acknowledged或仍在加载时返回null不占任何视觉空间。4.6 凭据步骤的细粒度判定deepseek-official步骤的状态机由onboardingReadiness驱动DeepSeekOnboardingDialog.tsxloading/adapter-absent/provider-ready/unavailable返回null并直接complete()——只要用户已经能用任何一个 provider就不再打扰credential-missing当且仅当官方 DeepSeek 引用可写且缺失时在共享模态框中渲染ProviderEditor的凭据专用模式credentialOnlycredentialRequiredautoFocusCredential。该编辑器验证 Key 后调用既有的credentials.set不修改任何 provider 设置密钥只以只写方式进入.credentials.yamlsettings.yaml永不携带密钥值。保存完成后重新controller.load()由刷新后的 readiness 决定是否继续。五、替代方案与拒绝理由原决策文档系统性地评估了三个替代方案每个都因具体的技术或产品理由被拒绝替代方案拒绝理由保留通知仅删除遥测段落内测框架文案本身是发布版绝不能呈现的内容删掉遥测段落后剩下的强制首启插页没有任何实质陈述纯粹是摩擦改为请求上传同意版本化同意步骤首启询问是否上传依然是遥测提示未来的同意流程应通过不变的settings.onboarding缝合点注册并使用全新的版本化字段做重新确认连同取消注册ui-onboarding命名空间已存储的设置文档已包含该 section设置缝合点按已注册命名空间校验存储文档保留注册让存量文档保持有效且零成本第三个替代方案尤其值得展开它揭示了设置系统的一个强约束——已注册命名空间是持久化文档合法性的依据。正因为ui-onboarding的注册被保留2026-08-13 恢复的测试阶段通知才能复用该字段与后端契约而无需任何 Host schema、API-proxy allowlist 或持久化实现的变更。六、影响与最终状态本次决策的最终影响可以概括为四点全视口内测声明及其遥测文案被彻底移除发布构建不再向首启用户呈现内测框架settings.onboarding缝合点与ui-onboarding命名空间保持存活为后续恢复提供了既有的注册位置与持久化字段恢复的通知是刻意不同的形态共享模态框先于内联凭据对话框出现远程场景也覆盖了进程本地确认welcomeNoticeVersion字段记录新文案版本2026-08-13.1历史遥测提示始终缺失恢复后的通知文案完全不涉及启用遥测上传——遥测 opt-in 作为部署环境选择只存在于 CLI 行为参考文档 apps/cli/reference/README.md 中。从实现验证角度看这一整套移除—保留—恢复闭环都有可运行测试背书遥测开关的补丁行为由 apps/cli/tests/telemetry-switch.spec.ts 覆盖通知组件与确认存储由ui-settings-models的浏览器测试覆盖OTel 后端的导出与禁用路径由 session-telemetry-otel/tests/otel.spec.ts 系列用例锁定。七、相关资源决策文档本次主题2026-08-13-remove-first-run-beta-notice.md遥测默认关闭决策2026-08-10-telemetry-default-off.md共享模态框引导恢复决策2026-08-13-shared-modal-product-onboarding.mdOTel 遥测后端实现与配置packages/session/session-telemetry-otel/src/index.ts、packages/session/session-telemetry-otel/README.md首启引导插件注册与实现packages/client/ui-settings-models/src/client/index.ts、onboarding-copy.ts、welcome-store.tsui-onboarding命名空间保留注册packages/client/ui-settings-general/src/index.ts遥测开关测试apps/cli/tests/telemetry-switch.spec.tsCLI 部署立场参考apps/cli/reference/README.md赞分享人工智能AI AgentAgent 框架DeepSeek【免费下载链接】deepseek-harnessDeepSeek Harness: Everything is a Plugin.项目地址https://gitcode.com/gh_mirrors/de/deepseek-harness点击查看免费下载相关推荐DeepSeek Harness 首次启动引导演进从全屏内测声明到共用弹窗产品引导DeepSeek Harness 首次启动引导演进从全屏内测声明到共用弹窗产品引导 本文基于 DeepSeek Harness 仓库中的存档决策笔记 2026人工智能AI AgentAgent 框架DeepSeekDeepSeek Harness TUI 无横幅启动设计移除启动横幅的决策、实现与测试验证DeepSeek Harness TUI 无横幅启动设计移除启动横幅的决策、实现与测试验证 本文基于仓库内 Agent Note 2026 07 21 tui人工智能AI AgentAgent 框架DeepSeekDeepSeek Harness 会话内容搜索默认关闭设计openAt 三阶段与 SESSION_QUERY_SEARCH_DISABLED 架构解析DeepSeek Harness 会话内容搜索默认关闭设计openAt 三阶段与 SESSION_QUERY_SEARCH_DISABLED 架构解析 Dee人工智能AI AgentAgent 框架DeepSeek创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Java 21 + Spring Boot 3 构建企业级 RAG 智能体工作流引擎

Java 21 + Spring Boot 3 构建企业级 RAG 智能体工作流引擎

1. 项目概述:为什么在 Java 生态里重做 RAG 智能体工作流不是“倒退”,而是精准卡位别卷 Python 了——这句话不是情绪宣泄,是我在连续交付 7 个 AI 增强型企业系统后的真实判断。过去两年,我带团队用 Python LangChain LangGr…

2026/9/21 17:08:48 阅读更多 →
system.img修改全攻略:格式识别、解包重打包与刷写避坑指南

system.img修改全攻略:格式识别、解包重打包与刷写避坑指南

1. system.img为何要改:先搞清楚这张"系统盘"的脾气玩Android的时间稍微长一点,基本都会遇到这个需求:自带应用删不掉、想加个开机脚本、想把某几个系统应用替换成自己改过的版本、或者单纯想把谷歌全家桶从国行固件里拔掉。这些操…

2026/9/21 17:08:47 阅读更多 →
变频与定频空调负荷聚合模型及Matlab实现

变频与定频空调负荷聚合模型及Matlab实现

1. 项目背景与核心价值在电力系统运行中,空调负荷占比逐年攀升,夏季高峰时段甚至可达总负荷的40%以上。传统控制方式往往将空调视为不可控负荷,导致电网调峰压力巨大。这项研究通过建立空调负荷的精细化控制模型,实现了三点突破&a…

2026/9/21 17:08:46 阅读更多 →

最新新闻

微信红包取消背后的并发坑:3个高频面试题实战拆解

微信红包取消背后的并发坑:3个高频面试题实战拆解

微信红包取消背后的并发坑:3个高频面试题实战拆解 看了一堆教程还是不会写项目?别急着骂教程烂,多半是你没搞懂“微信红包取消”这个场景背后的并发逻辑。这不仅是微信红包系统的经典案例,更是大厂后端面试里的 高频面试题…

2026/9/22 19:08:14 阅读更多 →
300595面试避坑保姆级教程:看懂StackTrace不再慌

300595面试避坑保姆级教程:看懂StackTrace不再慌

300595面试避坑保姆级教程:看懂StackTrace不再慌 盯着满屏红色的报错信息,Java初学者和转行选手最容易在这里卡壳。 那种“报错一堆看不懂 StackTrace”的绝望感,真的能把人逼疯。 别急,这篇 保姆级教程…

2026/9/22 19:08:14 阅读更多 →
cf无毒透视3步手写实现穿透原理与避坑指南

cf无毒透视3步手写实现穿透原理与避坑指南

cf无毒透视3步手写实现穿透原理与避坑指南 版本升级后 API 全变了?别慌,很多开发者面对 cf无毒透视 这类底层网络组件的更新时,第一反应是重写业务逻辑,但往往忽略了核心通信协议的稳定性。其实,只要你能 手写实现…

2026/9/22 19:08:14 阅读更多 →
3个实战技巧解决cad转excel卡顿,这才是性能优化最佳实践

3个实战技巧解决cad转excel卡顿,这才是性能优化最佳实践

3个实战技巧解决cad转excel卡顿,这才是性能优化最佳实践 看了一堆教程还是不会写项目?别急,这其实是绝大多数开发者在落地工程时遇到的通病。我们总以为懂了原理就能搞定,但一到实际生产环境,数据量上来后,你的脚本可能从“秒出结果”变成“卡…

2026/9/22 19:08:14 阅读更多 →
Rust By Practice 实战:掌握动态数组 Vec 的增删、转换、切片与容量管理

Rust By Practice 实战:掌握动态数组 Vec 的增删、转换、切片与容量管理

文档教程示例工程 【免费下载链接】rust-by-practice Rust By Practice will evolve into Origin. 项目地址&#xff1a; https://gitcode.com/gh_mirrors/ru/rust-by-practice 点击查看 免费下载 Vec<T> 是 Rust 标准库中最常用的堆上动态数组&#xff0c;与定长数组 […

2026/9/22 19:08:14 阅读更多 →
Apache Arrow C++ 行列转换实战:行式数据与列式 Table 的双向转换

Apache Arrow C++ 行列转换实战:行式数据与列式 Table 的双向转换

Apache Arrow C 行列转换实战&#xff1a;行式数据与列式 Table 的双向转换 【免费下载链接】arrow Apache Arrow is a multi-language toolbox for accelerated data interchange and in-memory processing 项目地址: https://gitcode.com/gh_mirrors/arrow12/arrow Ap…

2026/9/22 19:07:14 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事&#xff1a;用Flutter给OpenHarmony做一款游戏集合类的App&#xff0c;说白了就是把若干小游戏塞进一个壳里&#xff0c;用统一入口分发。这个方向本身不算新鲜&#xff0c;真正让我花了不少心思的&#xff0c;是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档&#xff0c;最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事&#xff1a;今天在表后面多加了两个空白行&#xff0c;明天给客户交稿前发现整个章节的编号全部错位&#xff0c;光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年&#xff0c;说实话&#xff0c;第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年&#xff0c;流量惨淡、功能臃肿、代码自己都懒得看第二遍之后&#xff0c;我才慢慢琢磨明白一个道理&#xff1a;第一个网站是练手&…

2026/9/22 8:51:04 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践&#xff1a;原型怎样变成可用功能分类&#xff1a;[AI/大模型]细分主题&#xff1a;AI 增强型 CI/CD 流水线自动化与 GitOps 实践&#xff1a;Agent 工作流、工具调用与任务拆解&#xff1a;从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战&#xff1a;复盘记录怎样真正派上用场分类&#xff1a;[工程技术]细分主题&#xff1a;Kubernetes 生产环境运维与排障实战&#xff1a;可复制的项目复盘模板与决策记录大部分团队的事故复盘报告&#xff0c;最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理&#xff1a;核心链路应该先拆哪一步分类&#xff1a;[工程技术]细分主题&#xff1a;Docker 容器化技术与镜像安全管理&#xff1a;核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用&#xff08;包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →