@surething/cockpit 1.0.211 → 1.0.213

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 (174) hide show
  1. package/.next-prod/BUILD_ID +1 -1
  2. package/.next-prod/app-path-routes-manifest.json +3 -3
  3. package/.next-prod/build-manifest.json +2 -2
  4. package/.next-prod/prerender-manifest.json +3 -3
  5. package/.next-prod/server/app/_global-error/page.js.nft.json +1 -1
  6. package/.next-prod/server/app/_global-error/page_client-reference-manifest.js +1 -1
  7. package/.next-prod/server/app/_global-error.html +1 -1
  8. package/.next-prod/server/app/_global-error.rsc +1 -1
  9. package/.next-prod/server/app/_global-error.segments/_full.segment.rsc +1 -1
  10. package/.next-prod/server/app/_global-error.segments/_global-error/__PAGE__.segment.rsc +1 -1
  11. package/.next-prod/server/app/_global-error.segments/_global-error.segment.rsc +1 -1
  12. package/.next-prod/server/app/_global-error.segments/_head.segment.rsc +1 -1
  13. package/.next-prod/server/app/_global-error.segments/_index.segment.rsc +1 -1
  14. package/.next-prod/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  15. package/.next-prod/server/app/_not-found/page.js.nft.json +1 -1
  16. package/.next-prod/server/app/_not-found/page_client-reference-manifest.js +1 -1
  17. package/.next-prod/server/app/_not-found.html +1 -1
  18. package/.next-prod/server/app/_not-found.rsc +4 -4
  19. package/.next-prod/server/app/_not-found.segments/_full.segment.rsc +4 -4
  20. package/.next-prod/server/app/_not-found.segments/_head.segment.rsc +1 -1
  21. package/.next-prod/server/app/_not-found.segments/_index.segment.rsc +3 -3
  22. package/.next-prod/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  23. package/.next-prod/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  24. package/.next-prod/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  25. package/.next-prod/server/app/api/agent/test/route.js.nft.json +1 -1
  26. package/.next-prod/server/app/api/bash/route.js.nft.json +1 -1
  27. package/.next-prod/server/app/api/chat/codex/route.js +2 -87
  28. package/.next-prod/server/app/api/chat/codex/route.js.nft.json +1 -1
  29. package/.next-prod/server/app/api/chat/deepseek/route.js +2 -87
  30. package/.next-prod/server/app/api/chat/deepseek/route.js.nft.json +1 -1
  31. package/.next-prod/server/app/api/chat/kimi/route.js +2 -87
  32. package/.next-prod/server/app/api/chat/kimi/route.js.nft.json +1 -1
  33. package/.next-prod/server/app/api/chat/ollama/route.js +2 -87
  34. package/.next-prod/server/app/api/chat/ollama/route.js.nft.json +1 -1
  35. package/.next-prod/server/app/api/chat/route.js +2 -87
  36. package/.next-prod/server/app/api/chat/route.js.nft.json +1 -1
  37. package/.next-prod/server/app/api/claude-stats/route.js.nft.json +1 -1
  38. package/.next-prod/server/app/api/commands/route.js +1 -1
  39. package/.next-prod/server/app/api/commands/route.js.nft.json +1 -1
  40. package/.next-prod/server/app/api/comments/route.js.nft.json +1 -1
  41. package/.next-prod/server/app/api/db/columns/route.js.nft.json +1 -1
  42. package/.next-prod/server/app/api/db/connect/route.js.nft.json +1 -1
  43. package/.next-prod/server/app/api/db/disconnect/route.js.nft.json +1 -1
  44. package/.next-prod/server/app/api/db/export/route.js.nft.json +1 -1
  45. package/.next-prod/server/app/api/db/query/route.js.nft.json +1 -1
  46. package/.next-prod/server/app/api/db/schemas/route.js.nft.json +1 -1
  47. package/.next-prod/server/app/api/dev/spans/route.js.nft.json +1 -1
  48. package/.next-prod/server/app/api/extension/version/route.js.nft.json +1 -1
  49. package/.next-prod/server/app/api/file/route.js.nft.json +1 -1
  50. package/.next-prod/server/app/api/files/blame/route.js.nft.json +1 -1
  51. package/.next-prod/server/app/api/files/clipboard/route.js.nft.json +1 -1
  52. package/.next-prod/server/app/api/files/copy/route.js.nft.json +1 -1
  53. package/.next-prod/server/app/api/files/delete/route.js.nft.json +1 -1
  54. package/.next-prod/server/app/api/files/expanded/route.js.nft.json +1 -1
  55. package/.next-prod/server/app/api/files/index/route.js.nft.json +1 -1
  56. package/.next-prod/server/app/api/files/init/route.js.nft.json +1 -1
  57. package/.next-prod/server/app/api/files/paste/route.js.nft.json +1 -1
  58. package/.next-prod/server/app/api/files/read/route.js.nft.json +1 -1
  59. package/.next-prod/server/app/api/files/readdir/route.js.nft.json +1 -1
  60. package/.next-prod/server/app/api/files/recent/route.js.nft.json +1 -1
  61. package/.next-prod/server/app/api/files/save/route.js.nft.json +1 -1
  62. package/.next-prod/server/app/api/files/search/route.js.nft.json +1 -1
  63. package/.next-prod/server/app/api/files/stat/route.js.nft.json +1 -1
  64. package/.next-prod/server/app/api/files/text/route.js.nft.json +1 -1
  65. package/.next-prod/server/app/api/git/branch-diff/route.js.nft.json +1 -1
  66. package/.next-prod/server/app/api/git/branches/route.js.nft.json +1 -1
  67. package/.next-prod/server/app/api/git/commit-diff/route.js.nft.json +1 -1
  68. package/.next-prod/server/app/api/git/commits/route.js.nft.json +1 -1
  69. package/.next-prod/server/app/api/git/diff/route.js.nft.json +1 -1
  70. package/.next-prod/server/app/api/git/discard/route.js.nft.json +1 -1
  71. package/.next-prod/server/app/api/git/stage/route.js.nft.json +1 -1
  72. package/.next-prod/server/app/api/git/status/route.js.nft.json +1 -1
  73. package/.next-prod/server/app/api/git/unstage/route.js.nft.json +1 -1
  74. package/.next-prod/server/app/api/git/worktree/route.js.nft.json +1 -1
  75. package/.next-prod/server/app/api/global-state/route.js.nft.json +1 -1
  76. package/.next-prod/server/app/api/jupyter/load/route.js.nft.json +1 -1
  77. package/.next-prod/server/app/api/jupyter/save/route.js.nft.json +1 -1
  78. package/.next-prod/server/app/api/jupyter/shutdown/route.js.nft.json +1 -1
  79. package/.next-prod/server/app/api/lsp/definition/route.js.nft.json +1 -1
  80. package/.next-prod/server/app/api/lsp/hover/route.js.nft.json +1 -1
  81. package/.next-prod/server/app/api/lsp/references/route.js.nft.json +1 -1
  82. package/.next-prod/server/app/api/lsp/status/route.js.nft.json +1 -1
  83. package/.next-prod/server/app/api/lsp/warmup/route.js.nft.json +1 -1
  84. package/.next-prod/server/app/api/mysql/columns/route.js.nft.json +1 -1
  85. package/.next-prod/server/app/api/mysql/connect/route.js.nft.json +1 -1
  86. package/.next-prod/server/app/api/mysql/disconnect/route.js.nft.json +1 -1
  87. package/.next-prod/server/app/api/mysql/export/route.js.nft.json +1 -1
  88. package/.next-prod/server/app/api/mysql/query/route.js.nft.json +1 -1
  89. package/.next-prod/server/app/api/mysql/schemas/route.js.nft.json +1 -1
  90. package/.next-prod/server/app/api/neo4j/connect/route.js.nft.json +1 -1
  91. package/.next-prod/server/app/api/neo4j/disconnect/route.js.nft.json +1 -1
  92. package/.next-prod/server/app/api/neo4j/query/route.js.nft.json +1 -1
  93. package/.next-prod/server/app/api/neo4j/schema/route.js.nft.json +1 -1
  94. package/.next-prod/server/app/api/note/route.js.nft.json +1 -1
  95. package/.next-prod/server/app/api/ollama/models/route.js.nft.json +1 -1
  96. package/.next-prod/server/app/api/ollama/start/route.js.nft.json +1 -1
  97. package/.next-prod/server/app/api/open-cursor/route.js.nft.json +1 -1
  98. package/.next-prod/server/app/api/open-vscode/route.js.nft.json +1 -1
  99. package/.next-prod/server/app/api/pick-folder/route.js.nft.json +1 -1
  100. package/.next-prod/server/app/api/pinned-sessions/route.js.nft.json +1 -1
  101. package/.next-prod/server/app/api/project-settings/route.js.nft.json +1 -1
  102. package/.next-prod/server/app/api/project-state/route.js.nft.json +1 -1
  103. package/.next-prod/server/app/api/projectGraph/callees/route.js.nft.json +1 -1
  104. package/.next-prod/server/app/api/projectGraph/callers/route.js.nft.json +1 -1
  105. package/.next-prod/server/app/api/projectGraph/coedit/route.js.nft.json +1 -1
  106. package/.next-prod/server/app/api/projectGraph/file/route.js.nft.json +1 -1
  107. package/.next-prod/server/app/api/projectGraph/file-functions/route.js.nft.json +1 -1
  108. package/.next-prod/server/app/api/projectGraph/impact/route.js.nft.json +1 -1
  109. package/.next-prod/server/app/api/projectGraph/search/route.js.nft.json +1 -1
  110. package/.next-prod/server/app/api/projects/route.js.nft.json +1 -1
  111. package/.next-prod/server/app/api/redis/command/route.js.nft.json +1 -1
  112. package/.next-prod/server/app/api/redis/connect/route.js.nft.json +1 -1
  113. package/.next-prod/server/app/api/redis/delete/route.js.nft.json +1 -1
  114. package/.next-prod/server/app/api/redis/disconnect/route.js.nft.json +1 -1
  115. package/.next-prod/server/app/api/redis/get/route.js.nft.json +1 -1
  116. package/.next-prod/server/app/api/redis/keys/route.js.nft.json +1 -1
  117. package/.next-prod/server/app/api/redis/set/route.js.nft.json +1 -1
  118. package/.next-prod/server/app/api/review/[id]/comments/route.js.nft.json +1 -1
  119. package/.next-prod/server/app/api/review/[id]/replies/route.js.nft.json +1 -1
  120. package/.next-prod/server/app/api/review/[id]/route.js.nft.json +1 -1
  121. package/.next-prod/server/app/api/review/identify/route.js.nft.json +1 -1
  122. package/.next-prod/server/app/api/review/order/route.js.nft.json +1 -1
  123. package/.next-prod/server/app/api/review/route.js.nft.json +1 -1
  124. package/.next-prod/server/app/api/review/share-info/route.js.nft.json +1 -1
  125. package/.next-prod/server/app/api/review/users/route.js.nft.json +1 -1
  126. package/.next-prod/server/app/api/scheduled-tasks/route.js.nft.json +1 -1
  127. package/.next-prod/server/app/api/services/config/route.js.nft.json +1 -1
  128. package/.next-prod/server/app/api/services/scripts/route.js.nft.json +1 -1
  129. package/.next-prod/server/app/api/session/[sessionId]/fork/route.js.nft.json +1 -1
  130. package/.next-prod/server/app/api/session/[sessionId]/history/route.js.nft.json +1 -1
  131. package/.next-prod/server/app/api/session-by-path/route.js.nft.json +1 -1
  132. package/.next-prod/server/app/api/sessions/projects/[encodedPath]/route.js.nft.json +1 -1
  133. package/.next-prod/server/app/api/sessions/projects/route.js.nft.json +1 -1
  134. package/.next-prod/server/app/api/sessions/route.js.nft.json +1 -1
  135. package/.next-prod/server/app/api/settings/route.js.nft.json +1 -1
  136. package/.next-prod/server/app/api/skills/[id]/route.js.nft.json +1 -1
  137. package/.next-prod/server/app/api/skills/content/route.js.nft.json +1 -1
  138. package/.next-prod/server/app/api/skills/route.js.nft.json +1 -1
  139. package/.next-prod/server/app/api/terminal/aliases/route.js.nft.json +1 -1
  140. package/.next-prod/server/app/api/terminal/autocomplete/route.js.nft.json +1 -1
  141. package/.next-prod/server/app/api/terminal/bubble-order/route.js.nft.json +1 -1
  142. package/.next-prod/server/app/api/terminal/env/route.js.nft.json +1 -1
  143. package/.next-prod/server/app/api/terminal/history/route.js.nft.json +1 -1
  144. package/.next-prod/server/app/api/version/route.js.nft.json +1 -1
  145. package/.next-prod/server/app/favicon.ico/route.js.nft.json +1 -1
  146. package/.next-prod/server/app/manifest.webmanifest/route.js +1 -1
  147. package/.next-prod/server/app/manifest.webmanifest/route.js.nft.json +1 -1
  148. package/.next-prod/server/app/manifest.webmanifest.body +1 -1
  149. package/.next-prod/server/app/page.js.nft.json +1 -1
  150. package/.next-prod/server/app/page_client-reference-manifest.js +1 -1
  151. package/.next-prod/server/app/project/page.js.nft.json +1 -1
  152. package/.next-prod/server/app/project/page_client-reference-manifest.js +1 -1
  153. package/.next-prod/server/app/review/[id]/page.js.nft.json +1 -1
  154. package/.next-prod/server/app/review/[id]/page_client-reference-manifest.js +1 -1
  155. package/.next-prod/server/app-paths-manifest.json +3 -3
  156. package/.next-prod/server/chunks/7828.js +425 -0
  157. package/.next-prod/server/chunks/8916.js +1 -1
  158. package/.next-prod/server/chunks/9658.js +4 -4
  159. package/.next-prod/server/middleware-build-manifest.js +1 -1
  160. package/.next-prod/server/pages/404.html +1 -1
  161. package/.next-prod/server/pages/500.html +1 -1
  162. package/.next-prod/server/server-reference-manifest.json +1 -1
  163. package/.next-prod/static/chunks/{5188-6ad3d686c5e9fb28.js → 5188-3337a5d88efc5fc1.js} +4 -4
  164. package/.next-prod/static/chunks/6345-4299a3385983e28c.js +14 -0
  165. package/.next-prod/static/css/{f9a27209b85d8e5a.css → f016b445331fc5a2.css} +1 -1
  166. package/.next-prod/trace +12 -12
  167. package/.next-prod/trace-build +1 -1
  168. package/README.md +14 -30
  169. package/README.zh.md +14 -30
  170. package/chrome-extension/manifest.json +2 -2
  171. package/package.json +3 -3
  172. package/.next-prod/static/chunks/6345-3da1914a1a74c1fb.js +0 -14
  173. /package/.next-prod/static/{pS6D6oF2RLyDG-MzgFWGm → -BWPF5YtAsgnego1UPtt9}/_buildManifest.js +0 -0
  174. /package/.next-prod/static/{pS6D6oF2RLyDG-MzgFWGm → -BWPF5YtAsgnego1UPtt9}/_ssgManifest.js +0 -0
@@ -0,0 +1,425 @@
1
+ "use strict";exports.id=7828,exports.ids=[7828],exports.modules={97828:(a,b,c)=>{c.d(b,{M:()=>e});let d={qa:{zh:`进入需求澄清讨论模式
2
+ 尝试理解用户的需求并给出你对需求的理解,有不明确的点需要向我确认,避免理解不一致而导致无效的代码修改
3
+ 遵循 KISS 原则
4
+ 输出理解,不改代码`,en:`Enter requirement clarification mode.
5
+ Understand the user's needs and state your understanding.
6
+ Ask for clarification on ambiguous points to avoid unnecessary code changes.
7
+ Follow the KISS principle.
8
+ Output your understanding only; do not modify code.`},fx:{zh:"进入bug证据链分析模式,只分析不修改代码,给出详细推理过程",en:`Enter bug evidence chain analysis mode.
9
+ Analyze only; do not modify code.
10
+ Provide a detailed reasoning process.`},ex:{zh:`---
11
+ name: ex
12
+ description: "结构化讨论 skill:用'问题研究 + 假设-验证循环 + 发散-收敛-发散-迭代验证-总结 + What/Why/How + 对比矩阵'方法论分析复杂问题。用户通过 \`/ex\` 显式触发。仅分析不改代码。"
13
+ ---
14
+
15
+ # ex — 结构化讨论 skill
16
+
17
+ 用一套固定的思考骨架分析复杂问题。**只输出分析,不修改代码。**
18
+
19
+ ## 入口:复杂度判断
20
+
21
+ 收到问题后,**先判断复杂度**:
22
+
23
+ - **简单问题** → 直接简答,**不套方法论**(KISS)
24
+ - **复杂问题** → 走完整方法论骨架(下方 6 步)
25
+
26
+ 判断标准(任一即视为复杂):
27
+ - 涉及多个候选方案需要权衡
28
+ - 存在多个可能假设需要验证
29
+ - 跨多个模块/系统/层次
30
+ - 用户明确要求深入讨论
31
+
32
+ ## 方法论骨架(仅复杂问题)
33
+
34
+ 按顺序一次性走完,**不中途停下问用户**:
35
+
36
+ \`\`\`
37
+ 1. 问题研究 用 What / Why / How 三个切面把问题本身研究清楚
38
+ 2. 发散 穷举可能的假设、方案、视角
39
+ 3. 收敛 筛出 Top 1-3
40
+ 4. 再发散 对优选做深入展开(细节、风险、边界条件)
41
+ 5. 迭代验证 用代码检索 / Web 搜索 / Bash 实验 验证关键假设
42
+ 6. 总结 给结论;若多方案/多假设并排,用对比矩阵
43
+ \`\`\`
44
+
45
+ ### What / Why / How 切面(贯穿全流程)
46
+
47
+ - **What**:问题/方案是什么,边界在哪
48
+ - **Why**:为什么会有这个问题、为什么选这个方案
49
+ - **How**:怎么实现、怎么落地、怎么验证
50
+
51
+ ## 执行规则
52
+
53
+ ### 一次性走完,不打断用户
54
+
55
+ - 全程**不调用 AskUserQuestion**
56
+ - 信息不足时 → 明确标注 **"⚠️ 待补充:xxx"**,由用户后续追问补充
57
+ - 不要因为信息不全就中断流程,能推到哪推到哪
58
+
59
+ ### 验证手段
60
+
61
+ 允许的验证方式:
62
+
63
+ | 手段 | 工具 | 使用场景 |
64
+ |---|---|---|
65
+ | 代码检索 | Grep / Read / Glob | 在仓库中找证据验证假设 |
66
+ | Web 搜索 | WebSearch / WebFetch | 查官方文档、外部资料 |
67
+ | Bash 实验 | Bash | 跑小命令、测试脚本、curl |
68
+
69
+ **禁止**:通过 AskUserQuestion 向用户提问验证。
70
+
71
+ ## 输出规则
72
+
73
+ - **不强制固定输出结构**,按问题特点灵活组织
74
+ - **对比矩阵不是必选项**,仅在"多方案/多假设需要并排比较"时才出
75
+ - 简单问题就简短回答,不要为了套框架而套框架
76
+
77
+ ## 不做什么
78
+
79
+ - ❌ 不修改代码(这是讨论 skill,不是实施 skill)
80
+ - ❌ 不中途问用户(一次走完)
81
+ - ❌ 不强制对每个问题都输出对比矩阵
82
+ - ❌ 不和 \`/qa\`、\`/fx\` 抢戏 —— 三者并列,由用户显式选择触发
83
+ `,en:`---
84
+ name: ex
85
+ description: "Structured discussion skill: analyze complex problems with the methodology of 'problem study + hypothesis-verify loop + diverge-converge-diverge-iterate-verify-summarize + What/Why/How + comparison matrix'. Explicitly triggered by the user via \`/ex\`. Analysis only; do not modify code."
86
+ ---
87
+
88
+ # ex — structured discussion skill
89
+
90
+ Analyze complex problems with a fixed thinking skeleton. **Output analysis only; do not modify code.**
91
+
92
+ ## Entry: complexity check
93
+
94
+ When the question arrives, **first judge complexity**:
95
+
96
+ - **Simple problem** → answer directly, **do not apply the methodology** (KISS)
97
+ - **Complex problem** → run the full 6-step skeleton below
98
+
99
+ Treat as complex if any of these holds:
100
+ - Multiple candidate solutions need trade-off
101
+ - Multiple hypotheses need verification
102
+ - Spans multiple modules / systems / layers
103
+ - The user explicitly asks for deep discussion
104
+
105
+ ## Methodology skeleton (complex problems only)
106
+
107
+ Run in order, **in one pass, without stopping to ask the user**:
108
+
109
+ \`\`\`
110
+ 1. Problem study Clarify the problem itself through What / Why / How
111
+ 2. Diverge Enumerate candidate hypotheses, solutions, perspectives
112
+ 3. Converge Pick the top 1-3
113
+ 4. Diverge again Deep-dive into the chosen ones (details, risks, edge cases)
114
+ 5. Iterate-verify Verify key hypotheses via code search / web search / bash experiments
115
+ 6. Summarize Conclude; use a comparison matrix when multiple options sit side by side
116
+ \`\`\`
117
+
118
+ ### What / Why / How facets (cross-cutting)
119
+
120
+ - **What**: what is the problem / solution, what is the boundary
121
+ - **Why**: why does this problem exist, why pick this solution
122
+ - **How**: how to implement / land / verify it
123
+
124
+ ## Execution rules
125
+
126
+ ### Run once, never interrupt the user
127
+
128
+ - **Never call AskUserQuestion**
129
+ - When information is missing → explicitly mark **"⚠️ Pending: xxx"** and let the user follow up later
130
+ - Do not stop just because info is incomplete; push as far as the evidence allows
131
+
132
+ ### Verification means
133
+
134
+ Allowed verification tools:
135
+
136
+ | Means | Tools | Use case |
137
+ |---|---|---|
138
+ | Code search | Grep / Read / Glob | Find in-repo evidence for hypotheses |
139
+ | Web search | WebSearch / WebFetch | Look up official docs and external material |
140
+ | Bash experiments | Bash | Run small commands, test scripts, curl |
141
+
142
+ **Forbidden**: verifying by asking the user via AskUserQuestion.
143
+
144
+ ## Output rules
145
+
146
+ - **No mandatory output template** — organize by what the problem needs
147
+ - **Comparison matrix is optional** — use it only when multiple options / hypotheses must sit side by side
148
+ - Simple questions get short answers; do not over-frame for the sake of framing
149
+
150
+ ## What this skill does NOT do
151
+
152
+ - ❌ Do not modify code (this is a discussion skill, not an implementation skill)
153
+ - ❌ Do not interrupt the user mid-flow (one-shot)
154
+ - ❌ Do not force a comparison matrix on every question
155
+ - ❌ Do not compete with \`/qa\` or \`/fx\` — the three are siblings, triggered explicitly by the user`},go:{zh:`---
156
+ name: go
157
+ description: "基于已有调研结论,按最小可交付可验证拆分原则连续推进落地。每阶段写代码 → 自运行验证 → 输出【交付总结 + 验证报告】 → 自动进入下一阶段,全部完成后再做端到端回看。用于:调研已收敛、用户说『开始落地 / 开始实施 / go』,希望自动连续推进不被中途打断。"
158
+ argument-hint: "[调研结论路径 / 简述 / 留空表示沿用当前会话上文]"
159
+ ---
160
+
161
+ # 落地模式 (Landing Mode)
162
+
163
+ 把已经收敛的调研结论,按 MVP 自动连续落地,每阶段内闭环验证,全部完成后统一回看。
164
+
165
+ ## 触发条件(必须全部满足)
166
+
167
+ 1. 调研/方案讨论阶段已结束,结论已收敛
168
+ 2. 用户明确要"开始落地 / 实施 / go"
169
+ 3. 用户希望自动连续推进,不需要每阶段停下来确认
170
+
171
+ 任一不满足,先回 \`qa\` 模式澄清。
172
+
173
+ ## 前置检查(开始前必做)
174
+
175
+ 确认以下信息**已掌握**,缺一项就停下来问,不要猜:
176
+
177
+ | 项 | 来源 |
178
+ |---|---|
179
+ | 调研结论 | 会话上文 / 用户指定的文档路径 / 直接粘贴 |
180
+ | 落地范围 | 做什么、不做什么 |
181
+ | 验收标准 | 怎么算"端到端跑通" |
182
+ | 工作目录与技术栈 | 项目根路径、语言、框架 |
183
+
184
+ ## 执行循环
185
+
186
+ \`\`\`
187
+ while 还有未完成的 MVP 子任务:
188
+ 1. 选定下一个最小闭环子任务
189
+ - 可交付:能独立存在的产物
190
+ - 可验证:有明确的运行/检查方式
191
+ 2. 写代码(最小变更,KISS)
192
+ 3. 自运行验证:跑命令、调接口、看输出,不依赖用户点头
193
+ 4. 输出【阶段 N 交付总结 + 验证报告】
194
+ 5. 不停顿,进入下一阶段
195
+ end while
196
+
197
+ 最后输出【整体回看:端到端交互验证 + 总交付清单】
198
+ \`\`\`
199
+
200
+ ## 每阶段输出格式
201
+
202
+ \`\`\`markdown
203
+ ### 阶段 N:<子任务名>
204
+
205
+ **交付总结**
206
+ - 目标:<这阶段要达成什么>
207
+ - 变更:
208
+ - <文件1>: <做了什么>
209
+ - <文件2>: <做了什么>
210
+ - 状态:✅ 完成 / ⚠️ 部分完成 / ❌ 阻塞
211
+
212
+ **验证报告**
213
+ - 验证方式:<跑了什么命令 / 调了什么接口>
214
+ - 验证结果:<输出摘要 / 关键指标>
215
+ - 遗留问题:<无 / 列表>
216
+ \`\`\`
217
+
218
+ ## 最终回看格式
219
+
220
+ \`\`\`markdown
221
+ ## 整体回看
222
+
223
+ ### 端到端交互验证
224
+ - 场景:<完整用户流程描述>
225
+ - 步骤:<1 → 2 → 3>
226
+ - 结果:<跑通 / 失败点>
227
+
228
+ ### 总交付清单
229
+ | 阶段 | 子任务 | 关键产物 | 状态 |
230
+
231
+ ### 已知遗留
232
+ <无 / 列出未解决项及优先级建议>
233
+ \`\`\`
234
+
235
+ ## 何时停下来问(仅限三种情况)
236
+
237
+ 1. **阻塞性歧义**:缺关键信息无法推进(未知 API 契约、不明业务规则)
238
+ 2. **破坏性操作**:删数据、强推远端、改 git 历史等不可逆动作
239
+ 3. **方案分叉**:发现调研结论没覆盖的关键选型决策
240
+
241
+ **不要因为以下原因停**:
242
+ - "这步看起来重要要不要确认" → 不要,按 KISS 默认做
243
+ - "可能想这样可能想那样" → 选最简实现继续
244
+ - "完成一阶段汇报等批复" → 不要,直接进下一阶段
245
+
246
+ ## 关键原则
247
+
248
+ - **KISS 优于完备**:能跑通的最小实现 > 大而全
249
+ - **运行优于阅读**:实际跑起来验证 > 静态看代码
250
+ - **连续优于停顿**:自动推进 > 频繁问询
251
+ - **回看优于中断**:最后统一 review > 中途打断
252
+ `,en:`---
253
+ name: go
254
+ description: "Based on prior research conclusions, drive landing forward in minimum-deliverable-verifiable slices. Per stage: write code → self-verify → emit [delivery summary + verification report] → auto advance to the next stage; after all stages, do one end-to-end recap. Use when: research is converged, the user says 'start landing / start implementing / go', and wants continuous progress without mid-stage interruption."
255
+ argument-hint: "[research conclusion path / brief / leave empty to reuse current session context]"
256
+ ---
257
+
258
+ # Landing Mode (落地模式)
259
+
260
+ Take the already-converged research conclusion and land it as MVP slices continuously and automatically; each stage closes its own verification loop, with one end-to-end recap at the very end.
261
+
262
+ ## Trigger conditions (all must hold)
263
+
264
+ 1. The research / discussion phase has ended and the conclusion has converged
265
+ 2. The user explicitly says "start landing / implement / go"
266
+ 3. The user wants continuous, automatic progress without per-stage confirmation
267
+
268
+ If any condition fails, fall back to \`qa\` mode for clarification first.
269
+
270
+ ## Pre-flight check (mandatory before starting)
271
+
272
+ Confirm the following are **in hand**; if any is missing, stop and ask — do not guess:
273
+
274
+ | Item | Source |
275
+ |---|---|
276
+ | Research conclusion | Session context / a path the user gives / pasted text |
277
+ | Landing scope | What's in, what's out |
278
+ | Acceptance criteria | What counts as "end-to-end runs" |
279
+ | Working directory and stack | Project root path, language, framework |
280
+
281
+ ## Execution loop
282
+
283
+ \`\`\`
284
+ while there are unfinished MVP sub-tasks:
285
+ 1. Pick the next minimum closed-loop sub-task
286
+ - Deliverable: a standalone artifact
287
+ - Verifiable: a clear way to run / check it
288
+ 2. Write code (minimum change, KISS)
289
+ 3. Self-verify: run commands, hit endpoints, read output — do not wait for the user's nod
290
+ 4. Emit [Stage N delivery summary + verification report]
291
+ 5. No pause; proceed to the next stage
292
+ end while
293
+
294
+ Finally emit [Overall recap: end-to-end interaction verification + total delivery list]
295
+ \`\`\`
296
+
297
+ ## Per-stage output format
298
+
299
+ \`\`\`markdown
300
+ ### Stage N: <sub-task name>
301
+
302
+ **Delivery summary**
303
+ - Goal: <what this stage achieves>
304
+ - Changes:
305
+ - <file1>: <what was done>
306
+ - <file2>: <what was done>
307
+ - Status: ✅ done / ⚠️ partial / ❌ blocked
308
+
309
+ **Verification report**
310
+ - How verified: <commands run / endpoints called>
311
+ - Result: <output summary / key metrics>
312
+ - Residual issues: <none / list>
313
+ \`\`\`
314
+
315
+ ## Final recap format
316
+
317
+ \`\`\`markdown
318
+ ## Overall recap
319
+
320
+ ### End-to-end interaction verification
321
+ - Scenario: <full user-flow description>
322
+ - Steps: <1 → 2 → 3>
323
+ - Result: <passes / failure points>
324
+
325
+ ### Total delivery list
326
+ | Stage | Sub-task | Key artifact | Status |
327
+
328
+ ### Known residuals
329
+ <none / list with suggested priority>
330
+ \`\`\`
331
+
332
+ ## When to stop and ask (only three cases)
333
+
334
+ 1. **Blocking ambiguity**: a key piece of info is missing and progress is impossible (unknown API contract, unclear business rule)
335
+ 2. **Destructive operation**: deleting data, force-pushing, rewriting git history, or other irreversible actions
336
+ 3. **Branching decision**: a key design choice the research did not cover
337
+
338
+ **Do NOT stop for**:
339
+ - "This step looks important, should I confirm?" → No, do the KISS default
340
+ - "Maybe this way, maybe that way" → Pick the simplest implementation and continue
341
+ - "Done with a stage, awaiting sign-off" → No, go straight to the next stage
342
+
343
+ ## Key principles
344
+
345
+ - **KISS over completeness**: a minimal runnable implementation > grand-and-complete
346
+ - **Running over reading**: actually run it to verify > stare at code
347
+ - **Continuous over pausing**: auto-advance > frequent asking
348
+ - **Recap over interruption**: one final review > mid-flow breaks
349
+ `},cg:{zh:`进入项目图谱探索模式(CodeGraph)
350
+
351
+ CodeGraph = 项目预建的符号 + 调用图索引 + git 协同视图。6 个接口各回答一类问题:
352
+
353
+ | 问题 | 接口 |
354
+ |---|---|
355
+ | X 在哪定义 / 有哪些同名符号? | search?q=X |
356
+ | 谁调用 X? | callers?qname=X |
357
+ | X 调用了什么? | callees?qname=X |
358
+ | 改 X 会影响哪些符号? | impact?qname=X&depth=2 |
359
+ | 文件 F 有哪些符号? | file?path=F |
360
+ | 文件 F 常和哪些文件一起改?(约定耦合 / 双写注册表) | coedit?filePath=F |
361
+
362
+ 所有响应都是坐标 / 文件路径,不含源码——比 grep 字面匹配精确,比 Read 全文扫描省 token。
363
+
364
+ ## 6 个图谱接口({{BASE_URL}})
365
+
366
+ # search: 按名字找符号 → file / qname / kind / startLine / endLine / params
367
+ curl -fsS "{{BASE_URL}}/api/projectGraph/search?cwd=$PWD&q=<NAME>"
368
+
369
+ # callers / callees: 1-hop 调用关系
370
+ curl -fsS "{{BASE_URL}}/api/projectGraph/callers?cwd=$PWD&qname=<QNAME>"
371
+ curl -fsS "{{BASE_URL}}/api/projectGraph/callees?cwd=$PWD&qname=<QNAME>"
372
+
373
+ # impact: 传递性 callers BFS(depth 1-5,默认 2)
374
+ curl -fsS "{{BASE_URL}}/api/projectGraph/impact?cwd=$PWD&qname=<QNAME>&depth=2"
375
+
376
+ # file: 文件符号树(无源码)
377
+ curl -fsS "{{BASE_URL}}/api/projectGraph/file?cwd=$PWD&path=<REL_PATH>"
378
+
379
+ # coedit: 与目标文件协同编辑的文件 = git log 历史 + 当前 working tree 同时被改的文件
380
+ # 抓 call-graph 抓不到的"约定耦合"(平行注册表 / 双写 / 同名 .md 配置等)
381
+ curl -fsS "{{BASE_URL}}/api/projectGraph/coedit?cwd=$PWD&filePath=<REL_PATH>"
382
+
383
+ ## 技术契约
384
+ - 接口只返坐标,源码用 Read 自取:\`Read offset=startLine limit=endLine-startLine+1\`
385
+ - qname 用 \`Parent>Child\` 形式(不是 \`.\`),直接复用 search 返回的 \`qualifiedName\`
386
+ - 同名符号跨多文件时响应里 \`ambiguousIn\` 列出,加 \`&filePath=<rel>\` 消歧`,en:`Enter project graph exploration mode (CodeGraph).
387
+
388
+ CodeGraph = pre-built symbol + call-graph index + git co-edit view. Six endpoints, each answers one class of question:
389
+
390
+ | Question | Endpoint |
391
+ |---|---|
392
+ | Where is X defined / which files share the name? | search?q=X |
393
+ | Who calls X? | callers?qname=X |
394
+ | What does X call? | callees?qname=X |
395
+ | Changing X affects which symbols? | impact?qname=X&depth=2 |
396
+ | What symbols does file F contain? | file?path=F |
397
+ | Which files are commonly edited alongside F? (conventional coupling / parallel registries) | coedit?filePath=F |
398
+
399
+ All responses are coordinates / file paths — never source. More precise than grep's textual match, cheaper in tokens than Reading whole files.
400
+
401
+ ## The 6 graph endpoints ({{BASE_URL}})
402
+
403
+ # search: find symbols by name → file / qname / kind / startLine / endLine / params
404
+ curl -fsS "{{BASE_URL}}/api/projectGraph/search?cwd=$PWD&q=<NAME>"
405
+
406
+ # callers / callees: 1-hop call relations
407
+ curl -fsS "{{BASE_URL}}/api/projectGraph/callers?cwd=$PWD&qname=<QNAME>"
408
+ curl -fsS "{{BASE_URL}}/api/projectGraph/callees?cwd=$PWD&qname=<QNAME>"
409
+
410
+ # impact: transitive callers BFS (depth 1-5, default 2)
411
+ curl -fsS "{{BASE_URL}}/api/projectGraph/impact?cwd=$PWD&qname=<QNAME>&depth=2"
412
+
413
+ # file: file symbol tree (no source)
414
+ curl -fsS "{{BASE_URL}}/api/projectGraph/file?cwd=$PWD&path=<REL_PATH>"
415
+
416
+ # coedit: files commonly edited alongside the target = git log history + current working-tree co-edits
417
+ # catches "conventional coupling" the call-graph can't see (parallel registries / double-writes / sibling .md configs)
418
+ curl -fsS "{{BASE_URL}}/api/projectGraph/coedit?cwd=$PWD&filePath=<REL_PATH>"
419
+
420
+ ## Technical contract
421
+ - Endpoints return coordinates only. Fetch source with Read: \`Read offset=startLine limit=endLine-startLine+1\`
422
+ - qname uses \`Parent>Child\` form (not \`.\`); copy \`qualifiedName\` from search's response directly
423
+ - Cross-file name collisions are listed in \`ambiguousIn\` — pass \`&filePath=<rel>\` to disambiguate`,labelZh:"探索问题:",labelEn:"Exploration: "}};function e(a,b="en",c){var f,g;let h,i=a.trimStart(),j=i.match(/^\/([a-zA-Z]+)(?:\s+|$)/);if(!j)return a;let k=j[1],l=b.startsWith("zh")?"zh":"en",m=d[k],n=m?.[l];if(!n)return a;let o=function(a){if(a){let b=new URL(a.url),c=a.headers.get("x-forwarded-proto"),d=a.headers.get("x-forwarded-host");return c||d?`${c??b.protocol.replace(":","")}://${d??b.host}`:b.origin}let b=process.env.COCKPIT_PORT||process.env.PORT||"3457";return`http://localhost:${b}`}(c),p=n.replaceAll("{{BASE_URL}}",o),q=i.slice(j[0].length).trimStart(),r=(f=m,(h="zh"===(g=l)?f.labelZh:f.labelEn)||("zh"===g?"问题:":"Question: "));return q?`${p}
424
+
425
+ ${r}${q}`:p}}};