@geminix/gxpm 0.1.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 (299) hide show
  1. package/AGENTS.md +148 -0
  2. package/CANON.md +53 -0
  3. package/CLAUDE.md +60 -0
  4. package/CONTEXT.md +49 -0
  5. package/DEBUG.md +59 -0
  6. package/ISSUE_CONTEXT.md +25 -0
  7. package/README.md +143 -0
  8. package/VERSION +1 -0
  9. package/agents/cleanup-auditor/cleanup-auditor.md +56 -0
  10. package/agents/grill-master.md +26 -0
  11. package/agents/implementer.md +32 -0
  12. package/agents/review-army/accessibility-reviewer.md +54 -0
  13. package/agents/review-army/code-quality-reviewer.md +54 -0
  14. package/agents/review-army/security-reviewer.md +56 -0
  15. package/agents/review-army/spec-compliance-reviewer.md +51 -0
  16. package/agents/review-army/test-reviewer.md +55 -0
  17. package/agents/reviewer.md +59 -0
  18. package/agents/ship-audit-army/docs-auditor.md +53 -0
  19. package/agents/ship-audit-army/performance-auditor.md +52 -0
  20. package/agents/ship-audit-army/security-auditor.md +52 -0
  21. package/agents/specifier.md +55 -0
  22. package/agents/triage-officer.md +27 -0
  23. package/bin/gxpm +17 -0
  24. package/bin/gxpm-browser +17 -0
  25. package/bin/gxpm-config +15 -0
  26. package/bin/gxpm-eval +13 -0
  27. package/bin/gxpm-global-discover +15 -0
  28. package/bin/gxpm-init +38 -0
  29. package/bin/gxpm-investigate +194 -0
  30. package/bin/gxpm-uninstall +15 -0
  31. package/bin/gxpm-update-check +165 -0
  32. package/commands/build.md +40 -0
  33. package/commands/help.md +53 -0
  34. package/commands/plan.md +34 -0
  35. package/commands/refine.md +46 -0
  36. package/commands/review.md +34 -0
  37. package/commands/ship.md +37 -0
  38. package/core/ac-check.ts +20 -0
  39. package/core/agent-runtime.ts +363 -0
  40. package/core/artifact-validator.ts +151 -0
  41. package/core/artifacts.ts +313 -0
  42. package/core/autopilot.ts +250 -0
  43. package/core/capabilities.ts +779 -0
  44. package/core/checkpoint.ts +370 -0
  45. package/core/cleanup.ts +32 -0
  46. package/core/command-probe.ts +82 -0
  47. package/core/config.ts +533 -0
  48. package/core/contracts/behavior-spec.schema.ts +38 -0
  49. package/core/contracts/converter.ts +61 -0
  50. package/core/contracts/host.ts +43 -0
  51. package/core/converters/converter.ts +93 -0
  52. package/core/converters/index.ts +8 -0
  53. package/core/converters/managed-artifact.ts +119 -0
  54. package/core/converters/parser.ts +159 -0
  55. package/core/converters/template-renderer.ts +35 -0
  56. package/core/converters/writer.ts +61 -0
  57. package/core/dag-executor.ts +426 -0
  58. package/core/dag-loader.ts +292 -0
  59. package/core/dag-schemas.ts +150 -0
  60. package/core/dispatch.ts +125 -0
  61. package/core/evidence.ts +148 -0
  62. package/core/gate.ts +269 -0
  63. package/core/hook-engine.ts +566 -0
  64. package/core/host-probe.ts +64 -0
  65. package/core/implement.ts +16 -0
  66. package/core/isolation-errors.ts +174 -0
  67. package/core/isolation-resolver.ts +921 -0
  68. package/core/issue-context.ts +381 -0
  69. package/core/issue-readiness.ts +457 -0
  70. package/core/issue-sync.ts +427 -0
  71. package/core/issues.ts +132 -0
  72. package/core/land.ts +108 -0
  73. package/core/orchestrator.ts +54 -0
  74. package/core/phase-artifact.ts +32 -0
  75. package/core/phase-gates.ts +130 -0
  76. package/core/phase-rewind.ts +94 -0
  77. package/core/plan-lint.ts +61 -0
  78. package/core/plan.ts +77 -0
  79. package/core/port-allocation.ts +50 -0
  80. package/core/pr-check.ts +15 -0
  81. package/core/preset-system/preset-resolver.ts +221 -0
  82. package/core/project-init-status.ts +127 -0
  83. package/core/qa.ts +15 -0
  84. package/core/resilience.ts +165 -0
  85. package/core/runs.ts +288 -0
  86. package/core/safe-path.test.ts +80 -0
  87. package/core/safe-path.ts +60 -0
  88. package/core/sdd-gate.test.ts +98 -0
  89. package/core/sdd-gate.ts +134 -0
  90. package/core/self-review.ts +62 -0
  91. package/core/session.ts +70 -0
  92. package/core/ship.ts +86 -0
  93. package/core/specify.ts +173 -0
  94. package/core/state.ts +1002 -0
  95. package/core/template-engine.ts +152 -0
  96. package/core/template-resolver.test.ts +70 -0
  97. package/core/template-resolver.ts +156 -0
  98. package/core/triage.ts +26 -0
  99. package/core/verify.ts +15 -0
  100. package/core/wiki-native.ts +2423 -0
  101. package/core/wiki.ts +27 -0
  102. package/core/workflow-event-emitter.ts +163 -0
  103. package/core/workflows/engine.ts +273 -0
  104. package/core/workflows/expressions.ts +76 -0
  105. package/core/workflows/index.ts +38 -0
  106. package/core/workflows/steps/command.ts +43 -0
  107. package/core/workflows/steps/gate.ts +47 -0
  108. package/core/workflows/steps/gxpm.ts +44 -0
  109. package/core/workflows/steps/linear.ts +31 -0
  110. package/core/workflows/steps/shell.ts +65 -0
  111. package/core/workflows/types.ts +62 -0
  112. package/core/workspace-runtime.ts +227 -0
  113. package/core/worktree-init-steps.ts +647 -0
  114. package/core/worktree-init.ts +330 -0
  115. package/core/worktree-owner.ts +143 -0
  116. package/docs/GXPM_VERIFY.md +98 -0
  117. package/docs/INSTALL_FOR_AGENTS.md +113 -0
  118. package/docs/README.md +57 -0
  119. package/docs/adr/adr-005-multi-platform-skill-converter.md +72 -0
  120. package/docs/agents/domain.md +30 -0
  121. package/docs/agents/issue-tracker.md +30 -0
  122. package/docs/agents/triage-labels.md +32 -0
  123. package/docs/architecture/gxpm-architecture-diagram.md +265 -0
  124. package/docs/architecture/gxpm-current-architecture.md +175 -0
  125. package/docs/architecture/gxpm-current-flow.md +278 -0
  126. package/docs/architecture/gxpm-replacement-architecture.md +211 -0
  127. package/docs/architecture/gxpm-target-architecture.md +449 -0
  128. package/docs/architecture/gxpm-v0-contract.md +311 -0
  129. package/docs/architecture/layered-workflow-boundaries.md +193 -0
  130. package/docs/architecture/preset-system.md +126 -0
  131. package/docs/architecture/scaffold-northstar.md +23 -0
  132. package/docs/brainstorms/2026-05-14-bdd-then-tdd-design.md +320 -0
  133. package/docs/brainstorms/README.md +22 -0
  134. package/docs/brainstorms/docs-knowledge-system-requirements.md +29 -0
  135. package/docs/governance/beta-skill-promotion.md +39 -0
  136. package/docs/governance/development-contract.md +144 -0
  137. package/docs/governance/gherkin-style.md +90 -0
  138. package/docs/governance/host-adapter.md +56 -0
  139. package/docs/governance/skill-authoring.md +87 -0
  140. package/docs/governance/skill-testing.md +356 -0
  141. package/docs/governance/template-authoring.md +53 -0
  142. package/docs/migrations/v0.2.md +51 -0
  143. package/docs/plans/README.md +23 -0
  144. package/docs/plans/bdd-then-tdd-plan.md +1767 -0
  145. package/docs/plans/docs-knowledge-system-plan.md +31 -0
  146. package/docs/plans/spec-kit-sdd-adoption-plan.md +305 -0
  147. package/docs/research/agents-md-best-practices.md +207 -0
  148. package/docs/research/archon-study.md +351 -0
  149. package/docs/research/claude-hooks-study.md +440 -0
  150. package/docs/research/codex-hooks-study.md +624 -0
  151. package/docs/research/everything-claude-code-study.md +252 -0
  152. package/docs/research/from-skills-to-layered-workflow.md +322 -0
  153. package/docs/research/gsd-study.md +69 -0
  154. package/docs/research/kimi-hooks-study.md +274 -0
  155. package/docs/research/mattpocock-skills-comparison.md +429 -0
  156. package/docs/research/mattpocock-skills-study.md +275 -0
  157. package/docs/research/oh-my-codex-study.md +279 -0
  158. package/docs/research/perplexity-agent-skills-design.md +168 -0
  159. package/docs/research/pmc-gstack-skill-study.md +122 -0
  160. package/docs/research/spec-kit-study.md +224 -0
  161. package/docs/research/superpowers-study.md +209 -0
  162. package/docs/roadmap/initial-roadmap.md +53 -0
  163. package/docs/solutions/README.md +45 -0
  164. package/docs/solutions/artifact-nesting-recovery.md +58 -0
  165. package/docs/solutions/session-context-restore-practice.md +67 -0
  166. package/docs/solutions/workflow/version-drift-recovery.md +49 -0
  167. package/docs/solutions/worktree-gate-recovery.md +62 -0
  168. package/docs/specs/README.md +28 -0
  169. package/docs/specs/claude.md +45 -0
  170. package/docs/specs/codex.md +44 -0
  171. package/docs/specs/cursor.md +44 -0
  172. package/hosts/adapters/claude.ts +29 -0
  173. package/hosts/adapters/codex.ts +27 -0
  174. package/hosts/adapters/cursor.ts +27 -0
  175. package/hosts/adapters/kimi.ts +27 -0
  176. package/hosts/claude.ts +23 -0
  177. package/hosts/codex.ts +26 -0
  178. package/hosts/cursor.ts +19 -0
  179. package/hosts/index.ts +33 -0
  180. package/hosts/registry.test.ts +52 -0
  181. package/hosts/registry.ts +57 -0
  182. package/hosts/schema.ts +58 -0
  183. package/package.json +52 -0
  184. package/scripts/browser.ts +185 -0
  185. package/scripts/cleanup.ts +142 -0
  186. package/scripts/commands/artifact.ts +115 -0
  187. package/scripts/commands/autopilot.ts +143 -0
  188. package/scripts/commands/capability.ts +57 -0
  189. package/scripts/commands/config.ts +69 -0
  190. package/scripts/commands/dag.ts +126 -0
  191. package/scripts/commands/feedback.ts +123 -0
  192. package/scripts/commands/gate.ts +291 -0
  193. package/scripts/commands/helpers.ts +126 -0
  194. package/scripts/commands/hook.ts +66 -0
  195. package/scripts/commands/init.ts +515 -0
  196. package/scripts/commands/issue.ts +825 -0
  197. package/scripts/commands/phase.ts +61 -0
  198. package/scripts/commands/preset.ts +159 -0
  199. package/scripts/commands/runtime.ts +199 -0
  200. package/scripts/commands/specify.ts +71 -0
  201. package/scripts/commands/upgrade.ts +243 -0
  202. package/scripts/commands/verify.ts +183 -0
  203. package/scripts/commands/wiki.ts +242 -0
  204. package/scripts/commands/workflow.ts +131 -0
  205. package/scripts/dev-skill.ts +55 -0
  206. package/scripts/discover-skills.ts +116 -0
  207. package/scripts/doctor.ts +410 -0
  208. package/scripts/dogfood-check.ts +125 -0
  209. package/scripts/eval-functional.ts +218 -0
  210. package/scripts/eval.ts +246 -0
  211. package/scripts/gen-skill-docs.ts +201 -0
  212. package/scripts/global-discover.ts +217 -0
  213. package/scripts/governance-check.ts +75 -0
  214. package/scripts/gxpm-check.ts +12 -0
  215. package/scripts/gxpm.ts +216 -0
  216. package/scripts/host-config.ts +62 -0
  217. package/scripts/install-claude-hooks.ts +138 -0
  218. package/scripts/install-codex-hooks.ts +271 -0
  219. package/scripts/install-hooks.ts +128 -0
  220. package/scripts/install-kimi-hooks.ts +92 -0
  221. package/scripts/install-skill.ts +184 -0
  222. package/scripts/phase-artifact-commands.ts +100 -0
  223. package/scripts/post-land-sync.ts +46 -0
  224. package/scripts/scaffold-check.ts +85 -0
  225. package/scripts/skill-naming-check.ts +78 -0
  226. package/scripts/skill-structure-check.ts +157 -0
  227. package/scripts/skills-lock-check.ts +60 -0
  228. package/scripts/sync-markdown-artifacts.ts +172 -0
  229. package/scripts/uninstall.ts +162 -0
  230. package/scripts/version.ts +47 -0
  231. package/scripts/wait-pr-ready.ts +407 -0
  232. package/skills/gxpm/SKILL.md +485 -0
  233. package/skills/gxpm/SKILL.md.tmpl +422 -0
  234. package/skills/gxpm/references/CANON.md +53 -0
  235. package/skills/gxpm/references/key-rules.md +130 -0
  236. package/skills/gxpm-architecture/SKILL.md +106 -0
  237. package/skills/gxpm-architecture/references/DEEPENING.md +37 -0
  238. package/skills/gxpm-architecture/references/INTERFACE-DESIGN.md +44 -0
  239. package/skills/gxpm-autopilot/SKILL.md +116 -0
  240. package/skills/gxpm-autopilot/SKILL.md.tmpl +107 -0
  241. package/skills/gxpm-browser/SKILL.md +105 -0
  242. package/skills/gxpm-browser/SKILL.md.tmpl +41 -0
  243. package/skills/gxpm-browser/references/commands.md +43 -0
  244. package/skills/gxpm-browser/references/evidence-path.md +20 -0
  245. package/skills/gxpm-build/SKILL.md +78 -0
  246. package/skills/gxpm-cleanup/SKILL.md +76 -0
  247. package/skills/gxpm-debug-issue/SKILL.md +39 -0
  248. package/skills/gxpm-diagnose/SKILL.md +220 -0
  249. package/skills/gxpm-diagnose/SKILL.md.tmpl +31 -0
  250. package/skills/gxpm-diagnose/references/feedback-loop.md +34 -0
  251. package/skills/gxpm-diagnose/references/feedback-loops.md +43 -0
  252. package/skills/gxpm-diagnose/references/phases.md +60 -0
  253. package/skills/gxpm-eval/SKILL.md +78 -0
  254. package/skills/gxpm-explore-codebase/SKILL.md +36 -0
  255. package/skills/gxpm-explore-codebase/scripts/summarize-communities.ts +51 -0
  256. package/skills/gxpm-feedback/SKILL.md +122 -0
  257. package/skills/gxpm-grill/SKILL.md +159 -0
  258. package/skills/gxpm-grill/SKILL.md.tmpl +77 -0
  259. package/skills/gxpm-grill/references/documentation-templates.md +56 -0
  260. package/skills/gxpm-grill/references/process.md +25 -0
  261. package/skills/gxpm-handoff/SKILL.md +112 -0
  262. package/skills/gxpm-hygiene/SKILL.md +69 -0
  263. package/skills/gxpm-implementer/SKILL.md +142 -0
  264. package/skills/gxpm-implementer/SKILL.md.tmpl +141 -0
  265. package/skills/gxpm-linear/SKILL.md +282 -0
  266. package/skills/gxpm-linear/SKILL.md.tmpl +86 -0
  267. package/skills/gxpm-linear/references/commands.md +75 -0
  268. package/skills/gxpm-linear/references/workflows.md +120 -0
  269. package/skills/gxpm-planning/SKILL.md +134 -0
  270. package/skills/gxpm-prototype/SKILL.md +64 -0
  271. package/skills/gxpm-refactor-safely/SKILL.md +62 -0
  272. package/skills/gxpm-review-army/SKILL.md +117 -0
  273. package/skills/gxpm-review-changes/SKILL.md +36 -0
  274. package/skills/gxpm-setup/SKILL.md +101 -0
  275. package/skills/gxpm-specifier/SKILL.md +135 -0
  276. package/skills/gxpm-tdd/SKILL.md +187 -0
  277. package/skills/gxpm-tdd/references/interface-design.md +23 -0
  278. package/skills/gxpm-tdd/references/mocking.md +27 -0
  279. package/skills/gxpm-tdd/references/red-green-refactor.md +61 -0
  280. package/skills/gxpm-tdd/references/troubleshooting.md +28 -0
  281. package/skills/gxpm-tdd/references/workflow.md +50 -0
  282. package/skills/gxpm-tdd/testing-anti-patterns.tmpl +304 -0
  283. package/skills/gxpm-triage/SKILL.md +160 -0
  284. package/skills/gxpm-verify/SKILL.md +107 -0
  285. package/skills/gxpm-write-skill/SKILL.md +131 -0
  286. package/skills/gxpm-zoom-out/SKILL.md +69 -0
  287. package/skills/maintain-hygiene-skills-lock/SKILL.md +54 -0
  288. package/skills/maintain-hygiene-skills-lock/SKILL.md.tmpl +53 -0
  289. package/templates/constitution-template.md +63 -0
  290. package/templates/hooks/gxpm-commit-msg +16 -0
  291. package/templates/hooks/gxpm-post-checkout +19 -0
  292. package/templates/hooks/gxpm-post-commit +7 -0
  293. package/templates/hooks/gxpm-post-merge +29 -0
  294. package/templates/hooks/gxpm-pre-commit +39 -0
  295. package/templates/hooks/gxpm-pre-push +33 -0
  296. package/templates/plan-template.md.tmpl +46 -0
  297. package/templates/spec-template.md.tmpl +63 -0
  298. package/templates/specify-stub.tmpl +22 -0
  299. package/templates/tasks-template.md.tmpl +32 -0
@@ -0,0 +1,274 @@
1
+ # Kimi Code CLI Hooks 机制研究
2
+
3
+ > 研究日期:2026-05-04
4
+ > 源码来源:`/Users/x/.local/share/uv/tools/kimi-cli/lib/python3.13/site-packages/kimi_cli/hooks/`
5
+ > 版本:v1.40.0(2026-04-28)
6
+ > 状态:Beta(CHANGELOG 标注)
7
+
8
+ ---
9
+
10
+ ## 1. 配置格式
11
+
12
+ Kimi 的 hooks 配置在 **`~/.kimi/config.toml`** 的 `[[hooks]]` section 中:
13
+
14
+ ```toml
15
+ [[hooks]]
16
+ event = "SessionStart"
17
+ command = "/path/to/session-start.sh"
18
+ matcher = ""
19
+ timeout = 30
20
+
21
+ [[hooks]]
22
+ event = "UserPromptSubmit"
23
+ command = "/path/to/prompt-submit.sh"
24
+ matcher = "GXPM-[0-9]+"
25
+ timeout = 30
26
+
27
+ [[hooks]]
28
+ event = "PreToolUse"
29
+ command = "/path/to/pre-tool-use.sh"
30
+ matcher = "edit_file|write_file"
31
+ timeout = 10
32
+ ```
33
+
34
+ ### HookDef 字段
35
+
36
+ | 字段 | 类型 | 默认值 | 说明 |
37
+ |------|------|--------|------|
38
+ | `event` | `HookEventType` | — | 触发事件(13 种之一) |
39
+ | `command` | `string` | — | 执行的 shell 命令,接收 JSON stdin |
40
+ | `matcher` | `string` | `""` | 正则过滤模式,空字符串匹配所有 |
41
+ | `timeout` | `int` | `30` | 超时秒数,范围 1-600 |
42
+
43
+ ---
44
+
45
+ ## 2. 事件类型(13 种)
46
+
47
+ Kimi 支持 **13 个生命周期事件**,远超 Codex 的 3 个:
48
+
49
+ | 事件 | 触发时机 | matcher_value | 典型用途 |
50
+ |------|---------|---------------|---------|
51
+ | `SessionStart` | 会话启动(startup / resume) | `"startup"` / `"resume"` | 初始化、环境检测 |
52
+ | `SessionEnd` | 会话结束 | `""` | 清理、归档 |
53
+ | `UserPromptSubmit` | 用户提交 prompt | prompt 文本 | 关键词拦截、注入上下文(有限) |
54
+ | `Stop` | 正常停止 | `""` | 保存状态 |
55
+ | `StopFailure` | 停止失败 | error_type | 错误上报 |
56
+ | `PreToolUse` | 工具调用前 | tool_name | 权限控制、审计 |
57
+ | `PostToolUse` | 工具调用成功 | tool_name | 日志、后处理 |
58
+ | `PostToolUseFailure` | 工具调用失败 | tool_name | 错误处理 |
59
+ | `SubagentStart` | 子 Agent 启动 | agent_name | 监控、配额 |
60
+ | `SubagentStop` | 子 Agent 结束 | agent_name | 结果收集 |
61
+ | `PreCompact` | 上下文压缩前 | trigger | 保存关键信息 |
62
+ | `PostCompact` | 上下文压缩后 | trigger | 验证压缩结果 |
63
+ | `Notification` | 通知事件 | sink | 消息路由 |
64
+
65
+ ---
66
+
67
+ ## 3. 输入 JSON 格式
68
+
69
+ 所有事件都包含基础字段:
70
+
71
+ ```json
72
+ {
73
+ "hook_event_name": "SessionStart",
74
+ "session_id": "...",
75
+ "cwd": "/path/to/repo"
76
+ }
77
+ ```
78
+
79
+ 各事件的额外字段:
80
+
81
+ ### SessionStart
82
+ ```json
83
+ {
84
+ "source": "startup" // 或 "resume"
85
+ }
86
+ ```
87
+
88
+ ### UserPromptSubmit
89
+ ```json
90
+ {
91
+ "prompt": "用户输入的文本"
92
+ }
93
+ ```
94
+
95
+ ### PreToolUse / PostToolUse / PostToolUseFailure
96
+ ```json
97
+ {
98
+ "tool_name": "edit_file",
99
+ "tool_input": { ... },
100
+ "tool_call_id": "..."
101
+ }
102
+ ```
103
+
104
+ ### SubagentStart / SubagentStop
105
+ ```json
106
+ {
107
+ "agent_name": "coder",
108
+ "prompt": "...", // SubagentStart
109
+ "response": "..." // SubagentStop
110
+ }
111
+ ```
112
+
113
+ ---
114
+
115
+ ## 4. 执行语义
116
+
117
+ ### 4.1 并行执行
118
+
119
+ 同一事件的多个匹配 hooks **并行执行**(`asyncio.gather`)。
120
+
121
+ ### 4.2 Fail-Open
122
+
123
+ - 命令执行失败 → `allow`
124
+ - 超时 → `allow`(`timed_out: true`)
125
+ - 异常 → `allow`
126
+
127
+ **安全设计**:telemetry 失败不会丢弃 hook 结果,避免 security-critical hooks(如 PreToolUse block)被静默绕过。
128
+
129
+ ### 4.3 Block 机制
130
+
131
+ Kimi hooks 支持 **block/allow 决策**,这是 Codex hooks 不具备的能力:
132
+
133
+ | 方式 | 行为 |
134
+ |------|------|
135
+ | Exit code 2 | Block,reason 取 stderr |
136
+ | Exit 0 + JSON stdout | 解析 `hookSpecificOutput.permissionDecision: "deny"` |
137
+ | 其他 exit code | Allow |
138
+
139
+ Block 示例(shell):
140
+ ```bash
141
+ #!/bin/bash
142
+ INPUT=$(cat)
143
+ # ... 检查逻辑 ...
144
+ echo "敏感操作被拦截" >&2
145
+ exit 2
146
+ ```
147
+
148
+ Block 示例(JSON):
149
+ ```json
150
+ {
151
+ "hookSpecificOutput": {
152
+ "permissionDecision": "deny",
153
+ "permissionDecisionReason": "不允许修改 .env 文件"
154
+ }
155
+ }
156
+ ```
157
+
158
+ ### 4.4 去重
159
+
160
+ 同一 command 在同一事件中只执行一次(`seen_commands: set[str]`)。
161
+
162
+ ---
163
+
164
+ ## 5. 与 Codex Hooks 的关键差异
165
+
166
+ | 维度 | Kimi | Codex |
167
+ |------|------|-------|
168
+ | **配置文件** | `~/.kimi/config.toml` (`[[hooks]]`) | `.codex/hooks.json` |
169
+ | **事件数量** | 13 种 | 3 种(SessionStart, UserPromptSubmit, PreToolUse) |
170
+ | **Matcher 过滤** | ✅ 正则匹配 | ❌ 不支持 |
171
+ | **Block 机制** | ✅ exit 2 或 JSON deny | ❌ 不支持 |
172
+ | **上下文注入** | ❌ 不支持 | ✅ SessionStart 返回 `additionalContext` |
173
+ | **超时控制** | ✅ 可配 1-600s | ❌ 固定 600s |
174
+ | **执行模式** | 并行 + fail-open | 顺序?(未确认) |
175
+ | **Wire 支持** | ✅ HookRequest/HookResponse | ❌ 不支持 |
176
+ | **技能目录** | `.kimi/skills/` + 合并其他品牌 | `.codex/skills/` |
177
+
178
+ ### ⚠️ 关键发现:SessionStart 不能注入上下文
179
+
180
+ Codex 的 `SessionStart` hook 可以返回 JSON:
181
+ ```json
182
+ {"hookSpecificOutput": {"hookEventName": "SessionStart", "additionalContext": "..."}}
183
+ ```
184
+
185
+ Kimi 的 `SessionStart` hook **返回值被忽略**(`cli/__init__.py:641-651`)。它只能用于:
186
+ - 副作用(如写日志、触发后台任务)
187
+ - Block(`permissionDecision: deny`)
188
+
189
+ **这意味着 gxpm 的 Codex SessionStart 能力(注入 gxpm 版本信息、wiki 状态)在 Kimi 上无法直接复用。**
190
+
191
+ ---
192
+
193
+ ## 6. Wire 协议中的 Hooks
194
+
195
+ Kimi CLI 支持 **Wire 协议**(用于 VS Code 扩展、Web UI 等客户端),hooks 在 Wire 中有完整的事件流:
196
+
197
+ ### 服务端 → 客户端
198
+ - `HookTriggered`:hooks 开始执行
199
+ - `HookResolved`:hooks 执行完成(含 action, reason, duration_ms)
200
+ - `HookRequest`:请求客户端处理 hook(客户端订阅模式)
201
+
202
+ ### 客户端 → 服务端
203
+ - `HookResponse`:客户端决策(allow/block)
204
+
205
+ ### 客户端订阅
206
+
207
+ Wire 客户端可通过 `initialize` 订阅 hook 事件:
208
+ ```json
209
+ {
210
+ "hooks": [
211
+ {"id": "1", "event": "PreToolUse", "matcher": "edit_file", "timeout": 30}
212
+ ]
213
+ }
214
+ ```
215
+
216
+ ---
217
+
218
+ ## 7. CLI 命令
219
+
220
+ ```bash
221
+ /hooks # 列出所有配置的 hooks
222
+ ```
223
+
224
+ ---
225
+
226
+ ## 8. 对 gxpm 的启示
227
+
228
+ ### 8.1 Kimi 适配策略(与 Codex 不同)
229
+
230
+ | gxpm 能力 | Codex 实现 | Kimi 可行方案 |
231
+ |-----------|-----------|--------------|
232
+ | 会话启动注入上下文 | `SessionStart` 返回 `additionalContext` | ❌ 不可用。需改用 **Skill 系统**(`~/.kimi/skills/gxpm/SKILL.md`)在系统 prompt 中注入 |
233
+ | Prompt 命中 GXPM-N 注入 issue 状态 | `UserPromptSubmit` 返回上下文文本 | ❌ 不可用。需改用 `UserPromptSubmit` **block** 机制拦截 prompt,然后让模型重新发起带上下文的 prompt(复杂且不优雅)。更实际的方案是继续依赖 Skill 中的规则 |
234
+ | 记录 `update_plan` | `PreToolUse` 拦截 `update_plan` | ✅ 可用,且支持 matcher `"update_plan"` |
235
+ | Git hooks(pre-commit 等) | 独立机制 | ✅ 通用,不区分 host |
236
+
237
+ ### 8.2 推荐适配路径
238
+
239
+ 1. **Skill 优先**:Kimi 的 Skill 系统(`~/.kimi/skills/gxpm/SKILL.md`)是注入上下文的主要方式,与 Codex 的 `additionalContext` 不同但效果等价
240
+ 2. **Hooks 辅助**:仅用于 `PreToolUse`(记录 update_plan)和可能的 `PostToolUse`(审计)
241
+ 3. **不依赖 SessionStart**:在 Kimi 上无注入能力
242
+
243
+ ### 8.3 配置示例(假设)
244
+
245
+ ```toml
246
+ # ~/.kimi/config.toml
247
+ [[hooks]]
248
+ event = "PreToolUse"
249
+ command = "/Users/x/.kimi/hooks/gxpm-pre-tool-use.sh"
250
+ matcher = "update_plan"
251
+ timeout = 10
252
+ ```
253
+
254
+ ---
255
+
256
+ ## 9. 待验证事项
257
+
258
+ - [ ] Kimi Skill 的 frontmatter 是否支持 `name` + `description`(Codex 需要 `name`/`description` allowlist)
259
+ - [ ] `merge_all_available_skills = true` 默认开启后,`.kimi/skills/` 和 `.claude/skills/` 是否会冲突
260
+ - [ ] 项目级 `.kimi/skills/` 的自动发现路径(已确认:向上走到最近 `.git` 祖先)
261
+ - [ ] Kimi 是否支持类似 Codex 的 `statusMessage` 字段
262
+
263
+ ---
264
+
265
+ ## 参考源码
266
+
267
+ - `kimi_cli/hooks/config.py` — HookDef / HookEventType 定义
268
+ - `kimi_cli/hooks/engine.py` — HookEngine 执行引擎
269
+ - `kimi_cli/hooks/events.py` — 各事件的输入 payload 构建器
270
+ - `kimi_cli/hooks/runner.py` — run_hook / HookResult(block/allow 决策)
271
+ - `kimi_cli/cli/__init__.py:641` — SessionStart hook 调用点
272
+ - `kimi_cli/soul/kimisoul.py:594` — UserPromptSubmit hook 调用点
273
+ - `kimi_cli/soul/toolset.py:163` — PreToolUse hook 调用点
274
+ - `kimi_cli/wire/types.py` — Wire 协议中的 HookTriggered / HookResolved / HookRequest / HookResponse