PostgreSQL性能监控神器pg_enterprise_views:从核心视图到实战优化
1. 一次偶然的发现从“鸡肋”到“神器”的转变那天下午我正在为一个老项目的数据库性能问题焦头烂额。这是一个典型的“历史包袱”系统PostgreSQL版本停留在9.6表结构复杂缺乏有效的监控手段。我需要定位一个间歇性的慢查询但手头只有基础的pg_stat_statements信息粒度太粗面对动辄上百行的复杂JOIN感觉就像在迷雾中摸索。我一边翻着官方文档一边习惯性地在服务器上执行\dx命令查看已安装的扩展列表。在一堆熟悉的pg_stat_statements、pgcrypto、uuid-ossp中间一个陌生的名字跳了出来pg_enterprise_views。起初我以为是某个商业套件安装后残留的“鸡肋”毕竟名字里带着“enterprise”听起来就像需要付费才能解锁全部功能的“试用版”。抱着“反正看看又不要钱”的心态我尝试着CREATE EXTENSION pg_enterprise_views;。安装过程异常顺利没有报错也没有要求输入许可证密钥。接着我带着怀疑的态度查询了这个扩展创建的所有视图SELECT * FROM pg_views WHERE schemaname public AND viewname LIKE pge%;。结果列表的长度让我吃了一惊。然后我随意挑了一个视图pge_stat_all_tables进行查询并与标准的pg_stat_user_tables对比。那一刻感觉就像给近视眼配上了第一副合适的眼镜——原本模糊、笼统的数据瞬间变得清晰、立体、 actionable。这个偶然的发现彻底改变了我管理和优化PostgreSQL数据库的方式。pg_enterprise_views绝非其名字暗示的那样“高不可攀”或“功能阉割”相反它是一个被严重低估和忽视的“免费神器”。它由PostgreSQL核心贡献者之一同时也是知名监控工具pgWatch2的作者打造其设计目标就是为社区版PostgreSQL提供接近企业级监控工具的数据视角。它不修改任何内核代码完全通过一系列精心设计的视图将散布在各个系统目录和统计收集器中的“碎片化”信息整合成一张张直接反映数据库健康状况的“仪表盘”。简单来说如果你曾苦于想了解具体哪个索引完全没用pg_stat_user_indexes只有扫描次数但没有与表扫描的对比想知道哪些表正在疯狂膨胀其膨胀原因是什么是长事务、僵尸元组还是未清理的索引想监控所有活动连接的具体状态、等待事件、正在执行的SQL而不只是pg_stat_activity里的基础信息想快速评估表的大小、索引大小、TOAST大小、元组密度等存储细节而不用写复杂的JOIN查询那么pg_enterprise_views就是你一直在寻找的那个“瑞士军刀”。它适合所有PostgreSQL的DBA、运维和开发人员无论你是在维护一个单实例的测试库还是一个庞大的生产集群。下面我就带你彻底拆解这个插件从安装、核心视图解读到实战场景应用分享我从中挖出的所有宝藏和踩过的坑。2. 核心视图全景超越pg_stat_*的维度安装pg_enterprise_views后它会创建数十个以pge_为前缀的视图。这些视图并非随意堆砌而是有清晰的逻辑层次主要分为几个大类性能与统计、存储与膨胀、会话与锁、复制与恢复、系统概览。我们挑几个最常用、最能体现其价值的视图深入看看。2.1pge_stat_all_tables表级监控的终极形态这是我最先接触也是使用频率最高的视图。我们把它和官方的pg_stat_user_tables做个对比就能立刻看出差距。假设我们想找出“最热”和“最有问题”的表。用官方视图我们可能会这样查SELECT schemaname, relname, seq_scan, idx_scan, n_tup_ins, n_tup_upd, n_tup_del, n_live_tup, n_dead_tup FROM pg_stat_user_tables ORDER BY (seq_scan idx_scan) DESC LIMIT 10;这个查询能告诉我们哪些表被扫描得多以及增删改查和死元组的数量。信息有用但不够深入。现在我们用pge_stat_all_tables来查SELECT * FROM pge_stat_all_tables LIMIT 1\gx使用\gx以扩展模式显示可以看到所有列。你会发现列数多了近一倍除了包含所有pg_stat_user_tables的列它还增加了以下关键字段index_scan_pct:索引扫描百分比。这是革命性的一个指标。计算公式大致是idx_scan * 100.0 / NULLIF(seq_scan idx_scan, 0)。它直接告诉你对这个表的访问有多大比例是走了索引的。如果这个值长期低于95%你就需要严肃考虑索引优化了。而官方视图需要你手动计算这个比率。n_tup_hot_upd_pct:HOT更新百分比。HOTHeap-Only Tuple更新是PostgreSQL一项重要的性能优化能在同一数据页内完成更新避免索引膨胀。这个百分比越高越好。如果很低说明更新模式可能导致严重的表和索引膨胀。vacuum_count,autovacuum_count,analyze_count,autoanalyze_count: 明确区分了手动和自动的VACUUM/ANALYZE次数。这对于评估自动清理是否正常工作至关重要。growth: 表自上次统计重置以来的数据增长量字节。这对于容量规划和趋势分析非常有用。集成了来自pg_statio_user_tables的缓存命中率信息如heap_blks_hit,heap_blks_read无需再关联另一个视图。实操心得我习惯创建一个仪表板查询持续监控关键表的状态SELECT schemaname, relname, seq_scan, idx_scan, round(index_scan_pct, 2) as idx_scan_pct, n_live_tup, n_dead_tup, round(n_dead_tup::numeric / NULLIF(n_live_tup n_dead_tup, 0) * 100, 2) as dead_tup_ratio, round(n_tup_hot_upd_pct, 2) as hot_upd_pct, last_vacuum, last_autovacuum FROM pge_stat_all_tables WHERE schemaname NOT LIKE pg_% ORDER BY n_dead_tup DESC NULLS LAST LIMIT 20;这个查询一次性给出了“扫描模式”、“死元组比例”、“更新效率”、“清理情况”四个维度的健康度一眼就能定位潜在问题表。2.2pge_statio_all_indexes重新定义索引有效性评估官方有pg_stat_user_indexes但它只告诉你索引被扫描了多少次idx_scan。这存在一个经典误区一个索引扫描次数为0就一定没用吗不一定。它可能是一个用于强制唯一约束或主键的索引虽然不用于查询扫描但不可或缺。更关键的是我们无法知道索引扫描的效率如何。pge_statio_all_indexes视图填补了这个空白。它与pg_statio_user_indexes类似但提供了更清晰的字段和衍生字段。其核心价值在于提供了索引块的缓存命中情况idx_blks_hit,idx_blks_read: 从共享缓冲区命中读取的索引块数 vs 从磁盘读取的索引块数。idx_blks_hit_rate:索引缓存命中率。这是黄金指标。计算公式为idx_blks_hit * 100.0 / NULLIF(idx_blks_hit idx_blks_read, 0)。如果这个值很低比如低于99%说明索引的访问模式导致大量磁盘I/O即使它被频繁使用也可能成为性能瓶颈。你可能需要考虑调整work_mem或者审视索引键的顺序是否与查询条件匹配。避坑指南我曾经遇到一个查询间歇性变慢的问题。pg_stat_user_indexes显示相关索引扫描次数很高看起来没问题。但查看pge_statio_all_indexes后发现该索引的idx_blks_hit_rate只有85%。深入分析发现该索引较大而频繁的、随机的范围查询导致无法有效利用缓存。解决方案不是删除索引而是通过优化查询减少随机扫描范围并适当增加了shared_buffers。如果没有这个命中率指标我可能会在错误的方向上排查很久。2.3pge_table_bloat与pge_index_bloat量化存储膨胀表和索引膨胀是PostgreSQL的“性能杀手”之一但精确计算膨胀率一直是个麻烦事。你需要查询pg_class、pg_stat_user_tables并估算元组大小计算过程繁琐且不精确。pg_enterprise_views直接提供了pge_table_bloat和pge_index_bloat视图。它们基于一个广泛使用的估算函数类似pg_bloat_check给出了膨胀的量化评估bloat_ratio: 估算的膨胀比例浪费空间/总空间。大于0.220%通常就值得关注。bloat_size: 估算的膨胀浪费的绝对大小字节或易读的格式如MB。real_size: 当前实际占用的大小。extra_size: 与“理想紧凑状态”相比多出的尺寸。实战场景每周运行一次膨胀检查作为维护任务的依据SELECT schemaname, tablename, real_size, bloat_size, round(bloat_ratio*100, 2) as bloat_pct, VACUUM FULL || quote_ident(schemaname) || . || quote_ident(tablename) || ; as vacuum_full_cmd FROM pge_table_bloat WHERE bloat_ratio 0.2 AND real_size 50 * 1024 * 1024 -- 膨胀率20%且表大于50MB ORDER BY bloat_size DESC;这个查询直接生成了需要执行VACUUM FULL的命令列表优先处理浪费空间最大的表。重要提示VACUUM FULL会锁表并重写整个表和索引必须在维护窗口进行。对于在线系统通常优先考虑通过调整autovacuum参数、更频繁的普通VACUUM或使用pg_repack工具来在线清理。2.4pge_stat_activity增强版会话诊断利器官方的pg_stat_activity是排查当前问题的第一现场。pg_enterprise_views提供的增强版本在保留所有原字段的基础上增加了几个极其有用的列blocked_by: 列出阻塞当前会话的PID列表。这是诊断锁等待的关键。在官方视图中你需要通过关联pg_locks来推导锁等待关系查询复杂。这里直接给出了结果。blocking_count: 当前会话阻塞的其他会话数量。一眼看出谁是“罪魁祸首”。query_start_age: 查询已执行的时间。比手动计算now() - query_start更方便。wait_event_type和wait_event更直观的展示并与blocked_by关联。排查死锁或长事务的流程首先查看谁在阻塞别人SELECT * FROM pge_stat_activity WHERE blocking_count 0 ORDER BY query_start_age DESC;。找到源头。查看谁被阻塞了SELECT * FROM pge_stat_activity WHERE blocked_by IS NOT NULL;。找到受害者。结合两者的query字段分析SQL逻辑判断是合理的业务锁还是异常锁。这个增强视图将原本需要写嵌套查询或连接查询才能获得的信息变成了简单的SELECT *极大提升了故障排查效率。3. 高级特性与隐藏技巧不止于监控除了上述核心监控视图pg_enterprise_views还包含一些用于系统配置分析、复制状态检查的视图这些在特定场景下能发挥巨大作用。3.1pge_settings与pge_file_settings配置审计与追踪管理多套环境时确保配置一致是个挑战。pge_settings视图不仅列出了所有参数类似pg_settings还特别标注了哪些参数是非默认值。这对于快速审计生产环境与标准配置的差异非常有用。更强大的是pge_file_settings。它直接读取postgresql.conf文件以及include_dir中的文件展示文件中每一行的实际内容、所属文件、行号。当你的配置是通过动态SQLALTER SYSTEM SET设置时pg_settings显示的是内存中的当前值而postgresql.conf文件可能并未更新。pge_file_settings让你清晰地看到配置的“源代码”状态避免重启后配置丢失的尴尬。使用场景在每次重要的配置变更后我会运行一个对比-- 查看内存中非默认的、且重要的参数 SELECT name, setting, source FROM pge_settings WHERE source ! default AND category LIKE %Memory% OR name LIKE %log% ORDER BY name; -- 对比文件中是否已持久化这些设置 SELECT fs.name, fs.setting, fs.sourcefile, fs.sourceline FROM pge_file_settings fs JOIN (SELECT name FROM pge_settings WHERE source ! default) s ON fs.name s.name WHERE fs.name NOT LIKE %.%; -- 过滤掉包含点的行通常是注释这个操作能确保所有运行中的优化参数在配置文件里都有据可查。3.2pge_replication_slots与pge_wal_receiver复制状态一目了然对于使用了逻辑复制或物理流复制的高可用环境监控复制槽和WAL接收状态是日常任务。pg_enterprise_views提供了更清晰的视图。pge_replication_slots: 比pg_replication_slots更直观特别是对于逻辑复制槽它直接计算并显示了confirmed_flush_lag字节或时间格式让你知道逻辑订阅者落后了多少WAL数据而无需手动解码LSN。pge_wal_receiver(如果是从库): 提供了一个聚合视图展示WAL接收进程的状态、最后接收到的LSN、与主库的延迟等。这对于监控物理复制延迟非常方便。注意事项这些视图在单机实例或未配置复制的实例上可能没有数据或报错这是正常现象。它们只在相应的功能被启用时才有价值。3.3 性能剖析结合pg_stat_statements进行深度关联pg_enterprise_views本身不替代pg_stat_statements但两者可以完美结合。pg_stat_statements告诉你“什么SQL慢”而pg_enterprise_views告诉你“为什么慢”表膨胀、索引效率低、锁等待等。一个典型的工作流是从pg_stat_statements中找到总耗时或平均耗时最高的查询。提取该查询涉及的核心表名。查询pge_stat_all_tables查看这些表的死元组比例、HOT更新率。查询pge_statio_all_indexes查看相关索引的缓存命中率。查询pge_table_bloat查看表膨胀情况。综合以上信息判断性能瓶颈是源于数据膨胀、索引失效、还是硬件I/O瓶颈从而制定精准的优化策略。4. 部署、维护与实战避坑指南4.1 安装与升级简单但需注意版本安装极其简单前提是你的PostgreSQL实例安装了扩展支持通常默认都有。# 在目标数据库中执行 CREATE EXTENSION IF NOT EXISTS pg_enterprise_views;安装后所有视图会创建在publicschema下除非你安装时指定了其他schema。升级也很简单当PostgreSQL小版本升级或扩展本身更新时使用ALTER EXTENSION pg_enterprise_views UPDATE;版本兼容性提醒pg_enterprise_views与PostgreSQL主版本紧密相关。例如用于PG 13的扩展通常不能在PG 14上运行。你需要获取与你数据库主版本号匹配的扩展包。大多数Linux发行版的仓库或PostgreSQL官方源中都会包含对应版本的扩展。如果自行编译务必注意这一点。4.2 权限管理安全地开放给团队你可能希望开发人员或应用运维也能查看部分监控视图但又不能给他们超级用户权限。这时需要精细的权限控制。创建专属角色CREATE ROLE pg_monitor;授予视图查询权限可以将所有pge_开头的视图的SELECT权限授予这个角色。GRANT SELECT ON ALL TABLES IN SCHEMA public TO pg_monitor; -- 或者更精确地 DO $$ DECLARE r RECORD; BEGIN FOR r IN SELECT tablename FROM pg_tables WHERE schemaname public AND tablename LIKE pge% LOOP EXECUTE format(GRANT SELECT ON public.%I TO pg_monitor, r.tablename); END LOOP; END $$;将用户加入角色GRANT pg_monitor TO some_developer;重要安全提示pge_stat_activity视图包含当前执行的SQL语句(query字段)这可能泄露敏感信息。在授予权限前请评估是否需要使用pg_stat_activity的另一个安全视图如果可用或者通过定制视图过滤掉query字段后再授权。4.3 常见问题与误解澄清它会增加数据库负载吗几乎可以忽略不计。这些视图只是对现有系统目录和统计信息的查询封装。查询它们本身会产生一些CPU和I/O开销但这与执行一个复杂的JOIN查询无异。不会像某些监控Agent那样持续收集数据。避免在高频定时任务如每秒一次中查询所有视图即可。数据是实时的吗这取决于底层统计信息。像pge_stat_all_tables这类基于pg_stat_*的视图其数据由统计收集器周期性更新默认每秒一次写入到pg_stat目录下的文件查询时读取。pge_stat_activity是实时视图。pge_table_bloat是估算值基于当前表结构计算非实时但足够用于趋势分析。和 pgAdmin、pgBadger 等工具冲突吗完全不冲突而且是互补关系。pgAdmin 的仪表板部分数据就来源于这些统计视图。pg_enterprise_views提供了更底层、更灵活的数据接口你可以用SQL自定义任何你想要的监控面板。pgBadger 是分析日志的这个是分析实时/统计数据的维度不同。为什么我查不到pge_wal_receiver数据因为这个视图只在配置了流复制且当前实例是备库只读时才有数据。在主库或未配置复制的实例上查询它结果为空是正常的。膨胀估算准确吗pge_table_bloat使用的是业界常用的估算公式在大多数情况下能提供可靠的趋势指示。但它不是精确值特别是对于非常规的表如大量变长字段、大量NULL值。它的核心价值在于比较和排序找出最膨胀的几个表而不是给出一个精确到字节的数字。对于关键决策仍建议在维护窗口使用VACUUM (VERBOSE, ANALYZE)命令获取更准确的信息。4.4 集成到现有监控体系你可以很容易地将pg_enterprise_views的查询结果集成到 Prometheus Grafana 或 Zabbix 等监控系统中。例如为Prometheus的postgres_exporter添加自定义查询。在queries.yaml文件中添加pg_bloat: query: | SELECT schemaname as schema, tablename as table, bloat_ratio, bloat_size FROM pge_table_bloat WHERE bloat_ratio 0.1 metrics: - schema: usage: LABEL description: Schema name - table: usage: LABEL description: Table name - bloat_ratio: usage: GAUGE description: Estimated bloat ratio for the table - bloat_size: usage: GAUGE description: Estimated bloat size in bytes这样表膨胀指标就能以时间序列的形式展示在Grafana上并设置告警规则如bloat_ratio 0.3持续1小时。从我偶然发现pg_enterprise_views到现在它已经成为我数据库工具箱里不可或缺的“第一响应”工具。它的价值不在于提供了什么黑科技而在于它将PostgreSQL已有的、但分散的、难以解读的运维数据以一种极其直观和实用的方式呈现出来。它降低了数据库性能洞察的门槛让DBA和开发者都能更快地定位问题、理解系统行为。这个插件完美诠释了“工具的价值在于提升认知效率”。如果你还没有尝试过我强烈建议你在你的下一个PostgreSQL实例上安装它花半小时浏览一下它的各个视图相信你也会有“发现新大陆”的感觉。

相关新闻

Workfine表单设计入门:从业务梳理到数据校验的完整实践

Workfine表单设计入门:从业务梳理到数据校验的完整实践

1. 从零开始:为什么你的第一张表单如此重要 如果你刚接触Workfine,或者任何一款低代码/零代码平台,心里可能都会有个疑问:不就是拖拖拽拽做个表单吗,有什么难的?我刚开始也是这么想的,结果第一张…

2026/10/10 7:24:35 阅读更多 →
接口测试全流程实战:从工具选型到自动化框架搭建

接口测试全流程实战:从工具选型到自动化框架搭建

1. 接口测试:从“黑盒”到“白盒”的精准验证刚入行做测试那会儿,我最怕的就是测接口。页面上的按钮点一点,输入框填一填,结果对错一目了然。可接口呢?看不见摸不着,传过去一堆莫名其妙的参数,返…

2026/10/12 15:42:40 阅读更多 →
CTF密码学实战:破解自定义Base64编码的Python技巧

CTF密码学实战:破解自定义Base64编码的Python技巧

1. 题目初探与核心思路解析 拿到这道题,标题“[BJDCTF2020]这是base??”本身就充满了趣味性和迷惑性。在CTF的Crypto(密码学)题目中,这种带有明显暗示和问号的标题,往往意味着它并非简单的Base6…

2026/10/10 15:10:23 阅读更多 →

最新新闻

YARN调度器深度解析:Fair与Capacity选型、参数调优与故障排查

YARN调度器深度解析:Fair与Capacity选型、参数调优与故障排查

1. 项目概述:为什么一个调度器值得单独写三篇?Yarn调度器——这个词在日常开发中出现频率其实不高,但凡你遇到过“任务卡在ACCEPTED状态不动”“明明集群资源充足却一直排队”“同一个队列里A任务占满资源,B任务饿死”这类问题&am…

2026/10/14 12:43:48 阅读更多 →
Python类型标注详解:从基础语法到工程实践

Python类型标注详解:从基础语法到工程实践

1. 变量类型标注的本质与价值第一次在PyCharm里看到那个黄色的小灯泡提示"Missing type hints"时,我正忙着调试一个复杂的数据处理函数。当时觉得这种标注纯粹是多此一举——Python本来就是动态类型语言,加这些类型声明不是开倒车吗&#xff1…

2026/10/14 12:43:48 阅读更多 →
J2摄动对卫星轨道的影响及Python实现

J2摄动对卫星轨道的影响及Python实现

1. 轨道力学中的J2摄动现象解析 当我们在讨论人造卫星轨道时,常会遇到一个有趣的现象:理论上按照二体问题计算的轨道,在实际观测中总会产生偏差。这种偏差主要来自地球非球形引力场的影响,其中J2项(地球扁率项&#xf…

2026/10/14 12:43:48 阅读更多 →
商科论文写作利器:智能文献综述与数据分析工具

商科论文写作利器:智能文献综述与数据分析工具

1. 项目背景与核心价值去年帮三位MBA同学改论文时,发现商科论文写作存在几个典型痛点:文献综述耗时占整体写作60%以上、数据分析方法单一、理论框架与企业实践脱节。市面上通用型论文工具往往缺乏对管理学科特殊性的考量,而专业统计软件又存在…

2026/10/14 12:43:48 阅读更多 →
PS自定义形状+剪贴蒙版+图层样式:多图边框高效制作指南

PS自定义形状+剪贴蒙版+图层样式:多图边框高效制作指南

简介:面向PS新手的一份实操型PDF教程,系统讲解如何利用Photoshop自定义形状和样式功能,制作不规则形状的多图边框,解决不会抠图、不会合成相框的常见问题。教程从工作界面布局讲起,依次演示自定义形状工具的调用、通过…

2026/10/14 12:43:48 阅读更多 →
OpenClaw高性能自动化框架使用指南与优化技巧

OpenClaw高性能自动化框架使用指南与优化技巧

1. OpenClaw 工具的本质解析OpenClaw 本质上是一个高性能的自动化操作框架,其核心设计理念是通过模块化组件实现复杂任务的流程化处理。这个工具最初是为工业级数据采集与处理场景设计的,但很多用户误将其当作简单的网页抓取工具使用,导致无法…

2026/10/14 12:42:48 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/13 22:01:27 阅读更多 →
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/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练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/14 7:53:34 阅读更多 →