Files
mcn-short-video/project/短视频脚本创作/V1.0/references/规则/路径引用规范.md
T
maogeigei 061bbb64fb 全技能树相对路径审计+路径引用规范固化(P0)
- 审计 V1.0 全树(主技能+references+全部subskills及嵌套)Windows/Unix 绝对路径与 md 断链
- 豁免判定: 环境判别锚点/路径配置表/示例路径保留; browser-harness/envs 由 gitignore 兜底不随分发
- 修复: SKILL.md 七节越级引用 ../../../失误与规避记录.md 改语义说明(仅开发机维护场景); mcn-dou-analysis 内嵌 nuwa-skill-main 断链(多语言/社区/评分卡/示例 LICENSE)改官方 GitHub URL(源+dsh 副本同步)
- 新增 references/规则/路径引用规范.md(相对路径铁律: 允许项~占位/__file__推导/URL + 禁令盘符/Unix/越级 + 豁免 + 自检), 模板同步 V1.0+4 自有 subskills+dsh 4 副本
- 5 源 SKILL.md + 4 dsh SKILL.md 挂 🔴 路径引用引用行
- 自有内容 md 断链复验=0; 临时审计脚本已清理
2026-09-03 10:15:54 +08:00

58 lines
5.0 KiB
Markdown
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.
# 路径引用规范(相对路径铁律,P0)
> 适用:本技能树(主技能 + references/references-add + scripts + 全部 subskills 及嵌套 subskills)。技能会被部署到 **开发机 / dsh 环境 / 用户环境** 三种机器,**绝对路径随机器变化必然失效**,故技能内一切文件引用一律使用**相对路径**。
## 一、铁律(3 条)
1. **技能包内引用一律相对**:md 链接、代码文件操作、配置路径,只允许相对路径,禁止绝对路径(Windows 盘符 `C:\`、`D:\`… 与 Unix `/Users/`、`/home/`… 均禁)。
2. **md 链接相对「该 md 文件自身」所在目录解析**(不是相对技能根);链接目标必须在技能包内,或用 URL 指向外部。
3. **引用不得越级出技能根**:禁止 `../` 跳出本技能根引用技能包外文件(技能包外文件不存在于部署环境)。确实需要的包外文件 → 要么移入技能包,要么改为 URL / 语义描述。
## 二、允许项(这些可以写)
| 写法 | 示例 | 说明 |
|------|------|------|
| 相对技能根路径 | `references/创作流程规范.md`、`scripts/fetch.py` | 引用包内文件 |
| md 相对链接(示例写法) | `[规范](../接口调用/某文件.md)` | 相对该 md 所在文件解析,目标在包内 |
| 用户级路径(`~`/占位) | `~/.workbuddy/workbuddy.db`、`{主目录}/.dsh/...` | 用户级,跨机器一致;Windows 用 `%USERPROFILE%` 语义的 `{用户名}` 占位 |
| `__file__` 动态推导 | `BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))` | 脚本定位技能根,跨环境可迁移 |
| 环境变量 | `os.getenv("REDFOX_API_KEY")`、`MCN_RANKING_DIR` | 值由外部注入 |
| URL | `https://github.com/...` | 外部资源 |
| 环境判别锚点 | 「本机是否存在 `D:\AgentSkill`」「技能路径是否含 `.dsh`」 | 仅作**是否存在/是否包含**的判定条件,**禁止**将其作为实际读写路径 |
| 动态产出目录占位 | 桌面 `MCNSkill项目/{账号名}/`、`D:\dshworkspace\创作任务\` | 由各技能 `references(-add)/路径配置.md` 运行时判定,允许出现于规则文档 |
## 三、禁令项(这些绝对禁止)
- **Windows 盘符绝对路径**:`C:\Users\maidou\...`、`D:\AgentSkill\...`(含正反斜杠两种写法)——除「环境判别锚点/路径配置规则表」语境外的任何引用位置。
- **Unix 绝对路径**:`/Users/maidou/...`、`/home/...`、`/tmp/...`(shebang `#!/usr/bin/env python3` 除外)。
- **越级引用**:`../../..` 跳出技能根指向包外文件。
- **引用技能包外文档**:md 链接指向不存在于包内的本地文件(如仓库根的维护文档)——部署环境无此文件即断链。
- **硬编码用户名/盘符到产出路径**:`C:\Users\maidou\Desktop\...` 必须写 `{用户名}` 占位 + 运行时解析。
## 四、例外(明确豁免)
| 场景 | 说明 |
|------|------|
| 仅开发机工具 | 不随技能分发的目录(如 `mcn-work-shop/`),内部可保留开发机路径 |
| 环境判别/路径配置文档 | `路径配置.md`、SKILL.md 环境判定节——锚点 `D:\AgentSkill`、`.dsh`、`D:\dshworkspace\...` 是**规则内容**不是引用,保留 |
| 示例/教学文本 | `C:/Videos/demo.mp4`、`C:/path/to/file` 等明确示例(`path/to`、`demo` 字样) |
| 历史日志 | `.workbuddy/memory/` 既有日志保留原样,不改写历史 |
| 第三方整包 | 整包拷贝的第三方技能(如 browser-harness/lieflat-charts/参考skills/)内部自带约定不重写;但**本技能对它们的引用**仍须相对路径 |
## 五、设置引用时的操作要点
1. **新建/修改任何 md 引用或代码路径**:先问「这段代码/文档会被部署到用户环境吗?」——会 → 用相对路径或允许项写法。
2. **Python 脚本读写文件**:统一用 `__file__` 推导技能根常量(如 `BASE_DIR`),再 `os.path.join(BASE_DIR, ...)` 拼子路径;禁止字符串拼接盘符。
3. **md 链接加完必须自检**:确认目标文件真实存在(相对自身文件解析),`../` 层数不超过技能根。
4. **引用技能包外但必需的本地文件**:先评估移入包内;无法移入 → 去掉链接改为语义描述并注明「仅开发机维护场景」。
## 六、自检方法(交付前跑一遍)
- **盘符/Unix 绝对路径扫描**:对技能包文本文件搜 `[A-Za-z]:[\\/]`、`/(Users|home|tmp|opt|etc|var|root|usr|Applications)/`,人工复核命中行是否属「允许/豁免」类别。
- **md 断链校验**:正则 `\]\(([^)]+)\)` 提取相对链接 → 相对文件目录解析 → 目标不存在即断链;跳过 http/https/file/mailto/# 锚点、含空格/`<>`/`$`/`|` 的命令示例、`workUrl/url/link/链接` 等 API 字段伪链接。
- **越级检查**:任何解析后超出技能根的链接即违规。
---
*变更记录:2026-09-03 初建(全技能树相对路径审计定稿,随 V1.0 与各 subskills 分发;各技能副本内容一致,升级时批量同步)。*