peon-ping 的 oh-my-pi(omp)适配器:ExtensionAPI 事件桥接 peon.sh 的完整实现解析
【免费下载链接】peon-pingWarcraft III Peon voice notifications ( more!) for Claude Code, Codex, IDEs, and any AI agent. Stop babysitting your terminal. Employ a Peon today.项目地址https://gitcode.com/gh_mirrors/pe/peon-ping点击查看免费下载本指南以 docs/designs/2026-05-09-omp-adapter-design.md 为骨架结合仓库中已落地的源码adapters/omp/peon-ping.ts、adapters/omp.sh、peon.sh与测试tests/omp.bats完整讲解 peon-ping 如何为 oh-my-piCLI 二进制名omp提供声音、通知、训练提醒与中继支持。读完本文你将掌握 omp 扩展的发现与加载机制、6 个生命周期事件到 peon-ping hook 事件的映射关系、source: omp与omp-session-id 前缀双通道 IDE 识别原理以及一键安装/卸载适配器的完整操作。背景为什么 omp 需要一个纯传输层适配器oh-my-pi简称 omp是一个基于 bun/TypeScript 的编码 Agent CLI。在引入本适配器之前peon-ping 对 omp 没有专门支持omp 用户拿不到声音、桌面通知、trainer 与 relay 能力——尽管 peon-ping 侧所有必要原语声音包、CESP 分类、通知、状态机都已就绪缺口完全在适配层。设计文档给出的核心结论是该适配器不做任何 peon-ping 未对其他 IDE 提供的事件翻译逻辑它纯粹是一个传输通道transport。所有 IDE 适配器共享同一形态接收 IDE 事件 → 翻译 → 以 CESP 形状的 JSON 载荷 spawnpeon.sh。peon.sh 已经是 Claude Code 的 hook在 README.md 的 How it works 一节描述了其五步工作流事件映射 → 声音选择 → 异步播放 → 通知/标签页标题 → 远程路由SSH/devcontainer/Codespaces 场景经 HTTP 转发到本机 relay。omp 适配器只需要把事件喂进这条现成管道。omp 扩展机制扩展如何被发现与加载在设计文档中omp 的扩展加载遵循目录发现规则扩展是default导出的 TS 模块自动发现位置有四处cwd/.omp/extensions/项目级作用域~/.omp/agent/extensions/用户级作用域~/.omp/plugins/node_modules/市场插件omp --extension path/omp --hook pathCLI 覆盖目录条目的解析链为package.json含omp.extensions字段→index.ts→index.js→ 目录扫描。这正是 adapters/omp/package.json 中omp: { extensions: [./peon-ping.ts] }字段存在的意义——目录式扩展必须有该字段omp 的目录加载器才能可靠地找到入口文件这也是以后可以直接作为市场插件分发而无需重构的伏笔。事件映射omp 生命周期 → peon-ping hook 事件设计文档给出的音频适配器相关事件全集完整目录见 omp 官方的authoring-hooks.md以及落地代码中的映射关系如下omp 事件触发时机peon-pinghook_event_namesession_start会话加载时触发一次SessionStartturn_start每个用户→Agent 回合开始UserPromptSubmitturn_end每个回合结束Stoptool_result且event.isError true每次工具执行失败PostToolUseFailureauto_compaction_start自动压缩开始前PreCompactsession_shutdown会话关闭时SessionEnd这 6 个事件在 adapters/omp/peon-ping.ts 中逐一注册。每个事件在 peon.sh 中都有对应的 CESP 路由分支例如 peon.sh 中SessionStart映射到session.start分类并设置status readypeon.sh 中PreCompact映射到resource.limit上下文压缩告警peon.sh 中SessionEnd负责清理该 session 的持久化状态。设计文档特别指出一个与 OpenCode 适配器的关键差异OpenCode 的session.created事件在插件订阅之前就触发所以 OpenCode 适配器需要额外用setTimeout延迟补发一次SessionStart而 omp 文档化的生命周期保证session_start在所有扩展加载完成之后才触发因此工厂调用期间同步注册处理器即可无需初始补发定时器。核心实现adapters/omp/peon-ping.ts查找 peon.sh 的候选路径与 OpenCode 适配器完全一致adapters/omp/peon-ping.ts 依次探测两个候选路径const PEON_SH_PATHS [ path.join(os.homedir(), .claude, hooks, peon-ping, peon.sh), path.join(os.homedir(), .openclaw, hooks, peon-ping, peon.sh), ] function findPeonSh(): string | null { for (const p of PEON_SH_PATHS) { try { if (fs.existsSync(p)) return p } catch {} } return null }若找不到peon.sh扩展只打印一行安装指引警告brew install PeonPing/tap/peon-ping或curl -fsSL peonping.com/install | bash并直接返回不注册任何处理器——保证在 peon-ping 未安装时适配器是安静失败的。会话 ID 生成与 IDE 识别兜底扩展生成sessionId omp- Date.now()见 adapters/omp/peon-ping.ts。omp-前缀是刻意的设计即便source字段在某个环节被丢弃peon.sh也能通过 session-id 前缀表回退识别出 IDE。这是双通道识别策略。firePeonCESP 形状的载荷firePeon(event)与 OpenCode 适配器同构adapters/omp/peon-ping.tsfunction firePeon(event: string): void { const payload JSON.stringify({ hook_event_name: event, notification_type: , cwd, session_id: sessionId, permission_mode: , source: omp, }) try { const proc spawn(bash, [peonSh], { stdio: [pipe, ignore, ignore], }) proc.stdin.write(payload) proc.stdin.end() proc.unref() } catch {} }要点payload 使用 CESP 形状字段hook_event_name、notification_type、cwd、session_id、permission_mode、sourcestdio只保留 stdin 管道stdout/stderr 忽略写完后立即proc.unref()让子进程脱离父进程存活不阻塞 omp 的事件循环。处理器与标签页标题守卫adapters/omp/peon-ping.ts 的 6 个处理器全部通过pi.on(...)注册。其中 4 个处理器在ctx.hasUI true时通过 OSC-0 序列\x1b]0;…\x07更新终端标签页标题session_start→ 标题${projectName}: ready触发SessionStartturn_start→ 标题${projectName}: working触发UserPromptSubmitturn_end→ 标题● ${projectName}: done触发Stoptool_result仅event.isError true→ 标题● ${projectName}: error触发PostToolUseFailureauto_compaction_start→ 仅触发PreCompact不写标题session_shutdown→ 仅触发SessionEnd不写标题ctx.hasUI守卫的意义headless 运行与 subagent 会话不拥有自己的 TTY写入 OSC-0 会与 omp 自身持有的 TTY 互相覆盖导致闪烁。交互式场景下该写法在 OpenCode 适配器中已被验证稳定。零第三方依赖与 type-only import导入清单只有node:*内置模块与 omp 的类型adapters/omp/peon-ping.tsimport * as fs from node:fs import * as path from node:path import * as os from node:os import { spawn } from node:child_process import type { ExtensionAPI } from oh-my-pi/pi-coding-agent关键设计ExtensionAPI以type限定导入因此该文件在未安装oh-my-pi/pi-coding-agent包的情况下也能被解析——运行时由 omp 的扩展加载器在加载时刻提供该类型的实际值。这也是后续bun build 无需安装依赖即可通过测试的前提。扩展清单adapters/omp/package.jsonadapters/omp/package.json 是目录式 omp 扩展的必需清单{ name: peon-ping, version: 1.0.0, description: peon-ping adapter for oh-my-pi (omp) — routes lifecycle events through peon.sh., omp: { extensions: [./peon-ping.ts] } }omp.extensions数组指向扩展入口name: peon-ping与仓库内 Claude Code hook 目录命名保持一致。该清单的存在同时保证适配器日后可直接作为 omp 市场插件~/.omp/plugins/node_modules/分发。一键安装adapters/omp.shadapters/omp.sh 的形态与 adapters/opencode.sh 一致核心流程为预检从~/.claude/hooks/peon-ping/peon.sh与~/.openclaw/hooks/peon-ping/peon.sh两个候选路径定位peon.sh找不到则打印安装指引并以退出码 1 结束adapters/omp.sh。创建目录mkdir -p ~/.omp/agent/extensions/peon-ping/并防御性删除可能残留的过期符号链接。写入文件优先下载peon-ping.ts与package.json两个curl -fsSL若设置了测试专用环境变量PEON_PING_LOCAL_ADAPTER_DIR则从本地 checkout 的adapters/omp/目录直接cp完全不依赖 curladapters/omp.sh。输出成功块列出扩展文件、清单与peon.sh的最终路径并提示Restart omp to activate以及后续配置命令peon config/peon trainer on/peon packs list。--uninstall删除整个扩展目录~/.omp/agent/extensions/peon-ping/adapters/omp.sh目录不存在时仅提示并正常退出。注意该适配器v1 不提供 PowerShell 安装器详见下文 Non-Goals。Windows 上 omp 通过 bun 运行只要bash在PATH上同一份peon.sh即可工作真正的 PowerShell 安装器留待用户反馈真实需求后再补。peon.sh 的 IDE 识别表三处微小改动peon.sh的 IDE 解析块实际行号 peon.sh只新增了三个条目这是整个peon.sh的唯一改动面①IDE_ALIASESpeon.sh归一化source字段将 omp 的各类别名统一收拢为ompomp: omp, oh-my-pi: omp, oh_my_pi: omp, pi: omp,normalize_ide_id会先把输入转小写、把空格/下划线替换为连字符再查表——所以oh-my-pi、oh_my_pi、Oh-My-Pi等变体最终都归一化为omp。②prefix_map元组peon.sh位于detect_session_ide内部作为 session-id 前缀的兜底识别(omp-, omp),detect_session_ide的判定顺序是先看归一化后的source跳过resume/compact这两个特殊值→ 再查workspace_rootsCursor 特征→ 最后按 session-id 前缀匹配prefix_map→ 兜底返回claude。因此source: omp缺失时session_id: omp-456依然能正确解析为 omp。③IDE_DISPLAY_NAMESpeon.sh人类可读展示名omp: oh-my-pi,展示名会出现在桌面通知标题与日志中display_ide_name对未命中表的 IDE 会回退为key.replace(-, ).title()式转换。在 tests/omp.bats 中三个 IDE 检测用例通过run_peon向peon.sh喂入合成事件并断言terminal_notifier.log中出现myproject - oh-my-pi分别覆盖source: omp直连、source: oh-my-pi别名归一化、source缺失但session_id: omp-456的前缀兜底。测试 setup 会先把notification_title_ide置为true让通知标题携带 IDE 名以便断言。测试策略BATS 覆盖两套表面tests/omp.bats 共 9 个用例覆盖安装器与 IDE 表两个表面IDE 检测组3 个即上文三用例全部走setup_test_env/run_peon助手来自 tests/setup.bash断言通知标题中的展示名。安装器组6 个独立的setup_installer_env助手会构造干净的临时HOME、mock 一个peon.sh以满足预检、并在PATH前插入一个 mockcurl按 URL 返回固定内容installer: script has valid bash syntax——bash -n语法校验installer: fails when peon.sh is not found—— 预检失败路径installer: fresh install writes extension files—— 断言peon-ping.ts与package.json落盘且内容含omp.extensions与omp字面量installer: re-install is idempotent and overwrites stale content—— 二次安装覆盖陈旧内容installer: --uninstall removes extension directory—— 卸载删除目录installer: PEON_PING_LOCAL_ADAPTER_DIR env var copies from local path instead of curl—— 把 mock curl 改成直接exit 99证明本地目录拷贝路径完全绕开网络CI 侧无需改动GitHub Actions 的 BATS 任务macos-latest会自动拾取tests/omp.bats。peon-ping 的 CI 不运行 TS因此适配器 TS 文件的验证走手动冒烟测试bun build --targetnode adapters/omp/peon-ping.ts应无错误退出type-only import 不要求包已安装若bun不可用可退化为npx -p typescriptlatest tsc --noEmit --target ES2022 --module nodenext --moduleResolution nodenext --skipLibCheck --allowImportingTsExtensions adapters/omp/peon-ping.ts。明确不做的事项YAGNI 边界设计文档清晰划定了 v1 范围以下内容有意排除Windows 原生omp.ps1Windows 上 omp 经 bun 运行调用的是PATH上的同一个bash peon.sh真实 PowerShell 安装器留待用户报告需求。PermissionRequest映射omp 的tool_call阻塞属于 hook 作者面而非用户可见的权限 UI没有干净信号可映射到PermissionRequest等 omp 暴露该信号后再做。Subagent 抑制omp 的 subagent 面是ctx.hasUI false适配器只据此跳过标签页标题写入不发明逐会话抑制方案有需求的用户应自行设置suppress_delegate_sessions: true。branch / tree / TTSR 事件对音频适配器无意义。安装器--local用户可见标志其他适配器安装器也没有测试用PEON_PING_LOCAL_ADAPTER_DIR仅测试 harness 设置重定向来源不暴露生产标志。风险与开放问题设计文档记录了三个已识别风险及其缓解Type-only import 的韧性若oh-my-pi/pi-coding-agent未来移动ExtensionAPI符号import type会在安装期失败。缓解固守文档化的公开类型路径若破坏退化为文件内联结构类型定义不开 import——Kilo 对 OpenCode 采用的就是同一招。turn_start与before_agent_start的选择两者都在回合开始附近触发。已批准映射采用turn_start文档化的稳定面若实测发现它在压缩后续接时触发过早单行即可切换无 schema 影响。标签页标题竞争后台扩展写 OSC-0 与 omp 自身的 TTY 所有权可能闪烁。适配器已用ctx.hasUI守卫避免 headless/subagent 竞争交互场景沿用 OpenCode 适配器验证过的同款方案。成功标准与效果验证设计文档定义的验收标准全部围绕安装可用、识别正确、测试通过、文档同步bash adapters/omp.sh在已装 peon-ping 的干净机器上把扩展装入~/.omp/agent/extensions/peon-ping/扩展激活后omp 会话在会话开始、回合结束、工具错误、压缩、会话关闭时触发既有 peon-ping 声音peon.sh识别source: omp及omp-session-id 兜底IDE 显示名为oh-my-pitests/omp.bats全部通过既有测试保持绿色README 徽章与 Multi-IDE 矩阵包含 omp且中/韩/日译文同步。落地状态可从仓库直接核实README.md 已有完整的 oh-my-pi (omp) setup 章节含快速安装、事件映射表与卸载命令Multi-IDE 表新增 omp 行README.mddocs/public/llms.txt 也已登记 omp 适配器条目。总结omp 适配器是 peon-ping thin adapter 范式的又一次落地不重新实现任何声音/通知逻辑只做事件翻译与进程桥接。扩展侧用 6 个pi.on处理器把 omp 生命周期事件翻译为 CESP 形状的 JSON经 stdin 喂给peon.shpeon.sh侧仅靠三处表项IDE_ALIASES、prefix_map、IDE_DISPLAY_NAMES就获得完整的 IDE 识别、展示与路由能力。整个改动面控制在 4 个新文件 3 处小编辑配合 9 个 BATS 用例与bun build手动冒烟测试完成闭环验证这正是适配层纯传输、复用全部现有原语这一架构决策的直接收益。赞分享【免费下载链接】peon-pingWarcraft III Peon voice notifications ( more!) for Claude Code, Codex, IDEs, and any AI agent. Stop babysitting your terminal. Employ a Peon today.项目地址https://gitcode.com/gh_mirrors/pe/peon-ping点击查看免费下载相关推荐oh-my-pi 扩展开发完全指南从零编写 ExtensionAPI 工具、命令与事件处理器oh my pi 扩展开发完全指南从零编写 ExtensionAPI 工具、命令与事件处理器 本篇指南以 oh my pi 官方扩展编写文档 docs/ski人工智能AI Agent代码智能体工具调用CLIMCP ClientsFirstmate 接入 ompOh My PiHarness 适配器启动契约、检测机制与主代理集成指南Firstmate 接入 ompOh My PiHarness 适配器启动契约、检测机制与主代理集成指南 导读 本文基于 Firstmate 开源仓库中peon-ping 声音静音开关实战指南/peon-ping-toggle 技能与 peon toggle 命令的完整解析peon ping 声音静音开关实战指南 /peon ping toggle 技能与 peon toggle 命令的完整解析 导读 peon ping 是面向上一篇Aim 实验追踪查询语言 AimQL 实战指南基于 Python 表达式过滤 Runs、Metrics 与 Images下一篇express-validator 废弃的 sanitize 系列中间件全解析API 说明、底层原理与迁移到 check() 的完整指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

Devtron 中 go-restful v3 依赖深度解读:从 CHANGES.md 看版本演进、关键行为变更与升级陷阱

Devtron 中 go-restful v3 依赖深度解读:从 CHANGES.md 看版本演进、关键行为变更与升级陷阱

云原生DevOps运维 【免费下载链接】devtron The only Kubernetes dashboard you need 项目地址: https://gitcode.com/gh_mirrors/dev/devtron 点击查看 免费下载 本文以 Devtron 仓库 vendor 目录中的 go-restful 变更历史 为核心,完整梳理 go-restful…

2026/10/13 2:57:40 阅读更多 →
Decepticon 实战剖析:XBEN-104-24 Loan Calculator 的默认凭据 + Jinja SSTI 攻击链与 Benchmark 证据解读

Decepticon 实战剖析:XBEN-104-24 Loan Calculator 的默认凭据 + Jinja SSTI 攻击链与 Benchmark 证据解读

【免费下载链接】Decepticon Autonomous Hacking Agent for Red Team 项目地址: https://gitcode.com/gh_mirrors/de/Decepticon 点击查看 免费下载 本文以 Decepticon 开源仓库中 XBEN-104-24 运行证据卡 为核心,逐字段拆解一次真实 benchmark 挑战的完…

2026/10/13 2:57:40 阅读更多 →
PDF补丁丁:免费开源的PDF工具箱,书签编辑、页面旋转与文档合并一次完成

PDF补丁丁:免费开源的PDF工具箱,书签编辑、页面旋转与文档合并一次完成

PDF补丁丁:免费开源的PDF工具箱,书签编辑、页面旋转与文档合并一次完成 【免费下载链接】PDFPatcher PDF补丁丁——PDF工具箱,可以编辑书签、剪裁旋转页面、解除限制、提取或合并文档,探查文档结构,提取图片、转成图片…

2026/10/13 2:57:40 阅读更多 →

最新新闻

被动审计实战:用icedump与nticedump实现内网资产盘点与风险发现

被动审计实战:用icedump与nticedump实现内网资产盘点与风险发现

简介:这份zip合集提供icedump 6.026与nticedump 1.14两套经典调试工具的完整文件包,面向系统程序员、逆向工程师与安全研究人员,覆盖用户态进程内存分析和Windows NT内核级转储两大场景。压缩包共含410个文件,整体仅2.62MB&#x…

2026/10/13 3:39:53 阅读更多 →
中国象棋源码实战:规则引擎与状态空间建模

中国象棋源码实战:规则引擎与状态空间建模

简介:这是一份面向Java初学者的中国象棋桌面程序源码学习项目,适用于算法逻辑训练、GUI开发入门与网络编程实践。项目实现了基础棋盘交互、走子规则校验、悔棋功能及简易联网对战模块,代码经过变量与函数重命名优化,并添加必要中文…

2026/10/13 3:39:53 阅读更多 →
Linux 服务器用 Aspera/ascp 高速下载基因组数据的完整指南

Linux 服务器用 Aspera/ascp 高速下载基因组数据的完整指南

简介:这是一款专为基因组大数据传输设计的高速下载工具——Aspera Connect 3.7.4.147727 Linux 64 位安装包,面向生物信息学研究人员、生信初学者以及需从 NCBI、EBI 等公共数据库批量获取测序数据的使用者。它基于 IBM FASP 协议,能够有效规…

2026/10/13 3:39:53 阅读更多 →
计算机系统考点梳理:补码、栈帧与缓存刷题技巧

计算机系统考点梳理:补码、栈帧与缓存刷题技巧

大二上那门计算机系统课,我是被“做题家”三个字摁着脑袋走完的。一开始觉得这只是自嘲,好像谁刷题多、背得熟,谁就是不懂原理的考试机器;等真到了期末复习,我才发现这门课光靠“看懂”完全不够,你必须在纸…

2026/10/13 3:39:53 阅读更多 →
SpringBoot+Vue校园一卡通系统实战:从架构设计到部署上线全解析

SpringBoot+Vue校园一卡通系统实战:从架构设计到部署上线全解析

校园一卡通项目我前后做过好几个版本,从最初的单体JSP到后面的前后端分离,踩过的坑能写满一个笔记本。这次分享的基于SpringBoot加Vue的校园一卡通管理系统,是目前结构最清晰、也最适合拿来学习和二次开发的一套。无论是应付毕业设计&#xf…

2026/10/13 3:39:53 阅读更多 →
Flutter for OpenHarmony实战:二手置换App设置页开发全解析

Flutter for OpenHarmony实战:二手置换App设置页开发全解析

做Flutter for OpenHarmony二手物品置换App,设置页看起来是所有模块里最不起眼的那一个。真正动手写的时候你会发现,它几乎是整个App里横跨技术面最杂的页面:本地存储、主题切换、通知权限、缓存清理、账号安全全都要在这个页面里落地&#x…

2026/10/13 3:38:53 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 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/12 21:05:09 阅读更多 →
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/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练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/12 18:11:17 阅读更多 →