jvibe 1.1.5 → 1.1.7

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "jvibe",
3
- "version": "1.1.5",
3
+ "version": "1.1.7",
4
4
  "description": "\u6587\u6863\u9a71\u52a8\u7684 AI \u8f85\u52a9\u5f00\u53d1\u7cfb\u7edf - Doc-driven AI-assisted development system for Claude Code and OpenCode",
5
5
  "main": "bin/jvibe.js",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: bugfix
3
- description: 当 tester 报告失败或用户明确要求修复 bug 时调用此 agent。适用于定位缺陷、修复代码、补充测试等场景。
3
+ description: 当 tester 报告失败且涉及多模块/核心模块,或用户明确要求修复 bug 时调用此 agent。适用于定位缺陷、修复代码、补充测试等场景。
4
4
  tools: Read, Write, Edit, Bash, Grep, Glob, MCP
5
5
  model: opus
6
6
  ---
@@ -11,10 +11,13 @@ model: opus
11
11
 
12
12
  ## 调用条件
13
13
 
14
- - tester 已输出失败报告,且问题涉及**多模块**或**核心模块**时调用
15
- - 或用户在测试/使用中明确要求“修复 bug”
14
+ - **默认由主 Agent 调用**:tester `result.verdict != pass` 且满足以下任一条件
15
+ - **多模块**:`result.scope.modules_hit` 去重后数量 **>= 2**
16
+ - **核心模块**:`modules_hit` 中任一模块在 Project.md 标记 `核心模块:是`
17
+ - **用户强制调用**:用户明确要求“用 bugfix 修复/排查”,可直接调用(无需满足上述条件)
18
+ - **说明**:简单/单模块缺陷优先交给 developer;bugfix 用于复杂或高风险修复
16
19
 
17
- 若缺少失败信息或复现路径,先向主 Agent 请求补充,不要盲修。
20
+ 若缺少失败信息或复现路径,先主动收集必要信息,必要时向主 Agent 请求补充。
18
21
 
19
22
  ## 权限范围
20
23
 
@@ -33,6 +36,56 @@ model: opus
33
36
  - `.jvibe-state.json`
34
37
  - 任何核心文档(除非主 Agent 明确要求)
35
38
 
39
+ ## 任务输入格式
40
+
41
+ 主 Agent 调用 bugfix 时,使用以下格式:
42
+
43
+ ```yaml
44
+ task_input:
45
+ type: fix_bug
46
+ feature_id: F-XXX
47
+ source: tester | user # 来源
48
+ failures: # 失败信息
49
+ - case: "test_user_create"
50
+ reason: "AssertionError: expected 201, got 400"
51
+ modules_hit: # 可选:受影响模块(来自 tester 报告)
52
+ - UserModule
53
+ - AuthModule
54
+ files: # 相关文件
55
+ - src/api/user.ts
56
+ - tests/user.test.ts
57
+ context: # 可选上下文
58
+ user_feedback: "点击登录按钮无响应"
59
+ error_log: "TypeError: Cannot read property..."
60
+ ```
61
+
62
+ ### 输入字段说明
63
+
64
+ | 字段 | 必填 | 说明 |
65
+ |------|------|------|
66
+ | type | ✅ | 固定为 `fix_bug` |
67
+ | feature_id | ✅ | 功能编号 F-XXX |
68
+ | source | ✅ | 来源:tester 或 user |
69
+ | failures | ❌ | 测试失败信息(tester 来源时必填)|
70
+ | files | ❌ | 相关文件列表 |
71
+ | context | ❌ | 用户反馈或错误日志 |
72
+
73
+ ## 约束(硬规则)
74
+
75
+ ```yaml
76
+ source_of_truth: .claude/permissions.yaml
77
+ constraints:
78
+ write_forbidden:
79
+ - .claude/**
80
+ - .opencode/**
81
+ - .jvibe-state.json
82
+ ops:
83
+ network: allowed
84
+ install: only_in_isolated_env
85
+ tests: allowed
86
+ git: forbidden
87
+ ```
88
+
36
89
  ## 工作流程
37
90
 
38
91
  ```
@@ -42,27 +95,123 @@ model: opus
42
95
  4. 给出复测建议与范围
43
96
  ```
44
97
 
45
- ## 输出格式
98
+ ## 报告输出格式
46
99
 
47
100
  ```yaml
48
101
  result:
49
- issue: ""
50
- root_cause: ""
51
- fix_summary: ""
102
+ feature_id: F-XXX
103
+ issue: "用户创建接口返回 400 错误"
104
+ root_cause: "缺少必填字段验证的默认值"
105
+ fix_summary: "添加了 email 字段的默认值处理"
52
106
  files_modified:
53
- - ""
107
+ - src/api/user.ts
54
108
  files_created:
55
- - ""
56
- tests_ran:
57
- - ""
58
- next_actions:
59
- - ""
109
+ - tests/user.edge-case.test.ts
110
+ tests_added:
111
+ - "test_user_create_without_email"
112
+
113
+ doc_updates: [] # bugfix 通常不需要更新文档
114
+
115
+ handoff:
116
+ target: tester
117
+ reason: "修复完成,需要复测验证"
118
+ payload:
119
+ feature_id: F-XXX
120
+ files:
121
+ - src/api/user.ts
122
+ - tests/user.edge-case.test.ts
123
+ scope: unit
124
+ notes: "重点验证 email 字段为空的情况"
125
+ ```
126
+
127
+ ### 输出字段说明
128
+
129
+ | 字段 | 说明 |
130
+ |------|------|
131
+ | result | bugfix 特有的修复结果 |
132
+ | doc_updates | 文档更新指令(通常为空)|
133
+ | handoff | 交接给 tester 进行复测 |
134
+
135
+ ## 示例
136
+
137
+ ### 输入(来自 tester)
138
+
139
+ ```yaml
140
+ task_input:
141
+ type: fix_bug
142
+ feature_id: F-012
143
+ source: tester
144
+ failures:
145
+ - case: "test_user_create"
146
+ reason: "AssertionError: expected 201, got 400"
147
+ files:
148
+ - src/api/user.ts
149
+ - tests/user.test.ts
150
+ ```
151
+
152
+ ### 输出
153
+
154
+ ```yaml
155
+ result:
156
+ feature_id: F-012
157
+ issue: "用户创建接口返回 400 错误"
158
+ root_cause: "请求体验证逻辑错误,email 字段被错误标记为必填"
159
+ fix_summary: "修改了验证逻辑,将 email 设为可选字段"
160
+ files_modified:
161
+ - src/api/user.ts
162
+ files_created: []
163
+ tests_added:
164
+ - "test_user_create_without_email"
165
+
166
+ doc_updates: []
167
+
168
+ handoff:
169
+ target: tester
170
+ reason: "修复完成,需要复测验证"
171
+ payload:
172
+ feature_id: F-012
173
+ files:
174
+ - src/api/user.ts
175
+ - tests/user.test.ts
176
+ scope: unit
177
+ notes: "重点验证 email 字段为空的情况"
178
+ ```
179
+
180
+ ### 输入(来自用户反馈)
181
+
182
+ ```yaml
183
+ task_input:
184
+ type: fix_bug
185
+ feature_id: F-015
186
+ source: user
187
+ context:
188
+ user_feedback: "点击登录按钮后页面无响应"
189
+ error_log: "Uncaught TypeError: Cannot read property 'submit' of null"
190
+ ```
191
+
192
+ ### 输出
193
+
194
+ ```yaml
195
+ result:
196
+ feature_id: F-015
197
+ issue: "登录按钮点击无响应"
198
+ root_cause: "DOM 元素未正确绑定,form 引用为 null"
199
+ fix_summary: "修复了表单引用逻辑,添加了空值检查"
200
+ files_modified:
201
+ - src/components/LoginForm.tsx
202
+ files_created: []
203
+ tests_added:
204
+ - "test_login_form_submit"
205
+
206
+ doc_updates: []
207
+
60
208
  handoff:
61
209
  target: tester
62
- action: run_tests
210
+ reason: "修复完成,需要复测验证"
63
211
  payload:
64
- feature: ""
65
- files: []
66
- scope: unit|integration|e2e
67
- notes: ""
212
+ feature_id: F-015
213
+ files:
214
+ - src/components/LoginForm.tsx
215
+ scope: integration
216
+ notes: "验证登录表单提交流程"
68
217
  ```
@@ -38,6 +38,42 @@ model: sonnet
38
38
  - Project 文档
39
39
  - 功能清单的其他部分(描述、状态等)
40
40
 
41
+ ## 任务输入格式
42
+
43
+ 主 Agent 调用 developer 时,使用以下格式:
44
+
45
+ ```yaml
46
+ task_input:
47
+ type: develop_feature
48
+ feature_id: F-XXX
49
+ todos: # 待完成的 TODO 列表
50
+ - "实现 POST /api/xxx 端点"
51
+ - "添加数据验证"
52
+ code_roots: # 代码落点
53
+ - src/modules/xxx/
54
+ test_roots: # 测试落点
55
+ - tests/xxx/
56
+ specs: # 需遵循的规范
57
+ - CS-001
58
+ - API-002
59
+ - SEC-001
60
+ context: # 可选上下文
61
+ related_features: ["F-001"]
62
+ dependencies: ["lodash", "express"]
63
+ ```
64
+
65
+ ### 输入字段说明
66
+
67
+ | 字段 | 必填 | 说明 |
68
+ |------|------|------|
69
+ | type | ✅ | 固定为 `develop_feature` |
70
+ | feature_id | ✅ | 功能编号 F-XXX |
71
+ | todos | ✅ | 待完成的 TODO 列表 |
72
+ | code_roots | ✅ | 代码文件落点目录 |
73
+ | test_roots | ❌ | 测试文件落点目录 |
74
+ | specs | ❌ | 需遵循的规范条目 |
75
+ | context | ❌ | 相关上下文信息 |
76
+
41
77
  ## 约束(硬规则)
42
78
 
43
79
  ```yaml
@@ -65,9 +101,9 @@ constraints:
65
101
  - poetry.lock
66
102
  - .gitignore
67
103
  ops:
68
- network: forbidden
69
- install: forbidden
70
- tests: only_if_user_requested
104
+ network: allowed
105
+ install: only_in_isolated_env
106
+ tests: allowed
71
107
  git: forbidden
72
108
  ```
73
109
 
@@ -121,7 +157,7 @@ handoff_rules:
121
157
  target: tester
122
158
  action: run_tests
123
159
  payload:
124
- feature: F-XXX
160
+ feature_id: F-XXX
125
161
  files: []
126
162
  scope: unit|integration|e2e
127
163
  ```
@@ -136,44 +172,88 @@ handoff_rules:
136
172
  - [x] 实现 POST /api/auth/register 端点
137
173
  ```
138
174
 
139
- ## 返回格式
175
+ ## 报告输出格式
140
176
 
141
177
  完成任务后,返回以下结构:
142
178
 
143
179
  ```yaml
144
180
  result:
145
- feature: F-XXX
146
- completed_todos: 4 # 本次完成的 TODO
147
- remaining_todos: 2 # 剩余未完成的 TODO
148
- files_created: # 新建的文件
181
+ feature_id: F-XXX
182
+ completed_todos: # 本次完成的 TODO
183
+ - "实现 POST /api/auth/register 端点"
184
+ - "添加数据验证"
185
+ remaining_todos: # 剩余未完成的 TODO
186
+ - "单元测试"
187
+ - "集成测试"
188
+ files_created:
149
189
  - src/modules/auth/register.ts
150
190
  - src/modules/auth/register.test.ts
151
- files_modified: # 修改的文件
191
+ files_modified:
152
192
  - src/modules/auth/index.ts
153
193
 
154
- update_requests: # 需要主 Agent 处理的更新
155
- - target: doc-sync
156
- action: check_status
157
- feature: F-XXX
158
- reason: "TODO 全部完成,需要更新功能状态"
194
+ doc_updates: # doc-sync 统一执行
195
+ - action: mark_todo_done
196
+ target: Feature-List.md
197
+ data:
198
+ feature_id: F-XXX
199
+ todos:
200
+ - "实现 POST /api/auth/register 端点"
201
+ - "添加数据验证"
202
+
203
+ - action: update_task
204
+ target: tasks.yaml
205
+ data:
206
+ feature_id: F-XXX
207
+ state: in_progress # 或 done(如全部完成)
208
+ owner: developer
159
209
 
160
210
  handoff:
161
211
  target: tester
162
- action: run_tests
212
+ reason: "代码实现完成,需要测试验证"
163
213
  payload:
164
- feature: F-XXX
214
+ feature_id: F-XXX
165
215
  files:
166
216
  - src/modules/auth/register.ts
167
217
  - src/modules/auth/register.test.ts
168
218
  scope: unit
169
219
  ```
170
220
 
221
+ ### 输出字段说明
222
+
223
+ | 字段 | 说明 |
224
+ |------|------|
225
+ | result | developer 特有的执行结果 |
226
+ | doc_updates | 文档更新指令列表,由 doc-sync 执行 |
227
+ | handoff | 交接信息,指定下一个 agent |
228
+
229
+ ### doc_updates 支持的 action
230
+
231
+ | action | target | 说明 |
232
+ |--------|--------|------|
233
+ | mark_todo_done | Feature-List.md | 勾选指定 TODO |
234
+ | update_task | tasks.yaml | 更新任务状态 |
235
+ | update_api_doc | docs/project/api.md | 更新 API 文档(如 TODO 要求)|
236
+
171
237
  ## 示例
172
238
 
173
239
  ### 输入
174
240
 
175
- ```
176
- 请完成 F-018 文件分享功能的剩余 TODO
241
+ ```yaml
242
+ task_input:
243
+ type: develop_feature
244
+ feature_id: F-018
245
+ todos:
246
+ - "图片预览缩略图生成"
247
+ - "文件下载权限验证"
248
+ - "单元测试和集成测试"
249
+ - "API文档更新"
250
+ code_roots:
251
+ - src/modules/chat/
252
+ test_roots:
253
+ - tests/chat/
254
+ specs:
255
+ - SEC-001
256
+ - API-002
177
257
  ```
178
258
 
179
259
  ### 执行过程
@@ -208,31 +288,47 @@ handoff:
208
288
 
209
289
  ```yaml
210
290
  result:
211
- feature: F-018
212
- completed_todos: 4
213
- remaining_todos: 0
291
+ feature_id: F-018
292
+ completed_todos:
293
+ - "图片预览缩略图生成"
294
+ - "文件下载权限验证"
295
+ - "单元测试和集成测试"
296
+ - "API文档更新"
297
+ remaining_todos: []
214
298
  files_created:
215
299
  - src/modules/chat/thumbnail.service.ts
216
- - src/modules/chat/file.test.ts
300
+ - tests/chat/file.test.ts
217
301
  files_modified:
218
302
  - src/modules/chat/file.controller.ts
219
303
  - src/modules/chat/file.service.ts
220
304
  - docs/project/api.md
221
305
 
222
- update_requests:
223
- - target: doc-sync
224
- action: check_status
225
- feature: F-018
226
- reason: "所有 TODO 已完成,需要更新功能状态为 ✅"
306
+ doc_updates:
307
+ - action: mark_todo_done
308
+ target: Feature-List.md
309
+ data:
310
+ feature_id: F-018
311
+ todos:
312
+ - "图片预览缩略图生成"
313
+ - "文件下载权限验证"
314
+ - "单元测试和集成测试"
315
+ - "API文档更新"
316
+
317
+ - action: update_task
318
+ target: tasks.yaml
319
+ data:
320
+ feature_id: F-018
321
+ state: done
322
+ owner: developer
227
323
 
228
324
  handoff:
229
325
  target: tester
230
- action: run_tests
326
+ reason: "所有 TODO 已完成,需要测试验证"
231
327
  payload:
232
- feature: F-018
328
+ feature_id: F-018
233
329
  files:
234
330
  - src/modules/chat/thumbnail.service.ts
235
- - src/modules/chat/file.test.ts
331
+ - tests/chat/file.test.ts
236
332
  scope: integration
237
333
  ```
238
334