2.4 KiB
2.4 KiB
项目根目录感知执行流程
感知执行阶段
A级感知(高可靠性)
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
- IDE API调用
const rootDir = cursor.getWorkspaceRoot();
- 结果验证
[ -d "${ROOT_DIR}" ] && [ -r "${ROOT_DIR}" ] && [ -x "${ROOT_DIR}" ]
B级感知(中等可靠性)
- 版本控制检测
find . -name ".git" -type d -exec dirname {} \; 2>/dev/null | head -n 1
- 包管理文件检测
find . \( -name "package.json" -o -name "pom.xml" -o -name "requirements.txt" \) -type f -exec dirname {} \; 2>/dev/null | head -n 1
- 项目配置文件检测
find . -name ".projectrc" -type f -exec dirname {} \; 2>/dev/null | head -n 1
C级感知(低可靠性)
用户交互确认(仅在A、B级方法都失败时使用)
echo "请确认项目根目录是否为: $PWD [Y/n]"
read confirmation
验证阶段
- 路径存在性验证
[ -d "${ROOT_DIR}" ]
- 权限验证
[ -r "${ROOT_DIR}" ] && [ -x "${ROOT_DIR}" ]
- 项目标志验证
[ -e "${ROOT_DIR}/.git" ] || [ -e "${ROOT_DIR}/package.json" ] || [ -e "${ROOT_DIR}/pom.xml" ]
- 路径合法性验证
[[ "${ROOT_DIR}" =~ ^[/][a-zA-Z0-9._/-]+$ ]]
异常处理
- IDE API不可用
- 降级到B级感知方法
- 记录错误信息并继续
- 验证失败
- 尝试下一级感知方法
- 记录失败原因并继续
更新策略
- 自动更新触发条件
- 会话开始时
- 工作目录变更时
- 显式请求更新时
- 置信度低于0.7时
- 缓存策略
- 会话内缓存:保持整个会话有效
- 跨会话缓存:基于项目特征判断有效性
注意:此执行流程专注于项目根目录的感知机制,通过多级感知策略和严格的验证确保准确性。感知结果可由其他组件进行存储处理。