@comate/zulu 1.2.1-beta.1 → 1.3.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 (169) hide show
  1. package/comate-engine/assets/skills/auto-commit-comate/SKILL.md +260 -0
  2. package/comate-engine/assets/skills/auto-commit-comate/references/data_structures.md +189 -0
  3. package/comate-engine/assets/skills/auto-commit-comate/references/new_version_instruction.md +209 -0
  4. package/comate-engine/assets/skills/auto-commit-comate/references/old_version_instruction.md +208 -0
  5. package/comate-engine/assets/skills/auto-commit-comate/scripts/git_diff_cli.py +196 -0
  6. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/git_utils.py +20 -10
  7. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/client.py +69 -40
  8. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/farseer.py +8 -9
  9. package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/matching.py +65 -9
  10. package/comate-engine/assets/skills/auto-commit-comate/scripts/match_card_cli.py +37 -0
  11. package/comate-engine/assets/skills/cnap-comate/SKILL.md +157 -0
  12. package/comate-engine/assets/skills/cnap-comate/references/cases.md +198 -0
  13. package/comate-engine/assets/skills/cnap-comate/references/deploy-troubleshoot.md +15 -0
  14. package/comate-engine/assets/skills/cnap-comate/references/install.md +43 -0
  15. package/comate-engine/assets/skills/cnap-comate/references/kubectl.md +55 -0
  16. package/comate-engine/assets/skills/cnap-comate/references/login.md +125 -0
  17. package/comate-engine/assets/skills/cnap-comate/references/oncall.md +24 -0
  18. package/comate-engine/assets/skills/cnap-comate/scripts/install_cnap_cli.sh +36 -0
  19. package/comate-engine/assets/skills/code-security/SKILL.md +176 -0
  20. package/comate-engine/assets/skills/code-security/references/credential_hosting.md +102 -0
  21. package/comate-engine/assets/skills/code-security/references/vul_repair_sensitive.md +219 -0
  22. package/comate-engine/assets/skills/code-security/scripts/build_repair_info.py +0 -0
  23. package/comate-engine/assets/skills/code-security/scripts/credential_hosting.py +99 -0
  24. package/comate-engine/assets/skills/code-security/scripts/credential_poll.py +350 -0
  25. package/comate-engine/assets/skills/code-security/scripts/http_client.py +173 -0
  26. package/comate-engine/assets/skills/code-security/scripts/parse_scan_result.py +301 -0
  27. package/comate-engine/assets/skills/code-security/scripts/repair_vulnerability.py +261 -0
  28. package/comate-engine/assets/skills/code-security/scripts/report_chat.py +198 -0
  29. package/comate-engine/assets/skills/code-security/scripts/scan_vulnerability.py +316 -0
  30. package/comate-engine/assets/skills/code-security-comate/SKILL.md +219 -0
  31. package/comate-engine/assets/skills/code-security-comate/references/credential_hosting.md +102 -0
  32. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-go_sql_injection.md +399 -0
  33. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-java_sql_injection.md +591 -0
  34. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-php_sql_injection.md +318 -0
  35. package/comate-engine/assets/skills/code-security-comate/references/vul_repair-python_sql_injection.md +198 -0
  36. package/comate-engine/assets/skills/code-security-comate/references/vul_repair_sensitive.md +219 -0
  37. package/comate-engine/assets/skills/code-security-comate/scripts/credential_hosting.py +87 -0
  38. package/comate-engine/assets/skills/code-security-comate/scripts/credential_poll.py +345 -0
  39. package/comate-engine/assets/skills/code-security-comate/scripts/http_client.py +173 -0
  40. package/comate-engine/assets/skills/code-security-comate/scripts/parse_scan_result.py +392 -0
  41. package/comate-engine/assets/skills/code-security-comate/scripts/repair_vulnerability.py +245 -0
  42. package/comate-engine/assets/skills/code-security-comate/scripts/report_chat.py +145 -0
  43. package/comate-engine/assets/skills/code-security-comate/scripts/scan_vulnerability.py +444 -0
  44. package/comate-engine/assets/skills/code-security-comate/scripts/utils.py +153 -0
  45. package/comate-engine/assets/skills/comate-docs-comate/SKILL.md +148 -0
  46. package/comate-engine/assets/skills/comate-docs-comate/references/doc-map-extended.md +78 -0
  47. package/comate-engine/assets/skills/comate-docs-comate/references/models-and-billing.md +51 -0
  48. package/comate-engine/assets/skills/comate-docs-comate/references/product-overview.md +73 -0
  49. package/comate-engine/assets/skills/comate-docs-comate/references/query_content.md +83 -0
  50. package/comate-engine/assets/skills/comate-docs-comate/references/query_repo.md +57 -0
  51. package/comate-engine/assets/skills/comate-docs-comate/scripts/ku_operator.py +1575 -0
  52. package/comate-engine/assets/skills/create-image-comate/SKILL.md +278 -0
  53. package/comate-engine/assets/skills/create-skill-comate/SKILL.md +308 -217
  54. package/comate-engine/assets/skills/create-skill-comate/agents/analyzer.md +274 -0
  55. package/comate-engine/assets/skills/create-skill-comate/agents/comparator.md +202 -0
  56. package/comate-engine/assets/skills/create-skill-comate/agents/grader.md +223 -0
  57. package/comate-engine/assets/skills/create-skill-comate/assets/eval_review.html +146 -0
  58. package/comate-engine/assets/skills/create-skill-comate/eval-viewer/generate_review.py +489 -0
  59. package/comate-engine/assets/skills/create-skill-comate/eval-viewer/viewer.html +1325 -0
  60. package/comate-engine/assets/skills/create-skill-comate/references/schemas.md +430 -0
  61. package/comate-engine/assets/skills/create-skill-comate/scripts/__init__.py +0 -0
  62. package/comate-engine/assets/skills/create-skill-comate/scripts/__pycache__/__init__.cpython-311.pyc +0 -0
  63. package/comate-engine/assets/skills/create-skill-comate/scripts/__pycache__/aggregate_benchmark.cpython-311.pyc +0 -0
  64. package/comate-engine/assets/skills/create-skill-comate/scripts/aggregate_benchmark.py +412 -0
  65. package/comate-engine/assets/skills/create-skill-comate/scripts/generate_report.py +334 -0
  66. package/comate-engine/assets/skills/create-skill-comate/scripts/package_skill.py +140 -0
  67. package/comate-engine/assets/skills/create-skill-comate/scripts/utils.py +53 -0
  68. package/comate-engine/assets/skills/find-skills-comate/SKILL.md +15 -12
  69. package/comate-engine/assets/skills/find-skills-comate/scripts/fetch_skills.py +32 -3
  70. package/comate-engine/assets/skills/get-ugate-token-comate/SKILL.md +159 -0
  71. package/comate-engine/assets/skills/get-ugate-token-comate/getUgateToken.py +150 -0
  72. package/comate-engine/assets/skills/icafe-comate/SKILL.md +240 -0
  73. package/comate-engine/assets/skills/icafe-comate/references/ai-workflows.md +233 -0
  74. package/comate-engine/assets/skills/icafe-comate/references/commands.md +1147 -0
  75. package/comate-engine/assets/skills/icafe-comate/references/error-handling.md +164 -0
  76. package/comate-engine/assets/skills/icafe-comate/references/git-auto-bindcard-workflow.md +201 -0
  77. package/comate-engine/assets/skills/icafe-comate/references/git-bindcard-workflow.md +327 -0
  78. package/comate-engine/assets/skills/icafe-comate/references/iql-syntax.md +327 -0
  79. package/comate-engine/assets/skills/icafe-comate/references/platform-concepts.md +317 -0
  80. package/comate-engine/assets/skills/icafe-comate/references/smart-create-workflow.md +171 -0
  81. package/comate-engine/assets/skills/icafe-comate/references/smart-find-workflow.md +127 -0
  82. package/comate-engine/assets/skills/icafe-comate/references/smart-update-workflow.md +118 -0
  83. package/comate-engine/assets/skills/icode-comate/SKILL.md +366 -0
  84. package/comate-engine/assets/skills/icode-comate/references/api/add_reviewers.md +44 -0
  85. package/comate-engine/assets/skills/icode-comate/references/api/build_fetch_command.md +89 -0
  86. package/comate-engine/assets/skills/icode-comate/references/api/check_repo_permission.md +89 -0
  87. package/comate-engine/assets/skills/icode-comate/references/api/create_branch.md +79 -0
  88. package/comate-engine/assets/skills/icode-comate/references/api/create_draft_comment.md +109 -0
  89. package/comate-engine/assets/skills/icode-comate/references/api/get_ai_cr_result.md +190 -0
  90. package/comate-engine/assets/skills/icode-comate/references/api/get_ai_review.md +97 -0
  91. package/comate-engine/assets/skills/icode-comate/references/api/get_diff_content.md +92 -0
  92. package/comate-engine/assets/skills/icode-comate/references/api/get_diff_file.md +88 -0
  93. package/comate-engine/assets/skills/icode-comate/references/api/get_machine_check.md +73 -0
  94. package/comate-engine/assets/skills/icode-comate/references/api/get_my_reviews.md +115 -0
  95. package/comate-engine/assets/skills/icode-comate/references/api/get_person_commit.md +89 -0
  96. package/comate-engine/assets/skills/icode-comate/references/api/get_person_repo.md +63 -0
  97. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_branch.md +62 -0
  98. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_config.md +91 -0
  99. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_members.md +118 -0
  100. package/comate-engine/assets/skills/icode-comate/references/api/get_repo_reviews.md +91 -0
  101. package/comate-engine/assets/skills/icode-comate/references/api/get_review_comments.md +87 -0
  102. package/comate-engine/assets/skills/icode-comate/references/api/get_review_info.md +81 -0
  103. package/comate-engine/assets/skills/icode-comate/references/api/get_submit_settings.md +105 -0
  104. package/comate-engine/assets/skills/icode-comate/references/api/icode-api.md +86 -0
  105. package/comate-engine/assets/skills/icode-comate/references/api/publish_comments.md +72 -0
  106. package/comate-engine/assets/skills/icode-comate/references/api/set_review_score.md +58 -0
  107. package/comate-engine/assets/skills/icode-comate/references/api/start_ai_review.md +77 -0
  108. package/comate-engine/assets/skills/icode-comate/references/api/submit_review.md +50 -0
  109. package/comate-engine/assets/skills/icode-comate/references/api/trigger_ai_cr.md +63 -0
  110. package/comate-engine/assets/skills/icode-comate/references/feature/add-reviewer.md +92 -0
  111. package/comate-engine/assets/skills/icode-comate/references/feature/fix-machine-check.md +144 -0
  112. package/comate-engine/assets/skills/icode-comate/references/feature/merge-cr.md +100 -0
  113. package/comate-engine/assets/skills/icode-comate/references/feature/ssh-setup.md +106 -0
  114. package/comate-engine/assets/skills/icode-comate/references/feature/submit-acr.md +135 -0
  115. package/comate-engine/assets/skills/icode-comate/references/feature/submit-cr.md +123 -0
  116. package/comate-engine/assets/skills/icode-comate/references/git/clone.md +67 -0
  117. package/comate-engine/assets/skills/icode-comate/references/git/icode-git.md +68 -0
  118. package/comate-engine/assets/skills/icode-comate/references/git/push.md +64 -0
  119. package/comate-engine/assets/skills/icode-comate/references/git/push_cr.md +103 -0
  120. package/comate-engine/assets/skills/icode-comate/references/install.md +144 -0
  121. package/comate-engine/assets/skills/icode-comate/references/login.md +111 -0
  122. package/comate-engine/assets/skills/icode-comate/scripts/add-reviewer.sh +154 -0
  123. package/comate-engine/assets/skills/icode-comate/scripts/common.sh +145 -0
  124. package/comate-engine/assets/skills/icode-comate/scripts/fix-machine-check.sh +131 -0
  125. package/comate-engine/assets/skills/icode-comate/scripts/merge-cr.sh +105 -0
  126. package/comate-engine/assets/skills/icode-comate/scripts/ssh-setup.sh +159 -0
  127. package/comate-engine/assets/skills/icode-comate/scripts/submit-acr.sh +236 -0
  128. package/comate-engine/assets/skills/icode-comate/scripts/submit-cr.sh +104 -0
  129. package/comate-engine/assets/skills/icode-comate/scripts/test-preflight.sh +89 -0
  130. package/comate-engine/assets/skills/ku-operator-comate/SKILL.md +121 -0
  131. package/comate-engine/assets/skills/ku-operator-comate/examples.md +190 -0
  132. package/comate-engine/assets/skills/ku-operator-comate/references/add_member.md +49 -0
  133. package/comate-engine/assets/skills/ku-operator-comate/references/change_scope.md +38 -0
  134. package/comate-engine/assets/skills/ku-operator-comate/references/copy_doc.md +50 -0
  135. package/comate-engine/assets/skills/ku-operator-comate/references/create_doc.md +61 -0
  136. package/comate-engine/assets/skills/ku-operator-comate/references/delete_doc.md +31 -0
  137. package/comate-engine/assets/skills/ku-operator-comate/references/edit_content.md +568 -0
  138. package/comate-engine/assets/skills/ku-operator-comate/references/move_doc.md +45 -0
  139. package/comate-engine/assets/skills/ku-operator-comate/references/query_comment.md +79 -0
  140. package/comate-engine/assets/skills/ku-operator-comate/references/query_content.md +83 -0
  141. package/comate-engine/assets/skills/ku-operator-comate/references/query_flowchart.md +84 -0
  142. package/comate-engine/assets/skills/ku-operator-comate/references/query_permission.md +38 -0
  143. package/comate-engine/assets/skills/ku-operator-comate/references/query_recent_view.md +67 -0
  144. package/comate-engine/assets/skills/ku-operator-comate/references/query_repo.md +57 -0
  145. package/comate-engine/assets/skills/ku-operator-comate/references/query_user_info.md +37 -0
  146. package/comate-engine/assets/skills/ku-operator-comate/references/update_member.md +41 -0
  147. package/comate-engine/assets/skills/ku-operator-comate/references/upload_attachment.md +52 -0
  148. package/comate-engine/assets/skills/ku-operator-comate/scripts/ku_operator.py +1575 -0
  149. package/comate-engine/node_modules/better-sqlite3/node_modules/.bin/prebuild-install +2 -2
  150. package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build +2 -2
  151. package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build-optional +2 -2
  152. package/comate-engine/node_modules/tree-sitter-bash/node_modules/.bin/node-gyp-build-test +2 -2
  153. package/comate-engine/package.json +2 -0
  154. package/comate-engine/server.js +263 -79
  155. package/dist/bundle/index.js +8 -8
  156. package/package.json +1 -1
  157. package/comate-engine/assets/skills/figma2code-comate/codeConnect.md +0 -37
  158. package/comate-engine/assets/skills/figma2code-comate/designToken.md +0 -3
  159. package/comate-engine/assets/skills/figma2code-comate/f2cMcp.md +0 -59
  160. package/comate-engine/assets/skills/smart-commit/SKILL.md +0 -646
  161. package/comate-engine/node_modules/@comate/plugin-host/dist/index-AZIho4HV.js +0 -1
  162. package/comate-engine/node_modules/@comate/plugin-host/dist/user-BIpzRUfb.js +0 -44
  163. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/references/issue_type_mapping.json +0 -0
  164. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/references/query_reference.md +0 -0
  165. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/compat.py +0 -0
  166. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/create_card_cli.py +0 -0
  167. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/icafe/__init__.py +0 -0
  168. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/logger.py +0 -0
  169. /package/comate-engine/assets/skills/{smart-commit → auto-commit-comate}/scripts/recognize_card_cli.py +0 -0
@@ -0,0 +1,164 @@
1
+ # 错误处理参考
2
+
3
+ 本文档详细说明 icafe-cli 的错误处理机制、退出码、错误码,以及各命令特有的错误场景。
4
+
5
+ ---
6
+
7
+ ## CLI 退出码
8
+
9
+ | 退出码 | 含义 | 触发场景 |
10
+ |--------|------|----------|
11
+ | 0 | 成功 | 命令正常执行完毕 |
12
+ | 1 | 认证失败或 Cobra 通用错误 | Token 无效/过期 (`PersistentPreRun`);**缺少必需 flag、未知子命令、用法错误** 等 Cobra 在 `Execute()` 里返回的错误(与退出码 2 区分见下) |
13
+ | 2 | `exitWithError` 本地校验 | 仅由 CLI 显式 `exitWithError` 触发,例如 `card update` 未提供任何修改项、`history`/`status-changes` 序列号格式非法或超过个数上限 |
14
+ | 4 | API 调用失败 | 服务端返回 HTTP 非 2xx 状态码 |
15
+
16
+ **说明**: Cobra 对「未传必填 flag」类问题走 `Execute()` 错误路径,进程退出码为 **1**,不是 2。退出码 **2** 只对应代码里主动输出的 JSON 校验错误(`{"error":"...","message":"..."}` 到 stderr)。
17
+
18
+ ---
19
+
20
+ ## 两种错误响应机制
21
+
22
+ iCafe 后端有两套错误返回机制,**agent 必须同时处理**:
23
+
24
+ ### 1. HTTP 错误 (非 2xx 状态码)
25
+
26
+ CLI 会拦截并输出到 stderr,退出码 4。格式化为 JSON:
27
+
28
+ ```json
29
+ {"error":"http_404","message":"资源不存在...","status":404,"traceId":"xxx","requestId":"xxx","body":"原始响应"}
30
+ ```
31
+
32
+ | HTTP 状态码 | 含义 | 常见触发场景 |
33
+ |-------------|------|-------------|
34
+ | 400 | 请求参数错误 | IQL 语法错误、max-records 超过 100 |
35
+ | 401 | 认证失败 | Token 无效或已过期 |
36
+ | 403 | 权限不足 | 当前用户无权操作该空间或卡片 |
37
+ | 404 | 资源不存在 | space 或 sequence 不正确 |
38
+ | 500 | 服务端异常 | 字段值不合法、状态流转违规、内部错误 |
39
+
40
+ ### 2. 业务错误 (HTTP 200 + 业务层失败)
41
+
42
+ CLI **不会拦截**,直接输出到 stdout。即使操作失败,后端也可能返回 HTTP 200。
43
+
44
+ ```json
45
+ {"status": 304, "message": "The space required does not exist."}
46
+ ```
47
+
48
+ **不同命令的成功标识字段和成功值不同**,agent 必须根据具体命令检查对应字段:
49
+
50
+ | 命令 | 成功标识字段 | 成功值 |
51
+ |------|-------------|--------|
52
+ | `card get`, `card update`, `card query` | `code` | `200` |
53
+ | `devinfo card`, `plan update-date` | `status` | `0` |
54
+ | `ai-pre-review start/result`, `ai-codegen start/result` | `status` | `"OK"` (字符串,macross BaseResponse 格式,数据在 `data` 字段中) |
55
+ | 其他所有命令 | `status` | `200` |
56
+
57
+ 简便做法: 同时检查 `code` 和 `status`,值为 `200` 或 `0` 即为成功,否则为业务失败。
58
+
59
+ ---
60
+
61
+ ## 业务错误码速查表
62
+
63
+ | 业务错误码 | 含义 | 常见触发命令 | 建议处理方式 |
64
+ |-----------|------|-------------|-------------|
65
+ | 100 | 认证用户名或密码错误 | 所有命令 | 检查 Token 是否有效 |
66
+ | 101 | 无权限 | 所有命令 | 告知用户联系空间管理员。评论更新时可能是在编辑他人评论 |
67
+ | 200 | 成功 | — | 正常处理 |
68
+ | 304 | 空间不存在 | 所有带 `--space` 的命令 | 用 `space latest` 确认正确的 prefixCode |
69
+ | 306 | 卡片类型不存在 | card create | 用 `space issue-types` 确认可用类型 (注意区分大小写) |
70
+ | 401 | 字段名或值不合法 | card create, card update | 用 `space type-fields` 确认字段名和可选值 |
71
+ | 404 | 卡片不存在 | card get, current-status | 核实 sequence 是否正确 |
72
+ | 601 | 参数错误 | 多个命令 | 根据 message 修正参数 |
73
+ | 603 | 批量查询超限 | devinfo card | 每次最多 100 个序列号 |
74
+ | 704 | 用户不存在 | space latest, card create (--assignee) | 确认用户名是否正确 (邮箱前缀) |
75
+ | 901 | 数据量过大 | card history, status-changes | 每次最多 50 个序列号 |
76
+ | 902 | 未知错误 | 所有命令 | 检查参数后重试,如持续失败告知用户 |
77
+ | 1011 | IQL 解析失败 | card query | 检查 IQL 语法是否正确 |
78
+
79
+ ---
80
+
81
+ ## 各命令特有的错误场景
82
+
83
+ ### card create
84
+
85
+ | 错误 | 原因 | 解决方案 |
86
+ |------|------|----------|
87
+ | 601 | 缺少必填字段 | 用 `space type-fields` 查询必填项后补充 |
88
+ | 304 | 空间不存在 | 确认 `--space` 值 |
89
+ | 101 | 无创建权限 | 告知用户 |
90
+ | 306 | `--type` 值不存在 (区分大小写) | 用 `space issue-types` 确认 |
91
+ | 704 | `--assignee` 用户不存在 | 确认用户名 |
92
+
93
+ ### card update
94
+
95
+ | 错误 | 原因 | 解决方案 |
96
+ |------|------|----------|
97
+ | HTTP 500 + `"流程状态不存在"` | 目标状态名在该卡片类型中不存在 | 用 `space type-statuses` 确认合法状态名 |
98
+ | HTTP 500 + `"无法流转到该流程状态"` | 当前状态不允许直接流转到目标状态 | 使用 `--no-check-status` 重试 |
99
+ | HTTP 500 + `"无法到达该流程状态,还有必填字段没有填写: fieldName"` | 状态流转要求填写额外必填字段 | 在 `--fields` 中补充 |
100
+ | HTTP 500 + `"field value error : 字段名=值"` | 字段值不在可选项中 | 用 `space type-fields` 查询合法值 |
101
+ | HTTP 500 | 标题为空 | 标题不允许设为空字符串 |
102
+ | HTTP 403 | 无编辑权限 | 告知用户联系管理员 |
103
+ | HTTP 404 | 空间或卡片不存在 | 核实 space 和 sequence |
104
+
105
+ ### card query
106
+
107
+ | 错误 | 原因 | 解决方案 |
108
+ |------|------|----------|
109
+ | HTTP 400 | IQL 语法错误 | 检查 IQL 表达式 |
110
+ | HTTP 400 | max-records 超过 100 | 限制在 100 以内 |
111
+
112
+ ### comment create / get
113
+
114
+ | 错误 | 原因 | 解决方案 |
115
+ |------|------|----------|
116
+ | 601 + "card is not exist!" | 卡片不存在 | 核实 sequence |
117
+ | 304 | 空间不存在 | 核实 space |
118
+
119
+ ### comment update
120
+
121
+ | 错误 | 原因 | 解决方案 |
122
+ |------|------|----------|
123
+ | 601 + "comment is not exist!" | 评论不存在或已删除 | 用 `comment get` 确认 |
124
+ | 101 + "current user can not edit other's comment" | 不能编辑他人评论 | 只能编辑自己的评论 |
125
+
126
+ ### space type-fields
127
+
128
+ | 错误 | 原因 | 解决方案 |
129
+ |------|------|----------|
130
+ | 601 | 卡片类型在该空间不存在 | 用 `space issue-types` 确认 |
131
+
132
+ ### plan create
133
+
134
+ | 错误 | 原因 | 解决方案 |
135
+ |------|------|----------|
136
+ | 601 + "startDate must before endDate" | 结束日期早于开始日期 | 修正日期 |
137
+ | 601 + "所属计划不能包含特殊字符" | 名称含 `\|,<>()/\"` | 移除特殊字符 |
138
+ | 601 + "父计划不存在!" | `--parent` 路径不正确 | 用 `plan list` 确认 |
139
+
140
+ ### plan update-date
141
+
142
+ | 错误 | 原因 | 解决方案 |
143
+ |------|------|----------|
144
+ | 601 + "this planBox not exist!" | 计划 ID 不存在 | 用 `plan list` 确认 |
145
+ | 601 + "startDate must before endDate" | 日期范围不合法 | 修正日期 |
146
+
147
+ ### devinfo card
148
+
149
+ | 错误 | 原因 | 解决方案 |
150
+ |------|------|----------|
151
+ | 603 | 序列号数量超过 100 个 | 分批查询 |
152
+
153
+ ### devinfo active-cards
154
+
155
+ | 错误 | 原因 | 解决方案 |
156
+ |------|------|----------|
157
+ | "结束时间不能在开始时间前" | end-time 早于 start-time | 修正时间 |
158
+ | "page 参数不能小于1" | 页码 < 1 | 设置 >= 1 |
159
+
160
+ ### card history / status-changes
161
+
162
+ | 错误 | 原因 | 解决方案 |
163
+ |------|------|----------|
164
+ | 901 | 序列号超过 50 个 | CLI 层已做前置校验 |
@@ -0,0 +1,201 @@
1
+ # Git 提交自动绑定卡片工作流(零交互版)
2
+
3
+ Git 提交/发起评审时,自动为代码变更绑定 iCafe 卡片。**核心原则: 全自动决策,结合上下文智能判断,不与用户交互,直接给出结果。**
4
+
5
+ **⚠️ 严禁跳过 smart-find 直接建卡!必须先搜索已有卡片,确认没有可复用的卡片后才能新建。**
6
+
7
+ ---
8
+
9
+ ## 设计理念
10
+
11
+ 1. **必须先搜后建**: **禁止跳过 smart-find 直接创建卡片**。即使 git log 中有空间信息,也必须先调 smart-find 查找已有卡片。只有确认所有已有卡片都不相关时,才新建
12
+ 2. **结合上下文判断**: 每一步决策都要结合 git diff 内容、分支名、commit message、仓库名等上下文,不能机械地"选第一个"
13
+ 3. **优先复用已有卡片**: 先从 smart-find 的活跃卡片中找最相关的,找不到再建
14
+ 4. **找不到就建**: 新建时结合 git log 历史和 smart-find 统计确定空间和类型
15
+ 5. **先做后说**: 直接给出结果 + 简短解释,不问问题
16
+ 6. **只在极端情况下才问**: 完全无法判断空间时才询问
17
+
18
+ ## Phase 1: 收集上下文信号(纯本地,零 API)
19
+
20
+ 并行执行以下本地操作,收集所有可用信号:
21
+
22
+ ```bash
23
+ git log --oneline -20 # 历史提交中的卡片绑定
24
+ git rev-parse --abbrev-ref HEAD # 当前分支名
25
+ git remote get-url origin # 仓库 URL
26
+ git diff --cached --stat # 本次变更的文件列表
27
+ ```
28
+
29
+ 从结果中提取:
30
+
31
+ | 信号 | 来源 | 示例 |
32
+ |------|------|------|
33
+ | 历史绑定记录 | git log | `cloud-iCafe-22210 [Task] 智能预审支持LR` |
34
+ | 分支名 | git branch | `feature/smart-find` |
35
+ | 仓库关键词 | git remote | `baidu/icafe/luigi-service` → "luigi", "icafe" |
36
+ | 变更内容摘要 | git diff | 修改了哪些文件、哪些模块 |
37
+ | commit message | 用户输入 | "修复登录白屏问题" |
38
+
39
+ **这些信号在后续每一步都要参考,不是只用一次。**
40
+
41
+ ## Phase 2: 调 smart-find 搜索已有卡片(必须执行,不可跳过)
42
+
43
+ **⚠️ 这一步是必须的!不管 git log 里有没有空间信息,都必须先调 smart-find 查找已有卡片。**
44
+
45
+ ```bash
46
+ icafe-cli card smart-find
47
+ ```
48
+
49
+ 返回:
50
+ - `cards`: 用户活跃卡片列表(含 space、sequence、title、status、type、lastModified 等)
51
+ - `stats.bySpace`: 各空间的卡片数量分布
52
+ - `stats.bySpaceType`: 各空间+类型的数量分布
53
+
54
+ ## Phase 3: 从活跃卡片中找最相关的(必须在 Phase 2 之后)
55
+
56
+ **Phase 2 的 smart-find 结果 + Phase 1 的 git log 历史卡片序列号,综合分析找到最相关的卡片。同时,如果 git log 中有该空间的卡片序列号,也可以用 `card get --brief` 批量查询验证这些卡片是否仍然活跃。**
57
+
58
+ 判断维度(综合考虑,不是单一条件):
59
+
60
+ | 维度 | 高相关性 | 低相关性 |
61
+ |------|---------|---------|
62
+ | 标题与变更内容 | 卡片标题的关键词与 commit message、分支名、diff 文件名有交集 | 完全无关 |
63
+ | 空间与仓库 | 卡片空间名和仓库关键词有关联 | 完全不同的业务领域 |
64
+ | git log 历史 | 该卡片的 `{space}-{sequence}` 出现在近期 git log 中 | 从未出现 |
65
+ | 卡片状态 | 未结束(开发中、待测试等) | 已完成、已关闭 |
66
+ | 卡片类型 | 类型与变更性质匹配(bug fix → Bug,新功能 → Story) | 不匹配 |
67
+ | 时间 | 最近修改过 | 很久没动 |
68
+
69
+ **决策**:
70
+ - 找到明确相关的卡片 → 直接使用,**跳到 Phase 6**
71
+ - 多张可能相关但不确定哪个最好 → 选综合相关性最高的那张
72
+ - 所有卡片都不相关(如 smart-find 返回的卡片全是其他项目的) → **进入 Phase 4 新建**
73
+ - smart-find 无结果 → **进入 Phase 4 新建**
74
+
75
+ ## Phase 4: 确定新建卡片的空间
76
+
77
+ 走到这一步说明没有合适的已有卡片。需要确定空间和类型来新建。
78
+
79
+ **结合上下文从以下信息源推断空间**:
80
+
81
+ - **git log 历史绑定的空间**: 当前仓库历史提交绑定过哪些空间,这是最强信号(说明这个仓库就在这个空间管理)
82
+ - **smart-find 的 stats.bySpace**: 用户活跃的空间分布
83
+ - **仓库名与空间名的关联**: git remote URL 的关键词与空间名做匹配
84
+
85
+ **判断逻辑**(结合上下文综合判断,不是机械选第一个):
86
+ - git log 和 smart-find 指向同一个空间 → 高置信度,直接用
87
+ - git log 有空间但 smart-find 最活跃的是另一个 → 以 git log 为准(git log 是当前仓库的上下文)
88
+ - git log 无历史(新仓库) → 结合仓库关键词和 smart-find 空间名匹配
89
+ - 完全无法判断 → **此时才询问用户**(极少发生)
90
+
91
+ ## Phase 5: 确定新建卡片的类型
92
+
93
+ **结合上下文从以下信息源推断类型**:
94
+
95
+ - **git log 历史绑定的类型标记** `[Task]`/`[Bug]` → 该空间已验证可绑定代码的类型
96
+ - **smart-find 该空间的 stats.bySpaceType** → 该空间最常用的类型
97
+ - **分支名模式** → `bugfix/*` → Bug, `feature/*` → Story, `task/*` → Task
98
+ - **commit message / diff 关键词** → "修复" → Bug, "新增" → Story, "优化" → Task
99
+
100
+ **判断逻辑**(结合上下文综合判断):
101
+ - git log 历史类型 + 分支名/关键词指向一致 → 高置信度
102
+ - git log 无历史类型 → 结合分支名 + smart-find 类型分布 + 变更内容判断
103
+ - 多个信号冲突 → 选 git log 历史类型(已验证可绑定)
104
+ - 完全无信号 → 用 `Task`(最通用,几乎所有空间都支持绑定代码)
105
+
106
+ ## Phase 5.5: 创建卡片
107
+
108
+ ```bash
109
+ icafe-cli card create --space <space> --title "<title>" --type <type>
110
+ ```
111
+
112
+ - **标题**: 优先用 commit message 第一行(去掉已有的 `{space}-{seq}` 前缀),其次用分支名转可读文本
113
+ - **负责人**: 不传 `--assignee`,CLI 默认自动将当前登录用户设为负责人
114
+ - **其他字段**: 不传。自动绑定场景下标题+类型+负责人足够,优先级和自定义字段可后续补充
115
+
116
+ ## Phase 6: 输出结果
117
+
118
+ 直接输出,不问用户确认。
119
+
120
+ **commit message 必须严格遵循以下格式**:
121
+ ```
122
+ {space}-{sequence} [{type}] {title}
123
+ ```
124
+ - `{space}`: 空间 prefixCode
125
+ - `{sequence}`: 卡片序列号
126
+ - `[{type}]`: 方括号包裹的卡片类型,**不能省略**
127
+ - `{title}`: 卡片标题或 commit 描述
128
+
129
+ 示例: `DevOps-iScan-36730 [Bug] 修复FixedSplitter构造函数chunkLines字段赋值错误`
130
+
131
+ **复用已有卡片**:
132
+ ```
133
+ 已找到关联卡片: cloud-iCafe-22210 [Task] 智能预审结果支持发起LR
134
+ (匹配原因: 标题与分支名 feature/smart-preview 相关,且为该空间最近活跃的开发中卡片)
135
+
136
+ commit message:
137
+ cloud-iCafe-22210 [Task] 智能预审结果支持发起LR
138
+
139
+ 卡片链接: https://console.cloud.baidu-int.com/devops/icafe/issue/cloud-iCafe-22210/show
140
+ ```
141
+
142
+ **自动新建卡片**:
143
+ ```
144
+ 未找到合适的已有卡片,已自动创建: cloud-iCafe-22235 [Task] smart-find 功能实现
145
+ (空间 cloud-iCafe 来自 git 历史绑定记录,类型 Task 为该空间最常用的可绑定类型)
146
+
147
+ commit message:
148
+ cloud-iCafe-22235 [Task] smart-find 功能实现
149
+
150
+ 卡片链接: https://console.cloud.baidu-int.com/devops/icafe/issue/cloud-iCafe-22235/show
151
+ ```
152
+
153
+ > **关键**: 输出中附带简短的匹配/创建原因说明,让用户知道为什么选了这张卡片或为什么这样创建。
154
+
155
+ ## 决策流程图
156
+
157
+ ```
158
+ git commit 需要绑定卡片
159
+
160
+ ├─ Phase 1: 收集本地信号 (零 API)
161
+ │ git log / branch / remote / diff / commit message
162
+
163
+ ├─ Phase 2: card smart-find (1次 API,有缓存)
164
+ │ → 活跃卡片列表 + 空间/类型统计
165
+
166
+ ├─ Phase 3: 从活跃卡片中找最相关的
167
+ │ 结合上下文判断每张卡片的相关性:
168
+ │ 标题匹配 + 空间匹配 + git log 出现过 + 未结束 + 类型合理
169
+ │ ├─ 找到相关卡片 → Phase 6 输出
170
+ │ └─ 都不相关 / 无结果 → Phase 4 新建
171
+
172
+ ├─ Phase 4: 确定空间 (结合上下文判断)
173
+ │ git log 空间 + smart-find 空间 + 仓库关键词匹配
174
+ │ └─ 极端无法判断 → 才问用户
175
+
176
+ ├─ Phase 5: 确定类型 (结合上下文判断)
177
+ │ git log 类型 + smart-find 类型统计 + 分支名 + 关键词
178
+ │ └─ 无法判断 → 兜底 Task
179
+
180
+ ├─ Phase 5.5: card create (负责人自动设为当前用户)
181
+
182
+ └─ Phase 6: 直接输出结果
183
+ commit message 格式: {space}-{sequence} [{type}] {title}
184
+ 卡片 URL + 匹配/创建原因
185
+ ```
186
+
187
+ ## API 调用统计
188
+
189
+ | 场景 | 调用次数 | 明细 |
190
+ |------|---------|------|
191
+ | smart-find 有匹配卡片 | 1 次 | smart-find (缓存) |
192
+ | smart-find 无匹配 + git log 有 sequence | 2 次 | smart-find + card get |
193
+ | 需要新建 | 2 次 | smart-find + card create |
194
+
195
+ ## 核心原则重申
196
+
197
+ 1. **每一步决策都结合上下文**: 不是"选 stats 第一个",而是综合 git diff 内容、分支名、commit message、仓库名来判断
198
+ 2. **smart-find 优先**: 先看有没有能直接用的卡片,再考虑新建
199
+ 3. **git log 是空间/类型的最强信号**: 因为它代表"这个仓库历史上在哪个空间用什么类型绑定过代码"
200
+ 4. **输出时解释原因**: 让用户知道 Agent 的判断依据,如果判断错了用户能及时纠正
201
+ 5. **负责人默认当前用户**: 新建卡片不需要指定 `--assignee`,CLI 自动处理