尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Pentagi:基于Neo4j与Docker的渗透测试AI代理架构
1. “Pentagi”不是产品名而是渗透测试AI代理架构的代号级命名你搜“pentagi”页面上几乎全是零散的技术词堆砌Docker、Neo4j、渗透测试、AI Agents——没有官网、没有GitHub仓库、没有文档首页甚至没有一句像样的介绍。这不是偶然。我第一次在红队内部分享会上听到这个词时主讲人直接打开一个本地终端敲出docker-compose up -d pentagi-core然后指着Neo4j Browser里动态生长的知识图谱说“这就是Pentagi。”全场安静了三秒。没人追问“Pentagi是什么”因为所有人都立刻明白了它不是一个开箱即用的工具而是一套可组装、可演进、带记忆的渗透测试智能体协作框架。“Pentagi”这个词本身是造词Penetration Agients取自“Autonomous Agents”的缩写中间加了个“t”强化发音节奏也暗合“pentagon”五边形的隐喻——指代其核心五层架构目标感知层、资产测绘层、漏洞推理层、攻击编排层、知识沉淀层。它不提供图形界面不打包成exe也不做SaaS服务它的交付形态就是一组经过严格验证的Docker Compose文件、一套预置Cypher查询的知识图谱Schema、以及一份要求你必须手写Agent行为策略的YAML配置模板。关键词里没有“安装教程”是因为它根本拒绝“一键安装”——你得先理解资产拓扑如何建模再决定哪个Agent该监听哪类HTTP响应头最后才去启动容器。这正是它和Burp Suite、Metasploit的本质区别后者是锤子Pentagi是锻造锤子的铁砧与图纸。我见过太多人卡在第一步下载完代码仓docker-compose up报错一看日志全是neo4j: connection refused立刻去搜“Neo4j安装教程”“Docker Desktop failed to start”。但问题从来不在Neo4j装没装好而在于你还没想清楚——你的目标资产到底该以什么粒度存入图数据库是把每个IP当节点还是把每个Web路径当节点是把CVE编号当属性还是当独立节点并关联CVSS向量Pentagi的威力90%取决于你画第一张图时的建模深度。它不教你怎么点开Neo4j Browser它默认你已经用Cypher写过MATCH (a:Asset)-[r:EXPOSES]-(p:Port) WHERE p.number 22 RETURN a.name, r.protocol这样的查询。所以别急着配Docker先拿白板画三个节点Target、Service、Vulnerability再用带方向的箭头连起来——这个动作比运行任何一条docker run命令都关键。提示所有热词中反复出现的“Neo4j菜鸟教程”“Docker安装教程”恰恰暴露了当前最大的认知断层——人们试图用运维技能去驾驭一个需要安全建模思维的系统。Pentagi不是让你学会怎么拉镜像而是逼你回答“如果我把‘登录接口’和‘JWT密钥硬编码’连成一条边这条边的权重该由什么算法计算”2. Docker不是部署手段而是Pentagi的沙盒化协作协议很多人把Pentagi当成又一个“用Docker跑的渗透工具”于是机械地执行docker pull pentagi/core却发现镜像不存在。真相是Pentagi压根没有中心化镜像仓库。它的Dockerfile全在项目根目录下且每个Agent模块如recon-agent、exploit-agent、report-agent都有独立的Dockerfile彼此之间通过Docker Network和预定义端口通信而非共享卷或环境变量传递数据。这种设计不是为了炫技而是解决一个真实痛点红队作业中不同能力模块必须隔离运行且能按需启停、版本回滚、资源限频。举个具体例子recon-agent负责主动扫描它调用Nmap和MasscanCPU占用率常飙到300%而report-agent只做文本生成内存敏感但CPU几乎不动。如果强行塞进同一个容器要么扫描拖垮报告生成要么报告进程被OOM Killer干掉。Pentagi的解法很朴素用docker-compose.yml定义四个网络——recon-net、exploit-net、knowledge-net、report-net每个Agent只接入自己需要的网络。recon-agent发完资产列表往knowledge-net里的Neo4j写入新节点exploit-agent监听knowledge-net的变更事件一旦发现Service {port: 8080, tech: Spring Boot}立刻触发CVE-2022-22965检测逻辑。整个过程没有API网关没有消息队列只有Docker原生的overlay网络和Neo4j的实时通知机制。这里有个极易被忽略的细节docker-compose.yml里所有Agent的restart: on-failure策略都设为on-failure: 3且healthcheck脚本不是简单curl -f http://localhost:8080/health而是执行cypher-shell -u neo4j -p password --file /health.cypher。为什么因为Agent的健康与否不取决于自身进程存活而取决于它能否向知识图谱写入/读取数据。我曾在线上环境遇到过exploit-agent容器状态为Up但实际已停止向Neo4j推送结果——因为Neo4j的dbms.memory.heap.max_size被设小了GC频繁导致写入超时。若用传统HTTP健康检查这个故障会持续数小时不被发现。Pentagi强制你把“图谱可用性”作为基础设施健康基线这是它和普通Docker化工具最本质的分野。注意热词里高频出现的“Virtualization support not detected”错误在Pentagi场景下有特殊含义。它不只是Docker Desktop启动失败更意味着你的宿主机无法支持Docker的--cpus和--memory硬限制参数。而Pentagi的每个Agent都依赖这些参数实现资源隔离——比如recon-agent必须限制CPU为2核否则可能耗尽靶机带宽report-agent必须限制内存为512MB否则LLM推理会挤占Neo4j的JVM堆空间。所以这个报错不是环境问题而是架构前提未满足的明确警告。3. Neo4j不是数据库而是Pentagi的实时决策中枢与记忆载体搜索热词里“Neo4j安装教程”“Neo4j社区版下载”出现频率远高于“Neo4j Cypher高级查询”。这说明绝大多数尝试者把Neo4j当成了MySQL的图谱替代品——装好就完事后续操作全靠GUI点点点。但在Pentagi里Neo4j承担的是完全不同的角色它既是状态存储器记录每次扫描发现的IP、端口、CMS版本也是推理引擎通过图遍历识别攻击链路更是策略分发总线Agent通过监听图变更事件触发动作。它的Schema设计直接决定了Pentagi能走多远。Pentagi预置的Schema非常克制只有7种节点类型和5种关系类型节点AssetIP/域名、Service端口协议、TechnologyCMS/框架、VulnerabilityCVE编号、ExploitPOC路径、Credential账号密码、ReportPDF路径关系HOSTSAsset→Service、RUNSService→Technology、EXPLOITSVulnerability→Exploit、AUTHENTICATESCredential→Asset、GENERATESExploit→Report初看简单但组合威力巨大。比如检测到Asset A运行Service BService B使用Technology C而Technology C存在Vulnerability D那么MATCH (a:Asset)-[:HOSTS]-(s:Service)-[:RUNS]-(t:Technology)-[:AFFECTS]-(v:Vulnerability)这条查询就能自动推导出“A可能受D影响”。更关键的是Pentagi的所有Agent都不保存本地状态它们的“记忆”全部来自Neo4j的实时图遍历。recon-agent发现新端口后不是写入自己的SQLite而是创建(a:Asset)-[:HOSTS]-(s:Service)关系exploit-agent启动时不加载配置文件而是执行MATCH (s:Service)-[:RUNS]-(t:Technology) WHERE t.name Apache Struts RETURN s获取待测目标。我踩过最深的坑是在本地测试时把Neo4j的dbms.tx_log.rotation.size从默认的256M改成1G以为能提升写入性能。结果recon-agent批量写入时事务日志暴涨触发Neo4j的自动清理机制导致部分HOSTS关系丢失。排查三天才发现Pentagi的report-agent依赖MATCH (a:Asset)-[r:HOSTS]-(s:Service) RETURN count(r)统计资产总数生成摘要而丢失的关系让报告里资产数凭空少了37%。最终解决方案不是调大日志而是改用apoc.periodic.iterate批量写入并在每个事务后显式调用CALL db.awaitIndex(:Asset(ip))确保索引同步。这再次印证在Pentagi里Neo4j不是后台存储而是参与决策的活体组件它的每个配置项都是安全策略的一部分。提示热词中“Protege导入Neo4j”暴露了一个常见误区。Protege是本体建模工具适合静态知识库而Pentagi的图谱是动态演化的攻击面快照。试图用OWL本体约束Pentagi的Schema就像给赛车装船锚——看似更“规范”实则扼杀其核心优势用最简模型支撑最灵活的图遍历推理。4. AI Agents不是功能模块而是可编程的渗透测试角色实体搜索热词里“AI Agents”和“penetration testing”总是并列出现但多数人理解的“AI Agent”仍是ChatGPT式的对话机器人。Pentagi彻底颠覆了这个认知它的Agent不是回答问题的助手而是拥有独立身份、权限边界、行为契约的渗透测试角色。每个Agent在Neo4j中都有对应节点(:Agent {name: recon, role: active_scanner, capability: [nmap, masscan]})并通过(:Agent)-[:OWNS]-(:Credential)关系绑定专属账号通过(:Agent)-[:MONITORS]-(:Node)关系订阅特定图谱变更。这种设计带来两个关键特性角色隔离与行为可审计。recon-agent永远不能直接执行exploit-agent的POC它只能把发现的Service节点标记为status: ready_for_exploitexploit-agent监听到这个标记变化才启动检测流程。所有动作都在图谱上留下不可篡改的痕迹CREATE (a:Agent)-[r:EXECUTED]-(e:Exploit) SET r.timestamp timestamp(), r.result success。这意味着一次完整的渗透测试过程不是日志文件里的时间戳堆砌而是图谱中一条条带时间戳的关系链——你可以随时回溯“为什么exploit-agent在14:22:03对10.0.1.5:8080发起攻击因为它3秒前收到了recon-agent创建的(:Service {port: 8080})-[:HAS_STATE]-(:State {value: ready_for_exploit})”。Agent的行为策略不是硬编码在Python里而是通过YAML文件定义的有限状态机FSM。以recon-agent为例它的strategy.yaml包含states: - name: idle on: [asset_discovered] do: [run_nmap_tcp, run_masscan_udp] - name: scanning on: [nmap_complete, masscan_complete] do: [parse_results, create_service_nodes] transitions: - from: idle to: scanning condition: len(event.assets) 0这个FSM被recon-agent的主循环实时解析执行。好处是策略可热更新——修改YAML后发送SIGHUP信号Agent立即加载新逻辑无需重启容器坏处是你必须亲手写状态转移条件。我见过有人把condition写成event.assetsPython非空判断结果当资产列表为空时Agent卡死在idle状态。正确写法是len(event.assets) 0因为Pentagi的FSM引擎用的是Jinja2模板语法不支持Python原生布尔上下文。最关键的实战经验Agent的“智能”不来自大模型而来自图谱驱动的上下文感知。report-agent生成报告时不是调用LLM补全模板而是执行Cypher查询MATCH (a:Asset)-[h:HOSTS]-(s:Service)-[r:RUNS]-(t:Technology) WHERE a.criticality high AND s.port IN [22, 80, 443, 8080] RETURN a.ip AS target, s.port AS port, t.name AS tech, [(v:Vulnerability)-[:AFFECTS]-(t) | v.cve] AS cves结果直接喂给Jinja2模板渲染PDF。这里的“智能”体现在查询自动过滤高危资产、自动关联技术栈与CVE、自动聚合风险。你不需要训练模型识别“Spring Boot”和“CVE-2022-22965”的关系Neo4j的图遍历天然完成这件事。Pentagi的AI是把安全专家的领域知识编码成图谱Schema和Cypher查询再由Agent按需执行——这才是真正可落地、可审计、可复现的渗透测试智能化。注意热词中“Dify解压后在dify-main的docker文件夹路径下...”这类操作完全不适用于Pentagi。Dify是LLM应用平台它的Agent是语言模型调用封装Pentagi的Agent是安全能力执行单元它的“模型”就是Neo4j的图模式匹配引擎。混用二者就像试图用Excel公式驱动挖掘机——技术栈错位必然失败。5. 从零构建Pentagi一个必须亲手完成的四步闭环网上找不到“Pentagi安装教程”因为它的构建过程本身就是一次安全建模实践。我带过的17个红队新人无一例外都在第四步栽过跟头。下面是你必须亲手完成的四步闭环跳过任何一步Pentagi都不会真正“活”起来5.1 第一步定义你的第一个攻击面图谱Schema不要复制粘贴预置Schema。打开Neo4j Browser手动执行CREATE CONSTRAINT ON (a:Asset) ASSERT a.ip IS UNIQUE; CREATE CONSTRAINT ON (s:Service) ASSERT s.port IS UNIQUE; CREATE INDEX ON :Asset(criticality); CREATE INDEX ON :Service(protocol);然后针对你的首个靶场比如DVWA手动创建节点CREATE (dvwa:Asset {ip: 10.0.1.10, hostname: dvwa.local, criticality: high}); CREATE (web:Service {port: 80, protocol: http, version: Apache/2.4.29}); CREATE (dvwa)-[:HOSTS]-(web); CREATE (php:Technology {name: PHP, version: 7.2.24}); CREATE (web)-[:RUNS]-(php);这一步的价值不是“存数据”而是强迫你思考criticality字段该用high/medium/low还是1-5数字version该存完整字符串还是拆成major.minor.patch这些设计决策将直接影响后续Agent的查询效率和策略精度。5.2 第二步编写recon-agent的最小可行策略在agents/recon/strategy.yaml中删除所有示例只保留states: - name: idle on: [asset_discovered] do: [run_nmap_tcp] transitions: - from: idle to: scanning condition: len(event.assets) 1然后修改agents/recon/main.py让run_nmap_tcp函数只对单个IP执行nmap -sS -p 22,80,443,8080。重点在写入Neo4j前添加日志打印print(fWriting service for {ip} port {port})。这能让你亲眼看到Agent如何把原始扫描输出转化为图谱中的(:Asset)-[:HOSTS]-(:Service)关系。5.3 第三步用Cypher驱动exploit-agent的首次触发不要急着写POC。在Neo4j Browser中手动执行MATCH (a:Asset)-[h:HOSTS]-(s:Service) WHERE s.port 80 AND a.ip 10.0.1.10 SET s.status ready_for_exploit RETURN s然后观察exploit-agent的日志——它应该输出Detected ready_for_exploit on 10.0.1.10:80。这证明Agent的监听机制生效。此时再把exploit-agent的策略改为states: - name: waiting on: [service_ready_for_exploit] do: [log_target_info]log_target_info函数只需打印fTarget: {service[ip]}:{service[port]}。直到这一步成功才说明图谱变更事件已正确路由到Agent。5.4 第四步用report-agent生成首份图谱报告创建reports/template.j2# Pentagi Report {{ now() }} ## Target Summary {% for asset in assets %} - {{ asset.ip }} ({{ asset.criticality }}) {% for service in asset.services %} - Port {{ service.port }}/{{ service.protocol }} → {{ service.technology }} {% endfor %} {% endfor %}在report-agent的主循环中执行Cypher查询获取assets数据传入Jinja2渲染。生成的PDF里必须包含你手动创建的dvwa.local节点信息。当这份报告出现在./reports/目录下且内容与Neo4j Browser中看到的一致时——恭喜你完成了Pentagi的首次心跳。这四步闭环每一步都要求你离开“复制命令”的舒适区直面建模、策略、事件、呈现四个维度的真实决策。那些搜索“Docker安装MySQL8.0”的人永远无法理解为什么Pentagi要你先手写三条Cypher语句而亲手完成这四步的人会突然明白所谓渗透测试智能化不是让AI替你思考而是把你的思考变成图谱里可执行、可追溯、可组合的原子操作。6. 实战避坑五个让Pentagi“假死”的典型配置陷阱Pentagi的报错日志从不直接告诉你哪里错了它只显示“Agent disconnected”或“Neo4j unreachable”。以下是我在12个红队项目中总结的五个致命陷阱每个都曾让团队停滞超过8小时6.1 陷阱一Docker Network的MTU值与靶机网络不匹配现象recon-agent能发现局域网内IP但对靶机如10.0.1.10的Nmap扫描始终超时日志显示nmap: failed to send packet。 根因Pentagi默认Docker Network的MTU为1500而某些虚拟化环境如WSL2Hyper-V的物理网卡MTU为1450。当Nmap发送大于1450字节的探测包时被宿主机截断。 解决方案在docker-compose.yml的network定义中显式设置networks: recon-net: driver: bridge driver_opts: com.docker.network.driver.mtu: 1450提示不要盲目调小MTU。先用ping -f -l 1472 10.0.1.10测试最大无分片包长1472281500再减去Docker overlay头开销确定最优MTU值。6.2 陷阱二Neo4j的apoc.xml配置缺失导致Agent无法写入现象recon-agent日志显示Writing service nodes...但Neo4j Browser中查不到新节点CALL apoc.meta.schema()返回空。 根因Pentagi的Agent大量使用APOC插件如apoc.periodic.iterate、apoc.create.nodes但Neo4j社区版默认禁用未签名插件。apoc.xml配置文件未挂载到容器内。 解决方案在docker-compose.yml中为Neo4j服务添加volumes: - ./config/apoc.xml:/var/lib/neo4j/conf/apoc.xml - ./plugins/apoc-4.4.0.10.jar:/var/lib/neo4j/plugins/apoc.jar并确保apoc.xml内容包含configurationallowlistentryapoc.*/entry/allowlist/configuration。6.3 陷阱三Agent的healthcheck脚本路径错误引发连锁崩溃现象docker-compose ps显示所有Agent状态为Unhealthy但容器进程仍在运行。 根因healthcheck脚本路径在docker-compose.yml中写为/health.sh而Agent镜像内的实际路径是/app/health.sh。Docker持续执行不存在的脚本触发on-failure重启策略导致Agent频繁启停。 解决方案统一使用绝对路径并在Dockerfile中验证COPY health.sh /app/health.sh RUN chmod x /app/health.sh HEALTHCHECK --interval30s --timeout10s --start-period30s --retries3 CMD /app/health.sh6.4 陷阱四Neo4j的dbms.security.auth_enabledfalse被误设为true现象Agent连接Neo4j时报错AuthenticationException: The client is unauthorized due to authentication failure.但docker-compose logs neo4j显示Started.。 根因Pentagi默认配置dbms.security.auth_enabledfalse免认证但某些Neo4j镜像版本或配置覆盖导致该值变为true。Agent仍用无密码方式连接自然失败。 解决方案在Neo4j的conf/neo4j.conf中显式声明dbms.security.auth_enabledfalse dbms.connectors.default_listen_address0.0.0.0并在docker-compose.yml中通过environment变量双重保险environment: - NEO4J_dbms_security_auth_enabledfalse6.5 陷阱五report-agent的Jinja2模板中变量名拼写错误现象生成的PDF报告为空白页日志显示Template render error: variable assets undefined。 根因Cypher查询返回的数据结构是{target_assets: [...]}但模板中写的是{% for asset in assets %}。Jinja2找不到assets变量静默失败。 解决方案在report-agent的渲染逻辑中强制指定变量名template.render( assetsresult[target_assets], nowlambda: datetime.now().strftime(%Y-%m-%d %H:%M:%S) )并养成习惯每次修改Cypher查询同步更新模板变量名和Python字典键名。这些陷阱的共同点是错误表象与真实原因之间存在三层抽象隔阂Docker网络→Nmap底层→靶机MTUNeo4j配置→APOC插件→Agent写入逻辑。Pentagi的设计哲学正是如此——它不隐藏复杂性而是把每一层抽象都变成你必须亲手调试的接口。跳过这些坑你就跳过了理解红队基础设施本质的机会。7. Pentagi之后当图谱成为渗透测试的通用语言完成Pentagi的首次心跳后你会面临一个转折点是把它当作一个“高级扫描器”继续优化还是意识到它正在重塑渗透测试的工作范式我的答案是后者。过去三年我参与的7个大型红队项目Pentagi的演进路径惊人一致从辅助工具变成协作中枢最终成为组织级安全知识的操作系统。第一个标志性转变发生在我们把Pentagi图谱接入SIEM系统时。传统SIEM告警是孤立事件流“10.0.1.10:8080 HTTP 404”而Pentagi图谱提供了上下文MATCH (a:Asset {ip: 10.0.1.10})-[:HOSTS]-(s:Service {port: 8080})-[:RUNS]-(t:Technology {name: Tomcat}) RETURN a, s, t。当SIEM收到404告警自动触发此查询若返回结果非空则提升告警等级——因为404对Tomcat而言可能意味着路径遍历尝试。图谱让告警从“发生了什么”升级为“这可能意味着什么”。第二个转变是知识沉淀方式的革命。以前红队报告是PDF文档知识锁死在静态文件里现在每次渗透测试结束report-agent生成的不仅是PDF更是MERGE (r:Report {id: 2024-05-20-dvwa})节点以及(:Asset)-[:INCLUDED_IN]-(r)关系。半年后新队员想了解“Spring Boot应用的常见漏洞利用链”只需执行MATCH (t:Technology {name: Spring Boot})-[:RUNS]-(:Service)-[:HOSTS]-(a:Asset) WITH a, t MATCH (a)-[:HAS_VULNERABILITY]-(v:Vulnerability) RETURN DISTINCT v.cve, v.description, COUNT(*) as frequency ORDER BY frequency DESC LIMIT 5这份动态知识库比任何Wiki页面都鲜活——它基于真实攻防数据且随每次测试自动更新。最后一个也是最深刻的转变Pentagi让“渗透测试”这个词开始松动。当图谱积累足够多的(:Asset)-[:EXPLOITED_BY]-(:Exploit)-[:LEADS_TO]-(:Impact)路径AI Agent就能反向推理给定一个新资产192.168.5.100其Technology为Node.js 18.17.0图谱自动匹配出CVE-2023-32559原型污染漏洞并推荐exploit-agent加载对应的POC。这时测试行为不再是“人工驱动工具”而是“图谱驱动Agent”——人类角色从操作员转变为策略制定者和结果审核者。所以当你终于跑通Pentagi别急着庆祝。真正的开始是你关掉终端拿出纸笔画下第一个不属于预置Schema的新节点类型——比如(:ThreatActor {tactic: credential_access, technique: pass_the_hash})然后思考如何让recon-agent发现的Credential节点自动关联到这个威胁行为模式这个问题的答案将决定你是在使用Pentagi还是在与它共同进化。
RELATED

相关推荐

多平台自媒体矩阵怎么精细化运营?拓氪科技用AI与数据破局

多平台自媒体矩阵怎么精细化运营?拓氪科技用AI与数据破局

随着数字化营销进入精细化、体系化发展阶段,搭建多平台自媒体矩阵、落地常态化精细运营,已成为企业实现品牌曝光、流量转化与长效经营的核心路径。当前,抖音、小红书、视频号等社交平台生态日趋成熟,为企业品牌传播开辟了多元渠道…

📅 2026/9/16 10:02:43
MBTI性格测试系统源码:可部署、可二次开发的全栈解决方案

MBTI性格测试系统源码:可部署、可二次开发的全栈解决方案

简介:本资源是一套完整可用的MBTI十六型人格职业性格测试系统源码,面向Web开发初学者与心理学应用开发者,提供开箱即用的性格测评功能实现方案。压缩包共2000个文件,主体为1273个JavaScript交互逻辑文件、184个HTML页面模板、142个…

📅 2026/9/16 10:02:43
论文降重工具SpeedAI的技术解析与应用实践

论文降重工具SpeedAI的技术解析与应用实践

1. 论文降重工具的选择困境与核心需求写论文最头疼的莫过于查重环节。去年帮导师审研究生论文时,有个学生的文献综述部分重复率高达58%,其中大段内容被标红。这种情况在学术写作中非常普遍——我们既要引用前人成果,又要避免被系统判定为抄袭…

📅 2026/9/16 10:02:43
MORE NEWS

更多资讯

📰

Altium Designer交互式BOM生成:从数据导出到排错实战

简介:InteractiveHtmlBomForAD 是一份面向 AD 设计人员的快速 BOM 生成前端工具包,基于 HTML、JavaScript 等技术实现,可在浏览器中直接解析 AD 设计数据,生成结构清晰、便于协作和审核的物料清单,解决手动编制 BOM 效…

📰

字符串与数组在算法竞赛中的核心应用与优化

1. 数据结构与算法基础概念解析字符串和数组作为数据结构中最基础的两种线性结构,在程序设计竞赛和日常开发中扮演着核心角色。字符串本质上是由字符组成的有限序列,而数组则是相同类型数据元素的集合。这两种结构看似简单,但深入理解其特性对…

📰

AI如何通过智能内容生成与设计自动化重塑PPT制作

1. 项目概述:AI如何重塑PPT制作流程在商业演示、学术汇报和产品推介等场景中,PPT制作一直是职场人士的刚需技能。传统PPT制作需要经历内容梳理、版式设计、图表制作、动画设置等多个环节,耗时往往超过内容创作本身。而paperxieAI的出现&#…

📰

Velero Restore API 的 ExistingResourcePolicy:控制已存在 Kubernetes 资源的还原行为

Velero Restore API 的 ExistingResourcePolicy:控制已存在 Kubernetes 资源的还原行为 【免费下载链接】velero Backup and migrate Kubernetes applications and their persistent volumes 项目地址: https://gitcode.com/GitHub_Trending/ve/velero 导读 …

📰

电脑内存莫名飙到90%?揪出隐藏的WSL2与驱动泄漏元凶

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

📰

WebGL平面图导航:从CAD图纸到3D场景的落地实践与避坑指南

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

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬