工作区智能
工作区智能(WsIntel)是 wescode 的项目感知层,负责自动检测和理解工作区的项目特征。它让 AI 能够"看懂"你的项目——使用什么语言、什么框架、什么构建系统、什么代码风格。
核心概念
什么是工作区智能?
工作区智能是 wescode 五层能力栈中 L3(理解层)的重要组成部分。它回答以下问题:
- 这是什么类型的项目?(Go 微服务 / React 前端 / Python ML 项目 / ...)
- 项目使用什么构建系统?(Make / npm / Cargo / Maven / ...)
- 项目的依赖有哪些?
- 项目遵循什么编码规范?
- 如何运行测试?如何构建?
为什么需要它?
没有工作区智能时,AI 在面对以下问题时需要手动探索:
帮我运行测试
AI 不知道应该执行 go test、npm test、pytest 还是 cargo test。
有了工作区智能,AI 自动知道项目类型并执行正确的命令。
项目类型自动检测
检测机制
WsIntel 通过分析工作区根目录下的标志文件来检测项目类型:
| 标志文件 | 检测到的项目类型 |
|---|---|
go.mod | Go 模块 |
package.json | Node.js / JavaScript / TypeScript |
Cargo.toml | Rust |
pyproject.toml / setup.py / requirements.txt | Python |
pom.xml / build.gradle | Java |
Makefile | 通用(叠加在其他类型上) |
docker-compose.yml | Docker(叠加检测) |
.git | Git 仓库 |
复合检测
一个项目可以同时是多种类型:
检测结果:
├── Go 模块 (go.mod)
├── Docker 项目 (Dockerfile + docker-compose.yml)
├── Makefile 项目 (Makefile)
└── Git 仓库 (.git)
框架识别
除了语言级别的检测,WsIntel 还识别常见框架:
| 框架 | 识别方式 |
|---|---|
| Gin (Go) | go.mod 中的 github.com/gin-gonic/gin |
| Echo (Go) | go.mod 中的 github.com/labstack/echo |
| React | package.json 中的 react 依赖 |
| Vue | package.json 中的 vue 依赖 |
| Next.js | next.config.js 或 package.json 中的 next |
| Django | manage.py + settings.py |
| FastAPI | requirements.txt 中的 fastapi |
| Spring | pom.xml 中的 spring-boot |
依赖关系分析
Go 项目
go.mod 分析:
├── 直接依赖:23 个
├── 间接依赖:156 个
├── 主要依赖:
│ ├── github.com/gin-gonic/gin v1.10.0
│ ├── gorm.io/gorm v1.25.0
│ ├── github.com/redis/go-redis/v9 v9.5.0
│ └── go.uber.org/zap v1.27.0
└── 安全建议:2 个依赖有可用更新
Node.js 项目
package.json 分析:
├── 生产依赖:45 个
├── 开发依赖:32 个
├── 主要依赖:
│ ├── react 19.0.0
│ ├── typescript 5.5.0
│ └── vite 6.0.0
├── 包管理器:pnpm(检测到 pnpm-lock.yaml)
└── Node.js 版本要求:>=18.0.0
依赖版本检查
WsIntel 会检查依赖的版本状态:
- 最新版:依赖已经是最新版本
- 可更新:有较新的稳定版本可用
- 过时:依赖版本严重落后
- 安全风险:已知存在安全漏洞的版本
构建系统识别
构建命令推断
WsIntel 根据项目类型推断构建命令:
| 项目类型 | 构建命令 | 测试命令 | 运行命令 |
|---|---|---|---|
| Go | go build ./... | go test ./... | go run . |
| Node.js (npm) | npm run build | npm test | npm start |
| Node.js (pnpm) | pnpm build | pnpm test | pnpm dev |
| Python | pip install -e . | pytest | python -m app |
| Rust | cargo build | cargo test | cargo run |
| Java (Maven) | mvn package | mvn test | mvn spring-boot:run |
| Makefile | make build | make test | make run |
Makefile 分析
如果项目包含 Makefile,WsIntel 会解析其目标:
Makefile 目标:
├── build — 编译项目
├── test — 运行测试
├── lint — 代码检查
├── dev — 启动开发服务器
├── docker — 构建 Docker 镜像
└── clean — 清理构建产物
CI/CD 检测
WsIntel 还识别 CI/CD 配置:
| 文件 | CI 系统 |
|---|---|
.github/workflows/*.yml | GitHub Actions |
.gitlab-ci.yml | GitLab CI |
Jenkinsfile | Jenkins |
.circleci/config.yml | CircleCI |
Dockerfile | Docker 构建 |
代码风格推断
格式化工具检测
WsIntel 检测项目使用的格式化工具:
| 配置文件 | 工具 |
|---|---|
.prettierrc / .prettierrc.js | Prettier |
.eslintrc / eslint.config.js | ESLint |
.editorconfig | EditorConfig |
golangci-lint.yml | golangci-lint |
pyproject.toml [tool.black] | Black |
pyproject.toml [tool.ruff] | Ruff |
rustfmt.toml | rustfmt |
代码风格推断
当没有显式配置文件时,WsIntel 从现有代码中推断风格:
- 缩进:Tab vs 空格、缩进宽度
- 引号:单引号 vs 双引号
- 分号:是否使用分号(JavaScript/TypeScript)
- 命名风格:camelCase / snake_case / PascalCase
- 导入排序:分组规则、排序顺序
注意:推断的代码风格通过 CKG 的 Convention probe-cache 缓存,不持久化到记忆中(遵循 INV-MEM-12)。
AI 行为影响
代码风格推断直接影响 AI 生成的代码:
# 如果项目使用 4 空格缩进,AI 生成的代码也会使用 4 空格
# 如果项目使用 Tab 缩进,AI 生成的代码也会使用 Tab
# 如果项目变量命名使用 snake_case,AI 也会遵循
宿主环境感知
系统环境探测
WsIntel 在首次启动时探测宿主机环境:
| 探测项 | 信息 |
|---|---|
| 操作系统 | macOS / Linux / Windows |
| Shell | bash / zsh / fish / PowerShell |
| 已安装工具 | go / node / python / cargo / make / docker / ... |
| 工具版本 | Go 1.22 / Node 22 / Python 3.12 / ... |
| 包管理器 | brew / apt / pacman / ... |
共享探测
宿主环境探测是进程级共享的——一台机器上的多个 workspace 共享同一份探测结果,不会重复执行。探测结果缓存 5 分钟,通过 exec.LookPath 检测工具是否在 PATH 上(不 fork 子进程)。
AI 如何使用
AI 会根据环境信息调整行为:
# 如果检测到 macOS + brew
"使用 brew install xxx 安装缺失工具"
# 如果检测到 Linux + apt
"使用 sudo apt install xxx 安装缺失工具"
# 如果检测到 Go 1.22+
"可以使用 Go 1.22 的新特性如 range over integer"
与其他子系统的集成
CKG 集成
WsIntel 的检测结果影响 CKG 的索引策略:
- 语言检测 → 选择合适的 Tree-sitter parser
- 忽略规则 →
.gitignore+.wescodeindex影响索引范围 - 构建产物 → 自动排除
dist/、build/、vendor/等目录
CSE 集成
WsIntel 为约束满足引擎(CSE)提供项目级约束:
- 语言约束:Go 项目不生成 JavaScript 代码
- 风格约束:遵循检测到的代码风格
- 依赖约束:只使用已声明的依赖
上下文组装
WsIntel 信息注入 AI 的系统提示词:
当前项目:Go 微服务
框架:Gin + GORM
构建:Makefile
测试:go test + testify
环境:macOS + Go 1.22 + Docker
注意事项
- 首次打开延迟:WsIntel 在首次打开项目时需要几秒钟完成探测
- 多 workspace:每个 VS Code workspace 是独立的分析单元
- Monorepo:对于 monorepo,WsIntel 分析根目录的项目类型
- 自定义构建:非标准构建系统可能无法被自动检测
- runtime probe-cache:Convention 推断结果不入记忆——它是运行时缓存,切换 workspace 后重新推断