@jokeran/frontend-code-skimmer 0.4.8 → 0.5.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.
- package/README.md +47 -2
- package/dist/index.js +227 -179
- package/package.json +4 -3
package/README.md
CHANGED
|
@@ -10,10 +10,13 @@ AI 代码助手的智能代码索引引擎,面向 **Vue 2 / Vue 3 / React /
|
|
|
10
10
|
- `precision_mode="precise"` 支持 **JS / JSX / TS / TSX** 的跨文件 import/export 精确绑定
|
|
11
11
|
- 对 **纯 TS/JS 工具类模块** 提供基础符号提取(class / method / function / constant)
|
|
12
12
|
- `skimmer_index_health` 可显示**真实失败文件与错误信息**,便于排障
|
|
13
|
+
- `skimmer_search_snippets` 已支持 **query intent 分类 + snippet-first 排序 + 业务文件优先**
|
|
13
14
|
|
|
14
15
|
## 解决什么问题?
|
|
15
16
|
|
|
16
17
|
- **7000 行大文件**:`skimmer_get_component_outline` 将其压缩为 60 行骨架,节省 95% Token
|
|
18
|
+
- **自然语言第一跳太吵**:`skimmer_search_snippets` 直接返回高相关代码片段,避免先猜函数名再二跳读文件
|
|
19
|
+
- **API 查询先落到 util 包装层**:`skimmer_search_snippets` 会优先抬升 `views/pages/features` 等业务实现,压低 `config/utils/helpers` 这类通用封装
|
|
17
20
|
- **函数名拼写错误**:搜 `changeCash` 能找到 `changeCashValue`,自动提示 "cash 可能是 cache 的拼写错误"
|
|
18
21
|
- **不知道函数名**:`skimmer_find_by_behavior` 按行为搜索,搜 `storage` 直接列出所有操作 localStorage 的函数
|
|
19
22
|
- **同名函数串台**:`skimmer_find_symbol` / `skimmer_find_by_behavior` / `skimmer_get_call_graph` 支持 `file_path` 过滤
|
|
@@ -31,6 +34,7 @@ AI 代码助手的智能代码索引引擎,面向 **Vue 2 / Vue 3 / React /
|
|
|
31
34
|
| `skimmer_index_project` | 初始化/更新代码索引(支持 `force: true` 全量重建) |
|
|
32
35
|
| `skimmer_get_component_outline` | ⭐ 获取文件骨架(极致 Token 节省,自动检测索引过期) |
|
|
33
36
|
| `skimmer_find_symbol` | 智能符号搜索(精确 → FTS5 → Levenshtein 三层,支持拼写错误) |
|
|
37
|
+
| `skimmer_search_snippets` | ⭐ 代码片段搜索(snippet-first,适合自然语言第一跳) |
|
|
34
38
|
| `skimmer_get_code_slice` | 精准代码切片(只取一个函数,自动检测行号偏移) |
|
|
35
39
|
| `skimmer_trace_assignments` | 变量赋值链路追踪(轻量降级工具,AST 优先) |
|
|
36
40
|
| `skimmer_trace_property_changes` | 对象属性修改追踪(轻量降级工具) |
|
|
@@ -48,6 +52,9 @@ AI 代码助手的智能代码索引引擎,面向 **Vue 2 / Vue 3 / React /
|
|
|
48
52
|
- **local shadowing 保护**:若 import 名在函数局部被参数或变量重新声明,会保留 heuristic,避免把本地变量误判成跨文件精确调用
|
|
49
53
|
- **工具类模块覆盖增强**:新增 Tooling TS/JS Parser,能抽取 class、class method、top-level function、constant 等基础符号
|
|
50
54
|
- **index health 更真实**:索引失败文件会持久化,`skimmer_index_health` 可查看最近失败文件和错误,而不是只看总量
|
|
55
|
+
- **snippet 搜索引入 query intent**:区分 `symbol_like / behavior_like / api_like / natural_language`,工具输出会直接显示意图,便于调权和排障
|
|
56
|
+
- **业务文件优先排序**:对 `views/pages/features/modules` 等业务文件加分,对 `config/utils/helpers/lib/shared` 等通用封装降权;在真实 Vue2 项目中,`localStorage setItem` 已可优先命中业务页实现而不是 `mUtils.js`
|
|
57
|
+
- **评测集已固化**:仓库内有固定 snippet 回归测试,外部真实项目可通过 `eval/snippet-suites/*.json` + `npm run eval:snippet` 一键复跑
|
|
51
58
|
|
|
52
59
|
## 安装
|
|
53
60
|
|
|
@@ -75,6 +82,22 @@ npm install
|
|
|
75
82
|
npm run build
|
|
76
83
|
```
|
|
77
84
|
|
|
85
|
+
### 方式三:运行 snippet 评测集(开发调权用)
|
|
86
|
+
|
|
87
|
+
```bash
|
|
88
|
+
# 仓库内固定评测集
|
|
89
|
+
npm test
|
|
90
|
+
|
|
91
|
+
# 真实项目回归(以 apply-claim 为例)
|
|
92
|
+
npm run eval:snippet -- --project /Users/anshunli1/jd/workSpace/jdGit/apply-claim --suite ./eval/snippet-suites/apply-claim.json
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
说明:
|
|
96
|
+
|
|
97
|
+
- `npm test` 会跑固定 fixture 评测集,适合日常开发时快速防回归
|
|
98
|
+
- `npm run eval:snippet` 用于真实项目相关性回归,适合调权、改 query 规则、评估业务文件优先是否生效
|
|
99
|
+
- `eval/snippet-suites/*.json` 只属于研发保障设施,不参与运行时主链路
|
|
100
|
+
|
|
78
101
|
## 配置(Cursor / Claude Desktop)
|
|
79
102
|
|
|
80
103
|
### npx 安装(推荐)
|
|
@@ -87,7 +110,7 @@ npm run build
|
|
|
87
110
|
"args": ["-y", "@jokeran/frontend-code-skimmer"],
|
|
88
111
|
"autoApprove": [
|
|
89
112
|
"skimmer_index_project", "skimmer_get_component_outline",
|
|
90
|
-
"skimmer_find_symbol", "skimmer_get_code_slice",
|
|
113
|
+
"skimmer_find_symbol", "skimmer_search_snippets", "skimmer_get_code_slice",
|
|
91
114
|
"skimmer_trace_assignments", "skimmer_trace_property_changes",
|
|
92
115
|
"skimmer_find_by_behavior", "skimmer_trace_data_lifecycle",
|
|
93
116
|
"skimmer_get_call_graph", "skimmer_get_blast_radius",
|
|
@@ -108,7 +131,7 @@ npm run build
|
|
|
108
131
|
"args": ["/path/to/frontend-code-skimmer/dist/index.js"],
|
|
109
132
|
"autoApprove": [
|
|
110
133
|
"skimmer_index_project", "skimmer_get_component_outline",
|
|
111
|
-
"skimmer_find_symbol", "skimmer_get_code_slice",
|
|
134
|
+
"skimmer_find_symbol", "skimmer_search_snippets", "skimmer_get_code_slice",
|
|
112
135
|
"skimmer_trace_assignments", "skimmer_trace_property_changes",
|
|
113
136
|
"skimmer_find_by_behavior", "skimmer_trace_data_lifecycle",
|
|
114
137
|
"skimmer_get_call_graph", "skimmer_get_blast_radius",
|
|
@@ -187,6 +210,28 @@ npm run build
|
|
|
187
210
|
→ 行为标签显示: [storage:localStorage.setItem]
|
|
188
211
|
```
|
|
189
212
|
|
|
213
|
+
### 3.5 ⭐ 自然语言第一跳代码片段搜索
|
|
214
|
+
|
|
215
|
+
```
|
|
216
|
+
调用 skimmer_search_snippets({ query: "save to cache" })
|
|
217
|
+
→ 直接返回 changeCacheValue / persistDraft 等高相关代码片段
|
|
218
|
+
→ 优先看 snippet,不必先猜函数名再调用 get_code_slice
|
|
219
|
+
→ 输出会显示查询意图,如 `behavior_like`
|
|
220
|
+
|
|
221
|
+
调用 skimmer_search_snippets({ query: "localStorage setItem" })
|
|
222
|
+
→ 直接返回 localStorage.setItem 所在实现片段
|
|
223
|
+
→ 显式 API 查询会识别为 `api_like`,优先按行为实现排序
|
|
224
|
+
→ 若同时存在业务页实现和 util 封装,默认优先业务文件
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
当前排序信号(面向 Agent 第一跳):
|
|
228
|
+
|
|
229
|
+
- query intent:`symbol_like / behavior_like / api_like / natural_language`
|
|
230
|
+
- definition boost:可执行定义(function / method / hook / lifecycle)优先于常量/元数据
|
|
231
|
+
- file coherence:同一文件内多处相关命中会整体抬升
|
|
232
|
+
- file role:`views/pages/features/modules` 业务文件优先,`config/utils/helpers/lib/shared` 通用封装降权
|
|
233
|
+
- noise penalty:测试、mock、demo、声明文件降权
|
|
234
|
+
|
|
190
235
|
### 4. 查找操作本地存储的函数
|
|
191
236
|
|
|
192
237
|
```
|