@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.
Files changed (165) hide show
  1. package/README.md +90 -88
  2. package/README_AI.md +143 -0
  3. package/bin/easyai-dev.js +127 -1
  4. package/lib/init.js +425 -0
  5. package/lib/server/index.d.ts +14 -0
  6. package/lib/server/index.d.ts.map +1 -0
  7. package/lib/server/index.js +122 -0
  8. package/lib/server/index.js.map +1 -0
  9. package/lib/server/resources/journal-resource.d.ts +8 -0
  10. package/lib/server/resources/journal-resource.d.ts.map +1 -0
  11. package/lib/server/resources/journal-resource.js +46 -0
  12. package/lib/server/resources/journal-resource.js.map +1 -0
  13. package/lib/server/resources/spec-resource.d.ts +11 -0
  14. package/lib/server/resources/spec-resource.d.ts.map +1 -0
  15. package/lib/server/resources/spec-resource.js +126 -0
  16. package/lib/server/resources/spec-resource.js.map +1 -0
  17. package/lib/server/resources/status-resource.d.ts +8 -0
  18. package/lib/server/resources/status-resource.d.ts.map +1 -0
  19. package/lib/server/resources/status-resource.js +36 -0
  20. package/lib/server/resources/status-resource.js.map +1 -0
  21. package/lib/server/resources/subtask-context-resource.d.ts +8 -0
  22. package/lib/server/resources/subtask-context-resource.d.ts.map +1 -0
  23. package/lib/server/resources/subtask-context-resource.js +93 -0
  24. package/lib/server/resources/subtask-context-resource.js.map +1 -0
  25. package/lib/server/resources/task-context-resource.d.ts +8 -0
  26. package/lib/server/resources/task-context-resource.d.ts.map +1 -0
  27. package/lib/server/resources/task-context-resource.js +76 -0
  28. package/lib/server/resources/task-context-resource.js.map +1 -0
  29. package/lib/server/tools/conflict-check.d.ts +7 -0
  30. package/lib/server/tools/conflict-check.d.ts.map +1 -0
  31. package/lib/server/tools/conflict-check.js +242 -0
  32. package/lib/server/tools/conflict-check.js.map +1 -0
  33. package/lib/server/tools/context-budget.d.ts +7 -0
  34. package/lib/server/tools/context-budget.d.ts.map +1 -0
  35. package/lib/server/tools/context-budget.js +178 -0
  36. package/lib/server/tools/context-budget.js.map +1 -0
  37. package/lib/server/tools/context-generate.d.ts +7 -0
  38. package/lib/server/tools/context-generate.d.ts.map +1 -0
  39. package/lib/server/tools/context-generate.js +208 -0
  40. package/lib/server/tools/context-generate.js.map +1 -0
  41. package/lib/server/tools/journal-append.d.ts +7 -0
  42. package/lib/server/tools/journal-append.d.ts.map +1 -0
  43. package/lib/server/tools/journal-append.js +55 -0
  44. package/lib/server/tools/journal-append.js.map +1 -0
  45. package/lib/server/tools/journal-search.d.ts +7 -0
  46. package/lib/server/tools/journal-search.d.ts.map +1 -0
  47. package/lib/server/tools/journal-search.js +63 -0
  48. package/lib/server/tools/journal-search.js.map +1 -0
  49. package/lib/server/tools/plan-validate.d.ts +7 -0
  50. package/lib/server/tools/plan-validate.d.ts.map +1 -0
  51. package/lib/server/tools/plan-validate.js +146 -0
  52. package/lib/server/tools/plan-validate.js.map +1 -0
  53. package/lib/server/tools/spec-validate.d.ts +7 -0
  54. package/lib/server/tools/spec-validate.d.ts.map +1 -0
  55. package/lib/server/tools/spec-validate.js +170 -0
  56. package/lib/server/tools/spec-validate.js.map +1 -0
  57. package/lib/server/tools/subtask-tools.d.ts +12 -0
  58. package/lib/server/tools/subtask-tools.d.ts.map +1 -0
  59. package/lib/server/tools/subtask-tools.js +383 -0
  60. package/lib/server/tools/subtask-tools.js.map +1 -0
  61. package/lib/server/tools/task-append-log.d.ts +7 -0
  62. package/lib/server/tools/task-append-log.d.ts.map +1 -0
  63. package/lib/server/tools/task-append-log.js +108 -0
  64. package/lib/server/tools/task-append-log.js.map +1 -0
  65. package/lib/server/tools/task-cancel.d.ts +7 -0
  66. package/lib/server/tools/task-cancel.d.ts.map +1 -0
  67. package/lib/server/tools/task-cancel.js +104 -0
  68. package/lib/server/tools/task-cancel.js.map +1 -0
  69. package/lib/server/tools/task-create.d.ts +7 -0
  70. package/lib/server/tools/task-create.d.ts.map +1 -0
  71. package/lib/server/tools/task-create.js +98 -0
  72. package/lib/server/tools/task-create.js.map +1 -0
  73. package/lib/server/tools/task-get.d.ts +7 -0
  74. package/lib/server/tools/task-get.d.ts.map +1 -0
  75. package/lib/server/tools/task-get.js +152 -0
  76. package/lib/server/tools/task-get.js.map +1 -0
  77. package/lib/server/tools/task-list.d.ts +7 -0
  78. package/lib/server/tools/task-list.d.ts.map +1 -0
  79. package/lib/server/tools/task-list.js +66 -0
  80. package/lib/server/tools/task-list.js.map +1 -0
  81. package/lib/server/tools/task-transition.d.ts +7 -0
  82. package/lib/server/tools/task-transition.d.ts.map +1 -0
  83. package/lib/server/tools/task-transition.js +259 -0
  84. package/lib/server/tools/task-transition.js.map +1 -0
  85. package/lib/server/tools/worktree-tools.d.ts +17 -0
  86. package/lib/server/tools/worktree-tools.d.ts.map +1 -0
  87. package/lib/server/tools/worktree-tools.js +336 -0
  88. package/lib/server/tools/worktree-tools.js.map +1 -0
  89. package/lib/server/utils/capability-gate.d.ts +50 -0
  90. package/lib/server/utils/capability-gate.d.ts.map +1 -0
  91. package/lib/server/utils/capability-gate.js +146 -0
  92. package/lib/server/utils/capability-gate.js.map +1 -0
  93. package/lib/server/utils/git-utils.d.ts +33 -0
  94. package/lib/server/utils/git-utils.d.ts.map +1 -0
  95. package/lib/server/utils/git-utils.js +84 -0
  96. package/lib/server/utils/git-utils.js.map +1 -0
  97. package/lib/server/utils/hash-utils.d.ts +78 -0
  98. package/lib/server/utils/hash-utils.d.ts.map +1 -0
  99. package/lib/server/utils/hash-utils.js +153 -0
  100. package/lib/server/utils/hash-utils.js.map +1 -0
  101. package/lib/server/utils/journal-utils.d.ts +69 -0
  102. package/lib/server/utils/journal-utils.d.ts.map +1 -0
  103. package/lib/server/utils/journal-utils.js +387 -0
  104. package/lib/server/utils/journal-utils.js.map +1 -0
  105. package/lib/server/utils/status-utils.d.ts +58 -0
  106. package/lib/server/utils/status-utils.d.ts.map +1 -0
  107. package/lib/server/utils/status-utils.js +70 -0
  108. package/lib/server/utils/status-utils.js.map +1 -0
  109. package/lib/server/utils/task-utils.d.ts +104 -0
  110. package/lib/server/utils/task-utils.d.ts.map +1 -0
  111. package/lib/server/utils/task-utils.js +396 -0
  112. package/lib/server/utils/task-utils.js.map +1 -0
  113. package/lib/server/utils/uri-utils.d.ts +9 -0
  114. package/lib/server/utils/uri-utils.d.ts.map +1 -0
  115. package/lib/server/utils/uri-utils.js +21 -0
  116. package/lib/server/utils/uri-utils.js.map +1 -0
  117. package/package.json +30 -21
  118. package/skeleton/.agents/rules/anti-hallucination.md +42 -0
  119. package/skeleton/.agents/rules/coding-standards.md +41 -0
  120. package/skeleton/.agents/rules/project-identity.md +71 -0
  121. package/skeleton/.agents/skills/common-framework-evolve/.gitkeep +0 -0
  122. package/skeleton/.agents/skills/common-framework-evolve/SKILL.md +105 -0
  123. package/skeleton/.agents/skills/common-session-close/.gitkeep +0 -0
  124. package/skeleton/.agents/skills/common-session-close/SKILL.md +83 -0
  125. package/skeleton/.agents/skills/common-spec-update/.gitkeep +0 -0
  126. package/skeleton/.agents/skills/common-spec-update/SKILL.md +87 -0
  127. package/skeleton/.agents/skills/pm-brainstorm/.gitkeep +0 -0
  128. package/skeleton/.agents/skills/pm-brainstorm/SKILL.md +114 -0
  129. package/skeleton/.agents/skills/pm-session-start/.gitkeep +0 -0
  130. package/skeleton/.agents/skills/pm-session-start/SKILL.md +73 -0
  131. package/skeleton/.agents/skills/pm-task-planning/SKILL.md +200 -0
  132. package/skeleton/.agents/skills/pm-task-review/.gitkeep +0 -0
  133. package/skeleton/.agents/skills/pm-task-review/SKILL.md +144 -0
  134. package/skeleton/.agents/skills/worker-check/.gitkeep +0 -0
  135. package/skeleton/.agents/skills/worker-check/SKILL.md +194 -0
  136. package/skeleton/.agents/skills/worker-debug/.gitkeep +0 -0
  137. package/skeleton/.agents/skills/worker-debug/SKILL.md +241 -0
  138. package/skeleton/.agents/skills/worker-implement/.gitkeep +0 -0
  139. package/skeleton/.agents/skills/worker-implement/SKILL.md +192 -0
  140. package/skeleton/.agents/workflows/pm.md +81 -0
  141. package/skeleton/.agents/workflows/worker.md +100 -0
  142. package/skeleton/.docs/README.md +25 -0
  143. package/skeleton/.docs/archive/.gitkeep +0 -0
  144. package/skeleton/.docs/design/.gitkeep +0 -0
  145. package/skeleton/.docs/guides/.gitkeep +0 -0
  146. package/skeleton/.docs/notes/.gitkeep +0 -0
  147. package/skeleton/.docs/requirements/.gitkeep +0 -0
  148. package/skeleton/.trellis/config/config.yaml +48 -0
  149. package/skeleton/.trellis/spec/backend/.gitkeep +0 -0
  150. package/skeleton/.trellis/spec/frontend/.gitkeep +0 -0
  151. package/skeleton/.trellis/spec/guides/.gitkeep +0 -0
  152. package/skeleton/.trellis/spec/guides/external-cli-guide.md +253 -0
  153. package/skeleton/.trellis/spec/guides/task-workflow.md +34 -0
  154. package/skeleton/.trellis/spec/guides/testing.md +32 -0
  155. package/skeleton/.trellis/spec/spec-schema.json +64 -0
  156. package/skeleton/.trellis/tasks/.gitkeep +0 -0
  157. package/skeleton/.trellis/workspace/.gitkeep +0 -0
  158. package/skeleton/README.md +25 -0
  159. package/LICENSE +0 -21
  160. package/src/cli/index.js +0 -40
  161. package/src/commands/init.js +0 -37
  162. package/src/commands/update.js +0 -33
  163. package/templates/README.md +0 -22
  164. package/templates/agents/README.md +0 -4
  165. package/templates/trellis/README.md +0 -4
package/README.md CHANGED
@@ -1,131 +1,133 @@
1
- <div align="center">
2
-
3
- # easyAI-dev
4
-
5
- **AI Agent 协作框架 — 让 AI 团队帮你完成整个开发流程**
6
-
7
- [![npm version](https://img.shields.io/npm/v/@geeseeker/easyai-dev.svg?style=flat-square&color=blue)](https://www.npmjs.com/package/@geeseeker/easyai-dev)
8
- [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg?style=flat-square)](https://opensource.org/licenses/MIT)
9
- [![Antigravity](https://img.shields.io/badge/IDE-Antigravity-purple.svg?style=flat-square)](https://antigravity.dev)
10
-
11
- ⭐ 觉得有用?Star 一下支持我们!
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.dev) 打造的 **AI Agent 协作框架**。它在你的 IDE 里组建了一支 AI 团队,覆盖从需求分析到代码交付的完整开发流程。
18
+ easyAI 是一个为 [Antigravity IDE](https://antigravity.google/) 打造的 **AI 协作开发框架**。
20
19
 
21
- **即使你完全不懂代码,也能通过 AI 协作完成高质量的软件开发。**
20
+ 它在 IDE 中组建 **PM(项目经理)** + **Worker(执行者)** 双角色 AI 团队,覆盖从需求分析到代码交付的完整开发流程。你不需要写代码、不需要了解技术细节 — 只需和 PM 对话。
22
21
 
23
- ### 核心亮点
22
+ ### 核心特性
24
23
 
25
- - 🛡️ **9 条硬阻断 + 12 条 Red Flags** — 流程纪律,防止 AI 跳步
26
- - 🔒 **风险分级代码审查** — 低风险自动通过,高风险交叉验证
27
- - 🧪 **TDD 红绿重构铁律** 先写失败测试再写代码
28
- - 🧠 **知识沉淀闭环** 每次任务的经验自动归档,越用越聪明
29
- - 🤖 **多 AI 协作** 通过 MCP 调度 Claude Code / Codex / Gemini CLI
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
- > **前置要求**:[Antigravity IDE](https://antigravity.dev) + [Node.js](https://nodejs.org/) (v18+)
39
+ ### 方式一:让 AI 帮你安装(推荐 👈)
36
40
 
37
- 复制下面这段话,粘贴到 Antigravity 的对话框中:
41
+ 复制以下文字,粘贴到 Antigravity 对话框中:
38
42
 
39
43
  ```
40
- 请帮我安装 easyAI-dev 框架。
41
- 仓库地址:https://github.com/GeeSeeker/easyAI-3.0
42
- 请克隆仓库后阅读 README_AI.md,按步骤自动完成配置。
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
- 1. ✅ 安装 `@geeseeker/easyai-dev` CLI 工具
48
- 2. ✅ 配置 MCP Server(Claude Code / Gemini / Codex)
49
- 3. ✅ 验证环境可用性
51
+ ### 方式二:命令行安装
50
52
 
51
- 安装完成后,AI 会告诉你如何初始化项目。
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
- ```bash
60
- cd my-project
61
- easyai-dev init
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
- - `.agents/` — 规则、工作流、技能链(AI 的大脑)
67
- - `.trellis/` — 规范库、会话记忆、任务看板(项目记忆)
75
+ ---
68
76
 
69
- ### 框架升级
77
+ ## 🎮 使用
70
78
 
71
- ```bash
72
- npm update -g @geeseeker/easyai-dev # 升级 CLI 工具
73
- easyai-dev update # 更新项目中的框架文件
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 采用**角色与 AI 解耦**的设计:角色定义职责,AI 是执行角色的载体。
90
+ 安装 easyAI 后,你的项目会多出以下目录:
81
91
 
82
- | 角色 | 定位 | 职责 |
83
- | --------------- | ------------ | ---------------------------------------- |
84
- | 🎯 **项目经理** | 资源调度中枢 | 与用户沟通、拆分任务、验收审查、知识沉淀 |
85
- | 🔧 **技术主管** | 外包工头 | 调度外部 CLI、处理 Diff、技术执行 |
86
- | 💻 **开发者** | 核心骨干 | TDD 编码、精细重构、兜底开发 |
87
- | 🔍 **审核员** | 架构评审 | 核心 Milestone 把关、一票否决 |
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
- | 开工检查 | 上下文恢复 + 硬阻断检查 + Red Flags 自检 |
97
- | 需求脑暴 | 苏格拉底式提问,将想法转化为设计 |
98
- | 微任务撰写 | BDD 验收标准 + 测试契约卡片 |
99
- | TDD 开发 | RED → GREEN → REFACTOR |
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
- easyAI 的诞生离不开以下优秀项目的启发 🙏
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
- [MIT License](LICENSE) © 2025 GeeSeeker
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
- import("../src/cli/index.js");
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
+ });