添加初始文件结构

This commit is contained in:
sean
2025-05-15 11:45:58 +08:00
parent 132c4442d6
commit 56552d49c6
18 changed files with 1986 additions and 0 deletions

View File

@ -0,0 +1,137 @@
<thinking type="analysis" domain="command-execution" method="systematic">
# 命令行执行思维框架
## 核心思考维度
```mermaid
mindmap
root((命令行执行))
命令分析
目的理解
语法结构
预期输出
环境评估
平台差异
上下文状态
必要依赖
风险考量
数据安全
权限需求
可逆性
优化思考
效率提升
可读性
组合优化
结果解读
成功标志
异常分析
后续行动
```
## 命令分析思考
### 目的理解
- 这个命令要完成什么任务?
- 这个命令在当前任务流程中的作用是什么?
- 有没有更符合意图的替代命令?
### 语法结构
- 命令的基本结构是否正确?
- 参数使用是否恰当?
- 是否存在语法优化空间?
### 预期输出
- 预期得到什么样的输出?
- 如何判断命令执行是否达到预期?
## 环境评估思考
```mermaid
flowchart TD
A[环境分析] --> B{平台类型?}
B -->|Windows| C[考虑CMD/PowerShell语法]
B -->|Unix/Linux| D[考虑Bash/Zsh语法]
B -->|macOS| E[考虑macOS特性]
C & D & E --> F{工作目录正确?}
F -->|否| G[调整工作目录]
F -->|是| H{依赖检查}
H -->|缺失| I[安装/加载依赖]
H -->|完整| J[环境就绪]
style A fill:#4da6ff,stroke:#0066cc,color:white
style B fill:#ffa64d,stroke:#cc7a30,color:white
style F fill:#4dbb5f,stroke:#36873f,color:white
style H fill:#d94dbb,stroke:#a3378a,color:white
```
### 上下文状态
- 当前工作目录是否正确?
- 是否已经满足命令执行的前提条件?
- 是否需要先设置环境变量?
## 风险考量思考
### 安全评估表
| 风险类型 | 问题思考 | 缓解措施 |
|---------|---------|---------|
| 数据安全 | 命令是否会修改或删除重要数据? | 检查命令范围,提前备份 |
| 权限控制 | 命令是否需要特定权限? | 验证权限是否最小化 |
| 中断风险 | 命令是否可能造成系统中断? | 评估执行时间点,准备回滚方案 |
| 可逆性 | 操作是否可逆? | 设计回滚策略 |
## 优化思考
### 效率提升
- 能否通过管道组合多个命令?
- 是否可以使用通配符简化操作?
- 是否可以通过别名或函数封装常用操作?
### 命令优化示例
```
# 优化前
find . -name "*.txt" | xargs grep "pattern"
# 优化后
grep -r "pattern" --include="*.txt" .
```
## 结果解读思考
```mermaid
stateDiagram-v2
[*] --> 执行命令
执行命令 --> 成功: 返回码为0
执行命令 --> 失败: 返回码非0
成功 --> 结果分析: 验证输出
失败 --> 错误分析: 诊断问题
结果分析 --> 后续行动
错误分析 --> 修正策略
修正策略 --> 执行命令: 重试
后续行动 --> [*]
```
### 异常分析思考
- 错误信息揭示了什么问题?
- 是命令本身错误还是环境问题?
- 有没有常见的解决方案?
### 后续行动
- 基于执行结果,下一步应该做什么?
- 是否需要保存或处理输出?
- 是否需要通知用户特定信息?
## 决策模型
处理命令行任务的决策模型:
1. **理解** - 深入理解命令目的和上下文
2. **评估** - 全面评估环境条件和执行风险
3. **优化** - 思考如何使命令更高效和安全
4. **执行** - 在适当条件下执行命令
5. **分析** - 解读结果并决定后续行动
</thinking>

View File

@ -0,0 +1,106 @@
<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>

View File

@ -0,0 +1,3 @@
<context id="rootDir" class="project"> 项目根目录路径 </context>

View File

@ -0,0 +1,3 @@
<memory id="context"> 上下文记忆 </memory>
<memory id="experience"> 经验知识体系 </memory>

View File

@ -0,0 +1,102 @@
<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>

View File

@ -0,0 +1,41 @@
<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>