@dtt_siye/atool 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (28) hide show
  1. package/lib/install-skills.sh +16 -0
  2. package/lib/knowledge-graph.sh +483 -81
  3. package/lib/pre-scan.sh +70 -5
  4. package/package.json +1 -1
  5. package/skills/project-analyze/SKILL.md +34 -15
  6. package/skills/project-analyze/phases/phase2-understand.md +7 -1
  7. package/skills/project-analyze/phases/phase2.5-refine.md +284 -0
  8. package/skills/project-analyze/phases/phase4-synthesize.md +100 -119
  9. package/skills/project-analyze/phases/phase5-export.md +78 -32
  10. package/skills/project-analyze/prompts/understand-agent.md +17 -0
  11. package/skills/project-analyze/rules/android.md +61 -260
  12. package/skills/project-analyze/rules/devops.md +61 -421
  13. package/skills/project-analyze/rules/generic.md +53 -221
  14. package/skills/project-analyze/rules/go.md +60 -275
  15. package/skills/project-analyze/rules/harmony.md +64 -237
  16. package/skills/project-analyze/rules/java.md +47 -485
  17. package/skills/project-analyze/rules/mobile-flutter.md +57 -292
  18. package/skills/project-analyze/rules/mobile-react-native.md +65 -262
  19. package/skills/project-analyze/rules/mobile-swift.md +58 -303
  20. package/skills/project-analyze/rules/python.md +50 -296
  21. package/skills/project-analyze/rules/rust-tauri.md +51 -217
  22. package/skills/project-analyze/rules/rust.md +50 -274
  23. package/skills/project-analyze/rules/web-nextjs.md +61 -335
  24. package/skills/project-analyze/rules/web-react.md +50 -272
  25. package/skills/project-analyze/rules/web-vue.md +58 -352
  26. package/skills/project-analyze/rules/web.md +55 -347
  27. package/skills/requirements-writer/SKILL.md +48 -1
  28. package/skills/software-architecture/SKILL.md +73 -3
@@ -1,317 +1,71 @@
1
1
  # Python 项目分析规则
2
2
 
3
- ## 分析粒度
3
+ > **编码规范**:本规则不包含编码规范内容。Phase 2.5 精炼阶段会自动加载 `python-conventions` skill 作为规范约束。
4
4
 
5
- 按应用模块和框架分层架构进行分析。支持 Django / FastAPI / Flask / 纯 Python 项目。
5
+ ## 模块发现策略
6
6
 
7
- ```
8
- Application Entry (manage.py / main.py / app.py)
9
-
10
- Router / URL Configuration(路由)
11
-
12
- Views / Handlers(视图/处理器)
13
-
14
- Services / Use Cases(业务逻辑)
15
-
16
- Models / Schemas(数据模型)
17
-
18
- Repositories / DAL(数据访问)
19
-
20
- Config / Settings(配置)
21
-
22
- Middleware / Guards(中间件)
23
- ```
24
-
25
- ## 目录扫描策略
26
-
27
- ### 1. 识别框架类型
7
+ - **包结构**:每个含 `__init__.py` 的目录为一个包(Python 模块)
8
+ - **Django Apps**:`INSTALLED_APPS` 中的每个 app 为独立分析单元
9
+ - **FastAPI Routers**:`app/routers/` 下每个文件或子目录为路由模块
10
+ - **依赖检测**:从 `pyproject.toml` / `requirements.txt` / `Pipfile` 提取框架类型
11
+ - **跳过**:`__pycache__/`、`.venv/`、`migrations/`、`alembic/versions/`
28
12
 
29
- **信号文件检测:**
30
- - Django: `manage.py` + `settings.py` + `*/urls.py`
31
- - FastAPI: `main.py` `from fastapi import FastAPI`
32
- - Flask: `app.py` / `application.py` 中 `from flask import Flask`
33
- - 纯 Python: 无框架特征,按包结构分析
13
+ 框架信号文件:
14
+ - Django:`manage.py` + `settings.py` + `*/urls.py`
15
+ - FastAPI:`main.py` 中含 `from fastapi import FastAPI`
16
+ - Flask:`app.py` 中含 `from flask import Flask`
34
17
 
35
- ### 2. 识别项目结构
18
+ ## 入口识别
36
19
 
37
- - `pyproject.toml` / `setup.py` → 包项目
38
- - `requirements.txt` / `Pipfile` → 依赖管理
39
- - `Dockerfile` 容器化部署
20
+ | 标记 | 含义 |
21
+ |------|------|
22
+ | `manage.py` / `main.py` / `app.py` | 应用主入口 |
23
+ | `*/urls.py` (Django) | URL 路由入口 |
24
+ | `@router.get/post/...` (FastAPI) | HTTP API 入口 |
25
+ | `@app.route` (Flask) | HTTP 路由入口 |
26
+ | `@celery.task` / `@shared_task` | 异步任务入口 |
27
+ | `management/commands/*.py` (Django) | CLI 命令入口 |
40
28
 
41
- ### 3. 依赖提取
29
+ ## 架构模式识别
42
30
 
43
- `pyproject.toml` / `requirements.txt` 提取:
44
-
45
- | 类别 | 常见依赖 |
31
+ | 模式 | 检测特征 |
46
32
  |------|----------|
47
- | Web 框架 | django, fastapi, flask, starlette |
48
- | ASGI | uvicorn, hypercorn, daphne |
49
- | ORM | sqlalchemy, django-orm, tortoise-orm, prisma |
50
- | 数据验证 | pydantic, marshmallow |
51
- | 数据库驱动 | psycopg2, pymysql, asyncpg, redis |
52
- | 认证 | python-jose, passlib, pyjwt |
53
- | 任务队列 | celery, arq, huey |
54
- | 测试 | pytest, httpx, factory-boy |
55
- | 代码质量 | mypy, ruff, black, isort |
56
-
57
- ### 4. 按框架分层扫描
58
-
59
- #### Django
60
-
61
- - **URL 配置**: `*/urls.py`
62
- - **Views**: `*/views.py`, `*/views/`
63
- - **Models**: `*/models.py`, `*/models/`
64
- - **Serializers**: `*/serializers.py`
65
- - **Admin**: `*/admin.py`
66
- - **Forms**: `*/forms.py`
67
- - **Middleware**: `*/middleware.py`
68
- - **Management Commands**: `*/management/commands/`
69
- - **Templates**: `*/templates/`
70
- - **Tests**: `*/tests/`, `tests.py`
71
-
72
- #### FastAPI
73
-
74
- - **Routers**: `*/routers/`, `*/routes/`, `*/api/`
75
- - **Schemas**: `*/schemas.py`, `*/models.py`
76
- - **Services**: `*/services/`, `*/crud.py`
77
- - **Dependencies**: `*/dependencies.py`
78
- - **Config**: `*/config.py`, `core/config.py`
79
- - **Middleware**: `*/middleware.py`
80
-
81
- #### Flask
82
-
83
- - **Routes**: `*/routes.py`, `*/views.py`
84
- - **Blueprints**: `*/blueprints/`
85
- - **Models**: `*/models.py`
86
- - **Templates**: `*/templates/`
87
- - **Extensions**: `*/extensions.py`
88
-
89
- ## 各层提取规则
90
-
91
- ### 层 1: 路由层
92
-
93
- **扫描文件**: `urls.py` (Django), `routers/*.py` (FastAPI), `routes.py` (Flask)
33
+ | Django MVT | `models.py` + `views.py` + `urls.py` + `templates/` 并存 |
34
+ | FastAPI 三层 | `routers/` + `services/` + `crud.py` / `repositories/` 分离 |
35
+ | 仓储模式 | 存在 `repositories/` 目录或 `*Repository` |
36
+ | Clean Architecture | 存在 `domain/` + `application/` + `infrastructure/` 目录分层 |
37
+ | 单体 Flask | 所有路由在单 `app.py` 或少量 Blueprint |
94
38
 
95
- **提取内容**:
96
- - 路由配置(HTTP 方法 + 路径 + 处理函数)
97
- - 路由分组(Router prefix, Blueprint name)
98
- - URL 参数类型
99
- - 中间件应用
39
+ ## 数据流模式
100
40
 
101
- **输出示例**:
102
- ```
103
- ### API 路由结构(FastAPI)
104
- - **文件**: `app/api/__init__.py`
105
- - **Router 前缀**: /api/v1
106
- - **路由分组**:
107
- | 前缀 | Router | 处理文件 | 标签 |
108
- |------|--------|----------|------|
109
- | /auth | auth_router | routers/auth.py | 认证 |
110
- | /users | users_router | routers/users.py | 用户管理 |
111
- | /items | items_router | routers/items.py | 物品管理 |
112
- - **端点列表**:
113
- | 方法 | 路径 | 处理函数 | 认证 | 说明 |
114
- |------|------|----------|------|------|
115
- | POST | /auth/login | login | 否 | 登录获取 token |
116
- | POST | /auth/register | register | 否 | 注册 |
117
- | GET | /users/me | get_current_user | JWT | 获取当前用户 |
118
- | GET | /users/{user_id} | get_user | JWT+Admin | 获取用户详情 |
119
- | POST | /items/ | create_item | JWT | 创建物品 |
120
- ```
121
-
122
- ### 层 2: Views / Handlers 层
123
-
124
- **扫描文件**: `views.py`, `views/*.py` (Django), `routers/*.py` (FastAPI)
125
-
126
- **提取内容**:
127
- - 视图函数/类签名
128
- - 请求参数(路径参数 + 查询参数 + 请求体)
129
- - 响应模型
130
- - 依赖注入(FastAPI Depends)
131
- - 装饰器(`@login_required`, `@permission_required`, `@router.get`)
132
-
133
- **输出示例**:
134
- ```
135
- ### create_item(FastAPI Router)
136
- - **文件**: `app/api/routers/items.py`
137
- - **签名**:
138
- ```python
139
- @router.post("/", response_model=ItemResponse, status_code=201)
140
- async def create_item(
141
- item: ItemCreate,
142
- current_user: User = Depends(get_current_user),
143
- db: AsyncSession = Depends(get_db),
144
- ) -> ItemResponse:
145
- ```
146
- - **依赖注入**:
147
- | 参数 | 来源 | 说明 |
148
- |------|------|------|
149
- | item | Request Body (ItemCreate) | 创建物品的数据 |
150
- | current_user | Depends(get_current_user) | JWT 认证 |
151
- | db | Depends(get_db) | 数据库会话 |
152
- - **响应**: ItemResponse (201 Created)
153
- - **异常**: 401 Unauthorized, 422 Validation Error
154
- ```
41
+ - **HTTP 请求链**:Middleware → Router/URL → View/Handler → Service → ORM → DB
42
+ - **异步任务链**:Celery Task → Service → Repository → DB
43
+ - **Django Admin 链**:Admin → ModelAdmin → QuerySet → DB
44
+ - **依赖注入链**(FastAPI):Route → Depends(auth) → Depends(db) → CRUD → DB
155
45
 
156
- ### 层 3: Models / Schemas 层
46
+ ## 分析关注点
157
47
 
158
- **扫描文件**: `models.py`, `schemas.py`, `models/*.py`
48
+ - **装饰器入口**:`@router.get/post`、`@login_required`、`@permission_required` 标记 API 入口和权限边界
49
+ - **Pydantic Schema 映射**:识别 Request Schema → ORM Model → Response Schema 的转换链
50
+ - **Django Signal**:`post_save` / `pre_delete` 等 Signal 连接的副作用(隐式依赖)
51
+ - **异步 vs 同步**:混用 `async def` 和同步视图时标记潜在阻塞风险
52
+ - **多数据库**:`DATABASES` 配置中多个 DB 别名,或 SQLAlchemy 多 engine
159
53
 
160
- #### SQLAlchemy / Tortoise ORM
54
+ ## 输出示例
161
55
 
162
- **输出示例**:
56
+ FastAPI 路由提取片段:
163
57
  ```
164
- ### User (SQLAlchemy Model)
165
- - **路径**: `app/models/user.py`
166
- - **表名**: users
167
- - **字段**:
168
- | 字段 | 类型 | 约束 | 说明 |
169
- |------|------|------|------|
170
- | id | Integer | PK, autoincrement | 主键 |
171
- | email | String(255) | unique, not null | 邮箱 |
172
- | hashed_password | String(255) | not null | 密码哈希 |
173
- | is_active | Boolean | default=True | 是否激活 |
174
- | created_at | DateTime | default=now() | 创建时间 |
175
- - **关系**:
176
- | 关系 | 类型 | 目标 | 反向引用 |
177
- |------|------|------|----------|
178
- | items | one-to-many | Item | owner |
58
+ /api/v1
59
+ POST /auth/login → login() 无认证
60
+ GET /users/me → get_current_user() JWT
61
+ POST /items/ → create_item() JWT → ItemService → ItemRepository
179
62
  ```
180
63
 
181
- #### Pydantic Schemas
182
-
183
- **输出示例**:
184
- ```
185
- ### ItemCreate (Pydantic Schema)
186
- - **路径**: `app/schemas/item.py`
187
- - **字段**:
188
- | 字段 | 类型 | 约束 | 说明 |
189
- |------|------|------|------|
190
- | title | str | min_length=1, max_length=100 | 物品标题 |
191
- | description | str \| None | default=None | 描述 |
192
- | price | float | gt=0 | 价格 |
193
- - **Config**: from_attributes = True (ORM mode)
194
- ```
195
-
196
- ### 层 4: Service / CRUD 层
197
-
198
- **扫描文件**: `services/*.py`, `crud.py`
199
-
200
- **提取内容**:
201
- - Service 类/函数签名
202
- - CRUD 操作(增删改查方法)
203
- - 业务逻辑摘要
204
- - 依赖的其他 Service / Repository
205
-
206
- **输出示例**:
64
+ Django App 模块片段:
207
65
  ```
208
- ### ItemService
209
- - **路径**: `app/services/item_service.py`
210
- - **依赖**: ItemRepository, CategoryService
211
- - **方法**:
212
- | 方法 | 签名 | 说明 |
213
- |------|------|------|
214
- | create_item | (db, item_data, user_id) → Item | 创建物品,校验分类存在 |
215
- | get_item | (db, item_id) → Item \| None | 获取物品详情 |
216
- | list_items | (db, skip, limit, filters) → list[Item] | 分页查询 |
217
- | delete_item | (db, item_id, user_id) → bool | 删除(仅所有者) |
66
+ App: users
67
+ models.py → User, Profile (AbstractUser)
68
+ views.py → UserViewSet (ModelViewSet)
69
+ urls.py → /users/, /users/{id}/
70
+ signals.py → post_save(User) send_welcome_email
218
71
  ```
219
-
220
- ### 层 5: 认证/安全层
221
-
222
- **扫描文件**: `auth/*.py`, `core/security.py`, `core/config.py`
223
-
224
- **提取内容**:
225
- - 认证方式(JWT / Session / OAuth2)
226
- - Token 生成/验证逻辑
227
- - 密码哈希方式
228
- - 权限检查机制
229
-
230
- **输出示例**:
231
- ```
232
- ### 认证配置
233
- - **文件**: `app/core/security.py`
234
- - **Token**: JWT (HS256)
235
- - 过期时间: 30 分钟 (access_token)
236
- - 密钥: settings.SECRET_KEY
237
- - **密码**: bcrypt (passlib)
238
- - **OAuth2**: FastAPI OAuth2PasswordBearer
239
- - **权限**: role-based (admin / user)
240
- ```
241
-
242
- ### 层 6: 中间件层
243
-
244
- **扫描文件**: `middleware.py`, `app/middleware/*.py`
245
-
246
- **输出示例**:
247
- ```
248
- ### 中间件链
249
- | 顺序 | 中间件 | 用途 |
250
- |------|--------|------|
251
- | 1 | CORSMiddleware | 跨域处理 |
252
- | 2 | RequestTimingMiddleware | 请求计时 |
253
- | 3 | AuthMiddleware | Token 解析(非 JWT 路由跳过) |
254
- | 4 | RateLimitMiddleware | 限流 |
255
- ```
256
-
257
- ## 输出模板
258
-
259
- ### README.md 章节结构
260
-
261
- ```markdown
262
- # {项目名}
263
-
264
- ## 项目概述
265
- 系统功能描述
266
-
267
- ## 技术栈
268
- | 技术 | 版本 | 用途 |
269
- |------|------|------|
270
-
271
- ## 架构设计
272
- ### 架构图(ASCII)
273
- ### 数据流图
274
- 请求 → Middleware → Router → Handler → Service → Repository → DB
275
-
276
- ## API 接口文档
277
- 按模块分组的端点表
278
-
279
- ## 数据模型
280
- ORM 模型关系图
281
-
282
- ## 认证与权限
283
- 认证流程 + 权限模型
284
-
285
- ## 配置说明
286
- 环境变量 + 配置文件
287
-
288
- ## 构建 & 部署
289
- Docker + 命令
290
- ```
291
-
292
- ## 模块边界识别
293
-
294
- 以下目录模式下的每个子目录视为独立模块(L2+ 分析时生成 MODULE-DOC.md):
295
-
296
- | 层 | 扫描路径 | 模块判定规则 | MODULE-DOC slug 来源 |
297
- |----|----------|-------------|---------------------|
298
- | Django Apps | 每个 Django app 目录 | 独立模块 | app 名 kebab-case |
299
- | FastAPI Routers | `app/routers/` | 每个文件或子目录 | 路由前缀 kebab-case |
300
- | API 层 | `app/api/`, `app/routers/` | 每个子目录 | 目录名 kebab-case |
301
- | 模板层 | `app/templates/` | 每个子目录 | 目录名 kebab-case |
302
- | 数据模型层 | `app/models.py` | 按类分组 | 类名 kebab-case |
303
-
304
- **不视为独立模块的情况**:
305
- - 单文件入口(如 `main.py`, `app.py`, `manage.py`)
306
- - 纯导出桶文件(`__init__.py` 仅有 import)
307
- - 工具函数目录(`utils/`, `helpers/`)— 合并为一个模块
308
- - `__pycache__/`, `.venv/` 跳过
309
-
310
- ## Token 管理
311
-
312
- - 大模块(>15 文件)拆分为子任务
313
- - 每个子任务分析 ≤10 文件
314
- - `requirements.txt` / `pyproject.toml` 依赖分析单独一个子任务
315
- - 迁移文件(`migrations/`, `alembic/versions/`)跳过分析
316
- - 测试文件单独分析
317
- - `__pycache__/`, `.venv/` 跳过
@@ -1,243 +1,77 @@
1
1
  # Tauri 2 项目分析规则
2
2
 
3
3
  本规则适用于 `rust-tauri` 技术栈(Tauri 2 桌面应用 = Rust 后端 + Web 前端)。
4
- 与 `rust.md` 和 `web.md`(或 `web-react.md`/`web-vue.md`)配合使用。
5
4
 
6
- ## 分析粒度
5
+ > **编码规范**:本规则不包含编码规范内容。Phase 2.5 精炼阶段会自动加载 `rust-conventions` skill(后端)和对应的 `web-conventions` skill(前端)作为规范约束。
7
6
 
8
- Tauri 项目采用双目录扫描策略:
7
+ ## 模块发现策略
9
8
 
10
- ```
11
- 项目根目录/
12
- ├── src/ ← 前端(Web UI)— 使用 web*.md 规则
13
- │ ├── App.tsx
14
- │ ├── main.tsx
15
- │ ├── components/
16
- │ ├── hooks/
17
- │ ├── stores/
18
- │ └── services/ ← IPC 调用封装层(重点分析)
19
-
20
- ├── src-tauri/ ← 后端(Rust)— 使用 rust.md 规则
21
- │ ├── Cargo.toml
22
- │ ├── tauri.conf.json ← Tauri 配置(重点分析)
23
- │ ├── capabilities/ ← 权限声明
24
- │ └── src/
25
- │ ├── main.rs
26
- │ ├── lib.rs ← 命令注册
27
- │ └── commands/ ← Tauri 命令模块(重点分析)
28
- ```
29
-
30
- ## 目录扫描策略
9
+ Tauri 项目采用**双根目录**扫描,前后端分别发现模块:
31
10
 
32
- ### 1. 双根目录扫描
11
+ | 根目录 | 适用规则 | 特有关注点 |
12
+ |-------|---------|----------|
13
+ | `src/` | 对应 `web*.md` 规则 | `src/services/` IPC 封装层 |
14
+ | `src-tauri/src/` | `rust.md` 规则 | `commands/` 目录、`lib.rs` 命令注册 |
33
15
 
34
- **前端扫描**(`src/` 目录):
35
- - 复用对应的 `web*.md` 规则
36
- - 额外关注 `services/` 目录(IPC 调用封装层)
16
+ 模块判定:
17
+ - 前端:`src/pages/`, `src/views/` 每个子目录;`src/components/` 3+ 文件子目录;`src/services/` 每个文件
18
+ - 后端:`src-tauri/src/commands/` 每个文件 / 子目录;其他子目录 3+ 文件时独立成模块
37
19
 
38
- **后端扫描**(`src-tauri/` 目录):
39
- - 复用 `rust.md` 规则
40
- - 额外关注 `commands/` 目录(Tauri 命令)
41
- - 分析 `lib.rs` 的命令注册
20
+ 排除:`src-tauri/target/`(构建产物)、`node_modules/`。`src-tauri/src/lib.rs` 视为命令注册桶文件,不单独成模块。
42
21
 
43
- ### 2. Tauri 配置提取
22
+ ## 入口识别
44
23
 
45
- `src-tauri/tauri.conf.json` 提取:
24
+ - **Rust 入口**: `src-tauri/src/main.rs` 和 `src-tauri/src/lib.rs`(`tauri::Builder` 配置链)
25
+ - **命令注册**: `lib.rs` 中 `invoke_handler(tauri::generate_handler![...])` 的命令列表
26
+ - **前端入口**: `src/main.tsx` / `src/main.ts`(Tauri 插件初始化位置)
27
+ - **配置入口**: `src-tauri/tauri.conf.json`(窗口、权限、插件配置)
46
28
 
47
- | 字段 | 路径 | 说明 |
48
- |------|------|------|
49
- | 应用名 | `.productName` | 桌面应用名称 |
50
- | 版本 | `.version` | 应用版本 |
51
- | 标识符 | `.identifier` | 应用唯一标识 |
52
- | 窗口配置 | `.app.windows[]` | 窗口标题/尺寸/属性 |
53
- | 插件 | `.plugins` | 使用的 Tauri 插件 |
54
- | 安全 | `.app.security` | CSP 等安全配置 |
29
+ ## 架构模式识别
55
30
 
56
- `src-tauri/Cargo.toml` 提取:
31
+ **IPC 桥接层**(Tauri 特有核心模式):
32
+ - Rust 端:`#[tauri::command]` 标注函数 → 注册到 `invoke_handler` → 暴露给前端
33
+ - 前端端:`invoke('command_name', args)` → 通过 Tauri IPC 桥 → 调用 Rust 函数
34
+ - 封装层:`src/services/` 包装 `invoke()` 调用,提供 TypeScript 类型
57
35
 
58
- | 类别 | 常见依赖 |
59
- |------|----------|
60
- | Tauri 核心 | tauri, tauri-build |
61
- | 序列化 | serde, serde_json |
62
- | 异步 | tokio |
63
- | 系统 API | sysinfo, windows, cocoa |
64
- | 文件系统 | notify, walkdir |
65
- | 数据库 | sqlx, rusqlite |
66
- | 网络 | reqwest |
67
- | 日志 | tracing, log |
36
+ **权限声明**(Tauri 2 capabilities 机制):
37
+ - `src-tauri/capabilities/` 目录声明命令所需权限
38
+ - 识别文件系统 scope、窗口操作权限、系统 API 访问范围
68
39
 
69
- ### 3. IPC 层分析(核心 — Tauri 特有)
40
+ **双框架边界**:
41
+ - 前端组件(React/Vue/Svelte)不直接调用 Rust,通过 `services/` 层隔离
42
+ - Rust 命令模块按功能域拆分(`commands/system.rs`, `commands/file.rs` 等)
70
43
 
71
- **Rust 端命令扫描**:
72
- - 查找所有 `#[tauri::command]` 标注的函数
73
- - 提取命令名、参数、返回类型
74
- - 分析命令间的调用关系
75
- - 检查命令是否在 `lib.rs` 中注册
44
+ ## 数据流模式
76
45
 
77
- **前端 IPC 调用扫描**:
78
- - 查找所有 `invoke()` 调用
79
- - 提取命令名和传递的参数
80
- - 分析 `services/` 目录的封装模式
81
-
82
- **IPC 桥接验证**:
83
- - 对比 Rust 命令定义和前端 invoke 调用
84
- - 检查是否存在未注册的命令、未调用的命令
85
- - 验证参数类型匹配
86
-
87
- 输出示例:
88
46
  ```
89
- ### IPC 命令清单
90
-
91
- | 命令名 | Rust 函数 | 参数 | 返回值 | 前端调用位置 | 状态 |
92
- |--------|-----------|------|--------|-------------|------|
93
- | get_system_info | commands/system.rs::get_system_info | - | SysInfo | services/system.ts | 已注册 ✓ |
94
- | read_file | commands/file.rs::read_file | path: String | String | services/file.ts | 已注册 ✓ |
95
- | save_config | commands/config.rs::save_config | config: AppConfig | Result<()> | services/config.ts | 未注册 ✗ |
96
-
97
- ### IPC 类型映射
98
-
99
- | Rust 类型 | TypeScript 类型 | 用途 |
100
- |-----------|----------------|------|
101
- | SysInfo | SysInfo | 系统信息 |
102
- | AppConfig | AppConfig | 应用配置 |
47
+ 用户操作 → 前端组件 → src/services/ (invoke) → IPC 桥 → Rust commands/ → 系统 API / 文件系统 / 数据库
103
48
  ```
104
49
 
105
- ### 4. 权限分析
106
-
107
- 从 `src-tauri/capabilities/` 目录扫描权限声明:
108
-
109
- - 检查每个命令所需的权限
110
- - 分析文件系统访问范围
111
- - 检查窗口操作权限
112
- - 验证最小权限原则
50
+ **类型映射检查**:
51
+ - Rust `struct`(`#[derive(Serialize, Deserialize)]`)→ TypeScript `interface`
52
+ - 枚举类型的前后端对应关系
53
+ - 错误类型从 Rust `Result<T, E>` 到前端 `Promise<T>` 的转换
113
54
 
114
- ### 5. 按层扫描路径
55
+ ## 分析关注点
115
56
 
116
- **前端路径**(使用对应 web 规则):
117
- - 页面: `src/pages/`, `src/views/`
118
- - 组件: `src/components/`
119
- - Hooks: `src/hooks/`, `src/composables/`
120
- - 状态: `src/stores/`, `src/store/`
121
- - IPC 封装: `src/services/`(**Tauri 特有关注点**)
122
- - 工具: `src/utils/`, `src/helpers/`
57
+ 1. **IPC 注册完整性**:对比 `lib.rs` 注册的命令列表 vs `src/services/` 中实际调用的命令,发现未注册或孤立命令
58
+ 2. **类型一致性**:Rust struct 字段名(snake_case)与 TypeScript 接口字段名(camelCase,经 serde rename)是否对应
59
+ 3. **权限最小化**:`capabilities/` 中声明的权限是否超出实际需要
60
+ 4. **异步模式**:Rust 命令是否正确使用 `async fn` + `tokio`;前端是否正确处理 Promise 错误
61
+ 5. **状态管理**:`tauri::State<T>` 共享状态的线程安全性(`Mutex<T>` vs `RwLock<T>`)
123
62
 
124
- **后端路径**(使用 rust 规则):
125
- - 入口: `src-tauri/src/main.rs`, `src-tauri/src/lib.rs`
126
- - 命令: `src-tauri/src/commands/`(**Tauri 特有关注点**)
127
- - 状态: `src-tauri/src/state.rs`
128
- - 模型: `src-tauri/src/models/`
129
- - 错误: `src-tauri/src/error.rs`
130
- - 工具: `src-tauri/src/utils/`
63
+ ## 输出示例
131
64
 
132
- ## 各层提取规则
133
-
134
- ### 层 1: 入口分析
135
-
136
- **扫描文件**: `src-tauri/src/lib.rs`, `src-tauri/src/main.rs`, `src/main.tsx`
137
-
138
- **提取内容**:
139
- - Rust: `tauri::Builder` 配置链(注册的命令、插件、状态)
140
- - Rust: `invoke_handler` 中的命令注册列表
141
- - 前端: Tauri 插件注册、窗口管理
142
-
143
- 输出示例:
144
- ```
145
- ### Tauri 应用初始化 (src-tauri/src/lib.rs)
146
- - **注册命令**: get_system_info, read_file, save_config, list_processes
147
- - **插件**: app-window, fs, dialog, process
148
- - **状态**: AppState (包含系统信息缓存)
149
- - **事件监听**: window-resized, theme-changed
150
65
  ```
151
-
152
- ### 2: 命令模块分析
153
-
154
- **扫描文件**: `src-tauri/src/commands/*.rs`
155
-
156
- 对每个命令模块提取:
157
- - 模块名和职责描述
158
- - 所有 `#[tauri::command]` 函数的完整签名
159
- - 依赖的 Tauri 状态
160
- - 错误处理方式
161
- - 调用的其他模块/外部 crate
162
-
163
- ### 层 3: 前端 IPC 层分析
164
-
165
- **扫描文件**: `src/services/*.ts`
166
-
167
- 对每个服务文件提取:
168
- - 封装的 invoke 调用列表
169
- - TypeScript 类型定义(与 Rust 类型对应)
170
- - 错误处理策略
171
- - Loading 状态管理
172
-
173
- ### 层 4: 共享类型分析
174
-
175
- 检查 Rust 和 TypeScript 之间的类型对应关系:
176
- - Rust `struct` → TypeScript `interface`
177
- - 枚举类型的映射
178
- - 序列化/反序列化约定
179
-
180
- ## 输出模板
181
-
182
- ### README.md 章节结构
183
-
184
- ```markdown
185
- # {项目名}
186
-
187
- ## 项目概述
188
- Tauri 2 桌面应用描述
189
-
190
- ## 技术栈
191
- | 技术 | 版本 | 用途 |
192
- |------|------|------|
193
- | Tauri | 2.x | 桌面框架 |
194
- | Rust | edition 2021 | 后端语言 |
195
- | React/Vue | x.x | 前端框架 |
196
-
197
- ## 架构设计
198
- ### 双架构图(前端 + 后端 + IPC 桥接)
199
- ### 数据流图(用户操作 → 前端 → IPC → Rust → 系统 API)
200
-
201
- ## 项目结构
202
- 双目录树 + 各模块职责
203
-
204
- ## IPC 命令列表
205
- 命令名 | 参数 | 返回值 | 说明
206
-
207
- ## 前端模块
208
- 页面/组件/状态/服务层
209
-
210
- ## Rust 模块
211
- 命令/状态/模型/错误处理
212
-
213
- ## 权限配置
214
- 使用的 capabilities 和 scope
215
-
216
- ## 构建 & 运行
217
- pnpm tauri dev / pnpm tauri build
66
+ ### IPC 命令清单
67
+ | 命令名 | Rust 文件 | 参数 | 返回值 | 前端调用位置 | 状态 |
68
+ |---------------|-----------------------------|--------------|-----------|--------------------|--------|
69
+ | get_system_info | commands/system.rs | — | SysInfo | services/system.ts | 已注册 ✓ |
70
+ | read_file | commands/file.rs | path: String | String | services/file.ts | 已注册 ✓ |
71
+ | save_config | commands/config.rs | config: AppConfig | Result<()> | services/config.ts | 未注册 ✗ |
72
+
73
+ ### Tauri 应用初始化(src-tauri/src/lib.rs)
74
+ - **注册命令**: get_system_info, read_file, save_config
75
+ - **插件**: fs, dialog, process
76
+ - **共享状态**: AppState(系统信息缓存)
218
77
  ```
219
-
220
- ## 模块边界识别
221
-
222
- 以下目录模式下的每个子目录视为独立模块(L2+ 分析时生成 MODULE-DOC.md):
223
-
224
- | 层 | 扫描路径 | 模块判定规则 | MODULE-DOC slug 来源 |
225
- |----|----------|-------------|---------------------|
226
- | 前端页面 | `src/pages/`, `src/views/` | 每个子目录 | 目录名 kebab-case |
227
- | 前端组件 | `src/components/` | 3+ 文件的子目录 | 目录名 kebab-case |
228
- | IPC 封装 | `src/services/` | 每个文件 | 文件名去后缀 |
229
- | Rust 命令 | `src-tauri/src/commands/` | 每个文件/子目录 | 文件名/目录名 |
230
- | Rust 模块 | `src-tauri/src/` 其他子目录 | 3+ 文件 | 目录名 |
231
-
232
- **不视为独立模块的情况**:
233
- - `src-tauri/src/main.rs`(纯入口)
234
- - `src-tauri/src/lib.rs`(命令注册桶文件)
235
- - `src-tauri/target/`(构建产物,跳过)
236
- - `node_modules/`(跳过)
237
-
238
- ## Token 管理
239
-
240
- - 前端和后端分析分别作为独立任务
241
- - IPC 层分析作为第三个独立任务(桥接前后端)
242
- - 大模块(>15 文件)拆分为子任务
243
- - `target/` 和 `node_modules/` 跳过