BongoCat GPUI 设置界面 Spike 实战指南:gpui 0.2.2 的窗口生命周期、运行时桥接与自动化探针
桌面应用【免费下载链接】BongoCat BongoCat — A cross-platform interactive desktop pet that brings fun to your desktop!项目地址https://gitcode.com/gh_mirrors/bong/BongoCat点击查看免费下载本篇技术指南以 BongoCat 仓库中 spikes/gpui-settings/README.md 为核心骨架完整讲解这个gpui 0.2.2Phase 0 探针项目的构建方式、生命周期 smoke 流程、有界类型化运行时桥接、错误注入与恢复探针、macOS 原生菜单/工具提示自动化验证以及打包与性能基准脚本。读完本文你可以复现这套 spike 的全部命令并理解它如何在开发真正设置窗口之前先用最小可运行窗口验证 GPUI 0.2.2 的可行性边界——这正是 ADR-0002 要求首个 spike 固定gpui 0.2.2并提交Cargo.lock的落地形态。Spike 的定位与边界它验证什么不验证什么spikes/gpui-settings是一个刻意隔离的 Phase 0 探针probe它不属于旧的 Tauri workspace也不实现产品状态product state、Live2D、输入捕获或原生 overlay。README 明确写明它只是对 GPUI 0.2.2 的独立验证探测的是一条纯 Rust 设置窗口的可行性路径——这正是 BongoCat 从 Tauri 迁移到 ADR-0002 所描述的单 Rust 设置 UI 的关键第一步。从源码结构看spike 的组成非常克制spikes/gpui-settings/src/ 下仅有 5 个源文件文件职责main.rs应用入口、设置窗口渲染、键盘绑定、菜单安装、探针调度runtime_bridge.rs有界类型化命令通道、带 revision 的快照、错误注入模式text_input.rs自实现的文本输入控件UTF-16/UTF-8 双向转换、选区、剪贴板platform_ui_probe.rs向平台窗口投递合成鼠标移动事件macOS/Windows 双实现macos_menu.rsmacOS 原生菜单结构校验与 NSMenu 动作分发同时要记住 spike 的边界spike 成功只意味着 GPUI 0.2.2 能开窗、能渲染文本、能干净关闭并不证明生产运行时、UI 或 overlay 生命周期已经完备。这是阅读和复用本 spike 时必须持有的判断。快速开始构建与生命周期 smoke在 spike 目录下直接运行cargo run要做一次可重复的生命周期 smoke则用环境变量注入自动退出延时BONGOCAT_SPIKE_AUTO_QUIT_MS1500 cargo run --locked--locked保证按 Cargo.lock 精确解析依赖。延时解析逻辑在 main.rs 的auto_quit_delay()它优先读取命令行参数--auto-quit-ms其次读BONGOCAT_SPIKE_AUTO_QUIT_MS环境变量解析失败则打印invalid auto-quit duration并返回None不自动退出。成功输出的判定标记README 明确定义gpui-settings-spike: window opened—— 窗口打开成功一行首帧日志包含正值的平台scale_factor来自 main.rs 的on_next_frame回调first frame elapsed_ms... scale_factor...gpui-settings-spike: runtime snapshot revision1—— 首次快照读取成功gpui-settings-spike: runtime stopped与gpui-settings-spike: stopped—— 运行时关闭完成失败语义窗口初始化失败时应用不是立刻非零退出而是等on_app_quit注册的运行时 shutdown hook 完成后才以非零码退出main.rs 中通过window_open_failed/ui_probe.failed两个AtomicBool汇总结局最后在main尾部std::process::exit(1)。这意味着自动化 smoke 不能只靠看到错误日志就判失败而必须检查退出码与生命周期日志顺序。运行时桥接有界类型化命令通道与 revision 快照spike 的核心设计是合成运行时桥接synthetic runtime bridge用于模拟真实产品中设置 UI 与后台运行时通过强类型 command/snapshot 边界通信的形态这也呼应 ADR-0002 中GPUIEntity只拥有临时视图状态运行时配置与业务状态通过强类型边界访问的决策。实现集中在 runtime_bridge.rsRuntimeBridge::new()创建async_channel::bounded(8)的有界命令通道容量 8 防止无界积压命令是强类型枚举RuntimeCommand只有两种ReadSnapshot { reply }与Shutdown { acknowledged }各自带独立的有界 reply/ack 通道快照RuntimeSnapshot { revision: u64, health: RuntimeHealth }是Copy型值通过 revision 单调递增表达新版本UI 侧通过 GPUI taskcx.spawn异步读取快照不阻塞 UI 线程应用退出时shutdown()等待运行时显式确认后才继续关闭流程。UI 侧的读取逻辑在 main.rs 的request_runtime_snapshot()请求在途时忽略重复点击runtime_request_in_flight防抖结果回来只接受 revision 更高的快照snapshot.revision current.revision错误则写入runtime_error并在界面显示。契约测试同样内置在 runtime_bridge.rscargo test --locked测试runtime_delivers_snapshots_and_closes_the_bridge验证连续两次read_snapshot()分别得到 revision 1 和 2shutdown()后通道关闭后续读取返回Err(BridgeError::RuntimeStopped)。第二个测试delayed_probe_fails_only_the_second_read精确锁定错误注入模式下只有第 2 次读取失败、第 1/3 次成功。错误注入探针--runtime-error-probe用--runtime-error-probe启动可以演练非阻塞加载、类型化失败、重试与 revision 恢复这条完整链路BONGOCAT_SPIKE_AUTO_QUIT_MS1500 cargo run --locked -- --runtime-error-probe运行模式由 runtime_bridge.rs 的RuntimeProbeMode控制Normal响应零延迟永不失败DelayedErrorRecovery每次读取延迟 3 秒Duration::from_millis(3_000)且只有第 2 次读取返回Err(BridgeError::ProbeFailure)错误文案为runtime probe failed。README 给出的预期序列是第一次点击 Refresh → revision 1第二次 → 界面显示runtime probe failed第三次重试→ revision 2。关键点在于延迟发生在 GPUI 后台 executor 上run_runtime通过注入的delay回调使用cx.background_executor().timer(...)见 main.rs每次读取等待 3 秒但不会阻塞 UI 线程——窗口仍可响应鼠标、键盘与重绘这正是非阻塞运行时访问这一产品前提的验证方式。Reset 交互探针GPUI 公共 tooltip API 与项目自有模态对话框点击界面右下角的Reset...按钮会打开一个项目自有的模态对话框不是 GPUI 内置组件其交互契约由 main.rs 的渲染代码和键盘绑定共同实现对话框在 Cancel 与 Reset 之间循环捕获 Tab / Shift-Tabon_tab/on_tab_previous在对话框打开时手动把焦点在dialog_confirm_focus与dialog_cancel_focus之间翻转见 main.rs支持Enter / Space 激活、Escape 关闭KeyBinding::new(enter, ActivateFocused, Some(SettingsButton))与space同绑定escape绑定DismissDialogmain.rs全屏遮罩使用rgba(0x00000088)半透明背景与.occlude()从视觉上阻止背景交互Reset 确认后把主题恢复为 System、清空模型名输入框并关闭对话框confirm_resetmain.rs。Reset 按钮同时挂载了 GPUI 的公共 tooltip API.tooltip(...)闭包main.rstooltip 内容为 Restore the settings shown in this spike。必须强调这只是 Phase 0 的交互探针不是产品级的设置重置实现——产品重置会走 ADR-0054 定义的配置 fallback备份优先、否则默认值而不是弹对话框。视觉优先契约为什么 CI 不检查辅助技术树spike 与产品一样是visual-first它不维护项目自有的无障碍树accessibility tree、adapter 或 action channel也不依赖accesskit、accesskit_macos、accesskit_windows。这是 ADR-0054视觉优先配置与 UI 契约的直接执行——README 与 ADR 都记录了spikes/gpui-settings原本自建的 AccessKit bridge、action channel 与隐藏Status节点已随该 ADR 删除CI smoke 改为纯生命周期检查Windows 侧不再用 UI Automation 驱动探针。因此 spike 的 CI smoke 只覆盖三件事窗口生命周期打开、首帧、关闭、退出码类型化运行时桥接cargo test --locked的契约测试可见 UI 探针菜单、tooltip、文本输入。不把屏幕阅读器/辅助树断言作为 UI 完成条件。主题、本地化、键盘导航、可见 focus 与 tooltip 则明确保留。macOS 原生菜单探针--menu-probe在 macOS 上追加--menu-probe启动可以验证 GPUIset_menus安装的原生 Application / Edit / Window 三级菜单结构并实际派发其中的编辑动作BONGOCAT_SPIKE_AUTO_QUIT_MS6000 cargo run --locked -- --menu-probe探针流程main.rs 的start_menu_probe先向文本输入框写入探针文本Menu Probe并聚焦macos_menu::verify_structure()通过 Objective-C 消息objc2遍历NSApplication.mainMenu对照EXPECTED_MENUS常量逐项核对菜单标题——应用菜单含Services/Hide.../Show All/Quit...Edit 含Cut/Copy/Paste/Select AllWindow 含Minimize/Zoommacos_menu.rs在后续 AppKit run-loop 轮次中通过schedule_perform用 CoreFoundation 一次性 Timer 把动作调度到主 run loop依次派发Select All → Cut → Paste每次派发后校验状态Cut 后文本框应清空且剪贴板内容恰为Menu ProbePaste 后文本框内容应恢复为Menu Probe——校验的是聚焦的 GPUI 文本输入与剪贴板不记录内容本身README 明确without logging their contents。所有调度与回调都用catch_unwind包裹失败即标记ui_probe.failed并cx.quit()最终体现为非零退出码。注意此探针不验证后来的NSStatusItem菜单栏服务那是另一个独立边界。工具提示探针--tooltip-probe--tooltip-probe通过平台窗口与 GPUI 输入路径投递合成的原生鼠标移动消息验证 tooltip 的完整生命周期BONGOCAT_SPIKE_AUTO_QUIT_MS6000 cargo run --locked -- --tooltip-probe实现要点main.rs 的start_tooltip_probe platform_ui_probe.rsmacOS 侧从 GPUI 的raw_window_handle取出 AppKitNSView并 retain用NSEvent mouseEventWithType:构造鼠标事件再通过CFRunLoopTimer调度到主 run loop 调用mouseMoved:——绕开物理光标直接喂给 GPUI 的原生事件转换platform_ui_probe.rsWindows 侧等价实现是PostMessageW(hwnd, WM_MOUSEMOVE, ...)坐标按(y 16) | x打包进 LPARAMplatform_ui_probe.rs探针先在 y360..440 区间逐 2px 扫描投递直到命中 Reset 按钮的 hitboxtooltip_hovered置位命中后等待GPUI 0.2.2 固定的 500ms tooltip 延迟探针实际等待 650ms校验tooltip built after hover delay日志——确认 tooltip 被真正构造随后把鼠标移到 (20, 20) 离开 hitbox校验 hover 状态清除。同样地探针只验证 tooltip 生命周期不替代物理指针也不做屏幕阅读器断言。打包与性能基准macOS 脚本构建 release 二进制并采集 macOS Phase 0 性能数据./scripts/package-macos.sh ./scripts/benchmark-macos.shpackage-macos.shscripts/package-macos.sh 执行cargo build --release --locked组装target/package/BongoCat GPUI Spike.app的 Contents 目录拷贝 macos/Info.plistbundle id 为com.ayangweb.bongo-catLSMinimumSystemVersion12.0用plutil校验CFBundleIdentifier与预期一致不一致直接失败codesign --force --sign - --timestampnone做ad-hoc 签名。README 特别提醒ad-hoc 签名只验证本地 bundle 完整性不是 Developer ID 签名或公证notarization结果。benchmark-macos.shscripts/benchmark-macos.sh 采集三类指标原始 CSV 与汇总写入target/benchmark/下输出目录可用BONGOCAT_BENCHMARK_OUTPUT_DIR覆盖指标采集方式说明首帧时间重复启动默认 10 次BONGOCAT_BENCHMARK_STARTUP_SAMPLES解析first frame elapsed_ms从 Rustmain开始计时排除 dyld 与进程创建汇总给出 min/P50/P95/max空闲 CPU进程后台运行5 秒预热BONGOCAT_BENCHMARK_IDLE_WARMUP_SECONDS后每 1 秒采样默认 10 次取自 macOSps的%cpu报告生命周期平均与最大值空闲 RSS与 CPU 同批次采样单位为 KiB预热后采样二进制增量stat -f %z对比 release 二进制与同工具链构建的空 Rust 程序空程序使用opt-level2 thin LTO与 Cargo.toml 的[profile.release]一致增量 release 二进制字节数 − 空程序字节数汇总文件*-summary.txt还记录run_id、commit、rustc版本、macOS 版本与构建版本等可复现元数据。脚本要求必须先在 macOS 上运行、必须先跑package-macos.sh生成 release 二进制采样计数参数被校验为 1..120 的正整数非法值直接以退出码 2 拒绝。启动打包后的 App参数组合打包后通过 LaunchServices 启动 ad-hoc 签名的 bundle 并叠加探针参数./scripts/package-macos.sh open -W target/package/BongoCat GPUI Spike.app --args --auto-quit-ms 6000 --menu-probe --tooltip-probe-W让open等待应用退出后再返回便于脚本化判定。--auto-quit-ms 6000让应用在 6 秒后自动退出与BONGOCAT_SPIKE_AUTO_QUIT_MS环境变量等价--menu-probe与--tooltip-probe可同时启用。所有 CLI 开关--auto-quit-ms、--runtime-error-probe、--menu-probe、--tooltip-probe的解析都在 main.rs 与menu_probe_enabled/tooltip_probe_enabled中。成功判据与构建前提README 给出的最终成功判据是窗口能打开、文本渲染不裁剪text without clipping、在目标机器上干净关闭。三者同时满足才说明 spike 完成但如前所述这不构成生产运行时/UI/overlay 生命周期完备的证据。构建前提方面probe 使用 GPUI 的默认预编译 shader 路径。在 macOS 上如果缺少 shader 编译所需的组件需要先安装可选的 Metal Toolchainxcodebuild -downloadComponent MetalToolchainREADME 记录的本仓库已验证组件版本为17F109即构建该 spike 时锁定的 Metal Toolchain 组件版本升级 Xcode 后建议按实际环境重新验证。相关文档与源码地图进一步深入可以对照以下仓库内证据决策背景docs/adr/0002-gpui-settings-ui.mdGPUI 设置 UI 决策与 WindowsWM_DESTROY兼容约束视觉优先契约docs/adr/0054-visual-first-config-and-ui-contract.md配置 fallback 与无辅助树约定依赖清单spikes/gpui-settings/Cargo.tomlgpui 0.2.2、async-channel 2.5.0、raw-window-handle 0.6.2、unicode-segmentation 1.13.3macOS 追加objc2系依赖文本输入细节spikes/gpui-settings/src/text_input.rs含 UTF-16 surrogate pair、组合输入 marked text 的单元测试契约测试spikes/gpui-settings/src/runtime_bridge.rs一句话总结这套 spike 用一个窗口 一个合成运行时 三组自动化探针 两个打包/基准脚本把 GPUI 0.2.2 在 BongoCat 迁移路径上最不确定的窗口生命周期、异步快照读取与原生平台交互全部变成了可重复、可判定、可量化的验证流程是后续产品级设置窗口开发的可靠起点。赞分享桌面应用【免费下载链接】BongoCat BongoCat — A cross-platform interactive desktop pet that brings fun to your desktop!项目地址https://gitcode.com/gh_mirrors/bong/BongoCat点击查看免费下载相关推荐ADR-0068 设置窗口销毁与进程内导航记忆BongoCat GPUI 设置窗口生命周期设计ADR 0068 设置窗口销毁与进程内导航记忆BongoCat GPUI 设置窗口生命周期设计 output_article BongoCat 设置窗口生桌面应用微信聊天记录导出 HTML、Word、CSV一份完整的本地留档流程微信聊天记录导出 HTML、Word、CSV一份完整的本地留档流程 换电脑、换工作之前多数人第一反应是得把几年的微信历史留一份能搜、能翻的副本。WeChagpui-base 窗口级文本选择实战用 TextSelectionLayer 为自定义 GPUI 渲染器接入原生文本选择gpui base 窗口级文本选择实战用 TextSelectionLayer 为自定义 GPUI 渲染器接入原生文本选择 本文面向使用 GPUI Kit 构桌面应用UI组件前端上一篇Node-fetch请求取消终极指南掌握AbortSignal与AbortController下一篇Serenity代码重构终极指南7个步骤优化Discord机器人架构创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Attention is all you need?从Encoder到Decoder拆解Transformer的Self-Attention机制

Attention is all you need?从Encoder到Decoder拆解Transformer的Self-Attention机制

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 15:20:27 阅读更多 →
echarts地图实战全攻略:从GeoJSON到series-map与geo组件

echarts地图实战全攻略:从GeoJSON到series-map与geo组件

做前端可视化的朋友,只要牵扯到地理数据,基本都绕不开 echarts地图。后台监控大屏、城市人流分析、门店选址评估、疫情热力图——凡是带着空间属性的数据,第一反应就是用地图来呈现。但说实话,很多人第一次接触 echarts 地图时都挺…

2026/10/2 15:19:27 阅读更多 →
Ubuntu+ROS2+Isaac Sim机器人仿真环境搭建全流程与踩坑实践

Ubuntu+ROS2+Isaac Sim机器人仿真环境搭建全流程与踩坑实践

做机器人仿真开发,Ubuntu、ROS2和Isaac Sim这套组合,单独装哪个都不算难,难的是让它们在同一个系统里好好协作、形成一条能真正跑通的工具链。我最近刚好在一台新机器上从零走了一遍:分区装Ubuntu、换源装驱动、装ROS2 Humble、再…

2026/10/2 15:19:27 阅读更多 →

最新新闻

霍尔式流量计从信号调理到算法实现:频率测量、滤波与标定全解析

霍尔式流量计从信号调理到算法实现:频率测量、滤波与标定全解析

做好几年流量测量设备,各种原理的流量计都摸过一遍,电磁的、涡街的、超声波的各有利弊,但要论“性价比高、结构简单、容易上手”,霍尔式流量计绝对排得上号。市面上大量热水器、净水器、冷却水监控、工业循环水系统里,…

2026/10/3 21:47:43 阅读更多 →
基于Klipper的Qt上位机实战:从通信协议到打印参数控制

基于Klipper的Qt上位机实战:从通信协议到打印参数控制

1. 项目概述与整体设计思路 1.1 为什么要做一个基于Klipper的Qt上位机 接触过3D打印的朋友应该对Marlin固件不陌生,那是把运动控制、温度管理、G代码解析全部塞进板载MCU的传统方案。而Klipper走的是另一条路——它把最吃算力的运动规划任务从MCU上剥离出来&#x…

2026/10/3 21:47:43 阅读更多 →
基于Qt的Klipper上位机开发:实时监控与通信解析实践

基于Qt的Klipper上位机开发:实时监控与通信解析实践

做3D打印上位机这件事,我是从“用别人的Web界面觉得不过瘾”开始的。Klipper这个固件生态有个特点:几乎所有常见前端(Mainsail、Fluidd)都是浏览器里的Web应用,功能很全,但想按自己的习惯定制监控界面、做本…

2026/10/3 21:47:42 阅读更多 →
DeepSeek Harness 桌面端安装避坑与内网部署实践指南

DeepSeek Harness 桌面端安装避坑与内网部署实践指南

1. 这次桌面端最大的变化:终于不用在终端里指挥一切了作为一个从 DeepSeek Harness 还在纯命令行阶段就开始折腾的老用户,我看到“官方桌面端”这几个字的时候,第一反应是:终于不用再靠 YAML 文件和各种命令去猜“现在到底执行到哪…

2026/10/3 21:46:42 阅读更多 →
DeepSeek Harness桌面端实战:从工作流编排到本地vLLM部署

DeepSeek Harness桌面端实战:从工作流编排到本地vLLM部署

DeepSeek Harness 官方桌面端终于有了。看到这个消息,我第一时间去下载装好了。原因很简单,作为每天跟大模型工作流打交道的人,之前用DeepSeek做工程化编排,要么在网页聊天窗里手搓提示词,要么开命令行敲一堆参数&…

2026/10/3 21:46:42 阅读更多 →
FPGA单粒子翻转(SEU)原理与可靠性加固策略解析

FPGA单粒子翻转(SEU)原理与可靠性加固策略解析

1. 单粒子翻转到底是什么,为什么FPGA这么怕它做FPGA开发时间久了,早晚会遇到一类极其隐蔽的问题:产品在实验室里跑得好好的,功能、时序、功耗全都没有任何问题,一到现场就偶发故障,而且极难复现。你去查时序…

2026/10/3 21:46:42 阅读更多 →

日新闻

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南 【免费下载链接】ex-skill 前任 skill 项目地址: https://gitcode.com/gh_mirrors/exsk/ex-skill 前任.skill 是一个运行在 Claude Code 上的开源 Skill:导入微信、iMessage、短信、…

2026/10/3 0:00:27 阅读更多 →
45个经典Linux面试题:从命令到网络排障的完整考点解析

45个经典Linux面试题:从命令到网络排障的完整考点解析

刚开始带应届生的时候,我最头疼的就是他们拿着一摞Linux面试题背得滚瓜烂熟,一上机全露馅。后来自己从被面的人变成面别人的人,才慢慢摸清楚:Linux面试题考的根本不是答案本身,而是你面对一个不确定的系统问题时&#…

2026/10/3 0:01:28 阅读更多 →
SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

简介:本资源是一份面向SAP ABAP开发人员、生产计划专员及ERP实施顾问的实操型操作指南,聚焦SAP生产预留核心业务场景,系统解决物料预留创建、查询、校验与批量处理等高频问题。文档以结构化方式覆盖预留背景原理、OMC2编码规则、工厂级参数配…

2026/10/3 0:01:28 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 9:14:33 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 9:47:50 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/3 9:42:31 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →