EvoX Genesis
EvoX Genesis turns a high-level software objective into a persistent recursive software world: finite-lived agents recursively develop software, while only accepted consequences persist across develop
翻译准备中
尚未检测到更新。GitHub 发布版本后会显示在这里。
个人 GitHub 账号下公开仓库的所有者可以登录并验证所有权,自行管理介绍,无需管理员批准。
登录并生成验证文件,在 30 分钟内将其提交到此仓库的默认分支。其他分支或分叉仓库中的文件无效。然后在下方检查文件,即可无需管理员批准直接管理项目。请保留文件以维持管理权限。
如需登录,将前往登录页面。登录后请回到此处,再次点击所选的验证按钮。
在项目文件夹中运行 /nomorevibe verify,即可验证所有权并自行管理介绍。
一分钟完成验证sing-box 配置生成器:填入节点,DNS、IPv6 与分流按最佳实践配好。A sing-box 1.14+ config generator with battle-tested DNS, IPv6 and routing; runs entirely in your browser.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗填入节点,DNS、IPv6 与分流按最佳实践配好。
在线使用:https://sing-box-confgen.riverleaf.dev
一份 sing-box 配置用着别扭,问题多半不在节点,而在看不见的地方。这个生成器把这些坑逐一实测、给出对策,你只需要填节点,就能得到一份完整的 config.json,导入 SFM、SFI、SFA 或命令行版即可使用。
| 症状 | 原因 | 这里的做法 |
|---|---|---|
| 国内网站被解析到海外,或者被墙的域名打不开 | DNS 没有跟着分流走:国内域名问了海外 DNS,被墙域名拿到污染的地址 | 直连的用本地 DNS,走代理的经代理问远程 DNS;拿不准的域名两边一起问,答出国内 IP 才直连(DNS 策略) |
| 开了代理,部分连接却绕过去或连不上 | 应用优先用 IPv6,而代理服务器没有 IPv6,或者 IPv6 根本不经过 sing-box | 走代理只给 A 记录,连 HTTPS/SVCB 里的 IPv6 提示一起清掉;本机没有 IPv6 时直连也干净地回退到 IPv4(IPv6 策略) |
| 网站频繁要求验证、风控 | 出口 IP 在 IPv4 和 IPv6、不同服务器之间漂移 | 走代理的流量始终从同一台服务器、同一个 IPv4 出去 |
| 换了节点,有些东西还走旧线路 | DNS、规则集下载各有各的出口 | 代理流量、远程 DNS、规则集下载共用一个 proxy 出口,换节点时一起换(代理组) |
| 一开全局,家里的 NAS、公司内网就连不上 | 局域网和内网流量也被送进了代理 | 局域网在任何模式下直连;在外面用内置的 Tailscale 连回 tailnet,内网域名交给 tailnet 的 DNS 拿到内网地址(Tailscale) |
每条策略都在日常使用中实测过,生成的配置在 Linux、macOS、Windows 上用官方 sing-box check 检查过。完整的设计理由见 DESIGN.md。
config.json(节点和 Tailscale),或 Clash(mihomo)的 YAML(节点和代理组);也可以导入机场订阅的内容(Clash YAML、明文或 base64 的分享链接、SIP008)。DNS 和分流按这里的策略重写。config.json:导入 SFM、SFI、SFA,或运行 sing-box run -c config.json。需要 sing-box 1.14 及以上。最后一件事:浏览器的“安全 DNS”(DoH)请保持“自动”或关闭。手动指定 DoH 服务商会绕过 sing-box 的 DNS 分流。
config.json 本身也能再导入回来。curl 命令和打开链接,由你自己取回内容再粘贴或选择文件。订阅地址不会保存,导入是一次性的,节点更新后需要重新导入。网页只提供一套策略和少量开关。网页里没有的改动(例如加一个 SOCKS 入站、让某个 App 不经过 sing-box),可以交给 Claude Code、Codex、Cursor 等 AI 编程助手。本仓库附带一个 skill:sing-box-best-practice,它告诉助手:
proxy 出口、走代理只给 IPv4、直连优先等),常见修改要同时改哪几处;src/generate.ts。用 skills CLI 安装(需要 Node.js):
npx skills add riverscn/singbox-confgen
按提示选择你用的助手。常用选项:
| 选项 | 作用 |
|---|---|
-g | 装到用户目录,所有项目都能用(默认只装到当前项目) |
-a claude-code | 只装给指定的助手,例如 claude-code、codex、cursor |
--skill sing-box-best-practice | 只装这一个 skill |
-y | 跳过确认 |
例如不经询问、全局装给 Claude Code:
npx skills add riverscn/singbox-confgen --skill sing-box-best-practice -g -a claude-code -y
之后用 npx skills update 更新。装好后,把下载的 config.json 交给助手,直接说要什么,例如“加一个 SOCKS 入站,让局域网里的其他设备也能用”,或者“这个网站在 Non-CN 模式下为什么走了代理?”。能在网页里做的改动,助手会建议你回网页改,因为下次从网页下载会覆盖手改的内容。
| 卡片 | 内容 |
|---|---|
| 节点 | 用 JSON 编写(可写注释),从协议模板开始:Hysteria2、VLESS(Vision / Reality)、VMess、Trojan、Shadowsocks、ShadowTLS、TUIC、AnyTLS、Hysteria、NaiveProxy、Snell、SOCKS、HTTP、SSH、Tor,以及 WireGuard、OpenConnect、OpenVPN 端点 |
| 代理组 | 按地区、用途给节点分组:手动选择或自动测速,可嵌套;成员可按名称筛选后一次选中;proxy 的默认选择;节点多时可不在 proxy 里逐个列出 |
| 分流 | 默认模式;直连域名;代理域名和 IP(适合被墙但不在 gfwlist 里的网站);规则(域名、IP 或规则集走 proxy、auto、direct,或指定节点、代理组);DNS 分流(指定域名用本地 DNS、代理 DNS、某个 tailnet 的 DNS 或自定义的 DNS 服务器解析,例如公司域名问 tailnet 的全局 DNS,或经 WireGuard、OpenConnect 问内网 DNS) |
| Tailscale | 任意多个 tailnet:端点用 JSON 编写(可写注释);MagicDNS(含后台配置的 split DNS)、tailnet 默认 DNS、额外路由、作为代理出口 |
| 高级 | 目标平台;代理 DNS 服务器(Google / Cloudflare / Quad9,DoT 或 DoH,或用 JSON 自定义任意 DNS 服务器);ECS;Clash API;Steam、禁止 iCloud 使用 QUIC |
npm install
npm run dev # 本地开发
npm test # 规则推演和蓝本比对
npm run build # 输出到 dist/
# 用真实的 sing-box 检查每个节点模板和功能组合生成的配置
# (下载脚本会用 GitHub 发布页公布的 SHA-256 校验二进制)
SING_BOX=$(python3 scripts/fetch-sing-box.py 1.14.3 /tmp/sing-box) npm run check:singbox
推送到 GitHub 后,CI(.github/workflows/ci.yml)会跑测试和构建,并在 Linux、macOS、Windows 上分别执行上面的检查。
站点是一个只含静态资源的 Cloudflare Worker(wrangler.jsonc,资源目录 dist/),由 Cloudflare 的 Git 集成(Workers Builds)构建和部署,GitHub 里不需要任何 Cloudflare 凭据:
main:每次推送(通常是合并 PR)都部署到正式地址。noindex),需要时可用 Cloudflare Access 保护。v1.2.3,需与 package.json 的 version 一致):GitHub Actions 跑完测试和三平台 sing-box check 后创建 GitHub Release,附上 dist/ 的压缩包供自部署。tag 不影响部署。日常改动在分支上做,看过 Preview 再合并到 main。
在 Cloudflare 里设置一次(Workers & Pages → Create → Import a repository,选这个仓库):
| 设置 | 值 |
|---|---|
| Git branch(正式分支) | main |
| Build command | npm run build |
| Deploy command | npx wrangler deploy(默认) |
| Preview command | npx wrangler preview(默认) |
| Root directory | / |
依赖会自动安装,Node 版本取自 .node-version。
在 main 上发布一个版本号(GitHub Release):
npm version 0.2.0 -m "Release %s"
git push --follow-tags
dist/_headers 来自 public/_headers,给所有响应加上 frame-ancestors 'none'、nosniff 等安全响应头;页面本身的 CSP 在构建时写进 index.html。构建时还会把首屏预渲染进 index.html(src/prerender.tsx),不执行 JavaScript 的搜索引擎也能读到页面内容;robots.txt、sitemap.xml 和分享卡片图 og.png 在 public/ 里。本地可以用 npx wrangler dev 在 Workers 运行时里预览构建结果。
npm run build 后,把 dist/ 放到任意静态托管(Nginx、Caddy、Cloudflare Pages、GitHub Pages 等)。资源用相对路径引用,挂在子路径下也能用。index.html 里的 canonical 和 og:url 指向官方站点;自部署且希望被搜索引擎收录时,改成你自己的地址。
通过 http 访问时,浏览器可能禁用剪贴板 API,页面会自动退回旧的复制方式。
src/generate.ts:配置生成器和校验。src/types.ts:设置的数据模型;src/defaults.ts:默认值;src/templates.ts:节点协议模板。src/legacy.ts:把旧版(表单)保存的服务器迁移为 JSON 节点。src/importer.ts:从现有 sing-box 配置导入节点和 Tailscale。src/clash.ts:从 Clash(mihomo)配置导入节点和代理组。src/subscription.ts:识别订阅内容(分享链接、base64、SIP008),把分享链接读成 Clash 的代理字段,再交给 src/clash.ts 转换;解析规则参照 mihomo 和 Sub-Store。src/import-dialog.tsx:导入对话框(文件、粘贴、订阅地址的取回方式)。src/App.tsx:界面;src/storage.ts:本地保存和导入时的兼容处理。test/generate.test.ts:
test/fixtures/tiger-baseline.json,已匿名化)的非 DNS 部分;test/dnswalk.ts 按“模式 × 查询类型 × 域名类别”推演会问哪个服务器、最终怎么回答。test/normalize.ts:抹平 SFM 重新保存配置时的写法差异(单元素数组、默认值、时长格式)。test/samples.ts:覆盖全部节点模板和功能、平台组合的示例配置,供 schema 测试和 sing-box check 共用。test/schema.test.ts:用 sing-box 1.14.3 官方 JSON schema(test/fixtures/sing-box-1.14.3.schema.json)校验所有示例配置。test/storage.test.ts:多套配置的存储和旧数据迁移。test/subscription.test.ts:各协议分享链接、SIP008 和 base64 订阅的导入,以及生成的配置符合 schema。skills/sing-box-best-practice/:给 AI 编程助手用的 skill,说明如何修改生成的配置。scripts/:下载并校验官方 sing-box(fetch-sing-box.py),对示例配置跑 sing-box check(singbox-check.ts)。