feat: 实现基于文件模式的灵活资源发现架构

## 🏗️ 新增 FilePatternDiscovery 基类
- 统一的文件模式识别逻辑,支持 .role.md, .thought.md, .execution.md, .knowledge.md, .tool.js
- 递归扫描任意目录结构,完全基于文件扩展名识别资源类型
- 统一的资源验证和引用路径生成机制

## 🔄 重构 ProjectDiscovery 和 PackageDiscovery
- 继承 FilePatternDiscovery 基类,大幅简化代码
- 子类只需重写 _getBaseDirectory() 指定扫描目录
- 移除重复的文件扫描和验证逻辑,提升维护性

## 🎯 实现完全灵活的目录结构支持
- resource/ 下支持任意目录组织方式
- 目录名称仅有语义意义,不影响资源发现
- 支持深层嵌套和扁平化结构

## 🔧 修复 InitCommand 参数处理
- 优化空对象参数的处理逻辑
- 保持向后兼容的同时提升健壮性

##  测试验证
- welcome/action/init 命令全面测试通过
- 包级61个资源 + 项目级8个资源正确发现
- project 协议和工具文件识别正常工作

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
sean
2025-06-28 15:46:40 +08:00
parent 559c146af1
commit 67f54f83d1
4 changed files with 451 additions and 497 deletions

View File

@ -39,10 +39,8 @@ class InitCommand extends BasePouchCommand {
} else if (args && typeof args[0] === 'string') {
// CLI格式
workingDirectory = args[0]
} else if (args && args.length > 0 && args[0]) {
// 兜底:直接取第一个参数
workingDirectory = args[0]
}
// 注意如果args[0]是空对象{}workingDirectory保持undefined走后续的自动检测逻辑
let projectPath