ai-dev-analytics 1.0.3 → 1.1.0
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 +73 -13
- package/README.zh-CN.md +73 -13
- package/dist/cli/commands/build.d.ts +2 -0
- package/dist/cli/commands/build.d.ts.map +1 -0
- package/dist/cli/commands/build.js +61 -0
- package/dist/cli/commands/build.js.map +1 -0
- package/dist/cli/commands/dashboard.js +1 -1
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/import.d.ts +2 -0
- package/dist/cli/commands/import.d.ts.map +1 -0
- package/dist/cli/commands/import.js +28 -0
- package/dist/cli/commands/import.js.map +1 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +167 -183
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/merge.d.ts +2 -0
- package/dist/cli/commands/merge.d.ts.map +1 -0
- package/dist/cli/commands/merge.js +47 -0
- package/dist/cli/commands/merge.js.map +1 -0
- package/dist/cli/commands/migrate-dir.d.ts +2 -0
- package/dist/cli/commands/migrate-dir.d.ts.map +1 -0
- package/dist/cli/commands/migrate-dir.js +85 -0
- package/dist/cli/commands/migrate-dir.js.map +1 -0
- package/dist/cli/commands/migrate.js +5 -5
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/reindex.d.ts +4 -0
- package/dist/cli/commands/reindex.d.ts.map +1 -1
- package/dist/cli/commands/reindex.js +48 -3
- package/dist/cli/commands/reindex.js.map +1 -1
- package/dist/cli/commands/report.js +1 -1
- package/dist/cli/commands/report.js.map +1 -1
- package/dist/cli/commands/rules.d.ts +5 -0
- package/dist/cli/commands/rules.d.ts.map +1 -1
- package/dist/cli/commands/rules.js +146 -39
- package/dist/cli/commands/rules.js.map +1 -1
- package/dist/cli/commands/skills.d.ts +7 -0
- package/dist/cli/commands/skills.d.ts.map +1 -0
- package/dist/cli/commands/skills.js +180 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/commands/start.d.ts.map +1 -1
- package/dist/cli/commands/start.js +5 -9
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +1 -5
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +26 -5
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/index.js +30 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +86 -57
- package/dist/mcp/server.js.map +1 -1
- package/dist/server/api.js +2 -2
- package/dist/server/api.js.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/utils/ai-build.d.ts +19 -0
- package/dist/utils/ai-build.d.ts.map +1 -0
- package/dist/utils/ai-build.js +278 -0
- package/dist/utils/ai-build.js.map +1 -0
- package/dist/utils/fs.d.ts +18 -0
- package/dist/utils/fs.d.ts.map +1 -1
- package/dist/utils/fs.js +70 -0
- package/dist/utils/fs.js.map +1 -1
- package/dist/utils/git.d.ts +10 -1
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +76 -8
- package/dist/utils/git.js.map +1 -1
- package/dist/utils/guide.d.ts +21 -4
- package/dist/utils/guide.d.ts.map +1 -1
- package/dist/utils/guide.js +168 -16
- package/dist/utils/guide.js.map +1 -1
- package/dist/utils/import.d.ts +27 -0
- package/dist/utils/import.d.ts.map +1 -0
- package/dist/utils/import.js +298 -0
- package/dist/utils/import.js.map +1 -0
- package/dist/utils/paths.d.ts +2 -2
- package/dist/utils/paths.d.ts.map +1 -1
- package/dist/utils/paths.js +8 -8
- package/dist/utils/paths.js.map +1 -1
- package/dist/utils/rules.d.ts +6 -1
- package/dist/utils/rules.d.ts.map +1 -1
- package/dist/utils/rules.js +126 -6
- package/dist/utils/rules.js.map +1 -1
- package/dist/utils/run-data.d.ts +2 -2
- package/dist/utils/run-data.d.ts.map +1 -1
- package/dist/utils/run-data.js +6 -11
- package/dist/utils/run-data.js.map +1 -1
- package/dist/utils/skills.d.ts +37 -0
- package/dist/utils/skills.d.ts.map +1 -0
- package/dist/utils/skills.js +228 -0
- package/dist/utils/skills.js.map +1 -0
- package/package.json +1 -1
- package/src/assets/skills/audit.md +6 -6
- package/src/assets/skills/bug-fixer.md +4 -4
- package/src/assets/skills/code-generator.md +4 -4
- package/src/assets/skills/dashboard-generator.md +2 -2
- package/src/assets/skills/dev-flower.md +3 -3
- package/src/assets/skills/deviation-recorder.md +7 -7
- package/src/assets/skills/mcp-reviewer.md +2 -2
- package/src/assets/skills/requirement-analyzer.md +4 -4
- package/src/assets/skills/rules-evolver.md +7 -7
- package/src/assets/skills/self-reviewer.md +4 -4
- package/src/assets/skills/task-splitter.md +5 -5
- package/src/assets/skills/workflow-orchestrator.md +11 -11
- package/src/assets/templates/demo-run.json +7 -7
- package/src/dashboard/assets/index-B8QcPcg7.css +1 -0
- package/src/dashboard/assets/{index-E4BP-QJG.js → index-DcAl6lhS.js} +1 -1
- package/src/dashboard/demo/run.en.json +1169 -0
- package/src/dashboard/demo/run.zh.json +1169 -0
- package/src/dashboard/index.html +2 -2
- package/src/dashboard/assets/index-CwXn3nJb.css +0 -1
package/README.md
CHANGED
|
@@ -14,16 +14,16 @@ One line to integrate. Zero workflow changes.
|
|
|
14
14
|
{ "mcpServers": { "aida": { "command": "npx", "args": ["-y", "ai-dev-analytics", "mcp"] } } }
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
[](https://www.npmjs.com/package/ai-dev-analytics)
|
|
18
18
|
[](./LICENSE)
|
|
19
19
|
[](https://nodejs.org)
|
|
20
|
-
[](#testing)
|
|
21
21
|
[](https://lwtlong.github.io/ai-dev-analytics/)
|
|
22
22
|
[](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics)
|
|
23
23
|
|
|
24
24
|
[](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics)
|
|
25
25
|
|
|
26
|
-
[One-Line Setup](#-30-second-setup) · [Data-Driven Loop](#-the-data-driven-loop) · [Dashboard](#-the-dashboard) · [SOP Workflow](#-standardized-ai-development-workflow) · [Data for Reports](#-data-sedimentation--performance-reports) · [中文文档](./README.zh-CN.md)
|
|
26
|
+
[One-Line Setup](#-30-second-setup) · [Data-Driven Loop](#-the-data-driven-loop) · [Dashboard](#-the-dashboard) · [SOP Workflow](#-standardized-ai-development-workflow) · [Data for Reports](#-data-sedimentation--performance-reports) · [Commands](./COMMANDS.md) · [Docs](./docs/INDEX.md) · [中文文档](./README.zh-CN.md)
|
|
27
27
|
|
|
28
28
|
</div>
|
|
29
29
|
|
|
@@ -60,7 +60,7 @@ Vibe Coding Session
|
|
|
60
60
|
"9 deviations → 56% hallucination, 44% rule-missing"
|
|
61
61
|
↓
|
|
62
62
|
Deviation patterns identified → AI suggests rules → user confirms → sedimented
|
|
63
|
-
.
|
|
63
|
+
.aida/rules/ ← your AI's growing knowledge base
|
|
64
64
|
↓
|
|
65
65
|
AI reads rules next session → same mistakes eliminated
|
|
66
66
|
↓
|
|
@@ -86,7 +86,7 @@ Vibe Coding Session
|
|
|
86
86
|
|
|
87
87
|

|
|
88
88
|
|
|
89
|
-
The `.
|
|
89
|
+
The `.aida/rules/` directory is your **project-specific AI knowledge base**. It grows with every run. The more you use AI, the smarter it gets at *your* project.
|
|
90
90
|
|
|
91
91
|
---
|
|
92
92
|
|
|
@@ -119,7 +119,15 @@ Run `npx ai-dev-analytics dashboard` to see **your own project's data** in secon
|
|
|
119
119
|
|
|
120
120
|
### 🔒 100% Local. Zero External Requests.
|
|
121
121
|
|
|
122
|
-
AIDA writes JSON files to `.
|
|
122
|
+
AIDA writes JSON files to `.aida/` in your project directory. **The codebase contains zero HTTP calls to external services** — no telemetry, no cloud sync, no analytics, no tracking. Zero runtime dependencies. Your code and data never leave your machine. Period.
|
|
123
|
+
|
|
124
|
+
## Command Reference
|
|
125
|
+
|
|
126
|
+
Detailed CLI usage, command behavior, supported AI tools, merge/import/build flow, and migration notes are documented in [COMMANDS.md](./COMMANDS.md).
|
|
127
|
+
|
|
128
|
+
## Documentation
|
|
129
|
+
|
|
130
|
+
For public documentation navigation, schema references, workflow notes, and dashboard-related docs, see [docs/INDEX.md](./docs/INDEX.md).
|
|
123
131
|
|
|
124
132
|
---
|
|
125
133
|
|
|
@@ -248,7 +256,7 @@ Quarter: Complete development record — exportable, analyzable, presentable
|
|
|
248
256
|
| **Team Leader Report** | Per-developer stats, deviation hotspots, which modules need better rules, team-wide AI maturity |
|
|
249
257
|
| **Project Handover** | Full development history — someone new can see exactly what happened, what rules exist, and why |
|
|
250
258
|
|
|
251
|
-
All data is structured JSON in `.
|
|
259
|
+
All data is structured JSON in `.aida/`. No vendor lock-in. Export it, query it, pipe it into any reporting tool. Run `aida report` to generate a summary at any time.
|
|
252
260
|
|
|
253
261
|
---
|
|
254
262
|
|
|
@@ -257,9 +265,9 @@ All data is structured JSON in `.aidevos/`. No vendor lock-in. Export it, query
|
|
|
257
265
|
```mermaid
|
|
258
266
|
flowchart LR
|
|
259
267
|
A["Your AI Tool\nClaude Code / Cursor"] -->|Vibe Coding| B{"AIDA MCP Server\n10 Tools"}
|
|
260
|
-
B -->|Silent Data Collection| C[".
|
|
268
|
+
B -->|Silent Data Collection| C[".aida/run.json"]
|
|
261
269
|
C -->|Visualization| D["Dashboard\nlocalhost:2375"]
|
|
262
|
-
C -->|Pattern Analysis| E[".
|
|
270
|
+
C -->|Pattern Analysis| E[".aida/rules/"]
|
|
263
271
|
E -->|AI Reads Rules| A
|
|
264
272
|
```
|
|
265
273
|
|
|
@@ -289,10 +297,10 @@ All data is local JSON. No database, no cloud.
|
|
|
289
297
|
|
|
290
298
|
| Level | File | What it contains |
|
|
291
299
|
|-------|------|-----------------|
|
|
292
|
-
| **Run** | `.
|
|
293
|
-
| **Branch** | `.
|
|
294
|
-
| **Project** | `.
|
|
295
|
-
| **Rules** | `.
|
|
300
|
+
| **Run** | `.aida/runs/{branch}/{dev}/run.json` | Every task, bug, deviation, review, file change |
|
|
301
|
+
| **Branch** | `.aida/runs/{branch}/requirement.json` | Aggregated stats per requirement |
|
|
302
|
+
| **Project** | `.aida/index.json` | Cross-branch overview for team leads |
|
|
303
|
+
| **Rules** | `.aida/rules/` | Sedimented project rules — your AI's growing knowledge base |
|
|
296
304
|
|
|
297
305
|
All structured JSON — ready for export, analysis, or feeding into reports.
|
|
298
306
|
|
|
@@ -373,6 +381,58 @@ AIDA uses [Model Context Protocol](https://modelcontextprotocol.io/) — the sta
|
|
|
373
381
|
|
|
374
382
|
---
|
|
375
383
|
|
|
384
|
+
## 📐 Rules System — Team Workflow
|
|
385
|
+
|
|
386
|
+
Rules are the compounding asset of AIDA. Here's how they work in a team setting.
|
|
387
|
+
|
|
388
|
+
### Architecture
|
|
389
|
+
|
|
390
|
+
```
|
|
391
|
+
.aida/rules.json ← source of truth, committed to git
|
|
392
|
+
↓
|
|
393
|
+
aida rules build
|
|
394
|
+
↓
|
|
395
|
+
.aida/rules/*.md ← auto-generated views, gitignored
|
|
396
|
+
↓
|
|
397
|
+
AI reads rules next session
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
`aida init` automatically adds `.aida/rules/*.md` to your `.gitignore`. Never edit the `.md` files manually — they are always regenerated from `rules.json`.
|
|
401
|
+
|
|
402
|
+
### Daily workflow
|
|
403
|
+
|
|
404
|
+
After pulling changes that include new rules:
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
git pull
|
|
408
|
+
aida rules build # regenerate local rule views from updated rules.json
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### Merge conflict resolution
|
|
412
|
+
|
|
413
|
+
When two developers add rules on separate branches and merge, `rules.json` may get a standard git conflict. Resolve it in one command:
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
# After git merge produces a conflict in rules.json:
|
|
417
|
+
aida rules merge # fingerprint union — no duplicates, no lost rules
|
|
418
|
+
aida rules build # rebuild .md views
|
|
419
|
+
git add .aida/rules.json
|
|
420
|
+
git commit -m "merge: resolve rules conflict"
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
`aida rules merge` uses fingerprint deduplication: if two rules have identical content, only one is kept. If they differ, both are kept and the incoming rule is renumbered to avoid ID collisions.
|
|
424
|
+
|
|
425
|
+
### Managing rules over time
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
aida rules list # list all rules grouped by category
|
|
429
|
+
aida rules dedupe # surface rules with >40% keyword overlap for manual review
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
Rules have a `status` field (`active` / `deprecated`). When project conventions evolve, deprecate old rules — they stop appearing in the `.md` files your AI reads, but remain in `rules.json` as an audit trail.
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
376
436
|
## Roadmap
|
|
377
437
|
|
|
378
438
|
- [ ] Export reports as PDF / HTML (H1/H2 performance reviews)
|
package/README.zh-CN.md
CHANGED
|
@@ -14,16 +14,16 @@
|
|
|
14
14
|
{ "mcpServers": { "aida": { "command": "npx", "args": ["-y", "ai-dev-analytics", "mcp"] } } }
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
[](https://www.npmjs.com/package/ai-dev-analytics)
|
|
18
18
|
[](./LICENSE)
|
|
19
19
|
[](https://nodejs.org)
|
|
20
|
-
[](#测试)
|
|
21
21
|
[](https://lwtlong.github.io/ai-dev-analytics/)
|
|
22
22
|
[](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics)
|
|
23
23
|
|
|
24
24
|
[](https://glama.ai/mcp/servers/LWTlong/ai-dev-analytics)
|
|
25
25
|
|
|
26
|
-
[一行接入](#-30-秒上手) · [数据驱动闭环](#-数据驱动闭环) · [数据看板](#-数据看板) · [SOP 流程](#-标准化-ai-开发流程) · [数据沉淀](#-数据沉淀与绩效汇报) · [English](./README.md)
|
|
26
|
+
[一行接入](#-30-秒上手) · [数据驱动闭环](#-数据驱动闭环) · [数据看板](#-数据看板) · [SOP 流程](#-标准化-ai-开发流程) · [数据沉淀](#-数据沉淀与绩效汇报) · [命令文档](./COMMANDS.md) · [文档导航](./docs/INDEX.md) · [English](./README.md)
|
|
27
27
|
|
|
28
28
|
</div>
|
|
29
29
|
|
|
@@ -60,7 +60,7 @@ Vibe Coding 过程
|
|
|
60
60
|
"9 个偏差 → 56% 幻觉, 44% 规则缺失"
|
|
61
61
|
↓
|
|
62
62
|
发现偏差规律 → AI 建议沉淀规则 → 用户确认 → 写入规则库
|
|
63
|
-
.
|
|
63
|
+
.aida/rules/ ← 你的 AI 知识库在成长
|
|
64
64
|
↓
|
|
65
65
|
AI 下次读取规则 → 同样的错误被消除
|
|
66
66
|
↓
|
|
@@ -86,7 +86,7 @@ Vibe Coding 过程
|
|
|
86
86
|
|
|
87
87
|

|
|
88
88
|
|
|
89
|
-
`.
|
|
89
|
+
`.aida/rules/` 目录就是你的**项目专属 AI 知识库**。用 AI 写得越多,它对*你的项目*就越懂。
|
|
90
90
|
|
|
91
91
|
---
|
|
92
92
|
|
|
@@ -119,7 +119,15 @@ AIDA 全方位采集 AI 辅助开发的每个维度,转化为交互式图表
|
|
|
119
119
|
|
|
120
120
|
### 🔒 100% 本地。零外部请求。
|
|
121
121
|
|
|
122
|
-
AIDA 只往项目里的 `.
|
|
122
|
+
AIDA 只往项目里的 `.aida/` 目录写 JSON 文件。**整个代码库不包含任何外部 HTTP 请求** —— 不发遥测、不上传云端、不请求分析服务、不做任何追踪。零运行时依赖。你的代码和数据绝不会离开你的电脑。
|
|
123
|
+
|
|
124
|
+
## 命令文档
|
|
125
|
+
|
|
126
|
+
详细 CLI 用法、命令行为、支持的 AI 工具、merge/import/build 流程、迁移说明,见 [COMMANDS.md](./COMMANDS.md)。
|
|
127
|
+
|
|
128
|
+
## 文档导航
|
|
129
|
+
|
|
130
|
+
公开文档导航、schema 参考、工作流说明、看板相关文档,见 [docs/INDEX.md](./docs/INDEX.md)。
|
|
123
131
|
|
|
124
132
|
---
|
|
125
133
|
|
|
@@ -248,7 +256,7 @@ AIDA 不只是可视化 —— 它**沉淀数据**。每次运行都积累结构
|
|
|
248
256
|
| **团队 Leader 报告** | 各开发者数据、偏差热点、哪个模块需要更好的规则、团队 AI 成熟度 |
|
|
249
257
|
| **项目交接** | 完整开发历史 —— 接手的人能看到做了什么、有什么规则、为什么有这些规则 |
|
|
250
258
|
|
|
251
|
-
所有数据都是 `.
|
|
259
|
+
所有数据都是 `.aida/` 里的结构化 JSON。没有厂商锁定。随时导出、查询、接入任何报表工具。运行 `aida report` 随时生成汇总。
|
|
252
260
|
|
|
253
261
|
---
|
|
254
262
|
|
|
@@ -257,9 +265,9 @@ AIDA 不只是可视化 —— 它**沉淀数据**。每次运行都积累结构
|
|
|
257
265
|
```mermaid
|
|
258
266
|
flowchart LR
|
|
259
267
|
A["你的 AI 工具\nClaude Code / Cursor"] -->|Vibe Coding| B{"AIDA MCP Server\n10 个工具"}
|
|
260
|
-
B -->|静默采集| C[".
|
|
268
|
+
B -->|静默采集| C[".aida/run.json"]
|
|
261
269
|
C -->|可视化| D["数据看板\nlocalhost:2375"]
|
|
262
|
-
C -->|模式分析| E[".
|
|
270
|
+
C -->|模式分析| E[".aida/rules/"]
|
|
263
271
|
E -->|AI 读取规则| A
|
|
264
272
|
```
|
|
265
273
|
|
|
@@ -289,10 +297,10 @@ AI 工具在工作时自动调用 MCP 工具。你不需要手动操作 ——
|
|
|
289
297
|
|
|
290
298
|
| 层级 | 文件 | 内容 |
|
|
291
299
|
|------|------|------|
|
|
292
|
-
| **运行** | `.
|
|
293
|
-
| **分支** | `.
|
|
294
|
-
| **项目** | `.
|
|
295
|
-
| **规则** | `.
|
|
300
|
+
| **运行** | `.aida/runs/{分支}/{开发者}/run.json` | 每个任务、Bug、偏差、审查、文件变更 |
|
|
301
|
+
| **分支** | `.aida/runs/{分支}/requirement.json` | 分支聚合统计 |
|
|
302
|
+
| **项目** | `.aida/index.json` | 跨分支总览 |
|
|
303
|
+
| **规则** | `.aida/rules/` | 沉淀的项目规则 —— AI 持续增长的知识库 |
|
|
296
304
|
|
|
297
305
|
全是结构化 JSON —— 随时可导出、可分析、可生成汇报。
|
|
298
306
|
|
|
@@ -373,6 +381,58 @@ AIDA 使用 [Model Context Protocol](https://modelcontextprotocol.io/) —— AI
|
|
|
373
381
|
|
|
374
382
|
---
|
|
375
383
|
|
|
384
|
+
## 📐 规则系统 —— 团队协作流程
|
|
385
|
+
|
|
386
|
+
规则是 AIDA 的核心复利资产。以下是团队场景下的完整使用方式。
|
|
387
|
+
|
|
388
|
+
### 架构设计
|
|
389
|
+
|
|
390
|
+
```
|
|
391
|
+
.aida/rules.json ← 唯一数据源,提交到 git
|
|
392
|
+
↓
|
|
393
|
+
aida rules build
|
|
394
|
+
↓
|
|
395
|
+
.aida/rules/*.md ← 自动生成的视图文件,加入 gitignore
|
|
396
|
+
↓
|
|
397
|
+
AI 下次读取规则
|
|
398
|
+
```
|
|
399
|
+
|
|
400
|
+
`aida init` 会自动将 `.aida/rules/*.md` 写入 `.gitignore`。不要手动编辑 `.md` 文件——它们始终由 `rules.json` 重新生成。
|
|
401
|
+
|
|
402
|
+
### 日常流程
|
|
403
|
+
|
|
404
|
+
拉取了包含新规则的代码后:
|
|
405
|
+
|
|
406
|
+
```bash
|
|
407
|
+
git pull
|
|
408
|
+
aida rules build # 从更新后的 rules.json 重新生成本地规则视图
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
### 合并冲突处理
|
|
412
|
+
|
|
413
|
+
两位开发者在不同分支各自添加了规则并合并时,`rules.json` 可能产生标准的 git 冲突。一条命令解决:
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
# git merge 在 rules.json 产生冲突后执行:
|
|
417
|
+
aida rules merge # 按 fingerprint 做并集——不丢规则,不产生重复
|
|
418
|
+
aida rules build # 重建 .md 视图
|
|
419
|
+
git add .aida/rules.json
|
|
420
|
+
git commit -m "merge: resolve rules conflict"
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
`aida rules merge` 使用指纹去重:内容完全相同只保留一条;内容不同则两条都保留,新规则自动重新编号避免 ID 冲突。
|
|
424
|
+
|
|
425
|
+
### 规则日常维护
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
aida rules list # 按分类列出所有规则
|
|
429
|
+
aida rules dedupe # 找出关键词重叠度 >40% 的相似规则,供手动处理
|
|
430
|
+
```
|
|
431
|
+
|
|
432
|
+
规则有 `status` 字段(`active` / `deprecated`)。项目规范变化时,将旧规则标记为 `deprecated`——它从 AI 读取的 `.md` 文件里消失,但保留在 `rules.json` 中作为审计记录。
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
376
436
|
## Roadmap
|
|
377
437
|
|
|
378
438
|
- [ ] 导出报告为 PDF / HTML(H1/H2 绩效汇报)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"AAoCA,wBAAsB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAoC3C"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import * as readline from 'node:readline/promises';
|
|
2
|
+
import { stdin, stdout } from 'node:process';
|
|
3
|
+
import { green, red, yellow } from '../../utils/display.js';
|
|
4
|
+
import { buildProjectArtifacts, readConfiguredTools } from '../../utils/ai-build.js';
|
|
5
|
+
import { configPath } from '../../utils/paths.js';
|
|
6
|
+
import { fileExists } from '../../utils/fs.js';
|
|
7
|
+
function requestedTools() {
|
|
8
|
+
return process.argv.slice(3);
|
|
9
|
+
}
|
|
10
|
+
async function selectTools(configured) {
|
|
11
|
+
const requested = requestedTools();
|
|
12
|
+
if (requested.length > 0)
|
|
13
|
+
return requested;
|
|
14
|
+
console.log('\n Select AI tools to build (comma-separated numbers, Enter = all):\n');
|
|
15
|
+
configured.forEach((tool, index) => {
|
|
16
|
+
console.log(` ${index + 1}) ${tool}`);
|
|
17
|
+
});
|
|
18
|
+
console.log('');
|
|
19
|
+
const rl = readline.createInterface({ input: stdin, output: stdout });
|
|
20
|
+
const answer = (await rl.question(' > ')).trim();
|
|
21
|
+
rl.close();
|
|
22
|
+
if (!answer)
|
|
23
|
+
return configured;
|
|
24
|
+
const indices = answer
|
|
25
|
+
.split(',')
|
|
26
|
+
.map((item) => parseInt(item.trim(), 10))
|
|
27
|
+
.filter((num) => num >= 1 && num <= configured.length);
|
|
28
|
+
const selected = [...new Set(indices.map((num) => configured[num - 1]))];
|
|
29
|
+
return selected.length > 0 ? selected : configured;
|
|
30
|
+
}
|
|
31
|
+
export async function build() {
|
|
32
|
+
const projectRoot = process.cwd();
|
|
33
|
+
if (!fileExists(configPath(projectRoot))) {
|
|
34
|
+
console.log(red('\n AIDA not initialized. Run `npx aida init` first.\n'));
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const configured = readConfiguredTools(projectRoot);
|
|
38
|
+
if (configured.length === 0) {
|
|
39
|
+
console.log(yellow('\n No AI tools configured in .aida/config.json.\n'));
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const targets = await selectTools(configured);
|
|
43
|
+
const result = buildProjectArtifacts(projectRoot, targets);
|
|
44
|
+
console.log(green('\n ✓ AIDA build completed') +
|
|
45
|
+
`: ${result.ruleViews} rule views, ${result.skillViews} skill views, ${result.commandFiles} tool command files\n`);
|
|
46
|
+
if (result.tools.length > 0) {
|
|
47
|
+
console.log(` Targets: ${result.tools.join(', ')}`);
|
|
48
|
+
}
|
|
49
|
+
if (result.mcpFiles.length > 0) {
|
|
50
|
+
console.log(` MCP: ${result.mcpFiles.join(', ')}`);
|
|
51
|
+
}
|
|
52
|
+
if (result.tools.includes('codex')) {
|
|
53
|
+
console.log(' Codex: global ~/.codex/config.toml has been updated for the aida MCP server');
|
|
54
|
+
}
|
|
55
|
+
console.log(` Tool config snapshot: ${result.toolConfigSnapshot}`);
|
|
56
|
+
if (result.gitignoreAdded.length > 0) {
|
|
57
|
+
console.log(` .gitignore: added ${result.gitignoreAdded.join(', ')}`);
|
|
58
|
+
}
|
|
59
|
+
console.log('');
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../src/cli/commands/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ function loadDemoData(projectRoot) {
|
|
|
10
10
|
const demoPath = resolve(ASSETS_DIR, 'templates', 'demo-run.json');
|
|
11
11
|
if (!existsSync(demoPath))
|
|
12
12
|
return;
|
|
13
|
-
const demoDir = resolve(projectRoot, '.
|
|
13
|
+
const demoDir = resolve(projectRoot, '.aida', 'runs', 'demo-feature', 'demo-dev');
|
|
14
14
|
ensureDir(demoDir);
|
|
15
15
|
const data = readJson(demoPath);
|
|
16
16
|
writeJson(resolve(demoDir, 'run.json'), data);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAErC,SAAS,YAAY,CAAC,WAAmB;IACvC,MAAM,QAAQ,GAAG,OAAO,CAAC,UAAU,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACnE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO;IAElC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../../src/cli/commands/dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/import.ts"],"names":[],"mappings":"AAMA,wBAAsB,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC,CA8BnD"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { green, red, yellow } from '../../utils/display.js';
|
|
2
|
+
import { configPath } from '../../utils/paths.js';
|
|
3
|
+
import { fileExists } from '../../utils/fs.js';
|
|
4
|
+
import { importProjectSources } from '../../utils/import.js';
|
|
5
|
+
import { buildProjectArtifacts } from '../../utils/ai-build.js';
|
|
6
|
+
export async function importSources() {
|
|
7
|
+
const projectRoot = process.cwd();
|
|
8
|
+
if (!fileExists(configPath(projectRoot))) {
|
|
9
|
+
console.log(red('\n AIDA not initialized. Run `npx aida init` first.\n'));
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const imported = importProjectSources(projectRoot);
|
|
13
|
+
const result = buildProjectArtifacts(projectRoot, imported.tools);
|
|
14
|
+
console.log(green('\n ✓ Existing project sources imported') +
|
|
15
|
+
`: ${imported.rulesImported} rules, ${imported.skillsImported} skills\n`);
|
|
16
|
+
if (imported.tools.length === 0) {
|
|
17
|
+
console.log(yellow(' No existing AI tool configs were discovered.\n'));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
console.log(` Tools: ${imported.tools.join(', ')}`);
|
|
21
|
+
console.log(` Tool config snapshot: ${imported.snapshotPath}`);
|
|
22
|
+
console.log(` Rebuilt: ${result.ruleViews} rule views, ${result.skillViews} skill views, ${result.commandFiles} tool command files`);
|
|
23
|
+
if (imported.gitignoreAdded.length > 0) {
|
|
24
|
+
console.log(` .gitignore: added ${imported.gitignoreAdded.join(', ')}`);
|
|
25
|
+
}
|
|
26
|
+
console.log('');
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=import.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../../src/cli/commands/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAEhE,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAElC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;QAC3E,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,MAAM,GAAG,qBAAqB,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAElE,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,yCAAyC,CAAC;QAChD,KAAK,QAAQ,CAAC,aAAa,WAAW,QAAQ,CAAC,cAAc,WAAW,CACzE,CAAC;IAEF,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,kDAAkD,CAAC,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,YAAY,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,2BAA2B,QAAQ,CAAC,YAAY,EAAE,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CACT,cAAc,MAAM,CAAC,SAAS,gBAAgB,MAAM,CAAC,UAAU,iBAAiB,MAAM,CAAC,YAAY,qBAAqB,CACzH,CAAC;IACF,IAAI,QAAQ,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,uBAAuB,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/init.ts"],"names":[],"mappings":"AA0GA,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CA6R1C"}
|