@geeseeker/easyai-dev 3.0.0-alpha.1 → 3.0.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 +90 -88
- package/README_AI.md +143 -0
- package/bin/easyai-dev.js +127 -1
- package/lib/init.js +425 -0
- package/lib/server/index.d.ts +14 -0
- package/lib/server/index.d.ts.map +1 -0
- package/lib/server/index.js +122 -0
- package/lib/server/index.js.map +1 -0
- package/lib/server/resources/journal-resource.d.ts +8 -0
- package/lib/server/resources/journal-resource.d.ts.map +1 -0
- package/lib/server/resources/journal-resource.js +46 -0
- package/lib/server/resources/journal-resource.js.map +1 -0
- package/lib/server/resources/spec-resource.d.ts +11 -0
- package/lib/server/resources/spec-resource.d.ts.map +1 -0
- package/lib/server/resources/spec-resource.js +126 -0
- package/lib/server/resources/spec-resource.js.map +1 -0
- package/lib/server/resources/status-resource.d.ts +8 -0
- package/lib/server/resources/status-resource.d.ts.map +1 -0
- package/lib/server/resources/status-resource.js +36 -0
- package/lib/server/resources/status-resource.js.map +1 -0
- package/lib/server/resources/subtask-context-resource.d.ts +8 -0
- package/lib/server/resources/subtask-context-resource.d.ts.map +1 -0
- package/lib/server/resources/subtask-context-resource.js +93 -0
- package/lib/server/resources/subtask-context-resource.js.map +1 -0
- package/lib/server/resources/task-context-resource.d.ts +8 -0
- package/lib/server/resources/task-context-resource.d.ts.map +1 -0
- package/lib/server/resources/task-context-resource.js +76 -0
- package/lib/server/resources/task-context-resource.js.map +1 -0
- package/lib/server/tools/conflict-check.d.ts +7 -0
- package/lib/server/tools/conflict-check.d.ts.map +1 -0
- package/lib/server/tools/conflict-check.js +242 -0
- package/lib/server/tools/conflict-check.js.map +1 -0
- package/lib/server/tools/context-budget.d.ts +7 -0
- package/lib/server/tools/context-budget.d.ts.map +1 -0
- package/lib/server/tools/context-budget.js +178 -0
- package/lib/server/tools/context-budget.js.map +1 -0
- package/lib/server/tools/context-generate.d.ts +7 -0
- package/lib/server/tools/context-generate.d.ts.map +1 -0
- package/lib/server/tools/context-generate.js +208 -0
- package/lib/server/tools/context-generate.js.map +1 -0
- package/lib/server/tools/journal-append.d.ts +7 -0
- package/lib/server/tools/journal-append.d.ts.map +1 -0
- package/lib/server/tools/journal-append.js +55 -0
- package/lib/server/tools/journal-append.js.map +1 -0
- package/lib/server/tools/journal-search.d.ts +7 -0
- package/lib/server/tools/journal-search.d.ts.map +1 -0
- package/lib/server/tools/journal-search.js +63 -0
- package/lib/server/tools/journal-search.js.map +1 -0
- package/lib/server/tools/plan-validate.d.ts +7 -0
- package/lib/server/tools/plan-validate.d.ts.map +1 -0
- package/lib/server/tools/plan-validate.js +146 -0
- package/lib/server/tools/plan-validate.js.map +1 -0
- package/lib/server/tools/spec-validate.d.ts +7 -0
- package/lib/server/tools/spec-validate.d.ts.map +1 -0
- package/lib/server/tools/spec-validate.js +170 -0
- package/lib/server/tools/spec-validate.js.map +1 -0
- package/lib/server/tools/subtask-tools.d.ts +12 -0
- package/lib/server/tools/subtask-tools.d.ts.map +1 -0
- package/lib/server/tools/subtask-tools.js +383 -0
- package/lib/server/tools/subtask-tools.js.map +1 -0
- package/lib/server/tools/task-append-log.d.ts +7 -0
- package/lib/server/tools/task-append-log.d.ts.map +1 -0
- package/lib/server/tools/task-append-log.js +108 -0
- package/lib/server/tools/task-append-log.js.map +1 -0
- package/lib/server/tools/task-cancel.d.ts +7 -0
- package/lib/server/tools/task-cancel.d.ts.map +1 -0
- package/lib/server/tools/task-cancel.js +104 -0
- package/lib/server/tools/task-cancel.js.map +1 -0
- package/lib/server/tools/task-create.d.ts +7 -0
- package/lib/server/tools/task-create.d.ts.map +1 -0
- package/lib/server/tools/task-create.js +98 -0
- package/lib/server/tools/task-create.js.map +1 -0
- package/lib/server/tools/task-get.d.ts +7 -0
- package/lib/server/tools/task-get.d.ts.map +1 -0
- package/lib/server/tools/task-get.js +152 -0
- package/lib/server/tools/task-get.js.map +1 -0
- package/lib/server/tools/task-list.d.ts +7 -0
- package/lib/server/tools/task-list.d.ts.map +1 -0
- package/lib/server/tools/task-list.js +66 -0
- package/lib/server/tools/task-list.js.map +1 -0
- package/lib/server/tools/task-transition.d.ts +7 -0
- package/lib/server/tools/task-transition.d.ts.map +1 -0
- package/lib/server/tools/task-transition.js +259 -0
- package/lib/server/tools/task-transition.js.map +1 -0
- package/lib/server/tools/worktree-tools.d.ts +17 -0
- package/lib/server/tools/worktree-tools.d.ts.map +1 -0
- package/lib/server/tools/worktree-tools.js +336 -0
- package/lib/server/tools/worktree-tools.js.map +1 -0
- package/lib/server/utils/capability-gate.d.ts +50 -0
- package/lib/server/utils/capability-gate.d.ts.map +1 -0
- package/lib/server/utils/capability-gate.js +146 -0
- package/lib/server/utils/capability-gate.js.map +1 -0
- package/lib/server/utils/git-utils.d.ts +33 -0
- package/lib/server/utils/git-utils.d.ts.map +1 -0
- package/lib/server/utils/git-utils.js +84 -0
- package/lib/server/utils/git-utils.js.map +1 -0
- package/lib/server/utils/hash-utils.d.ts +78 -0
- package/lib/server/utils/hash-utils.d.ts.map +1 -0
- package/lib/server/utils/hash-utils.js +153 -0
- package/lib/server/utils/hash-utils.js.map +1 -0
- package/lib/server/utils/journal-utils.d.ts +69 -0
- package/lib/server/utils/journal-utils.d.ts.map +1 -0
- package/lib/server/utils/journal-utils.js +387 -0
- package/lib/server/utils/journal-utils.js.map +1 -0
- package/lib/server/utils/status-utils.d.ts +58 -0
- package/lib/server/utils/status-utils.d.ts.map +1 -0
- package/lib/server/utils/status-utils.js +70 -0
- package/lib/server/utils/status-utils.js.map +1 -0
- package/lib/server/utils/task-utils.d.ts +104 -0
- package/lib/server/utils/task-utils.d.ts.map +1 -0
- package/lib/server/utils/task-utils.js +396 -0
- package/lib/server/utils/task-utils.js.map +1 -0
- package/lib/server/utils/uri-utils.d.ts +9 -0
- package/lib/server/utils/uri-utils.d.ts.map +1 -0
- package/lib/server/utils/uri-utils.js +21 -0
- package/lib/server/utils/uri-utils.js.map +1 -0
- package/package.json +30 -21
- package/skeleton/.agents/rules/anti-hallucination.md +42 -0
- package/skeleton/.agents/rules/coding-standards.md +41 -0
- package/skeleton/.agents/rules/project-identity.md +71 -0
- package/skeleton/.agents/skills/common-framework-evolve/.gitkeep +0 -0
- package/skeleton/.agents/skills/common-framework-evolve/SKILL.md +105 -0
- package/skeleton/.agents/skills/common-session-close/.gitkeep +0 -0
- package/skeleton/.agents/skills/common-session-close/SKILL.md +83 -0
- package/skeleton/.agents/skills/common-spec-update/.gitkeep +0 -0
- package/skeleton/.agents/skills/common-spec-update/SKILL.md +87 -0
- package/skeleton/.agents/skills/pm-brainstorm/.gitkeep +0 -0
- package/skeleton/.agents/skills/pm-brainstorm/SKILL.md +114 -0
- package/skeleton/.agents/skills/pm-session-start/.gitkeep +0 -0
- package/skeleton/.agents/skills/pm-session-start/SKILL.md +73 -0
- package/skeleton/.agents/skills/pm-task-planning/SKILL.md +200 -0
- package/skeleton/.agents/skills/pm-task-review/.gitkeep +0 -0
- package/skeleton/.agents/skills/pm-task-review/SKILL.md +144 -0
- package/skeleton/.agents/skills/worker-check/.gitkeep +0 -0
- package/skeleton/.agents/skills/worker-check/SKILL.md +194 -0
- package/skeleton/.agents/skills/worker-debug/.gitkeep +0 -0
- package/skeleton/.agents/skills/worker-debug/SKILL.md +241 -0
- package/skeleton/.agents/skills/worker-implement/.gitkeep +0 -0
- package/skeleton/.agents/skills/worker-implement/SKILL.md +192 -0
- package/skeleton/.agents/workflows/pm.md +81 -0
- package/skeleton/.agents/workflows/worker.md +100 -0
- package/skeleton/.docs/README.md +25 -0
- package/skeleton/.docs/archive/.gitkeep +0 -0
- package/skeleton/.docs/design/.gitkeep +0 -0
- package/skeleton/.docs/guides/.gitkeep +0 -0
- package/skeleton/.docs/notes/.gitkeep +0 -0
- package/skeleton/.docs/requirements/.gitkeep +0 -0
- package/skeleton/.trellis/config/config.yaml +48 -0
- package/skeleton/.trellis/spec/backend/.gitkeep +0 -0
- package/skeleton/.trellis/spec/frontend/.gitkeep +0 -0
- package/skeleton/.trellis/spec/guides/.gitkeep +0 -0
- package/skeleton/.trellis/spec/guides/external-cli-guide.md +253 -0
- package/skeleton/.trellis/spec/guides/task-workflow.md +34 -0
- package/skeleton/.trellis/spec/guides/testing.md +32 -0
- package/skeleton/.trellis/spec/spec-schema.json +64 -0
- package/skeleton/.trellis/tasks/.gitkeep +0 -0
- package/skeleton/.trellis/workspace/.gitkeep +0 -0
- package/skeleton/README.md +25 -0
- package/LICENSE +0 -21
- package/src/cli/index.js +0 -40
- package/src/commands/init.js +0 -37
- package/src/commands/update.js +0 -33
- package/templates/README.md +0 -22
- package/templates/agents/README.md +0 -4
- package/templates/trellis/README.md +0 -4
package/README.md
CHANGED
|
@@ -1,131 +1,133 @@
|
|
|
1
|
-
<
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
</div>
|
|
1
|
+
<p align="center">
|
|
2
|
+
<h1 align="center">🤖 easyAI</h1>
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>让用户以纯客户的视角进行软件开发</strong><br>
|
|
5
|
+
用户只需提需求、审批方案、验收结果。
|
|
6
|
+
</p>
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@geeseeker/easyai-dev"><img src="https://img.shields.io/npm/v/@geeseeker/easyai-dev?color=blue&label=npm" alt="npm version"></a>
|
|
9
|
+
<a href="https://github.com/GeeSeeker/easyAI-dev/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="license"></a>
|
|
10
|
+
<a href="https://antigravity.google/"><img src="https://img.shields.io/badge/IDE-Antigravity-purple" alt="Antigravity"></a>
|
|
11
|
+
</p>
|
|
12
|
+
</p>
|
|
14
13
|
|
|
15
14
|
---
|
|
16
15
|
|
|
17
|
-
## 这是什么?
|
|
16
|
+
## 💡 这是什么?
|
|
18
17
|
|
|
19
|
-
easyAI 是一个为 [Antigravity IDE](https://antigravity.
|
|
18
|
+
easyAI 是一个为 [Antigravity IDE](https://antigravity.google/) 打造的 **AI 协作开发框架**。
|
|
20
19
|
|
|
21
|
-
|
|
20
|
+
它在 IDE 中组建 **PM(项目经理)** + **Worker(执行者)** 双角色 AI 团队,覆盖从需求分析到代码交付的完整开发流程。你不需要写代码、不需要了解技术细节 — 只需和 PM 对话。
|
|
22
21
|
|
|
23
|
-
###
|
|
22
|
+
### 核心特性
|
|
24
23
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
24
|
+
| 特性 | 说明 |
|
|
25
|
+
|------|------|
|
|
26
|
+
| 🎯 **角色驱动** | PM 管需求和验收,Worker 管编码和测试 |
|
|
27
|
+
| 📋 **任务管理** | 完整的任务生命周期:创建 → 分配 → 执行 → 验收 → 归档 |
|
|
28
|
+
| 🧠 **记忆系统** | journal 日志 + Artifacts 沉淀,跨会话不丢失上下文 |
|
|
29
|
+
| 🛡️ **反幻觉** | 第三方 API 必须查文档,禁止凭记忆编码 |
|
|
30
|
+
| ✅ **TDD 铁律** | 所有新功能必须先写测试,Worker 无法跳过 |
|
|
31
|
+
| 🔧 **MCP 集成** | 19 个工具 + 5 个数据源,通过 MCP 协议与 IDE 深度集成 |
|
|
30
32
|
|
|
31
33
|
---
|
|
32
34
|
|
|
33
|
-
## 快速安装
|
|
35
|
+
## 🚀 快速安装
|
|
36
|
+
|
|
37
|
+
> **前置要求**:[Antigravity IDE](https://antigravity.google/) + [Node.js](https://nodejs.org/) >= 18
|
|
34
38
|
|
|
35
|
-
|
|
39
|
+
### 方式一:让 AI 帮你安装(推荐 👈)
|
|
36
40
|
|
|
37
|
-
|
|
41
|
+
复制以下文字,粘贴到 Antigravity 对话框中:
|
|
38
42
|
|
|
39
43
|
```
|
|
40
|
-
请帮我安装 easyAI
|
|
41
|
-
|
|
42
|
-
|
|
44
|
+
请帮我安装 easyAI 框架。
|
|
45
|
+
安装指南:https://raw.githubusercontent.com/GeeSeeker/easyAI-dev/main/README_AI.md
|
|
46
|
+
请读取这份指南,按步骤自动完成配置。
|
|
43
47
|
```
|
|
44
48
|
|
|
45
|
-
AI
|
|
49
|
+
AI 会自动完成 MCP 配置 + 项目初始化。**这就是 easyAI 的哲学** — 连安装都不需要你亲自动手。
|
|
46
50
|
|
|
47
|
-
|
|
48
|
-
2. ✅ 配置 MCP Server(Claude Code / Gemini / Codex)
|
|
49
|
-
3. ✅ 验证环境可用性
|
|
51
|
+
### 方式二:命令行安装
|
|
50
52
|
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
53
|
+
```bash
|
|
54
|
+
# 新项目
|
|
55
|
+
npx @geeseeker/easyai-dev init my-project
|
|
54
56
|
|
|
55
|
-
|
|
57
|
+
# 已有项目
|
|
58
|
+
cd your-project
|
|
59
|
+
npx @geeseeker/easyai-dev init .
|
|
60
|
+
```
|
|
56
61
|
|
|
57
|
-
|
|
62
|
+
然后在 Antigravity 的 MCP 设置中添加:
|
|
58
63
|
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
easyai-
|
|
64
|
+
```json
|
|
65
|
+
{
|
|
66
|
+
"easyai-mcp-server": {
|
|
67
|
+
"command": "npx",
|
|
68
|
+
"args": ["-y", "@geeseeker/easyai-dev", "serve"]
|
|
69
|
+
}
|
|
70
|
+
}
|
|
62
71
|
```
|
|
63
72
|
|
|
64
|
-
|
|
73
|
+
重启 IDE,完成。
|
|
65
74
|
|
|
66
|
-
|
|
67
|
-
- `.trellis/` — 规范库、会话记忆、任务看板(项目记忆)
|
|
75
|
+
---
|
|
68
76
|
|
|
69
|
-
|
|
77
|
+
## 🎮 使用
|
|
70
78
|
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
|
|
79
|
+
```
|
|
80
|
+
1. 打开 Antigravity IDE
|
|
81
|
+
2. 输入 /pm 启动项目经理
|
|
82
|
+
3. 和 PM 对话,描述你的需求
|
|
83
|
+
4. 等待交付 🎉
|
|
74
84
|
```
|
|
75
85
|
|
|
76
86
|
---
|
|
77
87
|
|
|
78
|
-
##
|
|
88
|
+
## 📁 项目结构
|
|
79
89
|
|
|
80
|
-
easyAI
|
|
90
|
+
安装 easyAI 后,你的项目会多出以下目录:
|
|
81
91
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
92
|
+
```
|
|
93
|
+
your-project/
|
|
94
|
+
├── .agents/ ← AI 角色层
|
|
95
|
+
│ ├── rules/ │ 3 条始终生效的规则
|
|
96
|
+
│ ├── workflows/ │ PM + Worker 工作流
|
|
97
|
+
│ └── skills/ │ 10+ 个能力模块
|
|
98
|
+
├── .trellis/ ← 数据持久层
|
|
99
|
+
│ ├── config/ │ 框架配置
|
|
100
|
+
│ ├── spec/ │ 项目规范
|
|
101
|
+
│ ├── tasks/ │ 任务管理
|
|
102
|
+
│ └── workspace/ │ 开发者记忆(journal)
|
|
103
|
+
├── .docs/ ← 用户文档空间
|
|
104
|
+
│ ├── requirements/ │ 需求文档
|
|
105
|
+
│ ├── design/ │ 设计方案
|
|
106
|
+
│ ├── guides/ │ 使用指南
|
|
107
|
+
│ ├── notes/ │ 临时笔记
|
|
108
|
+
│ └── archive/ │ 文档归档
|
|
109
|
+
└── ... ← 你的项目代码
|
|
110
|
+
```
|
|
89
111
|
|
|
90
112
|
---
|
|
91
113
|
|
|
92
|
-
##
|
|
114
|
+
## 🛠️ CLI 命令
|
|
93
115
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
| 代码审查 | 自动化验证 → PM 审查 → 交叉验证(按风险分级) |
|
|
101
|
-
| 系统化调试 | 根因调查 → 模式分析 → 假设验证 → 修复 |
|
|
102
|
-
| 收工流程 | Git 卫生 + 知识沉淀 + 会话记录 |
|
|
116
|
+
```bash
|
|
117
|
+
npx @geeseeker/easyai-dev init [dir] # 初始化项目
|
|
118
|
+
npx @geeseeker/easyai-dev check [dir] # 检查框架完整性
|
|
119
|
+
npx @geeseeker/easyai-dev update [dir] # 更新框架版本
|
|
120
|
+
npx @geeseeker/easyai-dev serve # 启动 MCP Server
|
|
121
|
+
```
|
|
103
122
|
|
|
104
123
|
---
|
|
105
124
|
|
|
106
|
-
##
|
|
125
|
+
## 📄 许可证
|
|
107
126
|
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
### 参考项目
|
|
111
|
-
|
|
112
|
-
| 项目 | 融合点 |
|
|
113
|
-
| ------------------------------------------------------------ | ------------------------------------- |
|
|
114
|
-
| [Trellis](https://github.com/mindfold-ai/Trellis) | 会话持久化、Spec 规范库、任务看板 |
|
|
115
|
-
| [superpowers](https://github.com/obra/superpowers) | TDD 铁律、系统化调试、强制 Skill 触发 |
|
|
116
|
-
| [ccg-workflow](https://github.com/fengshao1227/ccg-workflow) | 多模型编排、安全沙箱 |
|
|
117
|
-
| [GuDa-spec](https://github.com/GuDaStudio/commands) | 零歧义目标检查、约束集 |
|
|
118
|
-
|
|
119
|
-
### MCP Server
|
|
120
|
-
|
|
121
|
-
| 项目 | 用途 |
|
|
122
|
-
| -------------------------------------------------------------- | -------------------- |
|
|
123
|
-
| [claude-code-mcp](https://github.com/steipete/claude-code-mcp) | Claude Code CLI 调用 |
|
|
124
|
-
| [codexmcp](https://github.com/GuDaStudio/codexmcp) | Codex CLI 调用 |
|
|
125
|
-
| [geminimcp](https://github.com/GuDaStudio/geminimcp) | Gemini CLI 调用 |
|
|
127
|
+
[MIT](LICENSE)
|
|
126
128
|
|
|
127
129
|
---
|
|
128
130
|
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
131
|
+
<p align="center">
|
|
132
|
+
<sub>Built with ❤️ by <a href="https://github.com/GeeSeeker">GeeSeeker</a></sub>
|
|
133
|
+
</p>
|
package/README_AI.md
ADDED
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# AI 安装指南
|
|
2
|
+
|
|
3
|
+
> **本文档供 AI 阅读。** 人类用户无需手动操作,AI 会按以下步骤自动执行。
|
|
4
|
+
|
|
5
|
+
## 前置条件
|
|
6
|
+
|
|
7
|
+
- Antigravity IDE 已安装(https://antigravity.google/)
|
|
8
|
+
- Node.js >= 18 已安装
|
|
9
|
+
- Git 已安装
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## S0:状态探测(断点续接)
|
|
14
|
+
|
|
15
|
+
收到安装请求后,按顺序检测当前状态,跳过已完成的步骤:
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
1. 检查 easyai-mcp-server 是否已在 IDE 中配置
|
|
19
|
+
→ 已配置且可调用 → 跳过 S1
|
|
20
|
+
2. 检查目标项目是否已初始化(.agents/ 和 .trellis/ 存在)
|
|
21
|
+
→ 已初始化 → 跳过 S2
|
|
22
|
+
3. 全部就绪 → 进入 S3
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## S1:全局安装 — 配置 MCP Server(仅需一次)
|
|
28
|
+
|
|
29
|
+
easyAI 的 MCP Server 已打包在 npm 包中,无需本地编译。
|
|
30
|
+
|
|
31
|
+
### 步骤
|
|
32
|
+
|
|
33
|
+
1. **生成 MCP 配置 JSON**:
|
|
34
|
+
|
|
35
|
+
```json
|
|
36
|
+
{
|
|
37
|
+
"easyai-mcp-server": {
|
|
38
|
+
"command": "npx",
|
|
39
|
+
"args": ["-y", "@geeseeker/easyai-dev", "serve"]
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
2. **引导用户操作**:
|
|
45
|
+
|
|
46
|
+
告知用户:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
请将以下 MCP 配置添加到 Antigravity IDE 的 MCP 设置中:
|
|
50
|
+
|
|
51
|
+
{
|
|
52
|
+
"easyai-mcp-server": {
|
|
53
|
+
"command": "npx",
|
|
54
|
+
"args": ["-y", "@geeseeker/easyai-dev", "serve"]
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
添加完成后,请重启 Antigravity IDE,然后告诉我已重启。
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
3. **等待用户确认重启** — 这是一个**必须的断点**,MCP 配置修改后需要重启 IDE 才能生效。
|
|
62
|
+
|
|
63
|
+
4. **验证 MCP 连接**:用户确认重启后,尝试调用任意 easyai MCP 工具(如 `project_status`)验证连接。
|
|
64
|
+
- 如果调用失败,协助用户排查 MCP 配置。
|
|
65
|
+
- 如果没有 easyai MCP 工具可用,说明配置尚未生效,需要再次检查配置和重启。
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## S2:项目安装 — 初始化框架
|
|
70
|
+
|
|
71
|
+
在目标项目目录中执行:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npx @geeseeker/easyai-dev init .
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
此命令会:
|
|
78
|
+
- 复制 `.agents/`(规则 + 工作流 + Skills)
|
|
79
|
+
- 复制 `.trellis/`(配置 + 规范骨架)
|
|
80
|
+
- 创建 `.docs/`(空文档子文件夹)
|
|
81
|
+
- 创建 `.gitignore`(或合并到已有的)
|
|
82
|
+
- 生成 `.easyai-version` 版本清单
|
|
83
|
+
|
|
84
|
+
如果用户要在已有项目中安装,命令相同。脚本会自动检测并进入集成模式(不覆盖已有的 README.md 和 .gitignore)。
|
|
85
|
+
|
|
86
|
+
---
|
|
87
|
+
|
|
88
|
+
## S3:验证
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
npx @geeseeker/easyai-dev check .
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
确认所有必需目录和文件都已就位。
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## S4:安装完成
|
|
99
|
+
|
|
100
|
+
告知用户:
|
|
101
|
+
|
|
102
|
+
```
|
|
103
|
+
✅ easyAI 3.0 安装完成!
|
|
104
|
+
|
|
105
|
+
已配置:
|
|
106
|
+
- 1 个 MCP Server — easyai-mcp-server
|
|
107
|
+
- 框架骨架 — .agents/ + .trellis/ + .docs/
|
|
108
|
+
|
|
109
|
+
使用方式:
|
|
110
|
+
1. 在 Antigravity IDE 中打开此项目
|
|
111
|
+
2. 输入 /pm 启动项目经理
|
|
112
|
+
3. 和 PM 对话,描述你的需求即可!
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
## 故障排查
|
|
118
|
+
|
|
119
|
+
### MCP Server 无法启动
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
# 检查 Node.js 版本
|
|
123
|
+
node --version # 需要 >= 18
|
|
124
|
+
|
|
125
|
+
# 手动测试 MCP Server
|
|
126
|
+
npx @geeseeker/easyai-dev serve
|
|
127
|
+
# 正常情况下会输出 "easyAI MCP Server v0.1.0 started" 到 stderr
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 框架完整性检查失败
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
# 重新初始化(需先删除现有框架目录)
|
|
134
|
+
rm -rf .agents/ .trellis/ .docs/ .easyai-version
|
|
135
|
+
npx @geeseeker/easyai-dev init .
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 更新框架
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
npx @geeseeker/easyai-dev update .
|
|
142
|
+
# 只更新 .agents/ 和 .trellis/spec/,不影响用户数据
|
|
143
|
+
```
|
package/bin/easyai-dev.js
CHANGED
|
@@ -1,3 +1,129 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* easyai-dev CLI — easyAI 框架命令行工具
|
|
5
|
+
*
|
|
6
|
+
* 命令:
|
|
7
|
+
* init [dir] 初始化新项目或集成到已有项目
|
|
8
|
+
* check [dir] 检查框架完整性
|
|
9
|
+
* update [dir] 更新框架(只更新 .agents/ 和 .trellis/spec/)
|
|
10
|
+
* serve 启动 MCP Server(供 Antigravity IDE 使用)
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { fileURLToPath } from "node:url";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
|
|
16
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
17
|
+
const __dirname = path.dirname(__filename);
|
|
18
|
+
|
|
19
|
+
// 解析命令行参数
|
|
20
|
+
const args = process.argv.slice(2);
|
|
21
|
+
const command = args[0];
|
|
22
|
+
const targetDir = args[1] || ".";
|
|
23
|
+
|
|
24
|
+
// 颜色常量
|
|
25
|
+
const RED = "\x1b[31m";
|
|
26
|
+
const GREEN = "\x1b[32m";
|
|
27
|
+
const YELLOW = "\x1b[33m";
|
|
28
|
+
const BLUE = "\x1b[34m";
|
|
29
|
+
const BOLD = "\x1b[1m";
|
|
30
|
+
const NC = "\x1b[0m";
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* 打印帮助信息
|
|
34
|
+
*/
|
|
35
|
+
function printHelp() {
|
|
36
|
+
console.log(`
|
|
37
|
+
${BOLD}easyAI — 让用户以纯客户的视角进行软件开发${NC}
|
|
38
|
+
|
|
39
|
+
${BOLD}用法:${NC}
|
|
40
|
+
easyai-dev <command> [options]
|
|
41
|
+
|
|
42
|
+
${BOLD}命令:${NC}
|
|
43
|
+
${GREEN}init${NC} [dir] 初始化新项目或集成到已有项目(默认: 当前目录)
|
|
44
|
+
${GREEN}check${NC} [dir] 检查框架完整性
|
|
45
|
+
${GREEN}update${NC} [dir] 更新框架(只更新 .agents/ 和 .trellis/spec/)
|
|
46
|
+
${GREEN}serve${NC} 启动 MCP Server(供 Antigravity IDE 使用)
|
|
47
|
+
|
|
48
|
+
${BOLD}示例:${NC}
|
|
49
|
+
npx @geeseeker/easyai-dev init my-project
|
|
50
|
+
npx @geeseeker/easyai-dev init .
|
|
51
|
+
npx @geeseeker/easyai-dev check
|
|
52
|
+
npx @geeseeker/easyai-dev serve
|
|
53
|
+
|
|
54
|
+
${BOLD}MCP 配置:${NC}
|
|
55
|
+
在 Antigravity IDE 中配置 MCP Server:
|
|
56
|
+
{
|
|
57
|
+
"easyai-mcp-server": {
|
|
58
|
+
"command": "npx",
|
|
59
|
+
"args": ["-y", "@geeseeker/easyai-dev", "serve"]
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
`);
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* 主函数
|
|
67
|
+
*/
|
|
68
|
+
async function main() {
|
|
69
|
+
switch (command) {
|
|
70
|
+
case "init": {
|
|
71
|
+
const { doInit } = await import("../lib/init.js");
|
|
72
|
+
const resolvedDir = path.resolve(targetDir);
|
|
73
|
+
await doInit(resolvedDir);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
case "check": {
|
|
78
|
+
const { doCheck } = await import("../lib/init.js");
|
|
79
|
+
const resolvedDir = path.resolve(targetDir);
|
|
80
|
+
await doCheck(resolvedDir);
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
case "update": {
|
|
85
|
+
const { doUpdate } = await import("../lib/init.js");
|
|
86
|
+
const resolvedDir = path.resolve(targetDir);
|
|
87
|
+
await doUpdate(resolvedDir);
|
|
88
|
+
break;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
case "serve": {
|
|
92
|
+
// 支持 --project-root 参数和环境变量
|
|
93
|
+
const projectRootArg = args.find((a) => a.startsWith("--project-root="));
|
|
94
|
+
if (projectRootArg) {
|
|
95
|
+
const root = projectRootArg.split("=")[1];
|
|
96
|
+
process.env.EASYAI_PROJECT_ROOT = path.resolve(root);
|
|
97
|
+
}
|
|
98
|
+
// 动态导入 MCP Server
|
|
99
|
+
await import("../lib/server/index.js");
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
case "--help":
|
|
104
|
+
case "-h":
|
|
105
|
+
case undefined:
|
|
106
|
+
printHelp();
|
|
107
|
+
break;
|
|
108
|
+
|
|
109
|
+
case "--version":
|
|
110
|
+
case "-v": {
|
|
111
|
+
const pkgPath = path.join(__dirname, "..", "package.json");
|
|
112
|
+
const { default: pkg } = await import(pkgPath, {
|
|
113
|
+
with: { type: "json" },
|
|
114
|
+
});
|
|
115
|
+
console.log(pkg.version);
|
|
116
|
+
break;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
default:
|
|
120
|
+
console.error(`${RED}未知命令: ${command}${NC}`);
|
|
121
|
+
console.error(`使用 ${BOLD}easyai-dev --help${NC} 查看可用命令`);
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
main().catch((error) => {
|
|
127
|
+
console.error(`${RED}错误: ${error.message}${NC}`);
|
|
128
|
+
process.exit(1);
|
|
129
|
+
});
|