C++ TensorRT Edge-LLM 边缘推理框架:从原理到实战
1. 为什么需要 Edge-LLM 边缘推理
随着大语言模型(LLM)的快速发展,云端推理的延迟、带宽和隐私问题逐渐暴露。将模型部署到终端、边缘网关或嵌入式设备上,可以实现低延迟响应、离线可用和数据不出域,这正是 Edge-LLM 的核心价值。NVIDIA TensorRT 通过层融合、量化、内核自动调优等技术,使大模型在 Jetson 等边缘设备上也能高效运行。
2. TensorRT 优化推理的核心原理
TensorRT 是 NVIDIA 推出的高性能深度学习推理优化器和运行时。它通过以下关键手段加速模型:
- 层融合与张量融合:将多个可合并的层(如 Conv+BN+ReLU)合并为单一内核,减少内存访问和内核启动开销。
- 精度校准与量化:支持 FP16、INT8 甚至 INT4 推理,在几乎不损失精度的前提下显著降低计算量和内存占用。
- 内核自动调优:针对目标 GPU 的架构特性,自动选择最优的计算内核实现。
- 动态形状支持:通过 Optimization Profile 处理变长输入,满足 LLM 不同的序列长度需求。
3. Edge-LLM 框架概览
Edge-LLM 是一个面向边缘场景的轻量级大模型推理框架,通常提供以下能力:
- 模型导出与转换:将从 HuggingFace 等库得到的 PyTorch 模型转换为 ONNX,再构建为 TensorRT Engine。
- 推理引擎抽象:封装 TensorRT Runtime,提供简洁的 Load Engine、Run Inference、Post-processing 接口。
- Token 生成管理:实现 KV Cache、重复惩罚、停止词等生成策略。
- 资源管理:针对边缘设备内存有限的特点,管理上下文本窗口和显存分配。
4. C++ 集成 TensorRT Edge-LLM 实战
下面通过一个简化的 C++ 示例,展示如何加载一个 TensorRT Engine 并执行一次 LLM 推理。
4.1 加载 TensorRT Engine
#include "NvInfer.h" #include <iostream> #include <fstream> #include <vector> class RTInference { public: RTInference(const std::string& engine_path) { // 读取序列化引擎文件 std::ifstream file(engine_path, std::ios::binary); file.seekg(0, std::ios::end); size_t size = file.tellg(); file.seekg(0, std::ios::beg); std::vector<char> buffer(size); file.read(buffer.data(), size); // 创建 TensorRT runtime 并反序列化引擎 nvinfer1::IRuntime* runtime = nvinfer1::createInferRuntime(gLogger); engine_ = runtime->deserializeCudaEngine(buffer.data(), size); context_ = engine_->createExecutionContext(); } // ... 省略推理、内存管理等细节 private: nvinfer1::ICudaEngine* engine_; nvinfer1::IExecutionContext* context_; };4.2 执行单步推理
LLM 推理通常是自回归过程:每次输入当前的 token 序列,得到下一个 token 的 logits,再通过采样得到新 token 并拼接到输入。这里以一次前向传播为例:
void RTInference::infer(int32_t* input, int32_t* output, int seq_len) { // 分配输入输出 buffer(简单示例,实际需管理显存) void* buffers[2]; cudaMalloc(&buffers[0], seq_len * sizeof(int32_t)); cudaMalloc(&buffers[1], seq_len * vocab_size * sizeof(float)); // 拷贝输入到 GPU cudaMemcpy(buffers[0], input, seq_len * sizeof(int32_t), cudaMemcpyHostToDevice); // 执行推理 context_->executeV2(buffers); // 拷贝输出回 CPU cudaMemcpy(output, buffers[1], seq_len * vocab_size * sizeof(float), cudaMemcpyDeviceToHost); cudaFree(buffers[0]); cudaFree(buffers[1]); }4.3 KV Cache 管理
对于 LLM 的高效推理,必须实现 KV Cache 以避免重复计算。在 Edge-LLM 中通常使用 past_key_values 作为额外输入输出,存储每一层的键和值张量,并在每一轮生成时更新。由于篇幅限制,此处不展开全部代码,但基本思路是:首次推理后保存 KV,后续推理只输入最后一个 token,并传入之前的 KV。
5. 性能优化与部署建议
- 量化方案选择:优先尝试 INT8 量化,若精度损失明显再考虑 FP16。Jetson 设备上 INT8 推理速度可提升 2-4 倍。
- 多流并发:利用多个 CUDA Stream 实现请求并发处理,提高吞吐。
- 内存池预分配:启动时一次性分配最大推理所需显存,避免运行时反复 malloc/free。
- 使用专属编译选项:编译时指定目标 GPU 架构(如 -gencode=arch=compute_87,code=sm_87)以获得最佳内核性能。
- 模型超参数调整:适当减小 max_batch_size 或 max_sequence_length 可降低内存占用。
6. 总结
TensorRT Edge-LLM 为边缘设备上运行大语言模型提供了高效路径。通过 C++ 直接操作 TensorRT Runtime,可以获得最低的推理延迟和最佳的资源利用率。在实际项目中,结合模型量化、KV Cache、流并发等技术,能让 7B 甚至 13B 参数模型在 Jetson Orin 等设备上以可接受的交互速度运行。希望本文能帮助读者快速搭建自己的边缘推理框架。
https://github.com/andrerosla/nthday/blob/main/20260706_Ebsw7.md
https://github.com/phmat88/jfmqar/blob/main/20260706_ySPqD.md
https://github.com/andrerosla/ihymty/blob/main/20260706_AOpCT.md
https://github.com/phmat88/veyasu/blob/main/20260706_5Zaa7.md
https://github.com/andrerosla/cbyxsx/blob/main/20260706_7fmzT.md
https://github.com/phmat88/hybjkq/blob/main/20260706_Ae75W.md
https://github.com/mfitzhei/tqvbds/blob/main/20260706_z6Kol.md
https://github.com/ryinbale/jlvwup/blob/main/20260706_lfUB4.md
https://github.com/ossoyuker/zyqbmt/blob/main/20260706_Cc0HL.md
https://github.com/dakidsea/hxmnrn/blob/main/20260706_UoVs9.md
https://github.com/minkirl/wrwhfo/blob/main/20260706_ZdG4e.md
https://github.com/allenstano/uiuzjt/blob/main/20260706_29tNr.md
https://github.com/danielho24/kdemtv/blob/main/20260706_CdXLS.md
https://github.com/mfitzhei/tqvbds/blob/main/20260706_59m3b.md
https://github.com/mobileboy3/nqkywg/blob/main/20260706_SJX1V.md
https://github.com/bthaf2004/bkocaw/blob/main/20260706_8ZwDH.md
https://github.com/nurzon-dev/xjdsgn/blob/main/20260706_tQ0hb.md
https://github.com/aspokcanno/fraecr/blob/main/20260706_TXevT.md
https://github.com/asdfzdimua/jzbtxg/blob/main/20260706_fPw0A.md
https://github.com/clutch4gra/wwwoaw/blob/main/20260706_97XPg.md
https://github.com/brunofco/hlxljy/blob/main/20260706_JhUbp.md
https://github.com/angelodeis/fqexcl/blob/main/20260706_zgaub.md
https://github.com/codedatest/educwb/blob/main/20260706_hHVwp.md
https://github.com/zapiki/vuzqht/blob/main/20260706_8vZqu.md
https://github.com/moobeed/glaqyx/blob/main/20260706_J7EyS.md
https://github.com/fold98scen/dsejbt/blob/main/20260706_tH12Z.md
https://github.com/cbroend/yjecnj/blob/main/20260706_2g0ey.md
https://github.com/cratebone5/nompsy/blob/main/20260706_bvcWJ.md
https://github.com/peitto/fafcti/blob/main/20260706_QDK4Y.md
https://github.com/mindgate2/llcyzy/blob/main/20260706_xlL2w.md
https://github.com/flamingoun/mrztix/blob/main/20260706_dndLF.md
https://github.com/janttung/qwpsgv/blob/main/20260706_pcGX5.md
https://github.com/marcligen/blilbc/blob/main/20260706_FPGxr.md
https://github.com/leofaras/dbjkmg/blob/main/20260706_MmARU.md
https://github.com/cassibenal/ejdfwo/blob/main/20260706_8wWD7.md
https://github.com/minkirl/wrwhfo/blob/main/20260706_9DrBp.md
https://github.com/allenstano/uiuzjt/blob/main/20260706_6XvBF.md
https://github.com/ryinbale/jlvwup/blob/main/20260706_nnLSf.md
https://github.com/dakidsea/hxmnrn/blob/main/20260706_7v2Fj.md
https://github.com/danielho24/kdemtv/blob/main/20260706_1FCd0.md
https://github.com/ossoyuker/zyqbmt/blob/main/20260706_nrVmp.md
https://github.com/ilenagress/aobsux/blob/main/20260706_b8Bp6.md
https://github.com/brunofco/hlxljy/blob/main/20260706_D18Pw.md
https://github.com/nurzon-dev/xjdsgn/blob/main/20260706_G0XbF.md
https://github.com/angelodeis/fqexcl/blob/main/20260706_a4Y2W.md
https://github.com/bthaf2004/bkocaw/blob/main/20260706_oSFMa.md
https://github.com/mobileboy3/nqkywg/blob/main/20260706_elW26.md
https://github.com/mfitzhei/tqvbds/blob/main/20260706_nu8c5.md
https://github.com/aspokcanno/fraecr/blob/main/20260706_SjnRl.md
https://github.com/obuyrojeha/umshjk/blob/main/20260706_1B2Gk.md
https://github.com/wpajus/swhwkm/blob/main/20260706_hVcpJ.md
https://github.com/clutch4gra/wwwoaw/blob/main/20260706_BSWAU.md
https://github.com/prorive012/lhgwyb/blob/main/20260706_YLSgA.md
https://github.com/paulhardis/qlqsyn/blob/main/20260706_biwPt.md
https://github.com/moobeed/glaqyx/blob/main/20260706_Aip3X.md
https://github.com/codedatest/educwb/blob/main/20260706_ysgJa.md
https://github.com/asdfzdimua/jzbtxg/blob/main/20260706_ocFWa.md
https://github.com/zapiki/vuzqht/blob/main/20260706_EUYCW.md
https://github.com/vutadil/hjqvkz/blob/main/20260706_ovCjJ.md
https://github.com/sashisuney/tyhwyz/blob/main/20260706_BFtho.md
https://github.com/fold98scen/dsejbt/blob/main/20260706_wCkr4.md
https://github.com/mindgate2/llcyzy/blob/main/20260706_jWARV.md
https://github.com/peitto/fafcti/blob/main/20260706_3nHkE.md
https://github.com/cratebone5/nompsy/blob/main/20260706_fiMdh.md
https://github.com/cbroend/yjecnj/blob/main/20260706_R4LP3.md
https://github.com/flamingoun/mrztix/blob/main/20260706_qgurl.md
https://github.com/ashlaau/odxmsh/blob/main/20260706_ZwghE.md
https://github.com/snowfaiz/fcgxza/blob/main/20260706_dH4BO.md
https://github.com/ivelobesco/jwocon/blob/main/20260706_eOsMp.md
https://github.com/dhankarbec/wgmuvj/blob/main/20260706_mgU7O.md
https://github.com/fstaement/fzjhng/blob/main/20260706_Ao8m6.md
https://github.com/g85trm/lgeibt/blob/main/20260706_7eiL6.md
https://github.com/roundrich/ealnui/blob/main/20260706_XE8v3.md
https://github.com/jtempz/lzwtlt/blob/main/20260706_yUYCT.md
https://github.com/jichee2010/shsala/blob/main/20260706_DDEHP.md
https://github.com/djsstanius/itilod/blob/main/20260706_Bsm6H.md
https://github.com/shaanecolu/blrpbq/blob/main/20260706_dqoF9.md
https://github.com/note4srica/exeghk/blob/main/20260706_a8ESw.md
https://github.com/shenny3123/qsfqpr/blob/main/20260706_fWGkE.md
https://github.com/step06mirr/uqofwp/blob/main/20260706_HysCq.md
https://github.com/warozgro/qvcnxx/blob/main/20260706_DeYMT.md
https://github.com/ar0ymakers/homezu/blob/main/20260706_YoMSg.md
https://github.com/cassibenal/ejdfwo/blob/main/20260706_orVpT.md
https://github.com/room6nylon/mytnbj/blob/main/20260706_sc6a4.md
https://github.com/maid48loan/tznyjy/blob/main/20260706_NrrOS.md
https://github.com/zonarloma/modlgj/blob/main/20260706_vf9c6.md
https://github.com/forecharim/smyija/blob/main/20260706_hkOfi.md
https://github.com/lambert-de/psrrmo/blob/main/20260706_jxRur.md
https://github.com/brentchave/oqhiqz/blob/main/20260706_ip30R.md
https://github.com/week6toad/ytldaf/blob/main/20260706_Lzmtd.md
https://github.com/minkirl/wrwhfo/blob/main/20260706_FIwDH.md
https://github.com/singhshelt/pnwecy/blob/main/20260706_Uf2Ip.md
https://github.com/aspokcanno/fraecr/blob/main/20260706_ghELZ.md
https://github.com/riverearll/xdlwla/blob/main/20260706_Jgx18.md
https://github.com/exlantine/icjnrd/blob/main/20260706_Fwqhv.md
https://github.com/danielho24/kdemtv/blob/main/20260706_MDRvO.md
https://github.com/brunofco/hlxljy/blob/main/20260706_3nHlE.md
https://github.com/friloberto/xeztuj/blob/main/20260706_LswZt.md
https://github.com/dakidsea/hxmnrn/blob/main/20260706_z3gx1.md
https://github.com/wpajus/swhwkm/blob/main/20260706_EsCqA.md
https://github.com/mhxcentin/zxpmam/blob/main/20260706_PwWDa.md
https://github.com/nurzon-dev/xjdsgn/blob/main/20260706_MThBe.md
https://github.com/ryinbale/jlvwup/blob/main/20260706_VpWQE.md
https://github.com/paulhardis/qlqsyn/blob/main/20260706_LizXe.md
https://github.com/allenstano/uiuzjt/blob/main/20260706_lV26k.md
https://github.com/angelodeis/fqexcl/blob/main/20260706_YyMdh.md
https://github.com/ilenagress/aobsux/blob/main/20260706_NeiMg.md
https://github.com/ossoyuker/zyqbmt/blob/main/20260706_HUvJa.md
https://github.com/asdfzdimua/jzbtxg/blob/main/20260706_M67BI.md
https://github.com/codedatest/educwb/blob/main/20260706_cJkao.md
https://github.com/clutch4gra/wwwoaw/blob/main/20260706_OS6NQ.md
https://github.com/prorive012/lhgwyb/blob/main/20260706_HyLc9.md
https://github.com/bthaf2004/bkocaw/blob/main/20260706_MGbIB.md
https://github.com/moobeed/glaqyx/blob/main/20260706_3rUlp.md
https://github.com/obuyrojeha/umshjk/blob/main/20260706_TkoSm.md
https://github.com/vutadil/hjqvkz/blob/main/20260706_BvvSW.md
https://github.com/zapiki/vuzqht/blob/main/20260706_k8PWk.md
https://github.com/mobileboy3/nqkywg/blob/main/20260706_elW3a.md
https://github.com/peitto/fafcti/blob/main/20260706_NUEii.md
https://github.com/benanta/wjywme/blob/main/20260706_0HvCG.md
https://github.com/shoeshell3/ufmoqs/blob/main/20260706_QaR82.md
https://github.com/flamingoun/mrztix/blob/main/20260706_rhOIc.md
https://github.com/mindgate2/llcyzy/blob/main/20260706_h8Wmq.md
https://github.com/fold98scen/dsejbt/blob/main/20260706_KrvYq.md
https://github.com/cratebone5/nompsy/blob/main/20260706_dKEYF.md
https://github.com/vuvjthiev/tqriti/blob/main/20260706_KO1IM.md
https://github.com/cbroend/yjecnj/blob/main/20260706_dJhyY.md
https://github.com/snowfaiz/fcgxza/blob/main/20260706_hBBCk.md
https://github.com/oceanwinte/vowlpb/blob/main/20260706_PjQo5.md
https://github.com/door4chia/ihijqm/blob/main/20260706_DXE8v.md
https://github.com/sashisuney/tyhwyz/blob/main/20260706_QNnes.md
https://github.com/ashlaau/odxmsh/blob/main/20260706_Wki82.md
https://github.com/chrissiman/lgorgv/blob/main/20260706_tNOvz.md
https://github.com/pest9pizza/dzuwky/blob/main/20260706_Ctnai.md
https://github.com/sessestove/wtsdjs/blob/main/20260706_9m37l.md
https://github.com/rellie-zz/odacde/blob/main/20260706_BwwTX.md
https://github.com/sajavavisw/pqhigb/blob/main/20260706_9ABEM.md
https://github.com/mulginey-j/iogopr/blob/main/20260706_6Nu1E.md
https://github.com/patraveler/ccphmy/blob/main/20260706_pN0HL.md
https://github.com/ceeukird/jwhaye/blob/main/20260706_Rf96X.md
https://github.com/oren-kayak/picqmu/blob/main/20260706_kBYpt.md
https://github.com/roryfactor/lqjyab/blob/main/20260706_15CT0.md
https://github.com/roundrich/ealnui/blob/main/20260706_nlC6Q.md
https://github.com/ivelobesco/jwocon/blob/main/20260706_g7Vmp.md
https://github.com/yankhou/dcwztv/blob/main/20260706_XBV9T.md
https://github.com/g85trm/lgeibt/blob/main/20260706_aUoSm.md
https://github.com/jichee2010/shsala/blob/main/20260706_7OS5M.md
https://github.com/fstaement/fzjhng/blob/main/20260706_eI5j0.md
https://github.com/dhankarbec/wgmuvj/blob/main/20260706_E1fw0.md
https://github.com/djsstanius/itilod/blob/main/20260706_VfWkE.md
https://github.com/jayezpriso/kfynbq/blob/main/20260706_8cdAD.md
https://github.com/shenny3123/qsfqpr/blob/main/20260706_I9tNN.md
https://github.com/room6nylon/mytnbj/blob/main/20260706_DxUYC.md
https://github.com/step06mirr/uqofwp/blob/main/20260706_osVGK.md
https://github.com/warozgro/qvcnxx/blob/main/20260706_5WuBE.md
https://github.com/note4srica/exeghk/blob/main/20260706_nTr79.md
https://github.com/jtempz/lzwtlt/blob/main/20260706_6An48.md
https://github.com/maid48loan/tznyjy/blob/main/20260706_YLSg9.md
https://github.com/forecharim/smyija/blob/main/20260706_QkOBm.md
https://github.com/zonarloma/modlgj/blob/main/20260706_JnoLP.md
https://github.com/ar0ymakers/homezu/blob/main/20260706_7AIY5.md
https://github.com/shaanecolu/blrpbq/blob/main/20260706_VwKbe.md
https://github.com/lambert-de/psrrmo/blob/main/20260706_WnrVp.md
https://github.com/brentchave/oqhiqz/blob/main/20260706_fQxVf.md
https://github.com/week6toad/ytldaf/blob/main/20260706_jnQhl.md
https://github.com/singhshelt/pnwecy/blob/main/20260706_d1ov8.md
https://github.com/riverearll/xdlwla/blob/main/20260706_29tOO.md
https://github.com/exlantine/icjnrd/blob/main/20260706_2j6NR.md
https://github.com/jungkendra/wdoema/blob/main/20260706_WxKa8.md
https://github.com/cassibenal/ejdfwo/blob/main/20260706_7Bp69.md
https://github.com/friloberto/xeztuj/blob/main/20260706_SlPCn.md
https://github.com/benanta/wjywme/blob/main/20260706_5iz3A.md
https://github.com/ilenagress/aobsux/blob/main/20260706_aN1IM.md
https://github.com/shoeshell3/ufmoqs/blob/main/20260706_vYpt0.md
https://github.com/mhxcentin/zxpmam/blob/main/20260706_4l9PT.md
https://github.com/paulhardis/qlqsyn/blob/main/20260706_h4opM.md
https://github.com/wpajus/swhwkm/blob/main/20260706_gtrHf.md
https://github.com/prorive012/lhgwyb/blob/main/20260706_hEIvC.md
https://github.com/obuyrojeha/umshjk/blob/main/20260706_AxYmF.md
https://github.com/vuvjthiev/tqriti/blob/main/20260706_XUvmz.md
https://github.com/vutadil/hjqvkz/blob/main/20260706_uYLSf.md
https://github.com/marcligen/blilbc/blob/main/20260706_dn7oi.md
https://github.com/janttung/qwpsgv/blob/main/20260706_YPd6a.md
https://github.com/leofaras/dbjkmg/blob/main/20260706_QxYlC.md
https://github.com/oceanwinte/vowlpb/blob/main/20260706_d778f.md
https://github.com/sashisuney/tyhwyz/blob/main/20260706_PqhuO.md
https://github.com/door4chia/ihijqm/blob/main/20260706_9GUyS.md
https://github.com/snowfaiz/fcgxza/blob/main/20260706_Uif6x.md
https://github.com/ashlaau/odxmsh/blob/main/20260706_B5szk.md
https://github.com/chrissiman/lgorgv/blob/main/20260706_YLc9k.md
https://github.com/pest9pizza/dzuwky/blob/main/20260706_LiWdq.md
https://github.com/sajavavisw/pqhigb/blob/main/20260706_wnX1V.md
https://github.com/patraveler/ccphmy/blob/main/20260706_BYMwd.md
https://github.com/mulginey-j/iogopr/blob/main/20260706_whlOf.md
https://github.com/sessestove/wtsdjs/blob/main/20260706_0aHBy.md
https://github.com/rellie-zz/odacde/blob/main/20260706_OFTQr.md
https://github.com/ceeukird/jwhaye/blob/main/20260706_ux5t0.md
https://github.com/roryfactor/lqjyab/blob/main/20260706_zwqhO.md
https://github.com/yankhou/dcwztv/blob/main/20260706_k3hU5.md
https://github.com/oren-kayak/picqmu/blob/main/20260706_IMzJx.md
https://github.com/jayezpriso/kfynbq/blob/main/20260706_koSmP.md
https://github.com/dhankarbec/wgmuvj/blob/main/20260706_6qrOS.md
https://github.com/fstaement/fzjhng/blob/main/20260706_Hs5WQ.md
https://github.com/maid48loan/tznyjy/blob/main/20260706_uRV9S.md
https://github.com/roundrich/ealnui/blob/main/20260706_WNb5Y.md
https://github.com/ivelobesco/jwocon/blob/main/20260706_HYcGa.md
https://github.com/note4srica/exeghk/blob/main/20260706_X8Lmg.md
https://github.com/jtempz/lzwtlt/blob/main/20260706_TuHYc.md
https://github.com/forecharim/smyija/blob/main/20260706_jGNb5.md
https://github.com/g85trm/lgeibt/blob/main/20260706_4BPsM.md
https://github.com/jichee2010/shsala/blob/main/20260706_qbb8C.md
https://github.com/shenny3123/qsfqpr/blob/main/20260706_VgWD7.md
https://github.com/djsstanius/itilod/blob/main/20260706_OCp6A.md
https://github.com/step06mirr/uqofwp/blob/main/20260706_hy2g0.md
https://github.com/room6nylon/mytnbj/blob/main/20260706_kEiCg.md
https://github.com/lambert-de/psrrmo/blob/main/20260706_1L2QB.md
https://github.com/zonarloma/modlgj/blob/main/20260706_AH12Z.md
https://github.com/brentchave/oqhiqz/blob/main/20260706_J6Dyy.md
https://github.com/shaanecolu/blrpbq/blob/main/20260706_Hi5MQ.md
https://github.com/ar0ymakers/homezu/blob/main/20260706_ZM0HL.md
https://github.com/warozgro/qvcnxx/blob/main/20260706_jAYps.md
https://github.com/week6toad/ytldaf/blob/main/20260706_2ZdHY.md
https://github.com/singhshelt/pnwecy/blob/main/20260706_wWD7R.md
https://github.com/exlantine/icjnrd/blob/main/20260706_YptXr.md
https://github.com/riverearll/xdlwla/blob/main/20260706_O9gku.md
https://github.com/jungkendra/wdoema/blob/main/20260706_ak4lf.md
https://github.com/shoeshell3/ufmoqs/blob/main/20260706_5ppMQ.md
https://github.com/vuvjthiev/tqriti/blob/main/20260706_RLfIc.md
https://github.com/door4chia/ihijqm/blob/main/20260706_qqOUi.md
https://github.com/oceanwinte/vowlpb/blob/main/20260706_VMZ0N.md
https://github.com/mulginey-j/iogopr/blob/main/20260706_2mnqy.md
https://github.com/sajavavisw/pqhigb/blob/main/20260706_SjnRl.md
https://github.com/patraveler/ccphmy/blob/main/20260706_vQQQx.md
https://github.com/sessestove/wtsdjs/blob/main/20260706_gghls.md
https://github.com/oren-kayak/picqmu/blob/main/20260706_hLbfm.md
https://github.com/ceeukird/jwhaye/blob/main/20260706_JgxU4.md
https://github.com/yankhou/dcwztv/blob/main/20260706_ghFLZ.md
https://github.com/roryfactor/lqjyab/blob/main/20260706_Hr5Vt.md
https://github.com/jayezpriso/kfynbq/blob/main/20260706_1idxe.md
https://github.com/jungkendra/wdoema/blob/main/20260706_W3dKh.md
