把「在已跑 nginx 的 VPS 上从零搭起橙云 + 灰云双链路、并用 3x-ui 管多用户」 的全过程沉淀成技能:五阶段工作流、五条硬性前提、三条易踩反的判据、19 条避坑。 - references/01 前置取证与选型:泛解析不等通、端口取证、nginx 约束下的选型 - references/02 服务端落地:3x-ui 与 sing-box 两条路线,含包名与 2096 冲突 - references/03 nginx 与证书:80 → 签证书 → 443 的顺序、AEAD 套件、口令文件位置 - references/04 面板与多用户:3x-ui 三层模型、加人步骤、CSRF 登录法 - references/05 避坑清单:19 条,正向写做法、括号里附踩过的坑 - scripts/verify-links.sh 与 scripts/3xui-api.py:两个脚本均对真实环境跑通 正文已脱敏,域名/端口/口令/UUID/主机 全部改为占位符。
112 lines
6.3 KiB
Plaintext
112 lines
6.3 KiB
Plaintext
# ══════════════════════════════════════════════════════════════════════════
|
||
# 🔴🔴 白名单:本仓**只收录对外发布的那几个技能**(用户 2026-10-09 令:「肯定要收回」)
|
||
# 写法=先把根下一律挡掉(`/*`),再逐个放行。⛔ 这样"新冒出来的技能目录"
|
||
# 不会被任何 `git add -A` 顺手捎进仓库 —— 2026-10-08 那 9 个就是这么混进来的。
|
||
# 本轮从索引撤出(**本地文件一律保留**):AI HOT、draw-ui、dsh-diagnose、dsh-knowledge、
|
||
# dsh-local-env、dsh-opensource-release、dsh-workflow、oil-motion、skills-security-check
|
||
# ⚠️ 保留 oil-ui-pro:它是 product-planning 第③段的**功能依赖**(撤了两边都会悬空)。
|
||
# ══════════════════════════════════════════════════════════════════════════
|
||
/*
|
||
!/.gitignore
|
||
# 🔴 2026-10-14 加:行尾符策略文件。它跟 `.gitignore` 一样是**仓级规则**,必须入库 ——
|
||
# ⛔ 不入库的话别的机器取仓后仍按各自 `core.autocrlf` 各行其是,本仓的行尾符约定形同虚设。
|
||
!/.gitattributes
|
||
!/改包纪律.md
|
||
!/browser-harness/
|
||
!/humanizer/
|
||
!/oil-ui-pro/
|
||
!/open-design/
|
||
!/product-planning/
|
||
!/session-mechanism/
|
||
# 🔴 2026-10-12 加(用户当轮令「可以加入」):新建的全局技能 `video-capture`(取视频 + 抽帧)要入库。
|
||
# 判据=product-planning 第③段已把它当**依赖**引用(交接说明指向它)⇒ 仓里有引用、仓里就该有实体;
|
||
# ⛔ 否则别的机器从本仓还原会拿到一个「指向装不出来的技能」的悬空引用。
|
||
# ⚠️ 它目录内的 `env/`、`logs/` 仍被下面那几条本机配置规则挡着 —— 那部分照旧各机器自建。
|
||
!/video-capture/
|
||
|
||
# 🔴 2026-10-18 加(用户当轮令「脱敏后进仓」):双链路代理的搭建与运维技能。
|
||
# 正文已脱敏(域名/IP/UUID/口令一律用占位符),本机的真实参数留在工作区的部署文档里。
|
||
!/dual-link-proxy/
|
||
|
||
# 🔴 不入库:运行期产物与备份
|
||
# 判据(记忆铁律):技能包=**可复制的资产**;⛔ 运行日志/缓存/备份/本机部署副本一律不入库。
|
||
|
||
# 运行日志(install.py 每次跑都写)
|
||
*.log
|
||
install.log
|
||
*_collabd.log
|
||
# 缓存
|
||
__pycache__/
|
||
*.pyc
|
||
*.pyo
|
||
# 备份(⛔ 备份不是资产,是历史)
|
||
*.bak-*
|
||
*.bak
|
||
*.orig
|
||
*.rej
|
||
*.mutbak
|
||
# 编辑器
|
||
.DS_Store
|
||
Thumbs.db
|
||
*.swp
|
||
*~
|
||
|
||
# 🔴 2026-10-09 改(用户令:「A 肯定要收回」+「别的电脑取仓时不要影响已有文件」):
|
||
# 下面两份是 **install.py 在本机生成**的 ⇒ ⛔ 撤出仓库、改为本机各自生成。
|
||
# 为什么必须撤(实测):别的电脑取仓时「同名覆盖」会把它们换成**我们这台机器**的路径
|
||
# ⇒ 那台机器的机制脚本会去找不存在的目录(`roots.env` 里就是本机绝对路径)。
|
||
session-mechanism/references/manifest.md
|
||
|
||
# 🔴🔴 2026-10-11 加(用户令:「脚本是脚本 配置是配置」⇒「**每个技能 需要环境配置的 都有自己的 env文件夹**」):
|
||
# **每台机器各不同**的配置一律放**该技能包自己的 `env/`**;`scripts/` 只留通用代码。
|
||
# 本仓收录的每个技能 —— 其 `env/` 下**只入库 `*.example` 样例**,真配置一律本机生成、不入库
|
||
# (理由同上面那条:入库 ⇒ 别的电脑取仓时被本机路径覆盖 ⇒ 机制去找不存在的目录)。
|
||
# ⚠️ 三行三种层级都写,避免"某个深度漏挡"(`**/env/*` 覆盖任意层,另两行是它的保守冗余)。
|
||
env/*
|
||
!env/*.example
|
||
*/env/*
|
||
!*/env/*.example
|
||
**/env/*
|
||
!**/env/*.example
|
||
# 兼容旧位置(2026-10-11 之前的布局):包根那份 `roots.env` 也是本机真身 ⇒ 同样不许入库。
|
||
# ⚠️ `roots.env` 不带斜杠 ⇒ 按**文件名**匹配任意层级,正好把「包根旧位置」一并兜住。
|
||
roots.env
|
||
|
||
# 📌 刻意**入库**的(⛔ 别误删):
|
||
# assets/*.png —— 文档配图,是内容不是产物
|
||
|
||
# 🔴 凭据类一律不入库(2026-10-06 发现「当前版本仍跟踪」)
|
||
.neodata_token
|
||
|
||
# 🔴 2026-10-07 补(本目录改成 git 工作区后新增,按实测盘点)
|
||
# 运行期目录(session-mechanism/logs 里是钩子日志,不是资产)
|
||
logs/
|
||
tmp/
|
||
# 机制运行时写的**域锁目录**(handoff-guard 的 `.locks`)—— 运行时产物,⛔ 不入库
|
||
# ⚠️ 用 `**/` 兜两种落点:脚本在 `<技能包>/scripts/` 时 ROOT 算成 `<技能包>` ⇒ 是
|
||
# `<技能包>/05-交接单/`;脚本被整体拷到别处时也可能落成 `<技能包>/scripts/05-交接单/`。
|
||
# ⚠️ 与**文档库仓**的同名目录不冲突:那边的 `05-交接单/` 是锁根、**要**入库,本规则只在本仓生效。
|
||
**/05-交接单/
|
||
# 宿主写的技能库迁移标记(每次启动可能重写,⛔ 不是内容)
|
||
.disable_to_model_invocation_migration.json
|
||
.model_invocation_to_override_migration.json
|
||
.user_invocable_only_to_off_migration.json
|
||
_bm_skillid_migration.json
|
||
# 本机虚拟环境与构建产物(browser-harness 等)
|
||
.venv/
|
||
*.egg-info/
|
||
uv.lock
|
||
node_modules/
|
||
# 本机部署副本与状态(`.workbuddy/` 是**工作区**的东西,⛔ 不该出现在技能库)
|
||
.workbuddy/
|
||
|
||
# 🔴 2026-10-16 用户令:「design-system-tiaoyue」**整个目录不入库**(磁盘保留、照常用)。
|
||
# 判据=体积(14 MB:真机组件库 13 MB + 整站样式合并 1.1 MB)+ 可再采(CDP 直连真机重采即可)。
|
||
# 已入库的 9 个文件用 `git rm -r --cached` 移出(⛔ 磁盘保留)。
|
||
# ⚠️ 取仓后③段 D1 定调拿不到自带套 ⇒ 按 `product-planning/references/stage-delivery/SKILL.md` §供给 另取或重采。
|
||
# 🔴 本行必须留在文件末尾:白名单是「先 /* 全挡、再逐个放行」,否则 `!/product-planning/` 会把它放回来。
|
||
/product-planning/references/stage-delivery/assets/design-systems/design-system-tiaoyue/
|
||
|
||
# 运行期存档(`element-picker` 拾取器每次点「确认」都会往这里追加;服务自己会建目录,不入库)
|
||
/product-planning/assets/element-picker/marks/
|