Files
PromptX/docs/reference-protocol-layers.md
sean 5779aa837c fix: 全面清理prompt关键词引用 - 完成prompt→resource重构
核心修复:
- 修复PackageDiscovery._isValidDevelopmentRoot()检查resource目录而非prompt
- 更新package.json files字段从prompt/改为resource/
- 修复RegisterCommand.js中的资源路径引用
- 更新WelcomeCommand.js中的@package://prompt/为@package://resource/
- 修复PromptProtocol.js中所有@package://prompt/路径引用
- 更新PackageProtocol.js示例路径
- 批量更新docs/目录下26个文档的路径引用

技术价值:
- 解决PackageDiscovery无法加载系统级角色的问题
- 消除PackageProtocol的Access denied错误
- 实现prompt→resource语义重构的100%完整性
- 确保所有8个系统级角色正常加载和激活

验证结果:
-  61个系统级资源正常加载
-  8个角色完全可用(assistant,frontend-developer,java-backend-developer,noface,nuwa,sean,xiaohongshu-marketer,product-manager)
-  welcome和action命令完全正常工作

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-28 15:12:17 +08:00

444 lines
12 KiB
Markdown
Raw Permalink 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.

# DPML三层协议体系设计文档
## 📋 概述
DPML (Deepractice Prompt Markup Language) 采用三层协议架构,从底层到上层逐步抽象,为不同使用场景提供合适的语义级别。
## 🏗️ 协议分层架构
```
┌─────────────────────────────────────┐
│ 上层协议 (Application Layer) │
│ @prompt:// @memory:// │ ← 应用语义协议
├─────────────────────────────────────┤
│ 中层协议 (Semantic Layer) │
│ @user:// @project:// @package:// │ ← 语义路径定位协议
├─────────────────────────────────────┤
│ 底层协议 (Transport Layer) │
│ @file:// @http:// @https:// │ ← 通用传输协议
└─────────────────────────────────────┘
```
## 📦 底层协议 (Transport Layer)
### 🎯 设计目标
- 提供最基础的资源传输能力
- 兼容标准协议规范
- 支持各种数据源接入
### 📋 协议列表
#### 1. `@file://` - 文件系统协议
```bash
# 绝对路径
@file:///Users/sean/Documents/notes.md
# 相对路径(相对当前工作目录)
@file://./src/main.js
@file://docs/readme.md
# 用户目录路径
@file://~/Documents/project/file.md
# 通配符支持
@file://src/**/*.js
@file://docs/*.md
```
**路径解析规则:**
- 绝对路径:直接使用
- 相对路径:相对于 `process.cwd()`
- `~` 路径:相对于用户家目录
- 通配符:使用 glob 模式展开
#### 2. `@http://` / `@https://` - 网络协议
```bash
# 标准HTTP请求
@http://example.com/api/resource.json
# HTTPS安全请求
@https://api.github.com/repos/owner/repo/contents/file.md
# 带查询参数
@https://api.example.com/data?format=json&limit=100
```
**特性支持:**
- 标准HTTP/HTTPS请求
- 自动处理重定向
- 支持常见认证方式
- 缓存机制集成
## 🎯 中层协议 (Semantic Layer)
### 🎯 设计目标
- 提供语义化的路径定位
- 屏蔽不同环境的路径差异
- 支持智能路径解析
### 📋 协议列表
#### 1. `@user://` - 用户目录协议 ✅
```bash
# 用户文档目录
@user://documents/my-project/notes.md
# 用户桌面
@user://desktop/todo.txt
# 用户下载目录
@user://downloads/data.csv
# 用户配置目录
@user://home/.config/app/settings.json
```
**路径映射:**
- `@user://documents/` → 用户文档目录(跨平台)
- `@user://desktop/` → 用户桌面目录(跨平台)
- `@user://downloads/` → 用户下载目录(跨平台)
- `@user://home/` → 用户家目录
**实现特性:**
-**跨平台支持**Windows、macOS、Linux
-**智能检测**:使用 platform-folders 库或回退方案
-**安全验证**:路径安全检查,防止遍历攻击
-**缓存机制**:提高重复访问性能
#### 2. `@project://` - 项目根目录协议 ✅
```bash
# 项目配置文件
@project://package.json
@project://.gitignore
# 项目源码
@project://src/main.js
@project://lib/utils.js
# 项目文档
@project://docs/readme.md
@project://CHANGELOG.md
# 项目资源
@project://assets/images/logo.png
```
**项目根目录检测规则:**
1. 向上查找 `.promptx` 目录(优先级最高)
2. 查找 `package.json` 文件
3. 查找 `.git` 目录
4. 默认使用当前工作目录
**实现特性:**
-**智能检测**:自实现向上查找算法
-**多标识符支持**.promptx、package.json、.git
-**安全边界**:防止越过文件系统根目录
-**直接路径访问**:支持包内任意路径
#### 3. `@package://` - NPM包目录协议 ✅
```bash
# 包根目录
@package://package.json
@package://README.md
# 包源代码
@package://src/index.js
@package://lib/commands/hello.js
# 包提示词资源
@package://resource/core/execution/think.md
@package://resource/domain/scrum/role/product-owner.md
# 包配置和模板
@package://jest.config.js
@package://templates/basic/template.md
# 任意包内路径
@package://docs/api/README.md
@package://assets/images/logo.png
@package://examples/demo.js
```
**包安装模式智能检测:**
- `development` - 开发模式(源码开发)
- `local` - 本地安装npm install
- `global` - 全局安装npm install -g
- `npx` - NPX执行模式
- `monorepo` - Monorepo工作空间
- `link` - NPM链接模式npm link
**实现特性:**
-**多安装模式支持**覆盖所有NPM使用场景
-**环境变量检测**npm_execpath、npm_config_cache等
-**符号链接处理**正确解析npm link场景
-**Monorepo支持**检测workspaces配置
-**路径安全**:防止目录遍历攻击
-**直接路径访问**:无需预定义目录,支持包内任意路径
-**多级缓存**:安装模式缓存 + 路径解析缓存
**核心价值:**
- **智能包根检测**:自动检测不同安装环境下的包根目录
- **统一路径接口**:无论开发、测试、生产环境,使用相同路径语法
- **安全路径访问**:确保所有访问都在包根目录范围内
## 🚀 上层协议 (Application Layer)
### 🎯 设计目标
- 提供应用级语义抽象
- 隐藏底层实现细节
- 支持业务逻辑映射
### 📋 协议列表
#### 1. `@prompt://` - 提示词资源协议
```bash
# 核心协议文档
@prompt://protocols
# → @package://resource/protocol/**/*.md
# 核心提示词模块
@prompt://core
# → @package://resource/core/**/*.md
# 领域提示词
@prompt://domain/scrum
# → @package://resource/domain/scrum/**/*.md
# 特定角色提示词
@prompt://domain/scrum/role/product-owner
# → @package://resource/domain/scrum/role/product-owner.role.md
```
**注册表映射:**
- `protocols``@package://resource/protocol/**/*.md`
- `core``@package://resource/core/**/*.md`
- `domain``@package://resource/domain/**/*.md`
- `bootstrap``@package://bootstrap.md`
#### 2. `@memory://` - 记忆系统协议
```bash
# 声明式记忆
@memory://declarative
# → @project://.memory/declarative.md
# 情景记忆
@memory://episodic
# → @project://.memory/episodic/**/*.md
# 语义记忆
@memory://semantic
# → @project://.memory/semantic.json
# 程序记忆
@memory://procedural
# → @project://.memory/procedural/**/*.md
```
**记忆类型映射:**
- `declarative``.memory/declarative.md`
- `episodic``.memory/episodic/`
- `semantic``.memory/semantic.json`
- `procedural``.memory/procedural/`
## 🔧 实现架构
### 📦 协议解析流程
```javascript
// 1. 协议分层解析
@prompt://core
上层协议解析
@package://resource/core/**/*.md
中层协议解析
@file://[NPM包路径]/resource/core/**/*.md
底层协议执行
读取文件系统资源
```
### 🎯 注册表设计
```javascript
class LayeredProtocolRegistry {
constructor() {
this.transportLayer = new Map(); // 底层协议
this.semanticLayer = new Map(); // 中层协议
this.applicationLayer = new Map(); // 上层协议
}
resolve(protocol, path) {
// 递归解析直到底层协议
if (this.applicationLayer.has(protocol)) {
const mapping = this.applicationLayer.get(protocol);
return this.resolve(mapping.protocol, mapping.path + path);
}
if (this.semanticLayer.has(protocol)) {
const mapping = this.semanticLayer.get(protocol);
return this.resolve(mapping.protocol, mapping.path + path);
}
// 底层协议直接执行
return this.transportLayer.get(protocol).resolve(path);
}
}
```
### 🔍 路径检测机制
```javascript
class PathDetector {
// 检测NPM包目录
static detectPackageRoot() {
// NPM包模式检测
try {
const packagePath = require.resolve('promptx/package.json');
return path.dirname(packagePath);
} catch {}
// 开发模式检测
let dir = __dirname;
while (dir !== path.dirname(dir)) {
const packageJson = path.join(dir, 'package.json');
if (fs.existsSync(packageJson)) {
const pkg = require(packageJson);
if (pkg.name === 'promptx') return dir;
}
dir = path.dirname(dir);
}
throw new Error('Package not found');
}
// 检测项目根目录
static detectProjectRoot() {
const indicators = ['.promptx', 'package.json', '.git'];
let dir = process.cwd();
while (dir !== path.dirname(dir)) {
if (indicators.some(indicator =>
fs.existsSync(path.join(dir, indicator))
)) {
return dir;
}
dir = path.dirname(dir);
}
return process.cwd(); // 默认当前目录
}
}
```
## 📊 协议使用示例
### 🎯 典型使用场景
```bash
# AI助手启动加载角色提示词
promptx learn @prompt://domain/scrum/role/product-owner
# 等价于底层路径:
promptx learn @file://[NPM包]/resource/domain/scrum/role/product-owner.role.md
# 记忆保存:保存到项目记忆
promptx remember "重要决策" @memory://declarative
# 等价于底层路径:
promptx remember "重要决策" @file://[项目根]/.memory/declarative.md
```
### 🔄 协议转换示例
```bash
# 上层 → 中层 → 底层
@prompt://core
@package://resource/core/**/*.md
@file:///usr/local/lib/node_modules/promptx/resource/core/**/*.md
```
## 🎯 设计优势
### ✅ 分层优势
1. **底层协议**:标准化、可复用、易测试
2. **中层协议**:语义化、环境无关、智能解析
3. **上层协议**:业务导向、用户友好、功能聚焦
### 🔧 扩展性
- **向下兼容**:上层协议变更不影响底层
- **灵活映射**:可动态调整协议映射关系
- **插件化**:支持自定义协议扩展
### 🎯 用户体验
- **简洁语法**`@prompt://core` vs `@file://./node_modules/promptx/resource/core/**/*.md`
- **语义清晰**:协议名称直接表达意图
- **智能解析**:自动处理环境差异
## 🚀 实施计划
### Phase 1: 底层协议完善 ✅
- [x] file:// 协议优化
- [x] http/https:// 协议实现
- [x] 通配符支持增强
- [x] 查询参数系统
- [x] 缓存机制集成
### Phase 2: 中层协议实现 ✅
- [x] **user:// 协议实现** (1.3.1.1)
- [x] 跨平台用户目录检测
- [x] platform-folders集成
- [x] 安全路径验证
- [x] 完整测试覆盖
- [x] **project:// 协议实现** (1.3.1.2)
- [x] .promptx目录检测
- [x] 向上查找算法
- [x] 多指示符支持
- [x] 边界安全检查
- [x] **package:// 协议实现** (1.3.1.3)
- [x] 多安装模式检测
- [x] NPM环境智能识别
- [x] Monorepo支持
- [x] 符号链接处理
- [x] 直接路径访问(无预定义目录限制)
### Phase 3: 上层协议优化
- [x] prompt:// 协议重构
- [ ] memory:// 协议增强
### Phase 4: 集成测试
- [x] 中层协议单元测试
- [ ] 分层协议集成测试
- [ ] 性能基准测试
- [ ] 用户体验测试
## 📈 当前实施状态
### ✅ 已完成功能
- **底层协议系统**完整实现支持file、http、https
- **中层协议核心**:三个协议全部实现并通过测试
- UserProtocol: 22/22 测试通过
- ProjectProtocol: 30/30 测试通过
- PackageProtocol: 41/41 测试通过(无目录映射限制)
- **ResourceProtocol基类**:统一接口抽象
- **查询参数系统**:支持缓存键生成
- **安全机制**:路径遍历防护
- **直接路径访问**package协议支持任意包内路径
### 🔄 进行中
- 上层协议优化
- 协议注册表重构
- 性能优化调整
### 📋 待实施
- memory:// 协议增强
- 协议映射配置化
- 插件系统支持
---
*本文档将随着协议体系的演进持续更新*
**最后更新:** 简化了@package://协议去掉预定义目录映射支持直接访问包内任意路径更符合file协议的使用习惯。