jarvis-agent-factory 3.7.2 → 3.7.3

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 CHANGED
@@ -1,273 +1,186 @@
1
1
  # Jarvis Agent Factory · 贾维斯智能体工厂
2
2
 
3
3
  [![License: MIT](https://img.shields.io/badge/license-MIT-blue)](./LICENSE)
4
- [![Version](https://img.shields.io/badge/version-v3.7.0-green)](https://gitee.com/wujl1124/JarvisAgentFactory/releases)
4
+ [![Version](https://img.shields.io/badge/version-v3.7.2-green)](https://gitee.com/wujl1124/JarvisAgentFactory/releases)
5
+ [![npm](https://img.shields.io/npm/v/jarvis-agent-factory)](https://www.npmjs.com/package/jarvis-agent-factory)
5
6
  <br>**简体中文** | [English](./README_EN.md)
6
7
 
7
- 一套跨平台的多智能体(Multi-Agent)AI 编程助手配置集,定义了一条**从想法到交付的完整软件开发流水线**。支持 Claude CodeOpenCodeCodex 三平台,共享同一套工作流规范与技能体系。
8
+ 跨平台多智能体 AI 编程助手配置集 + MCP 编排引擎。从想法到交付的完整软件开发流水线,支持 **Claude Code / OpenCode / Codex** 三平台。
8
9
 
9
- > **v3.7.0** — MCP 编排引擎 + 硬约束状态机 + 三平台钩子驱动 + npm CLI 一键部署
10
+ > **v3.7.2** — 提示词工程(软约束)→ 引擎驱动(硬约束),FSM 直接拒绝非法操作
10
11
 
11
- ## 核心概念
12
+ ## 快速开始
12
13
 
13
- **Jarvis(贾维斯)**——唯一的编排中枢,直接与用户对话,通过 Agent/Task 工具调度所有子智能体。子智能体职责单一、不可递归调度,所有阶段必须通过对应闸门(Gate)检查。
14
-
15
- ### 工作流
16
-
17
- ```
18
- 想法细化需求澄清 → 需求文档 → 任务分解 → 执行规划 → 并行实现 → 代码质量 → 视觉验证 → 测试 → 评审 → 发布
19
- │ │ │ │ │ │ │ │ │ │ │
20
- └─ 阶段 0 Gate A Gate B Gate C │ Gate C1 Gate C1.5 Gate C2 Gate D Gate E
21
-
22
- ┌──────────┘
23
- │ 同 Batch 内任务并行
24
- │ Batch 之间串行等待
25
- └── 无共享依赖 → 可跨 Batch 提前启动
14
+ ```bash
15
+ npm i -g jarvis-agent-factory # 安装 CLI
16
+ jarvis init my-app -y # 一键部署三平台配置 + MCP + 钩子
17
+ cd my-app
18
+ jarvis engine start --dashboard # 启动编排引擎 + Web 面板
19
+ #http://localhost:3456/dashboard
26
20
  ```
27
21
 
28
- ### 故障恢复
29
-
30
- | 维度 | 策略 |
31
- |------|------|
32
- | **Agent 重试** | 4 种失败类型差异化重试,最多 3 次 |
33
- | **Batch 部分失败** | 成功产物保留,仅重试失败任务 |
34
- | **回滚/中止** | 可修复→重试→回退→中止,同 Gate 最多回退 2 次 |
35
- | **会话检查点** | 每个 Gate 通过后输出检查点,支持中断恢复 |
36
- | **冲突解决** | Plan patch 排队,数据层 > API 层 > UI 层,10 分钟超时 |
37
-
38
- ## 闭环体系
39
-
40
- | # | 闭环 | 触发 | 流程 |
41
- |---|------|------|------|
42
- | 1 | **开发闭环** | 编排者 Gate C→C1→C2 | 实现 → 质量检查 → 测试 → 失败回退 |
43
- | 2 | **测试闭环** | `browser-test` | 写用例 → agent-browser 执行 → 截图 → 失败→修复→重测 |
44
- | 3 | **Bug 闭环** | `bug-fix` | Bug → agent-browser 复现 → 定位根因 → 修复 → 验证 |
45
- | 4 | **审查闭环** | `review-fix-optimize` | 初审 → 规划 → 执行 → 验证 → 复审关闭 |
46
- | 5 | **安全闭环** | Gate E | security-auditor → 威胁建模 + CVE + SAST → 修复 → 重扫 |
47
- | 6 | **契约闭环** | Gate C2(API 变更强制) | api-docs-worker 模式A → 对比 auto-generated spec vs 代码实现 → 标记漂移 |
48
-
49
- 失败自动路由到修复闭环,最多 2 轮;第 3 轮仍失败标记 BLOCKED 并保留产物。
22
+ 然后在你用的平台里开始开发。引擎会在后台自动检查 Gate 条件,Dashboard 实时显示进度。
50
23
 
51
- ## 编排引擎(v3)
24
+ ---
52
25
 
53
- ```
54
- 提示词工程(软约束)→ 引擎驱动(硬约束)
55
- "请勿跳过 Gate" → FSM 直接拒绝非法操作
56
- ```
26
+ ## 怎么用:完整流程
57
27
 
58
- | 组件 | 说明 |
59
- |------|------|
60
- | **MCP Server** | 4 个编排工具:pipeline_init / status / gate_enforce / advance_gate |
61
- | **硬约束 FSM** | 跳过 Gate 被拒 / 乱序推进被拒 / 条件未满足被拒 |
62
- | **SQLite 持久化** | pipeline + sessions + checkpoints + agent_models 四表 |
63
- | **Session 管理** | Leader 选举 + 心跳超时 + Observer 只读 |
64
- | **三平台钩子** | PostToolUse{Agent} → `jarvis hook gate-check`,每次 spawn 后自动验证 |
65
- | **Web Dashboard** | Gate 进度条 + Agent 像素模型配置卡片 + SSE 实时推送 |
66
- | **REST API** | `/api/pipeline` `/api/gate/enforce` `/api/gate/advance` `/api/agents` |
28
+ ### 第一步:部署
67
29
 
68
30
  ```bash
69
- jarvis engine start --dashboard # 启动引擎 + Web 面板 → localhost:3456
70
- jarvis engine stop # 停止
31
+ jarvis init ./my-project # 安装全部三平台配置 + MCP + 钩子
71
32
  ```
72
33
 
73
- ## 架构
34
+ 这一步会在项目里生成:
74
35
 
75
36
  ```
76
- src/
77
- ├── engine/ 🧠 MCP Server + SQLite + FSM 状态机
78
- ├── web/ 🌐 REST API + Dashboard + SSE
79
- ├── cli.js ⌨️ init/add/remove/upgrade/doctor/engine/hook
80
- ├── install.js 📥 平台安装 + MCP 生成 + 钩子注入
81
- ├── templates/ 📋 三平台配置模板 + MCP 模板 + 钩子模板
82
- │ └── platforms/{claude,opencode,codex}/ 单一事实源
83
- └── hook.js 🪝 gate-check / gate-advance / status
37
+ my-project/
38
+ ├── .claude/ Claude Code: 47 agents + 15 命令 + 27 skills
39
+ │ └── settings.json 含引擎钩子(PostToolUse{Agent} gate-check)
40
+ ├── .opencode/ ← OpenCode: 55 agents + 27 skills
41
+ ├── .codex/ ← Codex: 45 agents + 42 skills
42
+ │ └── hooks.json ← Codex 钩子
43
+ ├── .mcp.json Playwright + Jarvis Engine MCP 配置
44
+ └── opencode.json OpenCode MCP 配置
84
45
  ```
85
46
 
86
- ## 使用方法
87
-
88
- ### npm CLI(推荐)
47
+ ### 第二步:启动引擎
89
48
 
90
49
  ```bash
91
- npm i -g jarvis-agent-factory
50
+ jarvis engine start --dashboard # 后台运行 + Web 面板
51
+ jarvis engine start # 纯后台(无面板)
92
52
  ```
93
53
 
94
- | 命令 | 说明 |
95
- |------|------|
96
- | `jarvis` | 引导当前目录(≡ `jarvis init .`) |
97
- | `jarvis init [path]` | 初始化项目,安装全部三平台 + Playwright MCP 配置 |
98
- | `jarvis add <p...> [path]` | 添加指定平台(`claude` `opencode` `codex` 可多选) |
99
- | `jarvis remove <p...> [path]` | 移除指定平台 + 对应 MCP 配置 |
100
- | `jarvis upgrade [path]` | 升级已安装的配置到最新版本 |
101
- | `jarvis doctor [path]` | 健康检查 |
102
- | `-g, --global` | 安装到用户全局目录 `~/.claude/` 等 |
103
- | `-y, --yes` | 跳过覆盖确认 |
104
- | `-v, --version` | 查看版本 |
105
- | `-h, --help` | 帮助 |
54
+ 引擎监听 `localhost:3456`,SQLite 持久化状态到 `.jarvis/engine.db`。
106
55
 
107
- ```bash
108
- # 常用
109
- jarvis # 引导当前目录
110
- jarvis init my-app -y # 一键初始化
111
- jarvis add claude # 追加 Claude Code
112
- jarvis remove codex # 移除 Codex
113
- jarvis upgrade # 升级配置
114
- jarvis doctor # 检查
115
-
116
- # 全局安装
117
- jarvis init -g -y # 一键全局安装
118
- jarvis add opencode -g # 全局追加 OpenCode
119
- ```
56
+ ### 第三步:在平台里开发
120
57
 
121
- ### 手动安装
58
+ **Claude Code:**
59
+ ```
60
+ /jarvis "做一个登录页"
61
+ ```
62
+ 命令自动按 Gate A→B→C→... 流程推进。每次 spawn 子 Agent 后,引擎钩子自动触发 `gate-check` 验证条件。
122
63
 
64
+ **OpenCode:**
123
65
  ```bash
124
- cp -r path/to/.claude/ your-project/
125
- claude
66
+ opencode --agent frontend # 切换到前端编排中枢
67
+ # 然后说"做一个登录页"
126
68
  ```
69
+ OpenCode 原生兼容 Claude Code 钩子格式,同样自动触发 `gate-check`。
127
70
 
128
- **领域开发命令**(完整生命周期 A→B→C→C1→C1.5→C2→D→E,不可绕过):
129
-
130
- | 命令 | 领域 | 专属 Agent |
131
- |------|------|-----------|
132
- | **`/backend`** | 后端 | backend-implementer, backend-api/data/service-worker, backend-test-worker, database-specialist, performance-test-worker, security-auditor, api-docs-worker, infra-worker |
133
- | **`/frontend`** | 前端 | frontend-implementer, frontend-ui/state-worker, frontend-test-worker, browser-test-worker, e2e-test-worker, performance-audit-reviewer, security-auditor, infra-worker |
134
- | **`/taro`** | Taro 小程序/H5 | taro-worker, taro-ui/state-worker, browser-test-worker, e2e-test-worker |
135
- | **`/android`** | Android | android-worker, android-ui/state-worker, e2e-test-worker |
136
- | **`/ios`** | iOS | ios-worker, ios-ui/state-worker, e2e-test-worker |
137
- | **`/expo`** | Expo 跨端 | react-native-worker, rn-ui/state-worker, browser-test-worker, e2e-test-worker |
138
- | **`/flutter`** | Flutter | flutter-worker, flutter-ui/state-worker, browser-test-worker, e2e-test-worker |
139
-
140
- **专项命令**:
141
-
142
- | 命令 | 用途 |
143
- |------|------|
144
- | **`/jarvis`** | 全栈流水线编排(跨领域完整生命周期) |
145
- | **`/browser-test`** | 浏览器自动化测试闭环(agent-browser) |
146
- | **`/bug-fix`** | Bug 修复闭环(agent-browser 复现→修复→验证) |
147
- | **`/review`** | 只读审查模式(不修改文件) |
148
- | **`/review-fix`** | 审查修复优化闭环(初审→规划→执行→验证→复审) |
149
- | **`/algorithm-expert`** | 算法专家(选型/复杂度/性能优化) |
150
- | **`/frontend-architect`** | 前端架构师(技术选型/组件架构/构建策略) |
151
- | **`/backend-architect`** | 后端架构师(微服务/数据库/分布式) |
152
-
153
- ### OpenCode
154
-
71
+ **Codex:**
155
72
  ```bash
156
- opencode --agent frontend # 切换至前端编排中枢
157
- opencode --agent backend # 切换至后端编排中枢
158
- opencode --agent jarvis # 切换至全栈编排中枢
73
+ codex # 启动后加载 jarvis skill
74
+ # 然后说"做一个登录页"
159
75
  ```
76
+ Codex 钩子在每次 Bash 工具执行后自动触发 gate-check。
160
77
 
161
- 55 智能体 + 0 命令,**纯智能体切换模式**:切换到主智能体即可进入对应领域的完整生命周期(Gate A→B→C→C1→C1.5→C2→D→E)。
78
+ ### 第四步:查看进度
162
79
 
163
- | 主智能体 | 领域 |
164
- |---------|------|
165
- | `jarvis` | 全栈编排 |
166
- | `frontend` `backend` | 前后端 |
167
- | `taro` `android` `ios` `expo` `flutter` | 移动端五平台 |
168
- | `review-only` | 只读审查 |
169
- | `review-fix-optimize` | 审查修复闭环 |
80
+ 打开 `http://localhost:3456/dashboard` 查看:
81
+ - Gate 进度条(A→B→C→...→E)
82
+ - Gate → 检查条件是否满足
83
+ - **Advance →** 推进到下一 Gate
84
+ - `/agents` 页配置每个子 Agent 的模型
170
85
 
171
- ### Codex
86
+ ### 引擎提供的能力
172
87
 
173
- ```bash
174
- cp -r path/to/.codex/ your-project/
175
- ```
88
+ | 能力 | 机制 | 自动/手动 |
89
+ |------|------|----------|
90
+ | 每次 Agent spawn 后检查 Gate 条件 | **钩子**(PostToolUse) | 🔄 自动 |
91
+ | 条件不满足时报警 | **钩子** → `gate_enforce` | 🔄 自动 |
92
+ | 推进到下一个 Gate | `jarvis hook gate-advance` | 👆 编排者手动调用 |
93
+ | 跳过 Gate 被拒绝 | **FSM** 硬约束 | 🔄 自动 |
94
+ | 乱序推进被拒绝 | **FSM** 硬约束 | 🔄 自动 |
95
+ | 查看流水线状态 | **Dashboard** / `jarvis hook status` | 👆 按需 |
96
+ | Session 并发控制 | **Leader 选举 + 写锁** | 🔄 自动 |
97
+
98
+ ---
176
99
 
177
- 45 智能体 + 42 技能,**Skill 触发模式**:加载技能进入对应工作流。
100
+ ## 三平台适配确认
178
101
 
179
- | 技能 | 用途 |
180
- |------|------|
181
- | `jarvis` `frontend` `backend` `android` `ios` `flutter` `expo` `taro` | 领域生命周期 |
182
- | `algorithm-expert` `backend-architect` `frontend-architect` | 专家对话 |
183
- | `browser-test` `bug-fix` | 测试闭环 |
184
- | `review-only` `review-fix-optimize` | 审查模式 |
102
+ | 适配项 | Claude Code | OpenCode | Codex |
103
+ |------|:--:|:--:|:--:|
104
+ | **编排入口** | `/` 命令 | 智能体切换 `--agent` | Skill 加载 |
105
+ | **子 Agent 格式** | `.md` + `tools:` | `.md` + `permission:` | `.toml` + `sandbox_mode` |
106
+ | **Spawn 机制** | `Agent()` | `Task()` | Task via skill |
107
+ | **钩子机制** | `settings.json` hooks | 原生兼容 Claude 格式 | `.codex/hooks.json` |
108
+ | **MCP 引擎连接** | `.mcp.json` `:3456/mcp` | `opencode.json` `:3456/mcp` | `config.toml` `:3456/mcp` |
109
+ | **Playwright MCP** | ✅ 28 tools | ✅ `mcp: playwright: allow` | ✅ config.toml |
110
+ | **e2e/browser-test 边界** | ✅ 明确分离 | ✅ 明确分离 | ✅ 明确分离 |
111
+ | **required_skills** | ✅ 4处 | ✅ 4处 | ✅ jarvis skill |
112
+ | **子 Agent 隔离** | `Skill` tool | `task: deny` (44 agent) | TOML 独立 |
185
113
 
186
- ## 浏览器自动化
114
+ ---
187
115
 
188
- 统一使用 **agent-browser** CLI(Vercel Labs, 29K+ GitHub stars,80+ 命令),替代 Claude in Chrome MCP 和 browser-use。
116
+ ## CLI 命令
189
117
 
190
118
  ```bash
191
- npm i -g agent-browser && agent-browser install
192
- ```
119
+ jarvis # 引导当前目录
120
+ jarvis init [path] -y # 初始化项目
121
+ jarvis add <claude|opencode|codex> # 添加平台(多选)
122
+ jarvis remove <platform> [path] # 移除平台
123
+ jarvis upgrade [path] # 升级配置
124
+ jarvis doctor [path] # 健康检查
193
125
 
194
- - **快照+引用**:`agent-browser snapshot -i` → `@e1, @e2` 紧凑元素引用,token 高效
195
- - **Chrome profile**:`agent-browser --profile "Default" open <url>` 复用登录态
196
- - **全能力覆盖**:网络监控、控制台日志、性能追踪、视觉回归、React DevTools
197
- - Claude Code 额外搭配 Preview MCP 做本地开发预览验证
198
-
199
- ## 智能体体系
200
-
201
- | 类别 | 智能体 |
202
- |------|--------|
203
- | **编排中枢(Primary)** | `jarvis`(全栈)、`frontend`、`backend`、`android`、`ios`、`flutter`、`expo`、`taro` |
204
- | **审查主控(Primary)** | `review-only`(只读)、`review-fix-optimize`(审查修复闭环) |
205
- | **规划与评审** | `task-design`、`planner`、`review-qa` |
206
- | **探索与资料** | `repo-explorer`、`docs-researcher` |
207
- | **架构设计** | `algorithm-expert`、`frontend-architect`、`backend-architect`、`database-specialist` |
208
- | **审查与修复** | `project-audit-reviewer`、`diff-code-reviewer`、`performance-audit-reviewer`、`security-auditor`、`remediation-planner`、`remediation-worker`、`post-change-reviewer` |
209
- | **后端实现** | `backend-implementer`、`backend-api-worker`、`backend-service-worker`、`backend-data-worker`、`backend-test-worker` |
210
- | **前端实现** | `frontend-implementer`、`frontend-ui-worker`、`frontend-state-worker`、`frontend-test-worker` |
211
- | **移动端** | `taro-worker`、`android-worker`、`ios-worker`、`react-native-worker`(Expo)、`flutter-worker`(各含 ui/state 子变体,共 15 个) |
212
- | **测试与文档** | `browser-test-worker`、`e2e-test-worker`、`performance-test-worker`、`api-docs-worker` |
213
- | **基础设施** | `infra-worker` |
214
-
215
- > **10 个 Primary 智能体**(OpenCode 专属):支持 `opencode --agent <name>` 直接切换,每个都是完整的领域编排中枢,含独立 Gate 闭环。Claude Code 通过 `/command` 等价触发,Codex 通过 Skill 触发。
216
-
217
- ## 技能系统
218
-
219
- **27 个共享技能**(三平台同步)+ Codex 额外 15 个主流程技能(共 42 个):
220
-
221
- | 类别 | 技能 |
222
- |------|------|
223
- | **基础** | `behavioral-guidelines` `context-engineering` `using-agent-skills` |
224
- | **需求** | `spec-driven-development` `idea-refine` |
225
- | **规划** | `planning-and-task-breakdown` |
226
- | **实现** | `source-driven-development` `incremental-implementation` `test-driven-development` `code-standards` `code-simplification` |
227
- | **质量** | `code-quality-gate` `code-review-and-quality` `verification-before-completion` |
228
- | **调试** | `debugging-and-error-recovery` |
229
- | **浏览器** | `agent-browser` `browser-testing` |
230
- | **安全** | `security-and-hardening` |
231
- | **流程** | `shipping-and-launch` `git-workflow-and-versioning` `finishing-a-development-branch` |
232
- | **文档** | `chinese-documentation` `documentation-and-adrs` `writing-skills` |
233
- | **探索** | `find-docs` `find-skills` |
234
- | **工具** | `mcp-builder` |
235
-
236
- ## 目录结构
126
+ jarvis engine start [--dashboard] # 启动编排引擎
127
+ jarvis engine stop # 停止引擎
128
+ jarvis engine status # 引擎状态
237
129
 
238
- ```
239
- src/
240
- ├── templates/platforms/ # 📦 配置模板(单一事实源)
241
- │ ├── claude/ # 47 agents + 15 commands + 27 skills
242
- │ ├── opencode/ # 55 agents + 27 skills
243
- │ └── codex/ # 45 agents + 42 skills + config.toml
244
- ├── engine/ # 🧠 引擎层
245
- │ ├── server.js # MCP HTTP Server
246
- │ ├── db.js # SQLite 持久化(WAL)
247
- │ └── gates.js # 状态机 + Agent 定义
248
- ├── web/ # 🌐 Web 层
249
- │ ├── routes.js # REST API + SSE
250
- │ └── views/ # Dashboard HTML
251
- ├── templates/ # 📋 MCP + 钩子模板
252
- ├── cli.js # ⌨️ CLI 入口
253
- ├── install.js # 📥 安装 + 钩子注入
254
- └── hook.js # 🪝 钩子集成
255
- ```
130
+ jarvis hook gate-check # 钩子:检查 Gate 条件
131
+ jarvis hook gate-advance # 钩子:推进 Gate
132
+ jarvis hook status [--json] # 钩子:流水线状态
256
133
 
257
- ## 设计原则
134
+ # 选项:-g 全局 -y 跳过确认 -v 版本 -h 帮助
135
+ ```
258
136
 
259
- - **垂直切片** — 任务按端到端功能拆分,非技术层级
260
- - **闸门控制** — 每阶段必须满足条件才推进,不可绕过
261
- - **需求可追溯** — 每条代码变更追溯到 `REQ-XXX`
262
- - **共享区域唯一责任方** — 避免并行写入冲突
263
- - **最大并发** — 无依赖任务同消息批量调度
264
- - **注释语言约定** — 遵循 `behavioral-guidelines` 准则 5
137
+ ---
265
138
 
266
- ## 致谢
139
+ ## 闭环体系
267
140
 
268
- - **[agent-browser](https://github.com/vercel-labs/agent-browser)** Vercel Labs,浏览器自动化 CLI(80+ 命令),支撑测试与 Bug 闭环
269
- - **[superpowers](https://github.com/obra/superpowers)** — 技能即文档方法论
270
- - **[superpowers-zh](https://github.com/jnMetaCode/superpowers-zh)** 中文技能体系参考
141
+ | # | 闭环 | 流程 |
142
+ |---|------|------|
143
+ | 1 | **开发** | 实现 → Gate C1 质量门 → Gate C2 测试门 → 失败回退 |
144
+ | 2 | **测试** | 写用例 → agent-browser 执行 → 截图 → 失败→修复→重测 |
145
+ | 3 | **Bug 修复** | Bug → agent-browser 复现 → 定位根因 → 修复 → 验证 |
146
+ | 4 | **审查** | 初审 → 规划 → 执行 → 验证 → 复审关闭 |
147
+ | 5 | **安全** | security-auditor → 威胁建模 + CVE + SAST → 修复 |
148
+ | 6 | **契约** | api-docs-worker 模式A → 对比 auto spec vs 实现 → 标记漂移 |
149
+
150
+ ---
151
+
152
+ ## 平台入口速查
153
+
154
+ | 领域 | Claude Code | OpenCode | Codex |
155
+ |------|-----------|----------|-------|
156
+ | 全栈 | `/jarvis` | `--agent jarvis` | `jarvis` skill |
157
+ | 前端 | `/frontend` | `--agent frontend` | `frontend` skill |
158
+ | 后端 | `/backend` | `--agent backend` | `backend` skill |
159
+ | Android | `/android` | `--agent android` | `android` skill |
160
+ | iOS | `/ios` | `--agent ios` | `ios` skill |
161
+ | Flutter | `/flutter` | `--agent flutter` | `flutter` skill |
162
+ | Expo | `/expo` | `--agent expo` | `expo` skill |
163
+ | Taro | `/taro` | `--agent taro` | `taro` skill |
164
+ | 审查 | `/review` | `--agent review-only` | `review-only` skill |
165
+ | 修复闭环 | `/review-fix` | `--agent review-fix-optimize` | `review-fix-optimize` skill |
166
+ | 浏览器测试 | `/browser-test` | spawn browser-test-worker | `browser-test` skill |
167
+ | Bug 修复 | `/bug-fix` | spawn via orchestrator | `bug-fix` skill |
168
+ | 算法专家 | `/algorithm-expert` | `--agent algorithm-expert` | `algorithm-expert` skill |
169
+ | 前端架构 | `/frontend-architect` | `--agent frontend-architect` | `frontend-architect` skill |
170
+ | 后端架构 | `/backend-architect` | `--agent backend-architect` | `backend-architect` skill |
171
+
172
+ ---
173
+
174
+ ## 统计
175
+
176
+ | | Claude Code | OpenCode | Codex |
177
+ |---|:--:|:--:|:--:|
178
+ | Agents | 47 | 55 | 45 |
179
+ | Commands | 15 | 0 | 0 |
180
+ | Skills | 27 | 27 | 42 |
181
+ | 钩子 | settings.json | 兼容 Claude 格式 | hooks.json |
182
+
183
+ ---
271
184
 
272
185
  ## License
273
186
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jarvis-agent-factory",
3
- "version": "3.7.2",
3
+ "version": "3.7.3",
4
4
  "description": "Jarvis Agent Factory CLI — 跨平台多智能体 AI 编程助手配置安装器 | Multi-agent AI coding assistant config installer for Claude Code / OpenCode / Codex",
5
5
  "keywords": [
6
6
  "jarvis",
package/src/doctor.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { existsSync, readdirSync, readFileSync, statSync } from 'node:fs';
2
2
  import { resolve, join } from 'node:path';
3
+ import { homedir } from 'node:os';
3
4
 
4
5
  /**
5
6
  * Check the health of installed Jarvis configurations.
@@ -52,10 +53,23 @@ export function doctor({ target, platforms, pkgRoot }) {
52
53
  }
53
54
 
54
55
  console.log('');
56
+ // Check engine status (sync — check PID file)
57
+ const pidFile = resolve(homedir(), '.jarvis', 'engine.pid');
58
+ let engineRunning = false;
59
+ if (existsSync(pidFile)) {
60
+ try { const pid = Number(readFileSync(pidFile, 'utf-8').trim()); process.kill(pid, 0); engineRunning = true; } catch {}
61
+ }
62
+ if (!engineRunning) {
63
+ console.log('\n ⚠️ Engine not running. Gate enforcement is INACTIVE.');
64
+ console.log(' Start it: jarvis engine start [--dashboard]\n');
65
+ allOk = false;
66
+ }
67
+
55
68
  if (allOk) {
56
- console.log(' ✅ All platforms OK\n');
69
+ console.log(' ✅ All platforms OK, engine running\n');
57
70
  } else {
58
- console.log(' ⚠️ Some platforms need attention. Run `jarvis install <platform>` to fix.\n');
71
+ if (!engineRunning) console.log(' ⚠️ Start the engine to enable gate enforcement.\n');
72
+ else console.log(' ⚠️ Some platforms need attention. Run `jarvis add <platform>` to fix.\n');
59
73
  }
60
74
  }
61
75
 
package/src/hook.js CHANGED
@@ -25,7 +25,12 @@ export async function hookCommand(args) {
25
25
  const g = await api(`/api/gate/${encodeURIComponent(current)}/enforce`);
26
26
  if (g.allowed) { console.log(`✅ ${current} — OK`); process.exit(0); }
27
27
  else { console.log(`🚫 ${current} BLOCKED — ${g.required}`); process.exit(1); }
28
- } catch (e) { console.error(`⚠ Engine unreachable: ${e.message}`); process.exit(0); }
28
+ } catch (e) {
29
+ // Engine not running — warn loudly so user knows enforcement is absent
30
+ console.error(`\n⚠️ Jarvis Engine is NOT running. Gate enforcement is INACTIVE.`);
31
+ console.error(` Start it: jarvis engine start\n`);
32
+ process.exit(2); // Exit 2 = block (Claude Code treats exit 2 as feedback)
33
+ }
29
34
  }
30
35
 
31
36
  else if (sub === 'gate-advance') {
@@ -34,7 +39,11 @@ export async function hookCommand(args) {
34
39
  const g = await r.json();
35
40
  if (g.allowed) { console.log(`🚀 ${g.previous} → ${g.current}${g.next ? ` (next: ${g.next})` : ''}`); process.exit(0); }
36
41
  else { console.log(`🚫 BLOCKED — ${g.error}`); process.exit(1); }
37
- } catch (e) { console.error(`⚠ Engine unreachable: ${e.message}`); process.exit(0); }
42
+ } catch (e) {
43
+ console.error(`\n⚠️ Jarvis Engine is NOT running. Cannot advance gate.`);
44
+ console.error(` Start it: jarvis engine start\n`);
45
+ process.exit(2);
46
+ }
38
47
  }
39
48
 
40
49
  else if (sub === 'status') {
@@ -43,7 +52,10 @@ export async function hookCommand(args) {
43
52
  if (args.includes('--json')) console.log(JSON.stringify(p, null, 2));
44
53
  else console.log(p._display || `${p.current_gate}`);
45
54
  process.exit(0);
46
- } catch (e) { console.error(`⚠ Engine unreachable: ${e.message}`); process.exit(0); }
55
+ } catch (e) {
56
+ console.log('Engine: not running. Start with: jarvis engine start');
57
+ process.exit(0);
58
+ }
47
59
  }
48
60
 
49
61
  else {