Skip to content

Releases: Master-AI-007/ai-link-openwrt

AI-LINK v1.0.3

Choose a tag to compare

@Master-AI-007 Master-AI-007 released this 26 Oct 15:53

AI-LINK v1.0.3

OpenWrt 下一代「永不断连」智能透明代理 · 异地组网回家 · DNS 净网护盾
发布日期:2026-10-26 | 适用:OpenWrt 23.05 / 24.10 / ImmortalWrt / LEDE(fw4 + nftables)


本版主题

内核防掉线自愈 + 非分流模式选点修复。 这一版不加新功能,专注两件事:
让 sing-box 内核不再「崩了就起不来、起来了是黑洞」,以及修好非分流模式下选不了出口节点的问题。


🎯 非分流模式选点(NON-SHUNT-1)

切到「🧱 仅被墙网站走代理 / 🌏 非国内走代理 / 🌐 全局代理」时,下方「当前模式统一出口」的
下拉框以前是空白、选不了节点。现在:

  • 三种子模式(自动节点池 / 手动国家 ➔ 节点 / 直连)完整渲染,切换即时生效
  • 自动池、六大地区及节点计数、按延迟排序的节点列表全部可选
  • 选点后立刻持久化并热切内核出口,不再被自动池评估覆盖

🛡 内核防掉线(P0-1 ~ P0-3)

  • 重启配额解除:respawn 3600 5 5 → respawn 0 5 0(无限重试、5 秒退避),
    不再出现「崩溃 6 次后被 procd 永久放弃拉起」。
  • 独立恢复入口:新增 ai-link restart_core / /etc/init.d/ai-link restart_core,
    不打断 :9099 面板即可重置内核。
  • 进程存活巡检:看门狗每 15 秒检查 sing-box 进程(过滤僵尸与短命辅助进程),
    意外退出立即拉起。
  • 黑洞拆除:内核离线时自动清理残留的 table inet ai_link、ip rule 0x162、
    dnsmasq :7874 上游,避免「内核没了但流量还被塞进黑洞」。

⚙️ 稳定性(P1 ~ P2)

  • 规则指纹:新增 _compute_core_rules_fingerprint(),规则没变就只做热更新,
    日常调分流不再反复重启内核。
  • 指纹持久化:/etc/ai-link/.applied_core_rule_hash,重启后不再误判、少一次多余重载。
  • 升级健康断言:install.sh --upgrade 结束前真实校验进程与端口,输出 UPGRADE OK/FAIL;
    并 trap '' HUP 防止 SSH 断开中断后台挂载。
  • DNS 回退:停机或内核异常时 /etc/resolv.conf 自动回退到上游/公共 DNS,
    路由器不会在服务停止期间「失联」。
  • 面板体验:内核离线时显示醒目横幅 + 一键重启;浏览器断开不再刷 BrokenPipeError 栈。

⬆️ 升级方式

ai-link update --apply
# 或
curl -fsSL https://ai-link-official.pages.dev/upgrade.sh | sh

升级失败自动回滚到升级前版本,配置与节点数据不受影响。


📌 已知限制

  • 面板默认信任局域网(require_lan_auth=false);若面板端口可能暴露公网,请开启「强制内网登录」。
  • v1.0.0 用户仍需手动升级一次(v1.0.0 没有 OTA 模块)。
  • 归档恢复的「空参数回退默认备份」与「导出包含 panel_token」两项仍在待办,计划在 1.0.3.x 处理。

包指纹

见 version.json(packages.full.md5 / sha256 / size)。

AI-LINK v1.0.2

Choose a tag to compare

@Master-AI-007 Master-AI-007 released this 26 Oct 02:48

AI-LINK v1.0.2

OpenWrt 下一代「永不断连」智能透明代理 · 异地组网回家 · DNS 净网护盾
发布日期:2026-10-26 | 适用:OpenWrt 23.05 / 24.10 / ImmortalWrt / LEDE(fw4 + nftables)
安装包:AI-LINK-v1.0.2.tar.gz(1,242,745 B · MD5 d64f77afa6547f69c9d97ee02942a3e3 · SHA256 a8a796355b82f29436ede2fc4ce706cec4fcca7844207753bb05849225231230)


本版主题

全量安全加固 + 启动与看门狗防黑洞 + .tgz 归档上传恢复 + 跨架构兼容。
本版本完整合并了 v1.0.2 RC 的安全/启动/回滚修复(A 节)与 KNOWN-ISSUES.md B 节全部 20 项改进,并将包内 7 处版本标识统一对齐为 1.0.2。


🔐 安全加固(SEC-1SEC-5 & B1-1B1-4)

  1. 面板令牌不再随首页下发(SEC-1):仅在 POST /api/login 校验密码通过后签发令牌,杜绝未登录客户端访问首页即获取有效令牌。
  2. 接口鉴权与敏感数据脱敏闭环(SEC-2~SEC-5):/api/status 对未授权客户端脱敏回家节点 password/uuid/private_key/uri 及订阅 token=,并将鉴权状态与 panel_auth.json 纳入缓存键;GET /api/nodes/share_uri 与 GET /api/ops/logs 强制校验 _auth_ok()(未授权返回 401)。
  3. UCI 凭据零留存(B1-2):/etc/config/ai-link 移除 panel_secret,改用布尔 option panel_pwd_customized '0/1',升级时自动迁移并清除历史 panel_secret,CLI ai-link password 不再向 UCI 写明文或哈希。
  4. 永久下线弱默认密码 admin(B1-3):出厂状态仅接受 ai-link-2026,登录框移除预填明文 value。
  5. 内网免密风险提示与自动登录引导(B1-1):未鉴权打开面板自动弹出登录窗;WebUI 设置页新增 #lan-auth-security-notice 风险提示;LuCI 新增 require_lan_auth 开关并与 ops_settings.json 双向同步。

🚀 启动可靠性与看门狗防黑洞(BOOT-1 / CORE-1 / RB-1 / B1-4 / B3-12)

  1. 多栈端口就绪探针(BOOT-1 & B3-12):init.d/ai-link 采用 netstat → ss → /proc/net/tcp{,6} 探针,同时兼容无 toupper() 的精简版 BusyBox awk,等待预算放宽至 60 秒。
  2. BusyBox pgrep 兼容(CORE-1 & B3-12):统一使用 singbox_alive()(pidof sing-box 探针)与 pgrep -f "ai-link-dae[m]on.py"。
  3. 看门狗与 restore_proxy 端口前置校验(B1-4):挂载 table inet ai_link 前强制验证 :7893 端口监听,防止核心未就绪时造成局域网黑洞。
  4. 回滚收尾立即恢复代理(RB-1):OTA 回滚段重启后立即执行 /etc/init.d/ai-link restore_proxy,消除 10 秒空窗。

📦 备份恢复与在线更新增强(B2-6 ~ B2-11)

  1. 浏览器直接上传 .tgz / .json 恢复与 .tgz 导出(B2-6):面板与 LuCI 均支持上传 .tgz/.tar.gz 归档或 .json 备份直接恢复,并支持一键导出 .tgz 归档(内置路径穿越、非普通文件与 100MB 体积安全校验,且不覆盖当前版本标识)。
  2. 新增 ai-link restore <file|--latest> CLI 命令(B2-7):支持命令行直接恢复 .tgz 或 .json 备份并自动重载服务。
  3. OTA 升级进度闪存持久化(B2-8):升级日志双写至 /root/ai-link-final-backup/last_update_progress.log,断电重启后自动恢复中断状态。
  4. auto_nodes.json 静态哈希恒定(B2-9):落盘剥离实时探测噪声,跨探测周期 MD5 100% 稳定。
  5. 自定义更新源域名与冷启动说明(B2-10 & B2-11):支持 update_manifest_url 自定义域名清单源,并与 UCI 删除/修改双向同步。

⬆️ 升级与重编号刷回说明

# 1. 已安装 v1.0.1 的设备直接在线升级
ai-link update --apply
# 或一键升级脚本
curl -fsSL https://ai-link-official.pages.dev/upgrade.sh | sh

# 2. 若测试机此前安装过构建代号为 1.0.3 的测试包,请解压本包执行一次 --upgrade 刷回正式 1.0.2:
tar -xzf AI-LINK-v1.0.2.tar.gz && sh ai-link-openwrt/install.sh --upgrade

AI-LINK v1.0.1 — 服务总开关 + 在线更新体系

Choose a tag to compare

@Master-AI-007 Master-AI-007 released this 25 Oct 20:24

AI-LINK v1.0.1

OpenWrt 下一代「永不断连」智能透明代理 · 异地组网回家 · DNS 净网护盾
发布日期:2026-10-26 | 适用:OpenWrt 23.05 / 24.10 / ImmortalWrt / LEDE(fw4 + nftables)


本版主题

服务总开关 + 在线更新体系 + 面板密码安全修复。

v1.0.1 是第一个支持在线一键升级的版本。从这一版起,插件可以自己检查新版本、自己下载、自己校验、自己升级、失败自动回滚。


⚙️ 服务总开关(新功能)

解决了什么问题

v1.0.0 有一个隐藏死锁:一旦服务被停掉(/etc/init.d/ai-link stop),
LuCI 概览页上所有按钮全部失效——因为它们都去调 :9099 的 API,而面板已经没了。
而「启用 AI-LINK 透明代理服务」那个勾选框只管流量接管、不管进程启停,
用户勾了也没用,只能 SSH 进去手动 start。

现在怎么做

LuCI 概览页顶部新增独立的「⚙️ 服务总开关」卡片:

能力 说明
状态徽章 ● 运行中 / ◐ 部分运行(内核未起) / ⏹ 已停止
元信息 开机自启 · 透明代理接管 · nftables 挂载 · 面板端口
四个按钮 ▶ 启动服务 / ⏹ 停止服务 / 🔄 重启服务 / 🔁 开机自启开关
自动刷新 每 5 秒同步一次真实状态

关键设计:这条通路不依赖 :9099。
它走 LuCI 自己的 fs.exec → /etc/init.d/ai-link svc_state|start|stop|restart,
所以即使守护进程已经停了,也能在网页上一键把它拉起来,完全不需要 SSH。

语义澄清

开关 管什么
⚙️ 服务总开关(新增) 进程生命周期:启动 / 停止 / 重启 / 开机自启
☑️ 启用 AI-LINK 透明代理服务(原有) 是否接管流量(nftables / dnsmasq / sing-box)

两者独立:enabled=0 时设计上面板仍在线,只是不接管流量。

其他改动

  • reload_service() 兜底:enabled=1 时若 daemon 或 sing-box 任一未运行,直接整体 start
  • 新增 init 动作 svc_state:输出单行 daemon= core= nft= enabled= boot= bypass= port=,供前端统一解析
  • 独立面板同步:设置页新增服务状态卡片 + 「🔄 重启服务」按钮,5 秒自动刷新

🔐 安全修复(建议所有 v1.0.0 用户升级)

编号 问题 说明
PWD-1 LuCI「面板密码」显示为 sha256:xxxx 哈希 改密后 UCI 字段被写入哈希,LuCI 直接把它当密码显示
PWD-2 安装自检会污染生产环境密码字段 --self-test 用临时目录跑改密回归,但函数体无条件 uci set,导致每次安装自检 / ai-link probe 都把真实 panel_secret 覆盖成测试串的哈希
PWD-3 哈希串可直接当密码登录 candidate_pw == get_uci_panel_secret() 旁路已移除
PWD-4 哈希串可直接当 Bearer 令牌绕过登录 tok == get_uci_panel_secret() 旁路已移除,令牌只认签发过的值
PWD-5 认证文件丢失后用户被锁死 旧逻辑用哈希当初始密码重建,真密码失效;现回退默认密码供救急

新增 LuCI 专用桥接令牌 luci_bridge_token:与面板密码完全解耦的 32 位随机串,仅用于 LuCI 页面调用面板 API。改面板密码不影响它,它也不能用来登录面板。


⬆️ 在线更新体系(新功能)

使用方式

入口 操作
LuCI 服务 → AI-LINK → 概览页 「插件版本与在线更新」卡片 → 检查更新 → 立即更新
独立面板 :9099 → 设置 同款卡片,位于「核心库与订阅更新」上方
SSH 命令行 ai-link update(只检查)/ai-link update --apply(检查并升级)

升级流程(八步)

  1. 拉取 version.json —— Cloudflare Pages 主源 → gh_mirror 加速镜像 → GitHub raw 直连,自动重试
  2. 下载升级包 —— 清单内多源依次重试
  3. 校验大小 + MD5 + SHA256 —— 任一不符立即中止,绝不执行未校验的包
  4. 解压并校验包结构
  5. 备份用户配置到 /root/ai-link-final-backup/pre-update-v{版本}-{时间戳}.tgz(自动保留最近 3 份);空间充足时额外备份旧代码
  6. 执行 install.sh --upgrade
  7. 重启服务并做健康检查
  8. 健康检查失败 → 自动回滚并再次验证

工程要点

  • 升级进程与主服务解耦:升级脚本用 setsid 脱离 daemon 会话,安装脚本重启服务不会把它杀掉;进度实时落盘,重启后新进程接着读,因此用户能看到完整结果,而不是"页面转圈然后失联"。
  • 安全护栏:清单缺 MD5 直接拒绝升级;同一时间只允许一个升级任务;升级中重复点击被拒绝。
  • 代理环境变量免疫:清单与升级包请求显式绕过 http_proxy/https_proxy,避免路由器上残留的代理变量把 OTA 误判成"清单不可达"。

新增 API

方法 路径 说明
GET /api/system/version 当前版本、构建号、清单源列表
GET /api/system/update/check 拉取清单并比较版本(?force=1 跳过 5 分钟缓存)
GET /api/system/update/status 升级进度与最近日志
POST /api/system/update/apply 启动升级
POST /api/system/update/ack 清除已完成的升级结果

🛠 安装脚本

  • 新增 install.sh --upgrade 升级模式:
    • 不再停止/禁用其他代理服务(避免误伤用户后装的组件)
    • 不再删除音乐解锁组件(原安装流程会 rm -rf 掉,在线升级时会造成"静默卸载")
    • 其余流程保持幂等,用户配置与 UCI 设置全部保留

📦 下载

文件 大小 MD5
AI-LINK-v1.0.1.tar.gz 1,200,649 B 4375dddea1dc4bdd6b8cadb330ace239
version.json 2,083 B 见文件内 sha256 字段
CHANGELOG.md 7,459 B —

SHA256:b548232f3bfe0eef136df6c49c85391b62369794b122d9cfe870677f2c12c769

校验:md5sum AI-LINK-v1.0.1.tar.gz 应等于上表值。


安装 / 升级

v1.0.0 用户(需手动升级一次)

v1.0.0 尚未内置在线更新模块,请手动执行一次:

curl -fsSL https://ai-link-official.pages.dev/install.sh | sh

v1.0.1 及以后(在线一键)

ai-link update --apply

或在面板 / LuCI 点「立即更新」。

全新安装

curl -fsSL https://ai-link-official.pages.dev/install.sh | sh

国内网络强制走加速镜像:

curl -fsSL https://ai-link-official.pages.dev/install.sh | AI_LINK_MIRROR=https://ghfast.top/https://github.com/Master-AI-007/ai-link-openwrt/releases/download/v1.0.1 sh

手动安装

tar -xzf AI-LINK-v1.0.1.tar.gz
cd ai-link-openwrt
sh install.sh

安装完成后访问 http://<路由器IP>:9099(独立面板)或 LuCI → 服务 → AI-LINK 智能代理。

卸载:

ai-link uninstall -y             # 彻底卸载(自动归档 /etc/ai-link)
ai-link uninstall --keep-config  # 保留配置卸载

验收状态

项 结果
发布门禁(13 项) 13 / 13 PASS
OTA 端到端测试(19 项) 19 / 19 PASS
面板密码缺陷 A/B 对照 3 条漏洞全部堵死,真密码/真令牌/默认密码救急未回归
静态门禁 py_compile ✓ · node --check ✓ · bash -n ✓ · symtable 未定义 0 ✓
HTML 标签配平 overview.js 34/34 · index.html 842/842
面板内联脚本语法 4 块全部通过
版本一致性 daemon / install.sh / version 文件 / 面板徽章 四处一致

已知问题

  1. v1.0.0 → v1.0.1 必须手动升级一次(v1.0.0 没有 OTA 模块)。
  2. 面板与 LuCI 的升级进度在服务重启瞬间会短暂断连,属正常现象,2 秒轮询会自动恢复。
  3. auto_nodes.json 含实时探测数据,daemon 运行时会持续重写,不适合作为备份一致性比对项。

反馈

AI-LINK v1.0.0 正式版

Choose a tag to compare

@Master-AI-007 Master-AI-007 released this 25 Oct 18:26

AI-LINK v1.0.0 正式版

OpenWrt 下一代「永不断连」智能透明代理 · 异地组网回家 · DNS 净网护盾
发布日期:2026-10-26 | 适用:OpenWrt 23.05 / 24.10 / ImmortalWrt / LEDE(fw4 + nftables)


本版要点

v1.0.0 是封版(Production Release),核心引擎 sing-box 1.12+/1.14+ + nftables TProxy/Redirect。

主要能力

  • 自动节点池(1~5 组优先级):粘性锁定 + 双组探测 + 20 秒死节点自动逃生,节点切换不掉线
  • 单臂旁路由对称 NAT:@cn_ip4/@cn_ip6 硬件级国内旁路,配合 srcnat masquerade 解决回程非对称
  • 免证书 HomeLink:VLESS-Reality 与 Hysteria2,动态 pinSHA256,手机流量直连回家
  • 五种全局路由模式:分流 / 全局代理 / 全直连 / 国内白名单 / 仅被墙网站
  • DNS 净网护盾:50,074 条拦截规则,DNS 层 REFUSED + 路由层 REJECT 双层记账
  • 备份 / 恢复出厂:归档备份字节级还原(含面板密码与 UCI),一键恢复出厂自动归档

本版修复(相对上一轮验收)

编号 修复
FR-1 停止/卸载时清理 fc00::/18 FakeIP 路由
FR-2 nf_conntrack_tcp_be_liberal 记录原值并在卸载时还原(不再给系统留全局副作用)
FR-3 JSON 备份完整覆盖 panel_auth 与 UCI panel_secret,恢复后面板密码不再回默认弱口令
FR-4 仅被墙网站走代理 模式修正:bing / apple / microsoft / cloudflare 等未墙站点恢复直连
FR-5 卸载不再用 /tmp/ai-link* 通配删除,避免误删用户解包的源码目录
FR-6 sleep 0.3 → sleep 1,兼容精简版 BusyBox

下载

文件 大小 MD5
AI-LINK-v1.0.0.tar.gz 1,176,852 B 3d2710605ce844b0702bb60926fa5e2c
luci-app-ai-link_2.0.0-r8_all.ipk 567,995 B 875ff6cf138252359bb8102a2667289b
AI-LINK-v1.0.0-manual.pdf 4,064,322 B aaa100db4c90960b08d50b411312973d

校验:md5sum AI-LINK-v1.0.0.tar.gz 应等于上表值。
注:压缩包与内部构建产物(6b8f53b6…)仅差一个 README.md(本手册更新版),其余 25 个文件字节一致。


安装

方式一:在线一键(推荐)

SSH 登录路由器,执行一行:

curl -fsSL https://ai-link-official.pages.dev/install.sh | sh

脚本会依次完成:检测系统环境 → 按「官方源 → ghfast.top → gh-proxy.com → GitHub」顺序自动选源下载 → MD5 校验 → 解包 → 调用安装程序。

国内网络想强制走加速镜像:

curl -fsSL https://ai-link-official.pages.dev/install.sh | AI_LINK_MIRROR=https://ghfast.top/https://github.com/Master-AI-007/ai-link-openwrt/releases/download/v1.0.0 sh

只想先看看它做什么(不实际安装):

curl -fsSL https://ai-link-official.pages.dev/install.sh | sh -s -- --dry-run

方式二:手动下载安装

tar -xzf AI-LINK-v1.0.0.tar.gz
cd ai-link-openwrt
sh install.sh

安装完成后访问 http://<路由器IP>:9099(独立面板)或 LuCI → 服务 → AI-LINK 智能代理。

升级:直接执行 install.sh 即可,脚本会备份现有 /etc/config/ai-link 并逐项合并,保留节点、订阅与系统开关。

卸载:

ai-link uninstall -y            # 彻底卸载(自动归档 /etc/ai-link 到 /root/ai-link-final-backup/)
ai-link uninstall --keep-config # 保留配置卸载

验收状态

项 结果
交付门禁(23 项) 23 / 23 PASS
内置契约自检 --self-test SELF_TEST_PASSED
静态门禁 div 834/834 · CRLF 0 · symtable 未定义 0
全新安装(零残留状态) 22/22 组件完整
卸载残留 0(源码目录保留)
备份 → 恢复出厂 → 恢复 数据与设置 16/17 一致(auto_nodes.json 为运行时探测数据)
五种路由模式 逐模式实测通过
IPv6 双模式 防火墙层差异验证通过

已知问题

  1. 手册提到的 scripts/state_hash.py / scripts/residue_scan.py 未随压缩包分发(手册第 7 章)。这两个是验收工具,可在本仓库 scripts/ 目录获取。
  2. auto_nodes.json 含实时探测数据(current_delay_ms、quality_ranking 等),daemon 运行时会持续重写,不适合作为备份一致性比对项。

反馈

  • 问题与建议:本仓库 Issues
  • 使用手册:AI-LINK-v1.0.0-manual.pdf