refactor: reorganize project structure and move dpml protocol to base directory
This commit is contained in:
@ -1,106 +0,0 @@
|
|||||||
<executing mode="sequential" context="system">
|
|
||||||
|
|
||||||
# 项目根目录感知执行流程
|
|
||||||
|
|
||||||
## 感知执行阶段
|
|
||||||
|
|
||||||
### A级感知(高可靠性)
|
|
||||||
```mermaid
|
|
||||||
flowchart TD
|
|
||||||
A[开始] --> B{检查IDE API}
|
|
||||||
B -->|可用| C[使用IDE API获取]
|
|
||||||
B -->|不可用| D[进入B级感知]
|
|
||||||
C --> E[验证结果]
|
|
||||||
E -->|通过| F[返回结果]
|
|
||||||
E -->|失败| D
|
|
||||||
|
|
||||||
style A fill:#4da6ff,stroke:#0066cc,color:white
|
|
||||||
style B fill:#d94dbb,stroke:#a13b8f,color:white
|
|
||||||
style C fill:#4dbb5f,stroke:#36873f,color:white
|
|
||||||
style D fill:#ffa64d,stroke:#cc7a30,color:white
|
|
||||||
style E fill:#4dbbbb,stroke:#368787,color:white
|
|
||||||
style F fill:#71ff71,stroke:#3bc23b,color:white
|
|
||||||
```
|
|
||||||
|
|
||||||
1. IDE API调用
|
|
||||||
```javascript
|
|
||||||
const rootDir = cursor.getWorkspaceRoot();
|
|
||||||
```
|
|
||||||
|
|
||||||
2. 结果验证
|
|
||||||
```bash
|
|
||||||
[ -d "${ROOT_DIR}" ] && [ -r "${ROOT_DIR}" ] && [ -x "${ROOT_DIR}" ]
|
|
||||||
```
|
|
||||||
|
|
||||||
### B级感知(中等可靠性)
|
|
||||||
|
|
||||||
1. 版本控制检测
|
|
||||||
```bash
|
|
||||||
find . -name ".git" -type d -exec dirname {} \; 2>/dev/null | head -n 1
|
|
||||||
```
|
|
||||||
|
|
||||||
2. 包管理文件检测
|
|
||||||
```bash
|
|
||||||
find . \( -name "package.json" -o -name "pom.xml" -o -name "requirements.txt" \) -type f -exec dirname {} \; 2>/dev/null | head -n 1
|
|
||||||
```
|
|
||||||
|
|
||||||
3. 项目配置文件检测
|
|
||||||
```bash
|
|
||||||
find . -name ".projectrc" -type f -exec dirname {} \; 2>/dev/null | head -n 1
|
|
||||||
```
|
|
||||||
|
|
||||||
### C级感知(低可靠性)
|
|
||||||
|
|
||||||
用户交互确认(仅在A、B级方法都失败时使用)
|
|
||||||
```bash
|
|
||||||
echo "请确认项目根目录是否为: $PWD [Y/n]"
|
|
||||||
read confirmation
|
|
||||||
```
|
|
||||||
|
|
||||||
## 验证阶段
|
|
||||||
|
|
||||||
1. 路径存在性验证
|
|
||||||
```bash
|
|
||||||
[ -d "${ROOT_DIR}" ]
|
|
||||||
```
|
|
||||||
|
|
||||||
2. 权限验证
|
|
||||||
```bash
|
|
||||||
[ -r "${ROOT_DIR}" ] && [ -x "${ROOT_DIR}" ]
|
|
||||||
```
|
|
||||||
|
|
||||||
3. 项目标志验证
|
|
||||||
```bash
|
|
||||||
[ -e "${ROOT_DIR}/.git" ] || [ -e "${ROOT_DIR}/package.json" ] || [ -e "${ROOT_DIR}/pom.xml" ]
|
|
||||||
```
|
|
||||||
|
|
||||||
4. 路径合法性验证
|
|
||||||
```bash
|
|
||||||
[[ "${ROOT_DIR}" =~ ^[/][a-zA-Z0-9._/-]+$ ]]
|
|
||||||
```
|
|
||||||
|
|
||||||
## 异常处理
|
|
||||||
|
|
||||||
1. IDE API不可用
|
|
||||||
- 降级到B级感知方法
|
|
||||||
- 记录错误信息并继续
|
|
||||||
|
|
||||||
2. 验证失败
|
|
||||||
- 尝试下一级感知方法
|
|
||||||
- 记录失败原因并继续
|
|
||||||
|
|
||||||
## 更新策略
|
|
||||||
|
|
||||||
1. 自动更新触发条件
|
|
||||||
- 会话开始时
|
|
||||||
- 工作目录变更时
|
|
||||||
- 显式请求更新时
|
|
||||||
- 置信度低于0.7时
|
|
||||||
|
|
||||||
2. 缓存策略
|
|
||||||
- 会话内缓存:保持整个会话有效
|
|
||||||
- 跨会话缓存:基于项目特征判断有效性
|
|
||||||
|
|
||||||
> 注意:此执行流程专注于项目根目录的感知机制,通过多级感知策略和严格的验证确保准确性。感知结果可由其他组件进行存储处理。
|
|
||||||
|
|
||||||
</executing>
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
<context id="rootDir" class="project"> 项目根目录路径 </context>
|
|
||||||
|
|
||||||
|
|
||||||
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
<memory id="context"> 上下文记忆 </memory>
|
|
||||||
<memory id="experience"> 经验知识体系 </memory>
|
|
||||||
@ -1,102 +0,0 @@
|
|||||||
<executing mode="sequential" context="system">
|
|
||||||
|
|
||||||
# 记忆持久化规则
|
|
||||||
|
|
||||||
## 记忆存储规则
|
|
||||||
|
|
||||||
1. 存储位置:记忆文件存储在项目根目录下的`.memory`目录中
|
|
||||||
2. 目录创建:如果`.memory`目录不存在,需自动创建
|
|
||||||
3. 文件命名:使用class名称作为文件名,如`.memory/{class}.context.md`
|
|
||||||
4. 文件格式:使用Markdown格式存储记忆内容,使用二级标题区分不同的context id
|
|
||||||
|
|
||||||
## 记忆文件结构
|
|
||||||
|
|
||||||
记忆文件采用以下结构:
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
---
|
|
||||||
class: class_name
|
|
||||||
---
|
|
||||||
|
|
||||||
## context_id_1
|
|
||||||
context_content_1
|
|
||||||
|
|
||||||
## context_id_2
|
|
||||||
context_content_2
|
|
||||||
```
|
|
||||||
|
|
||||||
## 记忆操作流程
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart TD
|
|
||||||
A[开始] --> B{检查class文件是否存在}
|
|
||||||
B -->|存在| C[读取已有记忆文件]
|
|
||||||
B -->|不存在| D[创建新记忆文件]
|
|
||||||
C --> E{检查context id是否存在}
|
|
||||||
E -->|存在| F[更新已有context内容]
|
|
||||||
E -->|不存在| G[添加新context内容]
|
|
||||||
D --> G
|
|
||||||
F --> H[保存记忆文件]
|
|
||||||
G --> H
|
|
||||||
H --> I[结束]
|
|
||||||
```
|
|
||||||
|
|
||||||
# Context与Memory对接流程
|
|
||||||
|
|
||||||
## 文件组织规则
|
|
||||||
|
|
||||||
1. Context按class分组存储:
|
|
||||||
```xml
|
|
||||||
<context id="标识符" class="分类">内容</context>
|
|
||||||
→ .memory/{class}.context.md
|
|
||||||
```
|
|
||||||
|
|
||||||
2. 在文件内通过二级标题区分不同id:
|
|
||||||
```markdown
|
|
||||||
## ${context.id}
|
|
||||||
${context.content}
|
|
||||||
```
|
|
||||||
|
|
||||||
## 对接流程
|
|
||||||
|
|
||||||
```mermaid
|
|
||||||
flowchart TD
|
|
||||||
A[Context感知] --> B[提取class]
|
|
||||||
B --> C[定位或创建class文件]
|
|
||||||
C --> D[定位或创建context id段落]
|
|
||||||
D --> E[更新context内容]
|
|
||||||
E --> F[保存文件]
|
|
||||||
|
|
||||||
style A fill:#4da6ff,stroke:#0066cc,color:white
|
|
||||||
style B fill:#d94dbb,stroke:#a13b8f,color:white
|
|
||||||
style C fill:#4dbb5f,stroke:#36873f,color:white
|
|
||||||
style D fill:#ffa64d,stroke:#cc7a30,color:white
|
|
||||||
style E fill:#4dbbbb,stroke:#368787,color:white
|
|
||||||
style F fill:#71ff71,stroke:#3bc23b,color:white
|
|
||||||
```
|
|
||||||
|
|
||||||
### 示例结构
|
|
||||||
|
|
||||||
输入:
|
|
||||||
```xml
|
|
||||||
<context id="rootDir" class="project" confidence="0.95">
|
|
||||||
/Users/sean/WorkSpaces/temp/promptx-init
|
|
||||||
</context>
|
|
||||||
```
|
|
||||||
|
|
||||||
输出文件 (.memory/project.context.md):
|
|
||||||
```markdown
|
|
||||||
---
|
|
||||||
class: project
|
|
||||||
---
|
|
||||||
|
|
||||||
## rootDir
|
|
||||||
/Users/sean/WorkSpaces/temp/promptx-init
|
|
||||||
|
|
||||||
## otherProjectContext
|
|
||||||
其他项目相关上下文内容...
|
|
||||||
```
|
|
||||||
|
|
||||||
> 注意:此对接流程采用按类分组的存储策略,减少文件数量,提高管理效率。每个class对应一个文件,文件内使用二级标题组织不同的context内容。
|
|
||||||
|
|
||||||
</executing>
|
|
||||||
@ -1,41 +0,0 @@
|
|||||||
<resource protocol="context">
|
|
||||||
# Context 协议
|
|
||||||
|
|
||||||
## 语法
|
|
||||||
@context://[class]/[id]
|
|
||||||
|
|
||||||
## 说明
|
|
||||||
用于引用系统定义的上下文信息。通过class和id组合访问相应的上下文内容,为AI提供情境感知能力。
|
|
||||||
|
|
||||||
## 使用方式
|
|
||||||
1. 引用特定上下文: `@context://project/rootDir` - 引用project类中ID为"rootDir"的上下文
|
|
||||||
2. 获取上下文信息: 系统会自动提取并提供指定ID的上下文内容
|
|
||||||
</resource>
|
|
||||||
|
|
||||||
<resource protocol="memory">
|
|
||||||
# Memory 协议
|
|
||||||
|
|
||||||
## 语法
|
|
||||||
@memory://[id]
|
|
||||||
|
|
||||||
## 说明
|
|
||||||
用于引用记忆系统中存储的内容。通过记忆ID访问对应的记忆内容,记忆内容存储在项目根目录的`.memory`目录下。
|
|
||||||
|
|
||||||
## 使用方式
|
|
||||||
1. 引用特定记忆: `@memory://context` - 引用ID为"context"的记忆
|
|
||||||
2. 获取记忆内容: 系统会自动检索`.memory/context.md`文件并提取其内容
|
|
||||||
</resource>
|
|
||||||
|
|
||||||
<resource protocol="experience">
|
|
||||||
# Experience 协议
|
|
||||||
|
|
||||||
## 语法
|
|
||||||
@experience://[class]/[id]
|
|
||||||
|
|
||||||
## 说明
|
|
||||||
用于引用系统积累的经验知识。通过class和id组合访问相应的经验内容,为AI提供经验复用能力。
|
|
||||||
|
|
||||||
## 使用方式
|
|
||||||
1. 引用特定经验: `@experience://problem_solving/error_handling` - 引用problem_solving类中ID为"error_handling"的经验
|
|
||||||
2. 获取经验知识: 系统会自动提取并应用指定的经验内容
|
|
||||||
</resource>
|
|
||||||
Reference in New Issue
Block a user