Files
workbuddy_skills/.gitignore
T
admin d81f75f173 技能包:配置与代码分家 —— 每包自建 env/ 放本机专属配置,scripts/ 不再写死本机路径
用户 2026-10-11 原话:
· 19:22「这个环境都是针对一台机器的,同步到别的机器把环境都搞坏了」
· 19:28「不用挪出 用env文件夹区分就行,重点是 脚本是脚本 配置是配置」
· 19:29「每个技能 需要环境配置的 都有自己的 env文件夹」
· 19:30「修改完成后要仔细检查 避免调整后 各技能脚本运行失败」

改动:
1、session-mechanism 新增 env/(roots.env=本机真身不入库 + roots.env.example=样例入库),
   install.py 的 ROOTS_ENV 改指 env/roots.env;全包脚本/hook 的配置定位统一为
   「向上 4 层 × env/roots.env 优先 → 包根 roots.env 兼容 → 技能库那份兜底」。
2、去硬编码:collabctl / keepalive / supervise-launch / board-launch 里的本机路径与本机工作区
   清单全清,改为 DSH_AIROOT(兜底 dirname(DSH_WS_ROOT))+ 扫 <AIROOT>/*/.workbuddy/collab/
   自动发现;保活任务名按 collabd-keepalive-<工作区名> 现推;启动器默认值改 ~/.workbuddy 形态。
3、browser-harness:bh_chrome_keepalive.py 默认值全部改 env 驱动,新增 env/bh.env.example。
4、.gitignore:env/ 下只放行 *.example(三行三种层级)+ 兜住旧位置的包根 roots.env。
5、改包纪律.md 新增「四、包结构:脚本是脚本,配置是配置」,立为全仓通用规矩。
6、文档同步:SKILL.md / deploy.md(新增 §3b 配置层级、§6 换机器必查 6 件事)/ rules.md /
   pitfalls.md / supervise-persistence.md。

验收(本机):py_compile 34 个 py 全过;selftest PASS 109 / FAIL 0;
逐文件实证 8 个 loader 命中 env/roots.env;preflight-lock.sh 同目录实测解出两个根;
install.py --manifest 77 份、语法失败 0。

异机验证(包拷成「新克隆」(只有 *.example)+ 另造假工作区 ws-alpha/ws-beta):
install.py --apply 自生成该机 env/roots.env;collabctl/keepalive 自动发现的确实是
ws-alpha/ws-beta、任务名现推(写死清单确已消除);部署副本本地无 roots.env 时靠
CODEBUDDY_CONFIG_DIR 兜底读到技能库那份;整套 selftest 有宿主库时 PASS 108 / FAIL 1
(唯一 FAIL=该区没有常驻心跳,环境所致;本机常驻在跑时同一套为 PASS 109 / FAIL 0)。
2026-10-11 21:49:28 +08:00

85 lines
3.9 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ══════════════════════════════════════════════════════════════════════════
# 🔴🔴 白名单:本仓**只收录对外发布的那几个技能**(用户 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
!/改包纪律.md
!/browser-harness/
!/humanizer/
!/humanizer-zh/
!/oil-ui-pro/
!/product-planning/
!/session-mechanism/
# 🔴 不入库:运行期产物与备份
# 判据(记忆铁律):技能包=**可复制的资产**;⛔ 运行日志/缓存/备份/本机部署副本一律不入库。
# 运行日志(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/
# 宿主写的技能库迁移标记(每次启动可能重写,⛔ 不是内容)
.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/