diff --git a/AGENTS.md b/AGENTS.md index 08d62846..5739a95a 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,12 +1,38 @@ -# FNA_V3维护入口 +# FNA_V3 项目维护入口 + +项目工作先读 GemDocs AI版项目总览、维护协议及 `/Users/hellcat/Documents/GemDocs/AI版/10-项目/fna_v3.md`。线上事务优先经白色机 SSH;网页与订阅 HTTP 访问须符合 GemDocs 的反代规则。 + +订阅检测已独立为 SubCheck,入口见 [SubCheck](/Users/hellcat/Documents/GemCodes/subcheck/AGENTS.md);cfn来源适配与调查见 [CFN.md](/Users/hellcat/Documents/GemCodes/subcheck/docs/CFN.md)。fnb不再保存检测实现。代码、凭据、业务数据及并行修改按当前任务授权处理。 + +## FNA_V3 本地副本维护 + +CFN页头SVG猫和两行品牌文字的维护与回退见[品牌标志](docs/maintenance/BRANDING.md),已于2026-10-31发布,见[界面发布记录](docs/maintenance/UI_RELEASE_2026-10-31.md)。 + +本目录为独立 FNA_V3 副本,身份与环境以 GemDocs AI版 `10-项目/fna_v3.md` 为准;上述 FN_B 入口保留来源背景,不代表授权修改 FN_B。文章广告实现、配置与验收见 [广告维护说明](docs/maintenance/ADVERTISING.md)。统一机场推荐数据、正文替换和教程末尾展示见[机场推荐维护](docs/maintenance/AIRPORT_RECOMMENDATIONS.md),已于2026-10-31发布,见[界面发布记录](docs/maintenance/UI_RELEASE_2026-10-31.md)。免费节点详情页的只读结构化渲染、订阅保护与回退见[内容页重设计](docs/maintenance/FREENODE_ARTICLE_LAYOUT.md)。 + +SEO 的只读审计、优化顺序与逐项验收统一维护在 [SEO 优化建议与执行清单](docs/maintenance/SEO_PLAN.md),2026-10-22 建立。清单中的建议不代表已实施,后续按用户指定项目推进并更新本文件所链接的唯一正文。 + +## CFN系绘图接手 + +2026-10-23用户明确将此前由张天承担的绘图工作交给“画师【CFN系】”(personnel-position:cd029d9db8454ec68172b221ff35e6f6)。FNA_V3主程继续开发工作,后续绘图由该画师岗位承接,避免重复制作。本记录仅转交绘图范围,不改变开发或上线权限;未向原聊天发送消息。 + +风格已从原聊天最近作品及本地成图核实:现代主义剪纸拼贴、哑光色块、轻微丝网印刷颗粒、成熟动物比例、非对称构图和大块留白。参考文件在本项目output/imagegen/:freenode-dog-dalmatian-20261023.png、freenode-dog-dachshund-20261023.png、freenode-dogs-dance-20261023.png;同名txt保存完整提示词。延续视觉语言,每张更换主题或构图,不照搬布局。 + +接手首张试画及提示词:/Users/hellcat/Documents/Codex/2026-10-23/cfn/outputs/cfn-tuxedo-cat-20261023.png 和同名txt。用户已认可风格并继续扩充;2026-10-26按授权与后续猫狗作品一起归档到Resource V2,并接入本地FNA_V3,未发布到线上。归档和栏目配图的唯一维护入口见[本地插画资源与配图](docs/maintenance/ILLUSTRATIONS.md)。 + +教程栏目现为“入门教程”(/client)和“综合教程”(/advanced,原进阶教程)。栏目改名、首篇重写、DNS进阶文章及内容回退见[教程栏目维护](docs/maintenance/TUTORIALS.md)。原七篇旧教程均已处理:迁移文归进阶,其余按Android、iOS、Mac和Linux重写;另有Windows纯入门与DNS进阶文章。正文、图解和关联已本地验收,本地内容不代表线上发布。 ## FNA 静态配图副本 -2026-10-30起Resource保留原稿、图池和固定分配,FNA保存按内容去重的公开展示副本,由本站Nginx直接提供。同步、创建时校验、撤回、缓存与部署验收唯一正文见[静态配图副本](docs/maintenance/LOCAL_ILLUSTRATIONS.md)。用户访问图片不调用Resource、不执行PHP修复。 +2026-10-30起Resource保留原稿、图池和固定分配,FNA保存按内容去重的公开展示副本,由本站Nginx直接提供。同步、创建时校验、撤回、缓存与部署验收唯一正文见[静态配图副本](docs/maintenance/LOCAL_ILLUSTRATIONS.md)。用户访问图片不调用Resource、不执行PHP修复。2026-10-31明确源端删除/停用不影响FNA独立副本或已有文章关联,修复与恢复原图记录见[独立副本保留修复](docs/maintenance/INDEPENDENT_ILLUSTRATIONS_FIX_2026-10-31.md)。 ## AI 文章写作(必读) -文章写作和发布先读docs/content/WRITING.md及docs/maintenance/EDITORIAL_API.md。项目身份和访问边界先读GemDocs AI版项目总览、维护协议及10-项目/fna_v3.md。 +后续为 FNA_V3 选题、写作、重写、调整分类或撤下文章时,必须先读[AI写作与文章关联索引](docs/content/WRITING.md)。它是文章用途、稳定地址和正文关系的唯一登记入口。公开文章禁止出现“核对范围”“未实测”等内部核验/验收说明,具体禁止项与发布前检查按该写作规范执行;相关事实只留项目维护记录。写作时复用相关的下载、入门、进阶和排错内容,自然设置内链,并检查相关旧文是否需要补入口;完成后同步正文源、运行数据库和该索引,验收真实目标与锚点。未创建的文章不能编造链接,本地生效不能写成已上线;不自动开展全站重写或发布。 + +## 独立文章发布 API + +用户已明确文章直接发布到 FNA_V3,不经过 ATOM。实现、调用契约、凭据边界及验收见[独立文章 API](docs/maintenance/EDITORIAL_API.md)。后续写稿使用本站草稿→签名预览→按hash发布→回执核对流程;相关旧文内链修改可同批提交。不要再用临时SQL脚本发布普通编辑文章。旧文首次接管必须显式指定原文章ID并保留URL;发布结果未知先查原请求UUID。代码已于2026-10-29随正式切换部署,生产临时编辑密钥在教程迁移后删除、接口默认关闭;后续按明确写作/发布任务临时启用并在完成后关闭,不扩大线上访问或发布范围。正式部署、备份、Git SHA及验收统一见[发布记录](docs/maintenance/RELEASE_PREFLIGHT_2026-10-28.md#正式切换2026-10-29)。 插画完成后按[自动交付](docs/maintenance/ILLUSTRATION_DELIVERY.md)提交批准批次;不要再手工上传发布/编辑图池或把保存草稿当作上线完成。 diff --git a/config/advertising.php b/config/advertising.php index c79314e0..ada300a8 100644 --- a/config/advertising.php +++ b/config/advertising.php @@ -1,10 +1,16 @@ ['enabled' => env('DPL_AD_ENABLED', true), 'url' => env('DPL_AD_URL', 'https://dp-link.net/')], - 'fuc' => ['enabled' => env('FUC_AD_ENABLED', true), 'url' => env('FUC_AD_URL', 'https://xn--123-9i9dj97q.com/')], + 'dpl' => [ + 'enabled' => env('DPL_AD_ENABLED', true), + 'url' => 'https://dp-link.net/', + ], 'hn' => [ 'enabled' => env('HN_AD_ENABLED', true), - 'url' => env('HN_AD_URL', 'https://hardnerd.net/'), + 'url' => env('HN_AD_URL', env('APP_ENV', 'production') === 'local' ? 'http://hn.loc/' : 'https://hardnerd.net/'), + ], + 'fuc' => [ + 'enabled' => env('FUC_AD_ENABLED', true), + 'url' => env('FUC_AD_URL', 'https://xn--123-9i9dj97q.com/'), ], ]; diff --git a/docs/assets/advertising/20261031/README.md b/docs/assets/advertising/20261031/README.md new file mode 100644 index 00000000..cfb2a98d --- /dev/null +++ b/docs/assets/advertising/20261031/README.md @@ -0,0 +1,5 @@ +# 2026-10-31矮版广告素材 + +李响制作、用户确认的三张最终素材及完整提示词。正式展示只使用assets.json登记的最终PNG;本地中间迭代图不作为生产候选。 + +固定广告位3.675:1、cover取景,福云center 40%。每次打开随机选一张,候选在template中,活动DOM只加载选中的一张;没有新增接口或轮播。原旧图保留用于恢复,不在同页叠加。 diff --git a/docs/assets/advertising/20261031/assets.json b/docs/assets/advertising/20261031/assets.json new file mode 100644 index 00000000..9c793079 --- /dev/null +++ b/docs/assets/advertising/20261031/assets.json @@ -0,0 +1,20 @@ +{ + "dpl": { + "path": "public/images/ads/dpl-ad-compact-wordmark-20261031.png", + "width": 2169, + "height": 725, + "sha256": "c0742c8f7102ea2ebb70feea5caa9113ef032df54e2ab9d9097d797a5a12e92b" + }, + "hn": { + "path": "public/images/ads/hn-ad-compact-lowercase-20261031.png", + "width": 2021, + "height": 778, + "sha256": "6b1d981d4fe461d5f7a00f3f0ad79cad3ea92b767ddb13b5fd4acb1c9cb022ff" + }, + "fuc": { + "path": "public/images/ads/fuc-ad-compact-five-years-20261031.png", + "width": 2141, + "height": 734, + "sha256": "48e26721e3d05f9e7ebedf8e08d182aad2b0f5f8e656f2d8a09122053692f045" + } +} \ No newline at end of file diff --git a/docs/assets/advertising/20261031/dpl-prompt.txt b/docs/assets/advertising/20261031/dpl-prompt.txt new file mode 100644 index 00000000..57ead651 --- /dev/null +++ b/docs/assets/advertising/20261031/dpl-prompt.txt @@ -0,0 +1 @@ +Use case: ads-marketing, identity-preserving redesign. Reference image: existing approved DPL advertisement, brand identity/style reference only. Create a NEW COMPOSITION for an EXTRA WIDE SHORT horizontal banner, exact target 1962x534 pixels, aspect ratio 3.674:1. This is NOT a smaller copy of the tall original and NOT original art centered with empty side gutters. Design natively to fill every edge of this short wide canvas. Preserve exact blue rounded DPL mark with white layered signal lines and DPL letters, dark navy blue grid background, blue/purple cyan gradient headline, subtle orbital network globe. Redesign layout: small DPL brand upper left, readable medium large headline below and a restrained short supporting line, compact blue CTA integrated lower left. Right half: simplified three slim floating network region cards with tiny flags and bars, arranged laterally in a shallow diagonal, not vertically stacked tall. Text EXACT: "DPL", "畅连全球网络", "日常访问 · 远程办公 · 在线娱乐", "查看套餐", and on cards "美国 · US", "日本 · JP", "香港 · HK". Tiny gray "广告" upper right. No numeric promises or extra text. Refined visual hierarchy: main headline about66px at1962wide; secondary32px; CTA32px. Strong whitespace without huge logo or giant headline. All elements comfortably within534pxheight, no cropping, no stretching, no mockup frame. Full-bleed native wide banner with well-balanced optical composition. diff --git a/docs/assets/advertising/20261031/dpl-wordmark-prompt.txt b/docs/assets/advertising/20261031/dpl-wordmark-prompt.txt new file mode 100644 index 00000000..0a926652 --- /dev/null +++ b/docs/assets/advertising/20261031/dpl-wordmark-prompt.txt @@ -0,0 +1 @@ +Use case: text-localization. Edit the provided existing DPL compact horizontal advertisement. Change ONLY the small white brand wordmark beside the blue logo in the upper left from "DPL" to EXACT uppercase "DP-LINK.NET". Keep its height and clean sans serif font weight similar to the existing DPL text; extend the wordmark naturally to the right with refined tight optical kerning and balanced icon-to-text gap. Preserve the blue logo icon EXACTLY. Preserve every other pixel/compositional element as closely as possible: wide aspect ratio, dark navy grid, globe, region cards, gradients, headline "畅连全球网络", subtitle "日常访问 · 远程办公 · 在线娱乐", button "查看套餐", tiny 广告. No other wording changes. Do not redesign, enlarge, move or crop anything else. The replacement wordmark must read D P hyphen L I N K dot N E T: "DP-LINK.NET". diff --git a/docs/assets/advertising/20261031/fuc-copy-prompt.txt b/docs/assets/advertising/20261031/fuc-copy-prompt.txt new file mode 100644 index 00000000..148b76c4 --- /dev/null +++ b/docs/assets/advertising/20261031/fuc-copy-prompt.txt @@ -0,0 +1 @@ +Use case: text-localization. Edit the supplied existing FUC purple rocket advertisement. Replace ONLY the large white headline "全球网络中继服务" with EXACT "全球网络加速". Replace ONLY the smaller lavender subtitle "随时随处,尽情使用" with EXACT "五年稳定运营". Keep headline and subtitle left aligned with the same existing left edge, approximately same font size and weight as their respective old lines, retaining natural refined character spacing instead of stretching the shorter phrases to fill the previous width. Preserve existing logo and 福云 wordmark EXACTLY, deep purple starry background, rocket, planets, orbital curves, white 开始使用 button with arrow, tiny 广告 top-right, all positions and original wide canvas. No other wording or visual changes. Exact Chinese text is mandatory: 全球网络加速 / 五年稳定运营. diff --git a/docs/assets/advertising/20261031/fuc-prompt.txt b/docs/assets/advertising/20261031/fuc-prompt.txt new file mode 100644 index 00000000..afa84cb0 --- /dev/null +++ b/docs/assets/advertising/20261031/fuc-prompt.txt @@ -0,0 +1 @@ +Use case: ads-marketing. Input1: CURRENT FUC homepage screenshot, visual-style reference ONLY, not a composition to crop or reuse. Input2: current official FUC continuous-cloud purple logo, brand mark reference, reproduce its distinctive exact loop/cloud shape; no giant 福 character. Design a NEW polished short extra-wide FUC display advertisement, target1962x534px, aspect3.674:1. Full-bleed deep royal purple #3e269d background, restrained violet/magenta orbital curves and sparse tiny stars, inspired by CURRENT homepage. Left quarter: tasteful official purple cloud mark paired with WHITE Chinese wordmark "福云" at restrained size, enough contrast. Middle-left/main area: readable bold WHITE exact headline "全球网络中继服务"; below smaller muted lavender exact subtitle "随时随处,尽情使用". Lower-left small refined white rounded pill CTA with purple exact text "开始使用" and a small right arrow. Right third: sophisticated minimal purple rocket/orbital illustration with soft magenta planet glow and flowing curved paths, not childish clipart, modest supporting scale. Allow strong clean negative space. Tiny light lavender "广告" upper right. Do NOT use old huge 福 glyph, white/lilac background, Netflix/video stills, platform trademarks, UI navbar or page chrome. No pricing, speed claims, numbers or extra text. Careful typography and compact horizontal hierarchy that belongs to a534px tall canvas. Not a scaled down tall ad, no side padding gutters or outer borders. Native full-width short banner. diff --git a/docs/assets/advertising/20261031/hn-lowercase-prompt.txt b/docs/assets/advertising/20261031/hn-lowercase-prompt.txt new file mode 100644 index 00000000..c7c2b3a6 --- /dev/null +++ b/docs/assets/advertising/20261031/hn-lowercase-prompt.txt @@ -0,0 +1 @@ +Use case: text-localization and typography refinement. Edit this existing compact HN advertisement. Preserve exact H/lime-glasses icon, dark charcoal background, teal and violet glows, wide canvas and all Chinese wording. Change brand wordmark to EXACT all lowercase "hardnerd" (lowercase h, not capital H). Enlarge this gradient brand WORDMARK by about18 percent compared with current, keeping icon roughly current size and optically aligned beside wordmark; brand group centered. Shrink lower white Chinese tagline by about20 percent: exact "硬核架构,品质专线,全球网络畅通无阻". Increase clear vertical gap between brand row and tagline from current roughly50px to about95px at original2021px width. Put brand row around y300, tagline around y475; center the overall two-row composition. Refined restrained natural letter spacing, tagline on one line, no exaggerated tracking. Preserve plenty of safe space within central2021x550 visible banner crop; all main content stays within y180..570. Keep tiny gray 广告 upper right, no other text or graphics. Do not change the icon design. No CTA. Main requested changes only: brand larger and lowercase, tagline smaller, more space between rows. diff --git a/docs/assets/advertising/20261031/hn-prompt.txt b/docs/assets/advertising/20261031/hn-prompt.txt new file mode 100644 index 00000000..fdf041d2 --- /dev/null +++ b/docs/assets/advertising/20261031/hn-prompt.txt @@ -0,0 +1 @@ +Use case: ads-marketing, identity-preserving redesign. Reference image: current Hardnerd advertisement, brand style/logo/text reference only. Create a NEW native extra-wide short banner 1962x534px, aspect ratio3.674:1. Do not scale down the tall old advertisement or letterbox it. Fill full canvas edge-to-edge with charcoal black, restrained teal glow left and violet glow right. Preserve EXACT H lime-glasses icon and gradient wordmark "Hardnerd" with capital H, original brand forms. Recompose using generous horizontal room: cohesive brand group centered around x981 y210, width about650px, icon balanced approximately95pxheight, wordmark about88px high. Below at y350 put the exact white tagline on one line "硬核架构,品质专线,全球网络畅通无阻", around42px font with subtle restrained natural tracking, not exaggerated wide character spacing. Tiny understated gray "广告" upper right. Keep whole group visually centered with balanced top/bottom margins, enough gap between brand and tagline. Only these texts. No green footer, no button or CTA, no shine or overly dramatic effects, no frame. Mature premium quiet typography designed for this exact short wide canvas, crisp legible Chinese and consistent brand proportions. diff --git a/docs/content/WRITING.md b/docs/content/WRITING.md index 4d11fc03..3b0f615b 100644 --- a/docs/content/WRITING.md +++ b/docs/content/WRITING.md @@ -8,6 +8,8 @@ # AI 写作与文章关联索引 本文是写作流程、文章用途及文章关系的唯一维护入口。文章正文保存在各自源文件,数据库是页面实际读取的内容;栏目实现、渲染与备份方法见[教程维护](../maintenance/TUTORIALS.md),SEO项目状态见[SEO清单](../maintenance/SEO_PLAN.md)。不要在这些文档中再复制一份持续更新的文章关系表。 +2026-10-31新增[统一机场推荐模块](../maintenance/AIRPORT_RECOMMENDATIONS.md):入门/综合教程自动在末尾展示,综合教程由展示层补入文内跳转;不要在正文源重复维护机场价格、地址和优惠码,也不要创建同名airport-recommendations锚点。已随[界面发布](../maintenance/UI_RELEASE_2026-10-31.md)上线。 + ## 1 写作前先确定读者要完成的任务 - 入门教程:以第一次使用为前提,讲准备、下载、安装、配置、使用和基本排错。不要把客户端迁移作为普通入门教程的主线。 @@ -65,6 +67,9 @@ ## 2 当前文章登记 | cfw-mac-legacy | 210 / Mac | Clash Verge Rev 使用教程:Mac 安装、订阅与系统代理 | `/a/m173.html` | [verge-mac.md](tutorials/verge-mac.md);本地API版本2 | Mac操作入口;#install DMG安装,#import 订阅,系统代理与退出排错;无设备联网实测 | | cfw-linux-legacy | 211 / Linux | Clash Verge Rev 使用教程:Linux 安装、订阅与代理设置 | `/a/m174.html` | [verge-linux.md](tutorials/verge-linux.md);本地API版本5 | Linux桌面入门;#install 包格式与架构,#import 订阅,#terminal 单条curl代理验证;不适用于无桌面的服务器 | | system-proxy-vs-tun | 365 / 综合教程 | 系统代理和 TUN 有什么区别?接管范围、使用选择与排错 | `/a/system-proxy-vs-tun.html` | [system-proxy-tun.md](tutorials/system-proxy-tun.md);本地API版本1 | 桌面代理接管与出口选择;`#choose` 场景选择、`#switch` 切换检查、`#troubleshoot` 排错;三张流程图 | +| clash-routing-modes | 366 / 综合教程 | Clash 规则、全局和直连怎么选?代理组与分流排错教程 | `/a/clash-rule-global-direct.html` | [clash-routing-modes.md](tutorials/clash-routing-modes.md);2026-10-31本地ID366/版本1,正式ID382/版本1已发布 | 模式选择与代理组分流;`#groups` 组内选择、`#custom` 添加规则、`#verify` 验证新连接 | + +2026-10-31新教程正式ID382/版本1、本地ID366/版本1已发表;系统代理/TUN正文补入口后两环境均为API版本2(正式ID376、本地ID365)。正式发布时间14:58:28北京时间,IndexNow由VPS-003提交返回200,服务器HTTP与图哈希/锚点验收通过。唯一状态与恢复记录见[规则模式教程发布记录](../maintenance/ROUTING_MODES_2026-10-31.md)。 这里只登记长期编辑内容及值得复用的稳定资源说明,不逐条收录日更节点或账号文章。稳定入口为 `/`(当前免费节点)、`/freenode`(历史分享归档)、`/client`(入门)、`/advanced`(综合教程);平台入口和名称修改另按项目路由核对,不从名称自行拼接。 @@ -107,6 +112,10 @@ ## 3 已有文章关系 | system-proxy-vs-tun | cfw-mac-legacy `#enable` | 切换前完成 Mac 基本连接 | 已在本地正文实现 | | system-proxy-vs-tun | cfw-linux-legacy `#connect` / `#terminal` | Linux 基础连接及单条命令显式代理 | 已在本地正文实现 | | system-proxy-vs-tun | mihomo-dns `#dns-2` | 继续检查 DNS 接管、加密和出口 | 已在本地正文实现 | +| system-proxy-vs-tun | clash-routing-modes `#groups` | 已接管但走错出口时检查规则和代理组;放在场景选择之前 | 2026-10-31本地与正式已发布 | +| clash-routing-modes | verge-windows-start `#enable` / cfw-mac-legacy `#enable` | 尚未完成基本连接时返回对应平台操作 | 2026-10-31本地与正式已发布 | +| clash-routing-modes | system-proxy-vs-tun `#routing` / `#troubleshoot` | 解释接管和分流的区别,以及看不到连接时排错 | 2026-10-31本地与正式已发布 | +| clash-routing-modes | mihomo-dns `#dns-2` | 出口正确但域名解析仍异常时继续查DNS | 2026-10-31本地与正式已发布 | 两篇Android教程通过订阅格式段落互链;Mac下载指南与操作教程互链,Linux从下载指南和真实Linux栏目获得入口,iOS沿用真实iOS栏目入口。系统代理与TUN专题由Windows和DNS正文提供入口,并指向三平台的基础操作及DNS专题。目录、标签、导航和热门榜不算正文关联;正文内链及锚点已经本地HTTP验证。 diff --git a/docs/content/tutorials/assets/clash-routing-modes/README.md b/docs/content/tutorials/assets/clash-routing-modes/README.md new file mode 100644 index 00000000..f36d9f32 --- /dev/null +++ b/docs/content/tutorials/assets/clash-routing-modes/README.md @@ -0,0 +1,9 @@ +# 规则、全局与直连配图 + +原生 SVG 为可编辑源,PNG 为文章 API 上传用图;未使用外部截图。封面沿用 system-proxy-tun-cover.svg 的现有样式;正文两图分别表达路由模式与代理组选择路径。 + +- `cover.svg` / `cover.png`:960×540。 +- `modes.svg` / `modes.png`:1000×670。 +- `groups.svg` / `groups.png`:1000×610。 + +正文源:../../clash-routing-modes.md。技术图使用本机 Chrome 在禁网页面渲染,正式展示副本通过文章资产 API 发布。制作/发布记录见 ../../../../maintenance/ROUTING_MODES_2026-10-31.md。 diff --git a/docs/content/tutorials/assets/clash-routing-modes/cover.png b/docs/content/tutorials/assets/clash-routing-modes/cover.png new file mode 100644 index 00000000..27dd3922 Binary files /dev/null and b/docs/content/tutorials/assets/clash-routing-modes/cover.png differ diff --git a/docs/content/tutorials/assets/clash-routing-modes/cover.svg b/docs/content/tutorials/assets/clash-routing-modes/cover.svg new file mode 100644 index 00000000..c3cbc0a6 --- /dev/null +++ b/docs/content/tutorials/assets/clash-routing-modes/cover.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/content/tutorials/assets/clash-routing-modes/groups.png b/docs/content/tutorials/assets/clash-routing-modes/groups.png new file mode 100644 index 00000000..4f95189c Binary files /dev/null and b/docs/content/tutorials/assets/clash-routing-modes/groups.png differ diff --git a/docs/content/tutorials/assets/clash-routing-modes/groups.svg b/docs/content/tutorials/assets/clash-routing-modes/groups.svg new file mode 100644 index 00000000..a6bb437c --- /dev/null +++ b/docs/content/tutorials/assets/clash-routing-modes/groups.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/content/tutorials/assets/clash-routing-modes/modes.png b/docs/content/tutorials/assets/clash-routing-modes/modes.png new file mode 100644 index 00000000..0191436a Binary files /dev/null and b/docs/content/tutorials/assets/clash-routing-modes/modes.png differ diff --git a/docs/content/tutorials/assets/clash-routing-modes/modes.svg b/docs/content/tutorials/assets/clash-routing-modes/modes.svg new file mode 100644 index 00000000..79dbbec7 --- /dev/null +++ b/docs/content/tutorials/assets/clash-routing-modes/modes.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/content/tutorials/clash-routing-modes.html b/docs/content/tutorials/clash-routing-modes.html new file mode 100644 index 00000000..643515c1 --- /dev/null +++ b/docs/content/tutorials/clash-routing-modes.html @@ -0,0 +1 @@ +
同一个网站,规则模式打不开,切成全局却正常;明明选了新节点,连接记录里还是另一个名字。遇到这类问题,先看这条连接实际走了哪条规则、哪个代理组,再决定要改什么。
本文以 Clash Verge Rev 和 Mihomo 为例,讲清规则、全局、直连三个模式,并完成一次“只让指定网站走指定出口”的配置。还没有完成导入和首次连接,可以先看 Windows 入门教程;Mac 用户可以从对应操作步骤开始。
先确定前提:请求已经进入了客户端。系统代理、应用自身代理设置和 TUN 负责把流量送进来,下面三个模式负责决定进去以后怎样处理。未被接管的应用,不会因为切到全局就自动经过客户端;接管方式见系统代理与 TUN 的区别。
| 模式 | 进入客户端后的普通业务连接 | 适合什么时候用 |
|---|---|---|
| 规则(Rule) | 按当前配置匹配规则,选择直连、代理组或其他策略 | 日常分流:不同网站使用不同出口 |
| 全局(Global) | 使用 GLOBAL 组当前选择的节点或策略 | 临时对比:判断问题是否与分流结果有关 |
| 直连(Direct) | 由本地网络直接连接目标 | 临时检查本地网络,或不需要代理出口时 |
这三个模式是路由选择,不是速度档位。全局也要检查 GLOBAL 组究竟选了什么:如果选的是 DIRECT,结果仍然是直连;如果选的是另一个代理组,还要继续看那个组的选择。Mihomo 运行模式说明
直连模式也不等于退出客户端:系统代理、TUN 等入口可能仍开启。要停用接管,需要处理对应开关,不能只把模式改成“直连”。Clash Verge Rev 名词解释

代理页里有“节点选择”“流媒体”“自动选择”等分组时,不要把它们当成一排作用相同的开关。规则通常先指向一个组,组再选节点,也可能继续选另一个组。
例如,一份配置把视频网站分给“影音”,普通网页交给“节点选择”。你在“节点选择”里换成节点乙,但“影音”仍直接选着节点甲,视频连接就可能继续走甲。只有“影音”选择了“节点选择”这个组,它才会沿着这条选择关系继续向下找出口。

手动选择组(select)由你决定使用哪个选项;如果它选择的是自动选择组(url-test),后者仍会按自己的测速配置选择节点。想固定到具体节点,就检查整条选择路径,而不是只看最外层的组名。手动选择组与自动选择组
实际排查时,可以在连接详情里找策略、代理链或类似字段。不同界面展示顺序可能不同,重点是认出“命中了哪个组”和“最终使用哪个节点”。
Mihomo 的路由规则从上往下匹配。通常前面命中的规则就决定了后续策略,因此“更精确”不会自动获得更高优先级;精确规则如果排在已经覆盖它的规则之后,仍可能用不上。涉及 UDP 等条件时,还要注意目标策略是否具备相应支持。路由规则与优先级
下面是用来理解顺序的片段,不是可以替换整个订阅的完整配置。example.com 是示例域名,“节点选择”必须换成你配置中真实存在的组名:
rules:
- DOMAIN,video.example.com,节点选择
- DOMAIN-SUFFIX,example.com,DIRECT
- MATCH,节点选择
在这个例子里,访问 video.example.com 先命中第一条,交给“节点选择”;访问 docs.example.com 则命中第二条,使用直连。如果把前两条交换,video.example.com 也会先被域名后缀规则接住。
DOMAIN 对应完整域名;DOMAIN-SUFFIX 对应该域名及其子域名。末尾的 MATCH 用于接住前面没有匹配到的连接。不要为了让某个网站使用节点,就在前面塞一条覆盖所有连接的 MATCH:那会让后面的分流规则失去机会。
先选一个你确实需要调整的网站。例如,某个域名在当前网络下直连不通,而你已有能访问它的节点。只改这一项,验证后再扩展范围。
DOMAIN,内容填写连接记录里的完整主机名,例如 video.example.com。不要填 https://、路径或整个网页地址。界面入口与前置/后置规则的含义可参考 Verge Rev 自定义规则。这与直接改下载下来的订阅正文不同;后者可能被下一次更新覆盖。
一个网页可能同时访问登录、图片、视频和接口等多个域名。添加主站域名后页面只恢复了一部分,先查看失败连接,再补真正需要的域名。不要因为一个资源加载失败,就直接扩大成整类域名、全部应用或全部流量。
验证时保持订阅、模式和接管方式稳定,只调整刚才那条规则或对应组的选择。打开“连接”页面,清除筛选,重新访问目标内容,找到刚建立的连接,逐项检查:
已有长连接不适合作为换规则、换节点后的唯一观察对象。可优先重连目标应用,或只关闭相关连接后重新测试;直接清空所有连接会影响其他正在使用的程序。
如果仍无法区分,可以做一次有控制的对比:记录当前设置,在全局模式中选择同一个明确的节点,重新建立目标连接。全局可用、规则模式不可用,提示你继续查分流和代理组;它并不能单独证明某一条规则错误,因为模式变化也可能影响其他配置行为。对比后切回规则模式,修正具体目标。
| 现象 | 下一步检查 |
|---|---|
| 换了节点,目标连接仍走旧节点 | 是否改错代理组、组里还有嵌套选择,以及观察的是否为旧连接 |
| 明明加了代理规则,却显示 DIRECT | 当前模式、规则顺序、实际域名,以及命中组是否选了 DIRECT |
| 全局能用,规则不能用 | 对比同一目标的新连接,确认规则模式的最终出口是否与全局相同 |
| 网页文字出现了,图片或视频失败 | 找失败资源的域名与连接,逐项判断,不只给主站加规则 |
| 完全找不到应用的连接记录 | 清除筛选、查看日志,再检查应用代理或 TUN 接管;规则还没到发挥作用的阶段 |
| 订阅更新后又不对了 | 是否改了会被覆盖的订阅正文、当前配置是否切换、原代理组是否还存在 |
如果连接已经走了预期节点,但仍出现域名解析异常,继续检查 DNS 接管、加密和出口。如果客户端根本看不到目标流量,则回到系统代理与 TUN 的排查步骤。先根据连接记录确定问题发生在哪一步,再动对应设置,通常比不断切换三个模式更有效。


浏览器能打开网页,终端却一直超时;已经切到“全局”,游戏还是连不上;打开 TUN 后能用了,又担心所有网站都被送到国外。遇到这些情况,先分清两件事:流量有没有进入代理客户端,以及进入以后走哪个出口。
系统代理和 TUN 主要解决第一件事,规则、全局和直连模式主要解决第二件事。本文以 Clash Verge Rev 和 Mihomo 桌面客户端为例,说明它们的区别、适用场景和检查方法。
打开 Clash Verge Rev 的“系统代理”,客户端会修改操作系统的代理设置,把代理地址指向本机正在监听的端口。愿意读取并遵循这项设置的应用,就会把相应请求交给客户端处理。浏览器通常可以通过这种方式使用代理。官方快速入门
这里的关键是“应用遵循设置”。有的软件读取系统设置,有的软件使用自己的代理配置,还有的软件直接建立连接。同一台电脑上,浏览器正常、另一个应用不走代理,并不矛盾。
如果应用提供 HTTP 或 SOCKS 代理选项,可以单独指向客户端的本机端口。地址通常是 127.0.0.1,端口应查看客户端当前设置,不要照抄别人的数字;HTTP、SOCKS 和混合端口也要对应正确。
终端工具同样需要看各自支持什么。以 Linux 上的 curl 为例,可以先用单条命令指定代理的方法检查,不必为了一个工具马上接管整台电脑。
TUN 会创建虚拟网络接口,并通过路由把符合接管条件的 IP 流量交给内核。应用不必先学会使用 HTTP 或 SOCKS 代理,因此它常用于系统代理无法覆盖的程序。Mihomo 可以处理通过 TUN 进入的 TCP、UDP 流量,但最终能否完成连接,还取决于配置、节点和目标服务。官方名词解释
TUN 也有接管范围。自动路由、排除网段、IPv6 设置及其他 VPN 的路由,都可能影响实际路径。例如,把某个局域网网段排除在 TUN 之外,就是让它绕过这层接管;这与连接进入 Mihomo 后命中 DIRECT 规则不同。Mihomo TUN 配置、代理绕过说明
日常使用图形客户端时,优先使用它提供的 TUN 设置。建立网卡和修改路由需要相应权限;Clash Verge Rev 的服务模式可让具有权限的后台服务启动内核,不代表必须一直以管理员身份运行整个界面。服务模式说明
把“规则”改成“全局”,改变的是进入内核后的出口选择。一个完全没有进入客户端的应用,不会因为切到全局就自动被接管。
反过来,开启 TUN 也不要求使用全局模式。TUN + 规则模式可以接管更多应用,同时继续按规则让部分连接直连、部分连接使用节点。规则与全局模式说明
| 常见组合 | 实际含义 |
|---|---|
| 系统代理 + 规则 | 遵循系统代理的请求进入客户端,再按当前配置分流 |
| 系统代理 + 全局 | 进入内核的普通业务连接使用全局策略;未被接管的应用仍可能绕过 |
| TUN + 规则 | 被 TUN 接管的连接按规则选择出口,并非全部使用代理节点 |
| TUN + 全局 | 被接管的普通业务连接使用全局策略;仍需查看所选策略是否为可用节点 |
一个具体例子:浏览器和下载工具访问同一域名,浏览器连接记录里显示了节点,下载工具却没有记录。此时应优先检查下载工具的代理设置或接管方式;反复切换全局,通常没有解决前面的缺口。
| 你要完成的事 | 可以先这样做 |
|---|---|
| 主要浏览网页,常用软件已经正常 | 使用系统代理 + 规则模式 |
| 只有一个应用不跟随系统设置,且自带代理选项 | 给该应用配置正确的本机代理端口 |
| 多个应用不支持代理设置,希望统一处理 | 考虑 TUN + 规则模式,再逐个检查所需应用 |
| 游戏或语音涉及 UDP | 检查 TUN 接管,同时确认所选节点支持所需 UDP 转发 |
| 需要同时访问公司 VPN、NAS 或局域网设备 | 先明确这些连接的路径,再设置绕过或直连,避免盲目全局接管 |
TUN 不是加速档位。 游戏登录网页能打开,不代表游戏数据传输已经正常;节点对网页可用,也不代表它能承载所需的 UDP。选择方式要看应用连接是否按预期工作,而不是哪个开关听起来更强。
系统代理和 TUN 可以同时存在,但两个开关都开不代表效果翻倍。应用主动交给本机端口的请求,本来就已进入客户端;其他连接可能由 TUN 接管。排错时,先明确正在验证哪条路径,比同时改动多个设置更容易找到原因。
先确保客户端已经导入配置、选中可用节点,并完成基本连接。尚未完成这一步,可以按对应平台的教程操作:Windows、Mac、Linux。
关掉系统代理后应用仍能联网,只能说明它不依赖刚才关闭的那项设置。还要结合新连接记录和实际出口,才能判断 TUN 是否按预期接管;应用本来就能直连时,单凭“能打开”尤其容易误判。
如果切换后异常,先关闭 TUN,恢复刚才记录的系统代理和应用设置,让连接回到原先可用的状态,再按下一节定位。
先检查该应用是否跟随系统代理,或者是否需要独立配置。观察它发起新请求时,客户端有没有相应连接记录。记录里没有出现时,先清除列表筛选、重试并查看日志,排查接管问题;已经出现时,再看命中的规则和实际出口。
DIRECT 表示这条连接由客户端直连,并不等于 TUN 没有工作。检查它是否命中了局域网、国内地址等直连规则,或代理组本身选中了 DIRECT。需要改变的是对应出口策略,而不是反复重启虚拟网卡。
把登录请求和实时数据连接分开看。后者可能使用不同的地址、端口和 UDP。确认目标连接已进入客户端,再检查节点是否支持相关转发;网页测试成功不能代替这项检查。
先恢复原先可用的方式,再检查路由重叠、网段冲突和客户端日志。系统代理绕过、TUN 路由排除与内核 DIRECT 规则各自发生在不同位置,不应混为一谈。不要把删除网卡或关闭全部防火墙作为第一步。代理绕过说明、Windows TUN 常见问题
检查 TUN 是否仍开启,以及应用自己的代理设置是否仍生效。想停用本客户端的接管,应同时处理实际启用的入口,并重新建立连接。关闭窗口可能只是把客户端收进托盘,也不等于退出。
访问网站的连接和解析域名的查询,可能走不同路径。TUN 已经开启,并不能直接推出“DNS 一定经过节点”。普通 DNS 是否被接管、应用是否使用独立的加密 DNS,以及解析服务连接走直连还是代理,都需要分别看。
例如,浏览器使用 DoH 时,查询本身是加密的 HTTPS 连接。它可能经 TUN 进入内核,但不会仅因一条针对 53 端口的 DNS 劫持设置,就自动变成 Mihomo 内置 DNS 处理的查询。相关字段和平台差异见Mihomo TUN 配置。
想继续检查解析路径,可以阅读DNS 防泄漏配置与验证。日常排查时,先确认应用连接进入了哪里,再看它选了什么出口,最后补上 DNS 这条路径,通常比不断切换“系统代理、TUN、全局”更有效。
浏览器能打开网页,终端却一直超时;已经切到“全局”,游戏还是连不上;打开 TUN 后能用了,又担心所有网站都被送到国外。遇到这些情况,先分清两件事:流量有没有进入代理客户端,以及进入以后走哪个出口。
系统代理和 TUN 主要解决第一件事,规则、全局和直连模式主要解决第二件事。本文以 Clash Verge Rev 和 Mihomo 桌面客户端为例,说明它们的区别、适用场景和检查方法。
打开 Clash Verge Rev 的“系统代理”,客户端会修改操作系统的代理设置,把代理地址指向本机正在监听的端口。愿意读取并遵循这项设置的应用,就会把相应请求交给客户端处理。浏览器通常可以通过这种方式使用代理。官方快速入门
这里的关键是“应用遵循设置”。有的软件读取系统设置,有的软件使用自己的代理配置,还有的软件直接建立连接。同一台电脑上,浏览器正常、另一个应用不走代理,并不矛盾。
如果应用提供 HTTP 或 SOCKS 代理选项,可以单独指向客户端的本机端口。地址通常是 127.0.0.1,端口应查看客户端当前设置,不要照抄别人的数字;HTTP、SOCKS 和混合端口也要对应正确。
终端工具同样需要看各自支持什么。以 Linux 上的 curl 为例,可以先用单条命令指定代理的方法检查,不必为了一个工具马上接管整台电脑。
TUN 会创建虚拟网络接口,并通过路由把符合接管条件的 IP 流量交给内核。应用不必先学会使用 HTTP 或 SOCKS 代理,因此它常用于系统代理无法覆盖的程序。Mihomo 可以处理通过 TUN 进入的 TCP、UDP 流量,但最终能否完成连接,还取决于配置、节点和目标服务。官方名词解释
TUN 也有接管范围。自动路由、排除网段、IPv6 设置及其他 VPN 的路由,都可能影响实际路径。例如,把某个局域网网段排除在 TUN 之外,就是让它绕过这层接管;这与连接进入 Mihomo 后命中 DIRECT 规则不同。Mihomo TUN 配置、代理绕过说明
日常使用图形客户端时,优先使用它提供的 TUN 设置。建立网卡和修改路由需要相应权限;Clash Verge Rev 的服务模式可让具有权限的后台服务启动内核,不代表必须一直以管理员身份运行整个界面。服务模式说明
把“规则”改成“全局”,改变的是进入内核后的出口选择。一个完全没有进入客户端的应用,不会因为切到全局就自动被接管。
反过来,开启 TUN 也不要求使用全局模式。TUN + 规则模式可以接管更多应用,同时继续按规则让部分连接直连、部分连接使用节点。规则与全局模式说明
| 常见组合 | 实际含义 |
|---|---|
| 系统代理 + 规则 | 遵循系统代理的请求进入客户端,再按当前配置分流 |
| 系统代理 + 全局 | 进入内核的普通业务连接使用全局策略;未被接管的应用仍可能绕过 |
| TUN + 规则 | 被 TUN 接管的连接按规则选择出口,并非全部使用代理节点 |
| TUN + 全局 | 被接管的普通业务连接使用全局策略;仍需查看所选策略是否为可用节点 |
一个具体例子:浏览器和下载工具访问同一域名,浏览器连接记录里显示了节点,下载工具却没有记录。此时应优先检查下载工具的代理设置或接管方式;反复切换全局,通常没有解决前面的缺口。
如果流量已经进入客户端,却仍走错节点,可以继续看规则模式、代理组与实际出口的检查方法,分清应该改哪一个组。
| 你要完成的事 | 可以先这样做 |
|---|---|
| 主要浏览网页,常用软件已经正常 | 使用系统代理 + 规则模式 |
| 只有一个应用不跟随系统设置,且自带代理选项 | 给该应用配置正确的本机代理端口 |
| 多个应用不支持代理设置,希望统一处理 | 考虑 TUN + 规则模式,再逐个检查所需应用 |
| 游戏或语音涉及 UDP | 检查 TUN 接管,同时确认所选节点支持所需 UDP 转发 |
| 需要同时访问公司 VPN、NAS 或局域网设备 | 先明确这些连接的路径,再设置绕过或直连,避免盲目全局接管 |
TUN 不是加速档位。 游戏登录网页能打开,不代表游戏数据传输已经正常;节点对网页可用,也不代表它能承载所需的 UDP。选择方式要看应用连接是否按预期工作,而不是哪个开关听起来更强。
系统代理和 TUN 可以同时存在,但两个开关都开不代表效果翻倍。应用主动交给本机端口的请求,本来就已进入客户端;其他连接可能由 TUN 接管。排错时,先明确正在验证哪条路径,比同时改动多个设置更容易找到原因。
先确保客户端已经导入配置、选中可用节点,并完成基本连接。尚未完成这一步,可以按对应平台的教程操作:Windows、Mac、Linux。
关掉系统代理后应用仍能联网,只能说明它不依赖刚才关闭的那项设置。还要结合新连接记录和实际出口,才能判断 TUN 是否按预期接管;应用本来就能直连时,单凭“能打开”尤其容易误判。
如果切换后异常,先关闭 TUN,恢复刚才记录的系统代理和应用设置,让连接回到原先可用的状态,再按下一节定位。
先检查该应用是否跟随系统代理,或者是否需要独立配置。观察它发起新请求时,客户端有没有相应连接记录。记录里没有出现时,先清除列表筛选、重试并查看日志,排查接管问题;已经出现时,再看命中的规则和实际出口。
DIRECT 表示这条连接由客户端直连,并不等于 TUN 没有工作。检查它是否命中了局域网、国内地址等直连规则,或代理组本身选中了 DIRECT。需要改变的是对应出口策略,而不是反复重启虚拟网卡。
把登录请求和实时数据连接分开看。后者可能使用不同的地址、端口和 UDP。确认目标连接已进入客户端,再检查节点是否支持相关转发;网页测试成功不能代替这项检查。
先恢复原先可用的方式,再检查路由重叠、网段冲突和客户端日志。系统代理绕过、TUN 路由排除与内核 DIRECT 规则各自发生在不同位置,不应混为一谈。不要把删除网卡或关闭全部防火墙作为第一步。代理绕过说明、Windows TUN 常见问题
检查 TUN 是否仍开启,以及应用自己的代理设置是否仍生效。想停用本客户端的接管,应同时处理实际启用的入口,并重新建立连接。关闭窗口可能只是把客户端收进托盘,也不等于退出。
访问网站的连接和解析域名的查询,可能走不同路径。TUN 已经开启,并不能直接推出“DNS 一定经过节点”。普通 DNS 是否被接管、应用是否使用独立的加密 DNS,以及解析服务连接走直连还是代理,都需要分别看。
例如,浏览器使用 DoH 时,查询本身是加密的 HTTPS 连接。它可能经 TUN 进入内核,但不会仅因一条针对 53 端口的 DNS 劫持设置,就自动变成 Mihomo 内置 DNS 处理的查询。相关字段和平台差异见Mihomo TUN 配置。
想继续检查解析路径,可以阅读DNS 防泄漏配置与验证。日常排查时,先确认应用连接进入了哪里,再看它选了什么出口,最后补上 DNS 这条路径,通常比不断切换“系统代理、TUN、全局”更有效。
App Store 使用说明
'; + foreach (['freenode', 'shadowrocketids'] as $category) { + self::assertSame($resource, ResourceArticlePresentation::body($prompts.$resource, $category)); + } + self::assertSame($prompts.$resource, ResourceArticlePresentation::body($prompts.$resource, 'advanced')); + } + + public function test_unrelated_github_and_telegram_links_are_kept(): void + { + $body = '在 GitHub 下载客户端。
Telegram 客户端教程
'; + self::assertSame($body, ResourceArticlePresentation::body($body, 'freenode')); + } +}