技能仓:技能根绝对路径清零(用户令:严格禁止技能中写这里绝对路径)
用户原话:「SKILL.md:189 判据源写 E:/ProgramData/.workbuddy/skills/ 严格禁止技能中写这里绝对路径(除非跨根目录因引用),跨环境全部报错」 起因:product-planning/SKILL.md:189「判据来源」那句写了技能根绝对路径。 按同一判据全仓反查后清掉 10 个文件: · product-planning:SKILL.md(判据来源 / video-capture 位置 / 本技能位置 + 新增「路径写相对或占位」规则)、 references/_留痕/SKILL-总入口-20261007改说人话前.md、stage-delivery/assets/video-capture/SKILL.md、 scripts/check_naming.py(注释) · session-mechanism:SKILL.md(反例改占位 + 例外条款改写:由「文档/注释不在此列」改为「例外只有跨根引用」)、 references/deploy.md(安装目录)、scripts/session-rules-check.py(docstring)、 boards/会话看板/board-launch.py.tpl(模板占位符) · video-capture:ATTRIBUTION.md(沿革) · 改包纪律.md:3 条 cd 命令 判据(用户给的两分法): · 技能根(本包自己 + 同根技能)⇒ 一律不写绝对路径,写 <技能根>/<技能名>/ · 跨根引用(工作区根 / 文档库根 / 本机软件安装位 / 宿主数据目录)⇒ 才落到具体位置,优先读环境变量 验收: · product-planning 命名闸门:通过 2060 / 失败 0 · session-mechanism 全量自测:PASS 110 / FAIL 0 · 全仓 grep -r 反查该形态:清零(install.log 为运行时产物已 ignore;browser-harness/.venv 为 pip 元数据) · 3 个被编辑器写成 CRLF 的文件已转回 LF,与 .gitattributes 的 eol=lf 对齐
This commit is contained in:
1 parent
7a08cd3366
commit
2f656098de
10 files changed
+19
-18
No files matched your search
@@ -433,10 +433,10 @@ python .workbuddy/collab/collabd.py --set-life 进行中 --by "主会话"
|
||||
🔴🔴 **看板一律进 `boards/<看板名>/`(2026-10-14 用户令:「把这两个看板都纳入会话技能中,分两个看板文件夹」)**:**自带页面的看板程序**(页面 + 脚本 + 启动器)**整包**放本包 `boards/` 下一个看板一个文件夹 ⇒ ⛔ 别把看板的 `.py` 散在 `scripts/`、页面散在 `assets/`(那样一个看板的东西分两处,改的时候必漏)。现有两个:`boards/会话看板/`(会话架构看板 · 端口 20099)/`boards/项目看板/`(项目+任务看板 · 端口 20100)。🔑 判据:**装进来的是"一个能跑起来的界面"⇒ 进 `boards/`;是"被别的程序调用的机制代码"⇒ 进 `scripts/`;是"纯样式或模板"⇒ 进 `assets/`**。
|
||||
|
||||
🔴🔴 **路径一律用相对(2026-10-14 用户令:「会话技能中 能用相对路径的都要用相对路径」)**:包内脚本引用**自己的**文件(`scripts/`、`boards/`、`references/`、`assets/`)一律从 `__file__` 上跳推导,⛔ **不写盘符、不写用户目录**。🔑 **判据问一句:「这个根能不能从『我自己的位置』推出来?」**
|
||||
- **能**(本包自己的目录)⇒ 推导。例:`boards/项目看板/project-board.py` 取包根=`HERE.parent.parent`(上跳两级),⛔ 不写 `"E:/ProgramData/.workbuddy/skills/session-mechanism"`。
|
||||
- **能**(本包自己的目录)⇒ 推导。例:`boards/项目看板/project-board.py` 取包根=`HERE.parent.parent`(上跳两级),⛔ 不写 `<技能根>/session-mechanism/` 这样的绝对路径。
|
||||
- **不能**(工作区根、文档库根、宿主配置目录 —— 技能包跟它们**没有任何相对关系**)⇒ 那是「本机各不同的配置」⇒ **读本包 `env/roots.env`**(`DSH_AIROOT`/`DSH_WS_ROOT`/`CODEBUDDY_CONFIG_DIR`/`DSH_DOCS_ROOT`),⛔ 不在代码里留盘符字面量。
|
||||
- **推不出来 ⇒ 如实报错 + 留痕**(⛔ 不许静默扫空 —— "扫不到"与"本机真没有"表现完全一样,是最难查的一类假象)。
|
||||
- ⚠️ **文档/注释里的绝对路径不在此列**(举例、历史取证、报障记录照写 —— 那是证据,改了反而不忠实)。本条只管**会真正被执行的代码**。
|
||||
- ⚠️ **例外只有一类:跨根引用**(2026-10-14 用户令)—— 工作区根、文档库根、本机软件安装位、宿主数据目录,这些是**从本包推不出来的别的根** ⇒ 才落到具体位置,且优先读环境变量。**技能根(本包自己 + 同根技能)的绝对路径一律不写**,⛔ **连文档、注释、留痕里也不写**(举例、判据来源、引用同根技能,一律写 `<技能根>/<技能名>/` 占位形态)。原因:技能根的位置随环境变(全局技能根还是工作区技能根、用户名与盘符各不相同),写死了换台机器就是死路径,跨环境读起来整片报错。
|
||||
- 📌 落点:`boards/项目看板/project-board.py`(`_sm_load_roots()` + 技能根上跳两级 + `WS_ROOTS` 从 `DSH_AIROOT` 推导)、`scripts/selftest.py`(生产区定位改为扫 `DSH_AIROOT` 下兄弟区,⛔ 不写死某个区名)。
|
||||
|
||||
**⓪ 我要动手(建判据/写验收/报"已完成"/任何带"现在·已·还差"的结论)** ⇒ **先读 `references/00-动手前必过.md`**(🔴 **动手层**,2026-10-04 建,只有三条动作:① 查状态**问程序自己**,⛔ 不许 glob/手拼路径 ② 引用任何读数**先看它什么时候写的** ③ 写判据**先让基线全绿**再谈抓得住 —— 每条都对应当天真实翻车,且都已落判据不许退化)。
|
||||
|
||||
@@ -56,7 +56,7 @@ import sys
|
||||
|
||||
# ── 三处按实际改 ────────────────────────────────────────────────
|
||||
WS = r"<工作区根,例:E:\ProgramData\AIProject\ai1net-dsh-server>"
|
||||
BOARD = r"<技能脚本,例:E:\ProgramData\.workbuddy\skills\session-mechanism\scripts\board.py>"
|
||||
BOARD = r"<技能脚本,例:<技能根>/session-mechanism/scripts/board.py>"
|
||||
PORT = "8788"
|
||||
# ───────────────────────────────────────────────────────────────
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|---|---|
|
||||
| Python | 3.11+(实测 3.13);`ast.parse` 可用的标准库即可,**⛔ 无第三方依赖** |
|
||||
| 宿主 | WorkBuddy 桌面版(需要它的三张只读表 + 自动化排期 + 钩子) |
|
||||
| 目录 | 把本 skill 放到 `<配置目录>/skills/session-mechanism/`(如 `E:/ProgramData/.workbuddy/skills/`) |
|
||||
| 目录 | 把本 skill 放到**技能根**下:`<技能根>/session-mechanism/`(技能根=本机配置目录下的 `skills/`,位置随环境变) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -225,8 +225,8 @@ def _skill_names():
|
||||
|
||||
🔴🔴 2026-10-06 修 **只查全局根 ⇒ 工作区自带技能被判"悬空"(假红,且每轮刷)**。
|
||||
实测(`vibe-product`):其 `MEMORY.md` 里写「`product-planning/`(工作区根)」,
|
||||
而 `product-planning` **只在** `<WS>/.workbuddy/skills/` 里 —— 全局库
|
||||
`E:/ProgramData/.workbuddy/skills/` 下**没有它**(实测 `ls` = No such file)。
|
||||
而 `product-planning` **只在** `<WS>/.workbuddy/skills/` 里 —— 全局技能根
|
||||
下**没有它**(实测 `ls` = No such file)。
|
||||
⇒ 旧判据(只 `listdir(SKILLS)`)每轮报「工作区记忆里的技能指针悬空」,
|
||||
而它惩罚的正是「**工作区自己装的技能**」这种**完全合法**的形态。
|
||||
|
||||
|
||||
Reference in new issue
Block a user