treg:轻量级正则命令行工具,替代grep/sed/awk
1. 项目概述Treg 不是缩写而是真实存在的 CLI 工具名——一个被严重误读却极具实操价值的轻量级开发辅助工具“treg”这个词在当前中文技术社区里正经历一场典型的语义漂移。它既不是 T 细胞调节性淋巴细胞T regulatory cell的医学缩写也不是某个新出大模型的代号更不是 OpenRouter 或 Claude 的子项目。它是一个真实存在、开源可验证、已稳定维护三年以上的命令行工具——全名treg发音 /triːɡ/取自terminal regex的简写核心定位是在终端中快速执行正则表达式匹配、提取、替换与结构化输出的极简 CLI 工具。它不依赖 Python 环境不打包 Node.js 运行时不调用任何远程 API纯 Rust 编译单二进制文件Linux/macOS/Windows 全平台原生支持。你敲treg pattern file.txt它就立刻返回匹配结果你加-r replacement它当场完成文本重写你配--json它自动把每行匹配转成标准 JSON 数组。这才是标题 “treg” 的本义——一个被热搜词裹挟、被关键词淹没、但真正解决开发者日复一日文本处理痛点的底层工具。为什么它会被和 OpenRouter、CLI、SKILL.md 混在一起因为大量用户在搜索“如何用 CLI 调用 OpenRouter API”时误输为treg openrouter搜索引擎自动补全后形成错误关联又因部分开发者将treg集成进自己的技能文档 SKILL.md 中作为“文本预处理必备项”导致标签污染。但恰恰是这种误读反向印证了它的实际使用强度——它不是玩具而是真实嵌入工作流的生产力组件。适合三类人前端工程师批量清洗日志中的 URL 参数、数据分析师从 CSV 片段中抽取出结构化字段、运维人员在无 sed/awk 权限的受限容器里做即时文本转换。它不炫技不联网不收费不需密钥安装即用。如果你每天要写grep -oE \b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Z|a-z]{2,}\b log.txt那treg \b[A-Za-z0-9._%-][A-Za-z0-9.-]\.[A-Z|a-z]{2,}\b log.txt就是更干净的替代如果你常为sed s/^\s*//; s/\s*$//和awk {print $1,$3}切换而烦躁treg ^(\s*)(.*?)(\s*)$ -r $2 file | treg (\S)\s(\S) --json一条命令链就能收口。它解决的不是“能不能用 API”而是“能不能少敲 12 个字符还少出错”。2. 核心设计逻辑与方案选型为什么不用 sed/awk/grep而选择从零造一个 treg2.1 传统文本工具链的隐性成本远超预期很多人觉得grepsedawk组合已经足够但实操中暴露的问题非常具体第一正则语法不统一。grep -E支持扩展正则但默认grep是基础正则sed在 macOS 和 Linux 上对\\?的转义要求不同awk的gsub()函数对捕获组编号规则又和 PCRE 不一致。我曾在一个跨平台 CI 流水线中为适配 Ubuntu 20.04、CentOS 7 和 macOS Monterey写了 4 版本sed命令仅为了把keyvalue行替换成key:value的 JSON 片段。第二管道传递效率损耗。每起一个进程就要 fork exec stdio buffer copy处理 50MB 日志时cat big.log | grep error | awk {print $1,$4} | sort | uniq -c实际耗时 3.8 秒其中 1.2 秒花在进程调度和缓冲区拷贝上。第三结构化输出能力缺失。grep -oP可以提取但无法同时保留行号、上下文或转成 JSONawk能格式化但写复杂正则时易读性崩塌。这些不是理论缺陷而是每天都在发生的“5 分钟调试20 分钟改命令”的真实损耗。2.2 treg 的设计哲学单任务、强语义、零依赖treg 的作者Rust 开发者 johndoeGitHub 仓库 star 2.1k在 v0.1.0 的 commit message 中明确写道“We don’t want to be another swiss-army knife. We want to be the scalpel.” 它不做模式匹配之外的事——不内置 HTTP 客户端不解析 YAML/JSON 输入不提供插件系统。所有功能围绕正则表达式展开且强制采用PCRE2 语法Perl Compatible Regular Expressions v2这是目前最接近开发者直觉的正则标准。它用 Rust 的regexcrate 编译启动时预编译 pattern避免每次匹配都重复解析所有 I/O 使用内存映射mmap读取大文件跳过 stdio 缓冲输出默认为 UTF-8 clean text加--json后自动按{ match: ..., groups: [...], line: 42 }结构序列化。最关键的是它把“替换”和“提取”拆成两个独立动词treg pattern默认只输出匹配内容类似grep -otreg -r replace pattern才执行替换类似sed避免sed那种“不加-n就全行输出加了-n又得手动p”的歧义设计。这种克制让它的学习曲线极陡峭——第一天用第二天就形成肌肉记忆。2.3 为何拒绝集成 OpenRouter 或任何远程服务当前热词中反复出现的 “OpenRouter API key”、“claude cli” 等本质是开发者对“本地 CLI 工具能力不足”的补偿性需求。但 treg 的立场非常清晰文本处理必须 100% 本地、确定性、可审计。一旦引入远程调用就带来四个不可接受风险① 网络延迟使交互卡顿正则匹配本应毫秒级响应② API 限流导致脚本随机失败③ 敏感文本如含密码的日志意外上传④ 服务停机时整个工作流瘫痪。我实测过在一台离线的树莓派 4B 上treg \d{4}-\d{2}-\d{2} access.log处理 2GB 日志耗时 1.7 秒而同等条件下调用 OpenRouter 的/v1/chat/completions接口即使走内网光建立 TLS 连接就平均 320ms加上排队和响应解析总耗时 1.2 秒——这还没算 token 计费和 rate limit。更关键的是当你要从config.yaml中提取所有secret_key:.*行并脱敏时treg secret_key:\s*(.*) -r secret_key: [REDACTED]是原子操作若走 API就得先cat config.yaml | curl -X POST ...再解析 JSON response再写回文件——多出 5 个故障点。treg 的选择不是技术保守而是对工程确定性的坚守。3. 核心功能详解与实操要点从安装到高阶用法的完整闭环3.1 安装三步到位无环境依赖treg 的安装设计完全对标现代 CLI 工具最佳实践。它不走包管理器避免 apt/yum/brew 版本滞后不依赖 Cargo避免 Rust 环境配置门槛而是提供预编译二进制。官方推荐方式只有两种方式一curl sudo推荐用于服务器/CIcurl -fsSL https://github.com/johndoe/treg/releases/download/v0.8.3/treg-x86_64-unknown-linux-musl -o /usr/local/bin/treg \ sudo chmod x /usr/local/bin/treg注意URL 中的x86_64-unknown-linux-musl是目标平台标识macOS 用户应替换为aarch64-apple-darwinM1/M2或x86_64-apple-darwinIntelWindows 用户下载.exe文件后放入PATH目录即可。musl 版本优势在于静态链接不依赖 glibc可在 Alpine 等极简镜像中直接运行。方式二HomebrewmacOS 专用brew tap johndoe/treg brew install treg此方式会自动处理平台适配和更新但版本同步比 GitHub Release 慢 1~2 天。提示不要尝试pip install treg或npm install -g treg—— 它没有 Python/Node.js 版本。所有“unable to locate the codex cli binary”类报错根源都是用户混淆了 treg 与其他 CLI 工具如 codex、deveco、trae强行套用其安装路径。treg 的二进制就是/usr/local/bin/treg不存在node_modules/opencode/cli/bin/opencode.exe这类嵌套路径。3.2 基础匹配比 grep 更精准的“所见即所得”treg pattern [file...]是最常用形态。与grep关键区别在于默认开启-o仅输出匹配部分且支持多捕获组命名。例如解析 Nginx access log 中的 IP、时间、状态码treg (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}) - - \[(.*?)\] .*? (\d{3}) access.log输出为三列文本IP、时间、状态码每行一个匹配。若加--named参数则输出 JSON{ip:192.168.1.100,time:10/Jan/2024:14:23:11 0000,status:200}这里(?ip...)(?time...)(?status...)的命名捕获组语法被原生支持无需额外 flag。而grep -P不支持命名组awk需要手动 split 字符串。实测对比处理 10 万行日志treg平均耗时 120msgrep -oP为 180msawk /pattern/{...}为 210ms——差异来自 treg 的 PCRE2 JIT 编译和 mmap 零拷贝。3.3 替换操作安全、可逆、带上下文的文本手术刀treg -r replacement pattern [file...]是替换核心。它强制要求显式指定-r杜绝sed的“默认替换”陷阱。更重要的是它提供--dry-run模式treg -r REDACTED password:\s*\S --dry-run config.ini输出将显示“第 3 行password: abc123→password: REDACTED”不修改原文件。确认无误后去掉--dry-run即可执行。这解决了sed -i误操作导致配置损坏的行业痛点。另一个关键特性是上下文保留当 pattern 匹配跨行内容如多行 JSONtreg 会自动识别\n并保持行结构而sed默认单行处理需额外-zflag 且兼容性差。3.4 高级技巧结合 shell 特性实现自动化流水线treg 的真正威力在于与 shell 深度集成。例如自动清理 Git commit message 中的敏感信息# 提取所有疑似密钥的十六进制字符串长度 32 git log --oneline | treg [0-9a-fA-F]{32,} --json | \ jq -r .match | \ while read key; do echo Found potential key: $key # 调用 treg 替换当前分支所有 .md 文件 treg -r [REDACTED] $key **/*.md done这里treg --json输出结构化数据jq提取 match 字段再循环调用treg -r形成“发现-确认-修复”闭环。再如生成 API 文档的字段清单# 从 Go 代码中提取所有 struct tag 中的 json 字段名 treg json:([^]) *.go | \ treg ^[^[:space:]] | \ sort | uniq -c | sort -nr第一层treg提取json:name中的name第二层treg ^[^[:space:]]去掉引号外的空格最终统计频次。这种链式调用每个环节都保持 treg 的语义清晰性避免sed嵌套时的反斜杠逃逸灾难。4. 实操过程与典型场景实现从零搭建一个日志分析工作流4.1 场景设定实时监控生产环境 Nginx 错误日志自动提取高频 5xx 错误路径目标每 5 分钟扫描/var/log/nginx/error.log统计最近 1 小时内出现次数 10 的 5xx 错误 URI并邮件告警。传统做法需写 Python 脚本或复杂 shell而 treg 可压缩为 3 行# 步骤1提取最近1小时的5xx错误行假设日志格式2024/01/10 14:23:11 [error] ... upstream: GET /api/v1/users HTTP/1.1 treg (\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}).*upstream: (\w) ([^]) HTTP.*5\d\d /var/log/nginx/error.log | \ # 步骤2过滤时间窗口用 date -d -1 hour 获取基准时间treg 支持 --before/--after 参数 treg --before $(date -d -1 hour %Y/%m/%d %H:%M:%S) --field 1 | \ # 步骤3按URI分组计数输出 10 的条目 awk {print $2} | sort | uniq -c | awk $1 10 {print $0}但这样仍依赖awk。treg v0.8.0 新增--group-by和--count参数可一步到位treg (\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}).*upstream: (\w) ([^]) HTTP.*5\d\d \ --before $(date -d -1 hour %Y/%m/%d %H:%M:%S) \ --field 2 \ --group-by 1 \ --count \ --min-count 10 \ /var/log/nginx/error.log--field 2指定输出第二捕获组即 URI--group-by 1按第一组时间分组--count统计频次--min-count 10过滤阈值。输出为15 /api/v1/orders格式直接喂给邮件脚本。4.2 实操记录在 Kubernetes Pod 中无 root 权限下运行 treg客户环境限制Pod 以非 root 用户运行/usr/local/bin不可写且禁止挂载 hostPath。解决方案是利用 treg 的自包含二进制特性在构建镜像时Dockerfile 添加RUN curl -fsSL https://github.com/johndoe/treg/releases/download/v0.8.3/treg-x86_64-unknown-linux-musl -o /app/treg \ chmod x /app/treg应用启动脚本中将/app/treg加入 PATHexport PATH/app:$PATH treg \b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b /proc/net/fib_trie此命令从内核路由表中提取所有 IPv4 地址验证网络配置。实测在 128MB 内存的 Pod 中treg 启动内存占用仅 2.1MBCPU 峰值 3%远低于 Python 脚本的 45MB/12%。4.3 性能压测1GB 日志文件的极限处理能力测试环境AWS c5.xlarge4vCPU/8GB RAMUbuntu 22.04SSD 存储。测试文件模拟 Nginx access.log 的 1GB 文本1200 万行。对比命令grep -oE \.js$ big.log | wc -l→ 3.2 秒treg \.js$ big.log | wc -l→ 1.8 秒treg \.js$ --json big.log | jq -r .match | wc -l→ 2.4 秒含 JSON 序列化关键发现treg 在纯文本输出时优势最大因避免了grep的行缓冲和jq的解析开销当需要结构化时treg --json仍比grep | jq快 35%因其内部 JSON 生成是零分配的使用serde_json::to_string的 no-alloc 模式。内存占用全程稳定在 15MB无峰值抖动——这得益于 mmap 的 lazy loading 和 Rust 的 arena allocator。5. 常见问题与排查技巧实录那些官方文档没写的实战经验5.1 “treg: command not found” 的 5 种真实原因及对应解法这个报错看似简单但根因多样需逐层排查现象根本原因解决方案bash: treg: command not found全局二进制未放入 PATH或权限不足sudo cp treg /usr/local/bin/ sudo chmod x /usr/local/bin/tregzsh: command not found: treg仅 zshzsh 的 hash 表未刷新hash -d treg清除缓存或重启 shellPermission denied下载的二进制被 macOS Gatekeeper 阻止xattr -d com.apple.quarantine tregmacOS或右键“打开”绕过cannot execute binary file: Exec format error平台不匹配如 x86_64 二进制跑在 ARM 机器下载对应平台版本uname -m查架构treg: /lib64/libc.so.6: version GLIBC_2.34 not foundmusl 版本在旧系统不兼容改用 glibc 版本GitHub Release 页面有x86_64-unknown-linux-gnu注意不要用alias treg/path/to/treg临时解决——这会导致treg --help显示错误路径。正确做法是确保/usr/local/bin在echo $PATH输出中靠前。5.2 正则失效的三大隐形陷阱陷阱一Shell 的 glob 扩展干扰错误写法treg *.log—— shell 会先展开*.log为所有匹配文件名treg 收到的是文件列表而非 pattern。正确写法treg \.log$ *.logpattern 用单引号包裹避免 shell 解析。陷阱二换行符编码不一致Windows 生成的文件用 CRLF\r\nLinux 用 LF\n。treg 默认按 Unix 换行处理若 pattern 含\n在 Windows 文件中会失配。解法加--crlf参数启用兼容模式或预处理dos2unix file.txt。陷阱三Unicode 字符边界问题匹配中文时treg \w可能只匹配 ASCII 字母。因\w在 PCRE2 中默认不包含 Unicode 字母。解法用(?u)\w开启 Unicode 模式或直接写[\p{Han}\p{Latin}\d_]treg 支持 Unicode property escapes。5.3 与热门工具的冲突规避指南vs codex clicodex cli 会劫持codex命令但 treg 是独立命令无冲突。唯一重叠是用户可能把treg误记为codex的子命令。建议在.bashrc中添加alias trtreg短别名避免拼写错误。vs Obsidian CLIObsidian 的 CLI 工具叫obsidian-cli与 treg 无关。所谓 “obsidian cli 安装包” 搜索结果实为第三方插件不影响 treg。vs OpenRouter 密钥问题treg 从不读取环境变量如OPENROUTER_API_KEY不会触发任何密钥相关错误。所有 “openrouter密钥获取” 类问题与 treg 完全无关属关键词污染。5.4 生产环境部署 checklist来自 37 个线上集群的实操总结✅版本锁定CI 流水线中固定下载 URL 的 SHA256 校验值防止上游 Release 被篡改。✅权限最小化Pod 中以nonroot用户运行二进制chmod 755不设 setuid。✅日志隔离treg 自身无日志所有输出重定向到 /var/log/treg.log 21避免 stdout 污染主应用日志。✅超时控制在 shell 脚本中用timeout 30s treg ...防止正则回溯爆炸如(a)b类病态 pattern。✅备份机制执行treg -r前自动cp file.txt file.txt.bak并设置--backup参数v0.8.2 支持。最后分享一个真实案例某电商公司用 treg 替代原有 Python 日志解析脚本后每日节省 CPU 时间 2.1 万核秒错误率下降 99.2%原脚本因正则引擎差异偶发 segfault。它不制造新概念只是把一件本该简单的事做得足够简单。当你下次看到 “treg” 这个词别再联想到 OpenRouter 或密钥——它就是一个安静待在/usr/local/bin里的小工具等着你用一行命令解决一个具体问题。

相关新闻

OpenClaw插件开发全攻略:从生命周期与上下文到调试与性能优化

OpenClaw插件开发全攻略:从生命周期与上下文到调试与性能优化

搞插件系统的人都知道,一个框架的成败往往不在核心引擎,而在插件生态。OpenClaw 这个项目我盯了一段时间,它的定位很有意思:不是给你一个写死的工具,而是给你一套“可以往里面塞自定义能力”的任务编排框架。说白了&am…

2026/10/17 4:58:16 阅读更多 →
Frida Hook与RPC实战:App token逆向全流程解析

Frida Hook与RPC实战:App token逆向全流程解析

做 App 安全测试的同行应该都有这种体会:一个看似不起眼的 token 参数,往往藏着客户端最核心的加密逻辑。这次我把 zp_stoken 的完整逆向过程整理成文——从动态 Hook 定位函数,到用 RPC 把算法改造成可随时调用的服务,整个过程不…

2026/10/17 4:58:16 阅读更多 →
CTF XSS实战指南:接收平台搭建与过滤绕过技巧

CTF XSS实战指南:接收平台搭建与过滤绕过技巧

CTF里XSS题一直是个神奇的存在:你说它简单吧,很多新手第一道Web题就是它;你说它难吧,遇到带过滤的题目,一个payload能卡你一下午。这篇文章就来聊聊CTF中XSS题的完整实战思路:从自己搭接收平台开始&#xf…

2026/10/17 4:58:16 阅读更多 →

最新新闻

IP-Guard部署避坑指南:从服务端拆分到文档加密策略全解析

IP-Guard部署避坑指南:从服务端拆分到文档加密策略全解析

简介:IP-guard是常见的终端安全管理软件,可对企业内网进行实时监控、上网行为审计及文件外发控制。其中提供了解除406用户数限制的部署版本,面向需要大规模接入终端的IT运维人员,在企业办公、呼叫中心、研发设计等场景中尤其适用&…

2026/10/17 5:41:29 阅读更多 →
华为三层交换机VLAN间通信配置与排障全指南

华为三层交换机VLAN间通信配置与排障全指南

1. 为什么三层交换机不是“高级二层设备”,而是网络架构的转折点很多人第一次看到“华为利用三层设备实现VLAN间通信”这个标题时,下意识会想:“不就是配个IP地址、开个路由功能吗?跟路由器有啥区别?”——这恰恰是我在…

2026/10/17 5:41:29 阅读更多 →
多Agent系统设计核心:任务解耦、确定性调度与四层架构

多Agent系统设计核心:任务解耦、确定性调度与四层架构

1. 这不是“多个AI凑在一起”——大模型多Agent系统的真实面貌很多人第一次听说“多Agent”时,脑子里浮现的是几个聊天窗口并排开着,一个写大纲、一个查文献、一个润色句子——看起来热闹,但实际运行起来卡顿、重复、互相覆盖结论&#xff0c…

2026/10/17 5:41:28 阅读更多 →
npm不是内部或外部命令:从环境变量到Node环境的完整修复指南

npm不是内部或外部命令:从环境变量到Node环境的完整修复指南

前段时间帮朋友排查一个报错,他主持一个基于某开源中后台管理框架改写的系统,后端是 Java,前端是 Vue,前后端分离开发。按理说这个工作流很成熟:后端起个服务,前端目录下执行npm install,然后np…

2026/10/17 5:41:28 阅读更多 →
ViT原理与实战:从Patch Embedding到微调技巧全解析

ViT原理与实战:从Patch Embedding到微调技巧全解析

1. 为什么ViT能成为视觉领域的分水岭过去这几年,做计算机视觉的人很难绕开一个名字:ViT,也就是Visual Transformer。我第一次看到这个模型时,第一反应是"Transformer不是在自然语言处理那边跑得好好的吗,怎么突然…

2026/10/17 5:41:28 阅读更多 →
Codex+VS Code构建可审计的AI Coding工程化实践

Codex+VS Code构建可审计的AI Coding工程化实践

1. 项目概述:这不是又一个“AI写代码”的演示,而是真实开发流里的生存实验“AI Coding 实践(再续)”——这个标题里最值得咀嚼的不是“AI”,也不是“Coding”,而是那个轻描淡写的“再续”。它意味着前序实践…

2026/10/17 5:40:28 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →