specrails-desktop 2.30.2 → 2.31.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 (462) hide show
  1. package/README.md +28 -24
  2. package/client/dist/assets/{ActivityFeedPage-9DZOvIcY.js → ActivityFeedPage-CAhFRUO4.js} +1 -1
  3. package/client/dist/assets/{AgentBrowserCapture-DqyHbzk7.js → AgentBrowserCapture-Ct4G5lsE.js} +1 -1
  4. package/client/dist/assets/AgentModeCodePane-DQt9WIvu.js +2 -0
  5. package/client/dist/assets/{AgentModeJobsPane-CTIHMUKN.js → AgentModeJobsPane-podaJVl9.js} +1 -1
  6. package/client/dist/assets/AgentsPage-DTZdbW80.js +87 -0
  7. package/client/dist/assets/AnalyticsPage-BskgGPm0.js +1 -0
  8. package/client/dist/assets/CodePage-CvtYo1DU.js +2 -0
  9. package/client/dist/assets/{DesktopAnalyticsPage-CkXUFj3F.js → DesktopAnalyticsPage-Dnf99E8e.js} +1 -1
  10. package/client/dist/assets/{DocsDialog-PhdCJNVj.js → DocsDialog-DHi36rZ4.js} +1 -1
  11. package/client/dist/assets/{DocsPage-BY-wDthx.js → DocsPage-DIdVrQz1.js} +1 -1
  12. package/client/dist/assets/{InteractiveJobComposer-C9I0A4KR.js → InteractiveJobComposer-BHeB2inv.js} +1 -1
  13. package/client/dist/assets/{JobDetailModal-I_RoQJV4.js → JobDetailModal-CF1SKUHH.js} +1 -1
  14. package/client/dist/assets/JobDetailPage-De3rY18h.js +1 -0
  15. package/client/dist/assets/{JobsPage-DcllM4Ip.js → JobsPage-CfAqqJTx.js} +1 -1
  16. package/client/dist/assets/{LoopBuilderPage-DGm_iuff.js → LoopBuilderPage-DSBMuTb3.js} +2 -2
  17. package/client/dist/assets/{LoopPreviewModal-BC-TeFdD.js → LoopPreviewModal-B-c37kA0.js} +1 -1
  18. package/client/dist/assets/LoopsPage-DjnNXdmm.js +1 -0
  19. package/client/dist/assets/{MinimizedChatsContext-Cs34FPTz.js → MinimizedChatsContext-DIsnQMVz.js} +1 -1
  20. package/client/dist/assets/PluginsPage-DA5pQ_6u.js +2 -0
  21. package/client/dist/assets/{ProjectSettingsDialog-nEs-ENrE.js → ProjectSettingsDialog-DA23PSi6.js} +1 -1
  22. package/client/dist/assets/{TemplatePreviewModal-D4qW-J9B.js → TemplatePreviewModal-Cp7IQ-g2.js} +1 -1
  23. package/client/dist/assets/TicketDetailModal-BPD2i_0R.js +14 -0
  24. package/client/dist/assets/{Trans-CPISVji8.js → Trans-cWtExGkC.js} +1 -1
  25. package/client/dist/assets/addspec-4WmLJmBG.js +1 -0
  26. package/client/dist/assets/addspec-BRlk8jON.js +1 -0
  27. package/client/dist/assets/addspec-C7XRejU4.js +1 -0
  28. package/client/dist/assets/addspec-CHW9xf_X.js +1 -0
  29. package/client/dist/assets/addspec-DTmRrWrF.js +1 -0
  30. package/client/dist/assets/addspec-DhmnXER8.js +1 -0
  31. package/client/dist/assets/addspec-Di41DpYV.js +1 -0
  32. package/client/dist/assets/addspec-x3mizDxc.js +1 -0
  33. package/client/dist/assets/agent-BKsuIgIT.js +1 -0
  34. package/client/dist/assets/agent-Bs9NilfI.js +1 -0
  35. package/client/dist/assets/agent-C23h684q.js +1 -0
  36. package/client/dist/assets/agent-CqEjy3Z2.js +1 -0
  37. package/client/dist/assets/agent-D5DZTks1.js +1 -0
  38. package/client/dist/assets/agent-DE8hUYPl.js +1 -0
  39. package/client/dist/assets/agent-DsTuJGSc.js +1 -0
  40. package/client/dist/assets/agent-DwZM05-x.js +1 -0
  41. package/client/dist/assets/agents-45GbINfh.js +1 -0
  42. package/client/dist/assets/agents-BHp0_FQt.js +1 -0
  43. package/client/dist/assets/agents-Bvyi3y6R.js +1 -0
  44. package/client/dist/assets/agents-DMKFStHL.js +1 -0
  45. package/client/dist/assets/agents-DaYcxAr1.js +1 -0
  46. package/client/dist/assets/agents-IUOgqT5t.js +1 -0
  47. package/client/dist/assets/agents-ms7TwG16.js +1 -0
  48. package/client/dist/assets/agents-rzPnqoBR.js +1 -0
  49. package/client/dist/assets/agentstudio-8TQqBenW.js +1 -0
  50. package/client/dist/assets/agentstudio-B8Z_mmEX.js +1 -0
  51. package/client/dist/assets/agentstudio-BZR9YmLs.js +1 -0
  52. package/client/dist/assets/agentstudio-Bge9pAWb.js +1 -0
  53. package/client/dist/assets/agentstudio-Bz169Vzt.js +1 -0
  54. package/client/dist/assets/agentstudio-D6L2jpNi.js +1 -0
  55. package/client/dist/assets/agentstudio-K2-Z7CL0.js +1 -0
  56. package/client/dist/assets/agentstudio-Zmgzthv8.js +1 -0
  57. package/client/dist/assets/analytics-B8Qtptbl.js +1 -0
  58. package/client/dist/assets/analytics-BHqUazhP.js +1 -0
  59. package/client/dist/assets/analytics-BPptRY4f.js +1 -0
  60. package/client/dist/assets/analytics-BxDGOIwf.js +1 -0
  61. package/client/dist/assets/analytics-C9RaQcE3.js +1 -0
  62. package/client/dist/assets/analytics-CJIwqrEl.js +1 -0
  63. package/client/dist/assets/analytics-D_OZdQ9O.js +1 -0
  64. package/client/dist/assets/analytics-We6lUMI8.js +1 -0
  65. package/client/dist/assets/builder-3bygQtZi.js +1 -0
  66. package/client/dist/assets/builder-BiUG9Z5K.js +1 -0
  67. package/client/dist/assets/builder-CGRz_-zP.js +1 -0
  68. package/client/dist/assets/builder-CWYPw7Cw.js +1 -0
  69. package/client/dist/assets/builder-CX1437hF.js +1 -0
  70. package/client/dist/assets/{builder-CwA4T7gP.js → builder-Cowk9jtL.js} +1 -1
  71. package/client/dist/assets/builder-DwDexYRE.js +1 -0
  72. package/client/dist/assets/builder-skfnZ1uC.js +1 -0
  73. package/client/dist/assets/code-B0O8-p8k.js +1 -0
  74. package/client/dist/assets/code-B1VLZDhS.js +1 -0
  75. package/client/dist/assets/code-B86IMAfz.js +1 -0
  76. package/client/dist/assets/code-Bpj4Ddml.js +1 -0
  77. package/client/dist/assets/code-BykBZ5-e.js +1 -0
  78. package/client/dist/assets/code-CHPkOkDS.js +1 -0
  79. package/client/dist/assets/code-CkUuW4m9.js +1 -0
  80. package/client/dist/assets/code-cAqaqMTx.js +1 -0
  81. package/client/dist/assets/{dashboard-Dy2Um-US.js → dashboard-BVq6kRJe.js} +1 -1
  82. package/client/dist/assets/{dashboard-CHCEkds4.js → dashboard-BaKPPmLH.js} +1 -1
  83. package/client/dist/assets/{dashboard-CrlTV1ms.js → dashboard-Bm8e4zYG.js} +1 -1
  84. package/client/dist/assets/{dashboard-WhzOQw1S.js → dashboard-Bt6IesnM.js} +1 -1
  85. package/client/dist/assets/{dashboard-Cslu_GCH.js → dashboard-C_NQZle_.js} +1 -1
  86. package/client/dist/assets/{dashboard-DweT3Y4R.js → dashboard-CyZKoGoI.js} +1 -1
  87. package/client/dist/assets/{dashboard-DUU8-_Rg.js → dashboard-HIUdUBQ0.js} +1 -1
  88. package/client/dist/assets/{dashboard-Cqmmbh3l.js → dashboard-pm4Mr229.js} +1 -1
  89. package/client/dist/assets/{dist-js-jwoXo0YD.js → dist-js-BaP-xLOy.js} +1 -1
  90. package/client/dist/assets/{dist-js-Dj72W6qo.js → dist-js-CLlgOa5a.js} +1 -1
  91. package/client/dist/assets/format-command-C0D9IPmV.js +1 -0
  92. package/client/dist/assets/{formatDistanceToNow-ByKli7Q_.js → formatDistanceToNow-DUyzS4rr.js} +1 -1
  93. package/client/dist/assets/{getTimezoneOffsetInMilliseconds-qrcBaLW1.js → getTimezoneOffsetInMilliseconds-BCIwmmTj.js} +1 -1
  94. package/client/dist/assets/{i18n-Bf9Ckd10.js → i18n-D21Pr8Sj.js} +2 -2
  95. package/client/dist/assets/index-BdSDUFnA.css +2 -0
  96. package/client/dist/assets/index-Ci4-JKDr.js +77 -0
  97. package/client/dist/assets/{jobs-CVFD8rar.js → jobs-BAls3bWq.js} +1 -1
  98. package/client/dist/assets/{jobs-DoSaFzAa.js → jobs-B_TeSQxb.js} +1 -1
  99. package/client/dist/assets/jobs-Bgq-PZkC.js +1 -0
  100. package/client/dist/assets/jobs-Bpks6doU.js +1 -0
  101. package/client/dist/assets/jobs-CN_zv4Gr.js +1 -0
  102. package/client/dist/assets/jobs-DUlWSYq2.js +1 -0
  103. package/client/dist/assets/{jobs-B-sDHEay.js → jobs-DhxKgWFq.js} +1 -1
  104. package/client/dist/assets/{jobs-lk1_Dq1U.js → jobs-SwYS2M-B.js} +1 -1
  105. package/client/dist/assets/nav-BHDiSIVu.js +1 -0
  106. package/client/dist/assets/nav-CMiYAq4i.js +1 -0
  107. package/client/dist/assets/nav-CqS7NrDW.js +1 -0
  108. package/client/dist/assets/nav-D-0M7xfv.js +1 -0
  109. package/client/dist/assets/nav-D65O6u9I.js +1 -0
  110. package/client/dist/assets/nav-D_LKYvBr.js +1 -0
  111. package/client/dist/assets/nav-FDTJmU79.js +1 -0
  112. package/client/dist/assets/nav-VaB-C4k5.js +1 -0
  113. package/client/dist/assets/provider-capabilities-BvoExILy.js +1 -0
  114. package/client/dist/assets/settings-BveOJoaI.js +1 -0
  115. package/client/dist/assets/settings-Cj1C6F5k.js +1 -0
  116. package/client/dist/assets/settings-CuVwOpe0.js +1 -0
  117. package/client/dist/assets/settings-D5X4DfRc.js +1 -0
  118. package/client/dist/assets/settings-DXwxe-BW.js +1 -0
  119. package/client/dist/assets/settings-Di81Ba_V.js +1 -0
  120. package/client/dist/assets/settings-jbLjCYC_.js +1 -0
  121. package/client/dist/assets/settings-wIZNPFnn.js +1 -0
  122. package/client/dist/assets/setup-BBiHEO7h.js +1 -0
  123. package/client/dist/assets/setup-BlTWhNIQ.js +1 -0
  124. package/client/dist/assets/setup-Bp2L_oiP.js +1 -0
  125. package/client/dist/assets/setup-CInYXp1-.js +1 -0
  126. package/client/dist/assets/{setup-CITtPjed.js → setup-CYH3bP6K.js} +1 -1
  127. package/client/dist/assets/setup-DwcQ921P.js +1 -0
  128. package/client/dist/assets/setup-PBLjuDSs.js +1 -0
  129. package/client/dist/assets/setup-bx6FtoBp.js +1 -0
  130. package/client/dist/assets/{spending-DMnCXy84.js → spending-BCyUxoOI.js} +1 -1
  131. package/client/dist/assets/{tickets-B8BuAaj5.js → tickets-BL9r1G0e.js} +1 -1
  132. package/client/dist/assets/{tickets-DpmdE8tv.js → tickets-B_NyHJ8f.js} +1 -1
  133. package/client/dist/assets/{tickets-B_yh4qQk.js → tickets-BarF1wuG.js} +1 -1
  134. package/client/dist/assets/{tickets-pAUJkDTu.js → tickets-CclVhpQA.js} +1 -1
  135. package/client/dist/assets/{tickets-D_yDquEw.js → tickets-CqqOHbli.js} +1 -1
  136. package/client/dist/assets/{tickets-CFk2n2Or.js → tickets-DCkFSiqt.js} +1 -1
  137. package/client/dist/assets/{tickets-DQp7JS2R.js → tickets-Djn3ccfT.js} +1 -1
  138. package/client/dist/assets/{tickets-Bs37scwY.js → tickets-MiHBPsy_.js} +1 -1
  139. package/client/dist/assets/{useBrowserCaptureSession-CkBJShUw.js → useBrowserCaptureSession-CkVCDzer.js} +1 -1
  140. package/client/dist/assets/{useDesktop-B4pSBIDd.js → useDesktop-DCP_MHp9.js} +1 -1
  141. package/client/dist/index.html +25 -24
  142. package/docs/README.md +7 -3
  143. package/docs/cli.md +3 -3
  144. package/docs/codex.md +51 -64
  145. package/docs/creating-specs.md +36 -4
  146. package/docs/customizing.md +5 -5
  147. package/docs/gemini.md +35 -47
  148. package/docs/getting-started.md +15 -9
  149. package/docs/guide/de/agents/2-profiles-and-the-balanced-default.md +5 -1
  150. package/docs/guide/de/agents/4-custom-agents-catalog.md +7 -4
  151. package/docs/guide/de/getting-started/1-what-is-specrails.md +1 -0
  152. package/docs/guide/de/getting-started/2-installing-and-first-run.md +1 -0
  153. package/docs/guide/de/getting-started/4-the-dashboard-tour.md +4 -4
  154. package/docs/guide/de/integrations/1-ai-providers.md +29 -18
  155. package/docs/guide/de/integrations/2-plugins.md +3 -3
  156. package/docs/guide/de/integrations/6-agent-chat.md +8 -1
  157. package/docs/guide/de/pipeline/1-rails-and-jobs.md +9 -6
  158. package/docs/guide/de/pipeline/2-the-job-detail-view.md +3 -1
  159. package/docs/guide/de/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  160. package/docs/guide/de/pipeline/4-picking-an-engine-per-rail.md +13 -13
  161. package/docs/guide/de/pipeline/5-the-loop-builder.md +6 -2
  162. package/docs/guide/de/specs/2-add-spec-quick-mode.md +6 -1
  163. package/docs/guide/en/agents/2-profiles-and-the-balanced-default.md +7 -1
  164. package/docs/guide/en/agents/4-custom-agents-catalog.md +17 -4
  165. package/docs/guide/en/getting-started/1-what-is-specrails.md +2 -1
  166. package/docs/guide/en/getting-started/2-installing-and-first-run.md +2 -1
  167. package/docs/guide/en/getting-started/4-the-dashboard-tour.md +5 -5
  168. package/docs/guide/en/insights/3-code-explorer.md +5 -0
  169. package/docs/guide/en/integrations/1-ai-providers.md +63 -22
  170. package/docs/guide/en/integrations/2-plugins.md +3 -3
  171. package/docs/guide/en/integrations/6-agent-chat.md +14 -2
  172. package/docs/guide/en/pipeline/1-rails-and-jobs.md +19 -7
  173. package/docs/guide/en/pipeline/2-the-job-detail-view.md +3 -1
  174. package/docs/guide/en/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  175. package/docs/guide/en/pipeline/4-picking-an-engine-per-rail.md +25 -11
  176. package/docs/guide/en/pipeline/5-the-loop-builder.md +7 -2
  177. package/docs/guide/en/specs/2-add-spec-quick-mode.md +10 -1
  178. package/docs/guide/es/agents/2-profiles-and-the-balanced-default.md +5 -1
  179. package/docs/guide/es/agents/4-custom-agents-catalog.md +7 -4
  180. package/docs/guide/es/getting-started/1-what-is-specrails.md +1 -0
  181. package/docs/guide/es/getting-started/2-installing-and-first-run.md +1 -0
  182. package/docs/guide/es/getting-started/4-the-dashboard-tour.md +4 -4
  183. package/docs/guide/es/integrations/1-ai-providers.md +30 -18
  184. package/docs/guide/es/integrations/2-plugins.md +3 -3
  185. package/docs/guide/es/integrations/6-agent-chat.md +8 -1
  186. package/docs/guide/es/pipeline/1-rails-and-jobs.md +9 -6
  187. package/docs/guide/es/pipeline/2-the-job-detail-view.md +3 -1
  188. package/docs/guide/es/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  189. package/docs/guide/es/pipeline/4-picking-an-engine-per-rail.md +15 -13
  190. package/docs/guide/es/pipeline/5-the-loop-builder.md +6 -2
  191. package/docs/guide/es/specs/2-add-spec-quick-mode.md +6 -1
  192. package/docs/guide/fr/agents/2-profiles-and-the-balanced-default.md +5 -1
  193. package/docs/guide/fr/agents/4-custom-agents-catalog.md +7 -4
  194. package/docs/guide/fr/getting-started/1-what-is-specrails.md +1 -0
  195. package/docs/guide/fr/getting-started/2-installing-and-first-run.md +1 -0
  196. package/docs/guide/fr/getting-started/4-the-dashboard-tour.md +4 -4
  197. package/docs/guide/fr/integrations/1-ai-providers.md +29 -18
  198. package/docs/guide/fr/integrations/2-plugins.md +3 -3
  199. package/docs/guide/fr/integrations/6-agent-chat.md +8 -1
  200. package/docs/guide/fr/pipeline/1-rails-and-jobs.md +9 -6
  201. package/docs/guide/fr/pipeline/2-the-job-detail-view.md +3 -1
  202. package/docs/guide/fr/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  203. package/docs/guide/fr/pipeline/4-picking-an-engine-per-rail.md +15 -13
  204. package/docs/guide/fr/pipeline/5-the-loop-builder.md +6 -2
  205. package/docs/guide/fr/specs/2-add-spec-quick-mode.md +6 -1
  206. package/docs/guide/it/agents/2-profiles-and-the-balanced-default.md +5 -1
  207. package/docs/guide/it/agents/4-custom-agents-catalog.md +7 -4
  208. package/docs/guide/it/getting-started/1-what-is-specrails.md +1 -0
  209. package/docs/guide/it/getting-started/2-installing-and-first-run.md +1 -0
  210. package/docs/guide/it/getting-started/4-the-dashboard-tour.md +4 -4
  211. package/docs/guide/it/integrations/1-ai-providers.md +28 -18
  212. package/docs/guide/it/integrations/2-plugins.md +3 -3
  213. package/docs/guide/it/integrations/6-agent-chat.md +8 -1
  214. package/docs/guide/it/pipeline/1-rails-and-jobs.md +9 -6
  215. package/docs/guide/it/pipeline/2-the-job-detail-view.md +3 -1
  216. package/docs/guide/it/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  217. package/docs/guide/it/pipeline/4-picking-an-engine-per-rail.md +13 -13
  218. package/docs/guide/it/pipeline/5-the-loop-builder.md +6 -2
  219. package/docs/guide/it/specs/2-add-spec-quick-mode.md +6 -1
  220. package/docs/guide/ja/agents/2-profiles-and-the-balanced-default.md +6 -1
  221. package/docs/guide/ja/agents/4-custom-agents-catalog.md +7 -4
  222. package/docs/guide/ja/getting-started/1-what-is-specrails.md +1 -0
  223. package/docs/guide/ja/getting-started/2-installing-and-first-run.md +1 -0
  224. package/docs/guide/ja/getting-started/4-the-dashboard-tour.md +4 -4
  225. package/docs/guide/ja/integrations/1-ai-providers.md +28 -18
  226. package/docs/guide/ja/integrations/2-plugins.md +3 -3
  227. package/docs/guide/ja/integrations/6-agent-chat.md +7 -1
  228. package/docs/guide/ja/pipeline/1-rails-and-jobs.md +9 -6
  229. package/docs/guide/ja/pipeline/2-the-job-detail-view.md +3 -1
  230. package/docs/guide/ja/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  231. package/docs/guide/ja/pipeline/4-picking-an-engine-per-rail.md +14 -13
  232. package/docs/guide/ja/pipeline/5-the-loop-builder.md +6 -2
  233. package/docs/guide/ja/specs/2-add-spec-quick-mode.md +6 -1
  234. package/docs/guide/pt/agents/2-profiles-and-the-balanced-default.md +5 -1
  235. package/docs/guide/pt/agents/4-custom-agents-catalog.md +7 -4
  236. package/docs/guide/pt/getting-started/1-what-is-specrails.md +1 -0
  237. package/docs/guide/pt/getting-started/2-installing-and-first-run.md +1 -0
  238. package/docs/guide/pt/getting-started/4-the-dashboard-tour.md +4 -4
  239. package/docs/guide/pt/integrations/1-ai-providers.md +28 -18
  240. package/docs/guide/pt/integrations/2-plugins.md +3 -3
  241. package/docs/guide/pt/integrations/6-agent-chat.md +7 -1
  242. package/docs/guide/pt/pipeline/1-rails-and-jobs.md +9 -6
  243. package/docs/guide/pt/pipeline/2-the-job-detail-view.md +2 -1
  244. package/docs/guide/pt/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  245. package/docs/guide/pt/pipeline/4-picking-an-engine-per-rail.md +14 -13
  246. package/docs/guide/pt/pipeline/5-the-loop-builder.md +6 -2
  247. package/docs/guide/pt/specs/2-add-spec-quick-mode.md +6 -1
  248. package/docs/guide/zh/agents/2-profiles-and-the-balanced-default.md +4 -1
  249. package/docs/guide/zh/agents/4-custom-agents-catalog.md +7 -4
  250. package/docs/guide/zh/getting-started/1-what-is-specrails.md +1 -0
  251. package/docs/guide/zh/getting-started/2-installing-and-first-run.md +1 -0
  252. package/docs/guide/zh/getting-started/4-the-dashboard-tour.md +4 -4
  253. package/docs/guide/zh/integrations/1-ai-providers.md +26 -18
  254. package/docs/guide/zh/integrations/2-plugins.md +3 -3
  255. package/docs/guide/zh/integrations/6-agent-chat.md +6 -1
  256. package/docs/guide/zh/pipeline/1-rails-and-jobs.md +9 -6
  257. package/docs/guide/zh/pipeline/2-the-job-detail-view.md +2 -1
  258. package/docs/guide/zh/pipeline/3-batch-implement-and-multi-feature.md +1 -1
  259. package/docs/guide/zh/pipeline/4-picking-an-engine-per-rail.md +12 -12
  260. package/docs/guide/zh/pipeline/5-the-loop-builder.md +6 -2
  261. package/docs/guide/zh/specs/2-add-spec-quick-mode.md +6 -1
  262. package/docs/internals/README.md +4 -1
  263. package/docs/internals/adding-a-provider.md +32 -28
  264. package/docs/internals/api-reference.md +37 -13
  265. package/docs/internals/architecture.md +5 -5
  266. package/docs/internals/bundled-framework-build-plan.md +3 -3
  267. package/docs/internals/code-explorer-story.md +4 -0
  268. package/docs/internals/configuration.md +17 -5
  269. package/docs/internals/global-artifacts-alignment-contract.md +1 -1
  270. package/docs/internals/operations-runbook.md +1 -1
  271. package/docs/internals/profiles.md +37 -45
  272. package/docs/internals/project-builder.md +16 -0
  273. package/docs/kimi.md +291 -0
  274. package/docs/mcp.md +9 -2
  275. package/docs/platforms/macos.md +17 -7
  276. package/docs/platforms/windows.md +9 -4
  277. package/docs/running-pipelines.md +46 -12
  278. package/docs/terminal.md +1 -1
  279. package/docs/tracking-cost.md +25 -6
  280. package/package.json +4 -2
  281. package/server/dist/agent-chat-manager.js +74 -32
  282. package/server/dist/agent-chat-router.js +40 -17
  283. package/server/dist/agent-cwd-manager.js +14 -7
  284. package/server/dist/agent-generator.js +69 -85
  285. package/server/dist/agent-mcp-config.js +17 -11
  286. package/server/dist/agent-operator-prompt.js +29 -20
  287. package/server/dist/agent-refine-manager.js +58 -38
  288. package/server/dist/ai-invocations.js +65 -20
  289. package/server/dist/attachment-manager.js +49 -15
  290. package/server/dist/blueprint-chat-manager.js +41 -16
  291. package/server/dist/blueprint-router.js +40 -6
  292. package/server/dist/chat-manager.js +165 -89
  293. package/server/dist/code-explorer-router.js +26 -7
  294. package/server/dist/contract-refine-runner.js +146 -113
  295. package/server/dist/core-compat.js +57 -2
  296. package/server/dist/core-package.js +3 -3
  297. package/server/dist/core-update-manager.js +17 -1
  298. package/server/dist/db.js +60 -5
  299. package/server/dist/desktop-analytics.js +44 -6
  300. package/server/dist/desktop-router.js +127 -11
  301. package/server/dist/explore-cwd-manager.js +19 -3
  302. package/server/dist/feature-flags.js +1 -1
  303. package/server/dist/file-story-manager.js +3 -3
  304. package/server/dist/file-summary-generator.js +21 -15
  305. package/server/dist/file-summary-manager.js +6 -6
  306. package/server/dist/framework-manager.js +19 -2
  307. package/server/dist/framework-migration.js +27 -12
  308. package/server/dist/install-config-path.js +1 -1
  309. package/server/dist/interactive-job-session.js +8 -6
  310. package/server/dist/loop-command-catalog.js +27 -10
  311. package/server/dist/loop-executors.js +59 -27
  312. package/server/dist/loop-factory.js +2 -2
  313. package/server/dist/loop-run-manager.js +100 -39
  314. package/server/dist/loops-router.js +1 -1
  315. package/server/dist/mcp/guide.js +23 -16
  316. package/server/dist/mcp/tools/agents.js +47 -41
  317. package/server/dist/mcp/tools/analytics.js +2 -2
  318. package/server/dist/mcp/tools/loops.js +2 -2
  319. package/server/dist/mcp/tools/plugins.js +14 -9
  320. package/server/dist/mcp/tools/rails.js +12 -13
  321. package/server/dist/mcp/tools/support.js +1 -1
  322. package/server/dist/mobile/mobile-router.js +5 -1
  323. package/server/dist/offline-assemble.js +13 -1
  324. package/server/dist/path-resolver.js +2 -2
  325. package/server/dist/plugin-manager.js +391 -106
  326. package/server/dist/plugins/claude-md-mutation.js +5 -4
  327. package/server/dist/plugins/drift.js +32 -29
  328. package/server/dist/plugins/rail-integration.js +13 -2
  329. package/server/dist/plugins/serena/install.js +25 -17
  330. package/server/dist/plugins/serena/manifest.js +22 -5
  331. package/server/dist/plugins/serena/verify.js +46 -16
  332. package/server/dist/plugins-router.js +59 -8
  333. package/server/dist/profile-manager.js +148 -36
  334. package/server/dist/profiles-router.js +311 -82
  335. package/server/dist/project-registry.js +2 -2
  336. package/server/dist/project-router-chat.js +17 -8
  337. package/server/dist/project-router-helpers.js +93 -5
  338. package/server/dist/project-router-jobs.js +76 -12
  339. package/server/dist/project-router-loop-runs.js +42 -14
  340. package/server/dist/project-router-settings.js +31 -10
  341. package/server/dist/project-router-setup.js +4 -5
  342. package/server/dist/project-router-spending.js +15 -3
  343. package/server/dist/project-router-tickets.js +187 -181
  344. package/server/dist/project-router.js +1 -0
  345. package/server/dist/proposal-manager.js +125 -85
  346. package/server/dist/providers/claude-adapter.js +14 -0
  347. package/server/dist/providers/codex-adapter.js +20 -0
  348. package/server/dist/providers/gemini-adapter.js +14 -0
  349. package/server/dist/providers/index.js +18 -1
  350. package/server/dist/providers/kimi-adapter.js +361 -0
  351. package/server/dist/providers/kimi-skill-prompt.js +332 -0
  352. package/server/dist/providers/runtime.js +137 -0
  353. package/server/dist/queue-manager.js +103 -78
  354. package/server/dist/rail-isolated-launch.js +1 -1
  355. package/server/dist/rails-router.js +51 -38
  356. package/server/dist/result-event.js +5 -0
  357. package/server/dist/schemas/profile.v1.json +3 -4
  358. package/server/dist/setup-manager.js +222 -101
  359. package/server/dist/setup-prerequisites.js +7 -1
  360. package/server/dist/smash-runner.js +104 -57
  361. package/server/dist/spawn-lifecycle.js +18 -14
  362. package/server/dist/spec-launcher-manager.js +66 -54
  363. package/server/dist/spec-models.js +15 -6
  364. package/server/dist/spending.js +110 -17
  365. package/server/dist/util/cli-prompt.js +142 -5
  366. package/server/dist/util/stream-display.js +46 -0
  367. package/server/dist/workspace-manager.js +100 -37
  368. package/server/dist/worktree-manager.js +4 -0
  369. package/server/dist/worktree-overlay.js +12 -3
  370. package/client/dist/assets/AgentModeCodePane-BAYyFRmY.js +0 -2
  371. package/client/dist/assets/AgentsPage-DuyJuaFs.js +0 -86
  372. package/client/dist/assets/AnalyticsPage-BY7gtCx6.js +0 -1
  373. package/client/dist/assets/CodePage-vyQr40Vl.js +0 -2
  374. package/client/dist/assets/JobDetailPage-CU4FEnUC.js +0 -1
  375. package/client/dist/assets/LoopsPage-SqglnXlp.js +0 -1
  376. package/client/dist/assets/PluginsPage-B89S8o1a.js +0 -2
  377. package/client/dist/assets/TicketDetailModal-CI47Dq9E.js +0 -14
  378. package/client/dist/assets/addspec-BXjvkh5q.js +0 -1
  379. package/client/dist/assets/addspec-C4bwrmpi.js +0 -1
  380. package/client/dist/assets/addspec-CArHXUDM.js +0 -1
  381. package/client/dist/assets/addspec-DTKJcXiR.js +0 -1
  382. package/client/dist/assets/addspec-DbNBbrha.js +0 -1
  383. package/client/dist/assets/addspec-Rw8uVBC1.js +0 -1
  384. package/client/dist/assets/addspec-htHGZHOe.js +0 -1
  385. package/client/dist/assets/addspec-lr_LP6jk.js +0 -1
  386. package/client/dist/assets/agent-BABjRt0P.js +0 -1
  387. package/client/dist/assets/agent-BuUpgqVx.js +0 -1
  388. package/client/dist/assets/agent-CCDZesgU.js +0 -1
  389. package/client/dist/assets/agent-CVn64zWH.js +0 -1
  390. package/client/dist/assets/agent-CWeOny0E.js +0 -1
  391. package/client/dist/assets/agent-DOysmad_.js +0 -1
  392. package/client/dist/assets/agent-DSsjTBhn.js +0 -1
  393. package/client/dist/assets/agent-DlZMxfM9.js +0 -1
  394. package/client/dist/assets/agents-6ZOJXWVk.js +0 -1
  395. package/client/dist/assets/agents-BZ0XQKjg.js +0 -1
  396. package/client/dist/assets/agents-BqWklnHR.js +0 -1
  397. package/client/dist/assets/agents-Bz-thHkB.js +0 -1
  398. package/client/dist/assets/agents-CJclElx6.js +0 -1
  399. package/client/dist/assets/agents-D_l9L0VA.js +0 -1
  400. package/client/dist/assets/agents-DhG7mg6-.js +0 -1
  401. package/client/dist/assets/agents-u_C0jPB5.js +0 -1
  402. package/client/dist/assets/agentstudio-BF19hbXj.js +0 -1
  403. package/client/dist/assets/agentstudio-BIUe1Im2.js +0 -1
  404. package/client/dist/assets/agentstudio-BLGvxWBx.js +0 -1
  405. package/client/dist/assets/agentstudio-D9UKiWTj.js +0 -1
  406. package/client/dist/assets/agentstudio-Drs37nIM.js +0 -1
  407. package/client/dist/assets/agentstudio-nEnKkcXM.js +0 -1
  408. package/client/dist/assets/agentstudio-pyFcSBKy.js +0 -1
  409. package/client/dist/assets/agentstudio-zfTzQh3U.js +0 -1
  410. package/client/dist/assets/analytics-BC7mwR4s.js +0 -1
  411. package/client/dist/assets/analytics-BiNg8edP.js +0 -1
  412. package/client/dist/assets/analytics-C0s_T2GN.js +0 -1
  413. package/client/dist/assets/analytics-CdsAPAwZ.js +0 -1
  414. package/client/dist/assets/analytics-Cr1_q-lC.js +0 -1
  415. package/client/dist/assets/analytics-DZ8Aoq3I.js +0 -1
  416. package/client/dist/assets/analytics-IEsKZvpW.js +0 -1
  417. package/client/dist/assets/analytics-SRPf84OT.js +0 -1
  418. package/client/dist/assets/builder-BH8Fua-g.js +0 -1
  419. package/client/dist/assets/builder-BoV7DgKd.js +0 -1
  420. package/client/dist/assets/builder-Cc_Lf79C.js +0 -1
  421. package/client/dist/assets/builder-CwZ7Bme2.js +0 -1
  422. package/client/dist/assets/builder-CxW-JFsR.js +0 -1
  423. package/client/dist/assets/builder-D94lrV7x.js +0 -1
  424. package/client/dist/assets/builder-cqHpCyGa.js +0 -1
  425. package/client/dist/assets/code-76gS0IdL.js +0 -1
  426. package/client/dist/assets/code-BDXEM4ml.js +0 -1
  427. package/client/dist/assets/code-C1VwxlML.js +0 -1
  428. package/client/dist/assets/code-CnMZyJpr.js +0 -1
  429. package/client/dist/assets/code-D20ef9Cf.js +0 -1
  430. package/client/dist/assets/code-DdOXaWRY.js +0 -1
  431. package/client/dist/assets/code-Duohuf9l.js +0 -1
  432. package/client/dist/assets/code-geHmknB9.js +0 -1
  433. package/client/dist/assets/format-command-Dfa1o2d-.js +0 -1
  434. package/client/dist/assets/index-Dh9i4CnN.css +0 -2
  435. package/client/dist/assets/index-F9r8mWP_.js +0 -76
  436. package/client/dist/assets/jobs-BCtGfgUA.js +0 -1
  437. package/client/dist/assets/jobs-BHR_EnDI.js +0 -1
  438. package/client/dist/assets/jobs-BMbZJjJJ.js +0 -1
  439. package/client/dist/assets/jobs-DzSIR8V6.js +0 -1
  440. package/client/dist/assets/nav-BRJBxaGt.js +0 -1
  441. package/client/dist/assets/nav-CAGKv3_F.js +0 -1
  442. package/client/dist/assets/nav-CNskRJKQ.js +0 -1
  443. package/client/dist/assets/nav-DY93irBL.js +0 -1
  444. package/client/dist/assets/nav-DhjvYgqt.js +0 -1
  445. package/client/dist/assets/nav-Gb-r4wop.js +0 -1
  446. package/client/dist/assets/nav-TvumAFD2.js +0 -1
  447. package/client/dist/assets/nav-myFaXRHD.js +0 -1
  448. package/client/dist/assets/settings-B0ypw9uw.js +0 -1
  449. package/client/dist/assets/settings-B9ilOSYO.js +0 -1
  450. package/client/dist/assets/settings-BqlWHRHA.js +0 -1
  451. package/client/dist/assets/settings-D8dlqt4d.js +0 -1
  452. package/client/dist/assets/settings-DAZqjX2a.js +0 -1
  453. package/client/dist/assets/settings-DRh39v1S.js +0 -1
  454. package/client/dist/assets/settings-Mj1OJbfd.js +0 -1
  455. package/client/dist/assets/settings-lRReaSYm.js +0 -1
  456. package/client/dist/assets/setup-3832BJCo.js +0 -1
  457. package/client/dist/assets/setup-B8J-gECe.js +0 -1
  458. package/client/dist/assets/setup-BCIOxVsc.js +0 -1
  459. package/client/dist/assets/setup-BciLj_tU.js +0 -1
  460. package/client/dist/assets/setup-CTkE3cfh.js +0 -1
  461. package/client/dist/assets/setup-ajB4rYm-.js +0 -1
  462. package/client/dist/assets/setup-xFO1wNl0.js +0 -1
@@ -94,7 +94,8 @@ Algumas coisas que vale a pena saber:
94
94
  - **A linha de totais é real.** O compositor mostra um resumo ao vivo `N turnos · $X`, somado a partir do uso real de cada turno concluído — coerente com a promessa desta página de nunca adivinhar.
95
95
  - **Duas formas de uma sessão terminar.** A maioria dos jobs **termina sozinha**: assim que um turno acaba sem mensagens em fila, a sessão assenta e o job conclui — as suas mensagens são orientação opcional, nunca uma obrigação. Uma ação discreta **Concluir agora** termina-a mais cedo com tudo o que foi produzido até então. Os jobs **Freestyle** são a exceção: ficam à espera entre turnos até que clique em **Finalize** — é esse o seu desenho, uma sessão de ida e volta que fecha quando terminar.
96
96
  - **Nas execuções de loop, as mensagens vão para o passo ativo.** Num loop embutido ou personalizado, a sua mensagem chega ao **passo de IA que está a correr nesse momento**. Entre passos (enquanto o Loop Decider pensa, ou um comando de shell corre) o compositor mostra um breve estado *«À espera do próximo passo…»* — o texto rascunhado mantém-se, e o envio reativa-se quando o próximo passo de IA arranca. **Assentar este passo** termina o passo atual mais cedo e deixa o loop avançar com o que ele produziu.
97
- - **Só Claude, por agora.** Os jobs Codex e Gemini correm numa só passagem exatamente como antes — não aparece compositor. (Os operadores do servidor podem desligar a funcionalidade inteira com `SPECRAILS_INTERACTIVE_JOBS=false`.)
97
+ - **Interação persistente é só Claude.** Codex, Gemini e Kimi correm one-shot;
98
+ Kimi retoma o chat com novo `kimi --session=<id> -p` depois de um resume hint.
98
99
 
99
100
  ## Exportação de diagnóstico
100
101
 
@@ -81,4 +81,4 @@ Não há limite global de concorrência para ajustar. Abra os projetos ou rails
81
81
 
82
82
  - [Rails e jobs](rails-and-jobs) — o modelo da fila em detalhe.
83
83
  - [A vista de detalhe do job](the-job-detail-view) — ver um batch a correr ao vivo.
84
- - [Escolher um motor por rail](picking-an-engine-per-rail) — note que o Batch corre em qualquer fornecedor; o Freestyle é só Claude.
84
+ - [Escolher um motor por rail](picking-an-engine-per-rail) — o Batch corre em qualquer fornecedor; o Freestyle está disponível com Claude e Kimi.
@@ -1,6 +1,8 @@
1
1
  # Escolher um motor por rail
2
2
 
3
- O Specrails desktop trata o **Claude Code**, o **Codex CLI** e o **Gemini CLI** como motores de primeira classe. Um projeto pode ter um, dois ou os três instalados — e quando há mais do que um, escolhe que motor corre cada rail. Esta página cobre o seletor de motor por rail e quando recorrer a cada um.
3
+ O Specrails desktop trata **Claude Code**, **Codex CLI**, **Gemini CLI** e
4
+ **Kimi Code** como motores de primeira classe. Pode instalar qualquer
5
+ combinação compatível.
4
6
 
5
7
  ## Quando o seletor aparece
6
8
 
@@ -13,30 +15,27 @@ Quando aparece, a sua escolha é **por rail e por lançamento** — rails difere
13
15
  ## Como escolher um motor
14
16
 
15
17
  1. Certifique-se de que o seletor de motor do rail está visível (projeto com 2+ fornecedores).
16
- 2. Clique nele e escolha **Claude**, **Codex** ou **Gemini**.
18
+ 2. Escolha **Claude**, **Codex**, **Gemini** ou **Kimi**.
17
19
  3. Lance o rail com **▶ Play**.
18
20
 
19
21
  O motor selecionado corre todas as fases do pipeline desse rail. Se a CLI do motor escolhido não estiver instalada, o lançamento falha de imediato — nada é criado. Instale a CLI em falta e tente de novo.
20
22
 
21
23
  ## Em que cada motor é bom
22
24
 
23
- Os três correm os pipelines standard **Implement** e **Batch**. Aqui fica um guia prático para escolher:
25
+ Os quatro correm os pipelines standard **Implement** e **Batch**:
24
26
 
25
27
  | Motor | Recorra a ele quando… | Notas |
26
28
  |--------|--------------------|-------|
27
- | **Claude** | Quer o conjunto completo de funcionalidades: perfis de agentes, Freestyle, reporte de custo nativo, o suporte de ferramentas mais rico. O default para a maioria do trabalho. | O único motor que suporta **perfis de agentes**, **Freestyle** e algumas funcionalidades de spec exclusivas do Claude (Contract Layer, SMASH). |
29
+ | **Claude** | Precisa de custo nativo, interação persistente ou tool policy rigorosa. | Perfis, Freestyle e transformações estruturadas. |
28
30
  | **Codex** | Prefere o Codex CLI da OpenAI ou quer comparar implementações entre fornecedores. | `codex` ≥ 0.128.0. Sem reporte de custo nativo — a app preenche o custo a partir da sua tabela de preços. Os perfis não se aplicam. |
29
31
  | **Gemini** | Quer o Gemini CLI da Google, telemetria nativa ou uma execução mais barata para specs de rotina. | `gemini` ≥ 0.11.0 (defina `GEMINI_API_KEY`). Telemetria OTLP nativa. Os perfis não se aplicam. |
32
+ | **Kimi** | Quer Kimi agentic para Implement, Batch, Freestyle ou loops sem Decider. | `kimi` ≥ 0.27.0 externo; perfis/roles, effort só K3; tokens/custo indisponíveis. |
30
33
 
31
- ### As funcionalidades exclusivas do Claude
34
+ ### Diferenças de capability
32
35
 
33
- Algumas coisas só funcionam em rails Claude — escolha o Claude se precisar delas:
34
-
35
- - **Perfis de agentes** — encaminhamento de modelo por agente. Em rails Codex ou Gemini a execução usa sempre o modo legado e qualquer perfil selecionado é **ignorado**. O seletor de perfil fica escondido nos motores que não são Claude.
36
- - **Freestyle** — o modo autónomo que ignora o pipeline. O segmento `Freestyle` e o seu seletor de modelo Haiku/Sonnet/Opus só aparecem quando o motor do rail é o Claude.
37
- - **Contract Layer e SMASH** — funcionalidades de refinamento de spec exclusivas do Claude (são opções de Add Spec, não opções de rail, mas aplica-se a mesma restrição).
38
-
39
- Se um projeto mistura motores, a barra lateral direita só mostra as secções que **todos** os fornecedores instalados suportam — por isso a secção **Agentes** desaparece por completo num projeto que inclua qualquer fornecedor que não seja Claude, porque os perfis são específicos do Claude.
36
+ Claude/Kimi suportam perfis e Freestyle; Codex/Gemini usam legacy. Kimi
37
+ recusa Loop Decider e os transforms pure-output do
38
+ [guia Kimi](../../../kimi.md). Perfis Claude/Kimi ficam separados.
40
39
 
41
40
  ## Um fluxo de trabalho prático
42
41
 
@@ -49,12 +48,14 @@ Os projetos com vários fornecedores brilham quando quer **comparar** ou **afina
49
48
  ## Coisas a ter em conta
50
49
 
51
50
  - **A escolha de fornecedor é imutável depois de criar o projeto** (v1). Escolhe os fornecedores instalados ao adicionar o projeto; não há um toggle nas Definições para acrescentar ou remover um mais tarde.
52
- - **O custo é sempre acompanhado**, mesmo para motores sem reporte de custo nativo — a app recorre a uma tabela de preços para que as execuções de Codex e Gemini apareçam na mesma nas [analytics](../analytics/tracking-cost).
51
+ - **As métricas disponíveis são registadas.** Kimi não fornece tokens/custo
52
+ USD autoritativos; os campos ficam vazios.
53
53
  - **O botão "Abrir CLI de IA" do terminal** também oferece um seletor de fornecedor em projetos com vários fornecedores, caso prefira conduzir uma CLI à mão.
54
54
 
55
55
  ## Para onde ir a seguir
56
56
 
57
57
  - [Usar o Codex](../integrations/using-codex) — instalar e iniciar sessão.
58
58
  - [Usar o Gemini](../integrations/using-gemini) — instalar, `GEMINI_API_KEY`, telemetria.
59
+ - [Usar Kimi](../../../kimi.md) — instalação e matriz completa.
59
60
  - [Rails e jobs](rails-and-jobs) — a fila e o fluxo de lançamento.
60
61
  - [Acompanhar o custo](../analytics/tracking-cost) — repartição de custo por motor.
@@ -17,7 +17,7 @@ Um **loop** é a *receita* do trabalho; um **rail** é a *pista* que o roda cont
17
17
 
18
18
  - Os loops vivem na seção **Loops** (barra lateral esquerda, ao lado dos seus projetos) — eles são **globais**, compartilhados por todos os projetos.
19
19
  - Um rail **escolhe um loop** no cabeçalho (o seletor de Loop) e o roda quando você aperta Play.
20
- - O **rail** decide o provedor, o modelo e o esforço de raciocínio — *não* os passos do loop. O mesmo loop roda em Claude, Codex ou Gemini dependendo do rail.
20
+ - O **rail** escolhe provider, modelo e effort compatível. Um loop compatível corre em Claude, Codex, Gemini ou Kimi.
21
21
 
22
22
  Ou seja: construa um loop uma vez e depois escolha-o em qualquer rail, em qualquer projeto.
23
23
 
@@ -41,6 +41,10 @@ Um loop é um grafo de **nós** conectados por **arestas** (as setas). Cada nó
41
41
 
42
42
  As arestas conectam os passos em ordem. O **Loop Decider** tem duas saídas rotuladas — **continue** e **stop** — então você liga o "ainda não terminei" de volta ao trabalho e o "terminei" para um End.
43
43
 
44
+ > **Kimi corre loops com passos AI/shell, mas não com Loop Decider.** O
45
+ > veredito é pure-output e `kimi -p` não consegue impor o limite no-tools; o
46
+ > run é recusado antes do primeiro passo.
47
+
44
48
  ### Escrevendo o texto dos passos
45
49
 
46
50
  Dentro de qualquer AI Step ou Decider você pode referenciar:
@@ -57,7 +61,7 @@ Um loop que nunca para queimaria dinheiro para sempre, então toda execução te
57
61
  |-------|--------------|
58
62
  | **Max iterations** | Teto rígido de quantas vezes o Decider pode voltar atrás, independentemente do seu veredito. |
59
63
  | **Timeout (min)** | Limite de tempo de relógio para toda a execução. |
60
- | **Max cost ($)** | *Opcional.* Para o loop quando o custo acumulado cruza o seu orçamento. Verificado **entre passos** (o custo de um passo só é conhecido quando ele termina), então pode freestylepassar em um passo. No Claude o custo é exato; no Codex e no Gemini é uma estimativa. Deixe vazio para não ter teto. |
64
+ | **Max cost ($)** | *Opcional.* Claude reporta custo; Codex/Gemini usam estimativas. Kimi não reporta custo USD autoritativo. |
61
65
 
62
66
  ## Construindo com confiança
63
67
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  O modo Quick é para quando já sabe o que quer. Escreve a sua ideia, a IA redige a spec completa, e ela aterra no seu quadro como **Por fazer**. Sem idas e vindas — basta descrever e avançar.
4
4
 
5
+ > **Kimi não está disponível no Quick Spec.** `kimi -p` não consegue impor
6
+ > o limite pure-output deste formulário. O pedido é recusado antes do spawn;
7
+ > use Explore, Raw ou Quick Launcher (`/opsx:ff`).
8
+
5
9
  ## Criar uma spec no modo Quick
6
10
 
7
11
  Para criar uma spec rapidamente:
@@ -19,7 +23,8 @@ Enquanto a spec está a ser escrita, uma pequena notificação no canto mostra o
19
23
 
20
24
  **Modelo** — por predefinição, a IA escolhe um modelo sensato. Pode substituí-lo por spec a partir do seletor de modelo se quiser um mais rápido ou mais capaz.
21
25
 
22
- **Motor** — se o seu projeto tiver mais do que um fornecedor de IA instalado (qualquer combinação de Claude, Codex e Gemini), um seletor de motor fica no topo da janela para que possa escolher qual deles gera esta spec. A sua escolha é memorizada por projeto. Projetos com um único fornecedor não mostram isto — não há nada por onde escolher.
26
+ **Motor** — o seletor mostra apenas providers **compatíveis**; Kimi fica
27
+ excluído de Quick Spec.
23
28
 
24
29
  **Contexto** — o modo Quick normalmente corre como um único turno, porque não precisa de ler a sua base de código para escrever uma spec a partir da sua descrição. Mas um seletor de contexto permite dar-lhe mais material para trabalhar:
25
30
 
@@ -37,7 +37,10 @@ Profile 的选择就发生在你启动的地方——**rail 头部**,通过 Pr
37
37
 
38
38
  ## 当 Agents 区悄无声息时
39
39
 
40
- Profile 是 Claude 的能力。在包含非 Claude 提供商(Codex 或 Gemini)的项目上,Agents 区会被隐藏,rail 会在没有 Profile 的情况下运行——这是预期行为,并非 bug。Profile 还要求项目中的 `specrails-core` 足够新;如果版本偏旧,你会看到一条黄色横幅。你创建的 Profile 仍会**保存**——只是在 core 更新之前不会影响流水线。按横幅中给出的命令更新,即可解锁它们。
40
+ Profile 按 provider 隔离。Claude 和 Kimi 支持 profile/role;Codex 和
41
+ Gemini 使用 legacy mode。混合项目中相同名称也不会在 Claude/Kimi 之间
42
+ 串用。Kimi 支持手动 role,但 Agent Studio 的 generation、smoke test
43
+ 和 AI Refine 会在 spawn 前拒绝。Kimi 需要 `specrails-core` 4.12.0+。
41
44
 
42
45
  ## 接下来去哪儿
43
46
 
@@ -11,21 +11,24 @@ Profile 决定的是*哪些 Agent 运行、用什么模型*。但 Agent 本身
11
11
 
12
12
  ## 添加一个自定义 Agent
13
13
 
14
- 自定义 Agent 就是你仓库里 `.claude/agents/` 目录下的普通 Markdown 文件,命名为 `custom-<某某>.md`。文件内容包含该 Agent 的指令(它的系统提示词),以及一小段 frontmatter 头部,其中含有一个默认的 `model:`。
14
+ Role 是 provider-native asset:Claude 使用
15
+ `.claude/agents/custom-<name>.md`;Kimi 使用
16
+ `.kimi-code/skills/custom-<name>/SKILL.md`。
15
17
 
16
- 文件一旦存在于项目中,它就会作为自定义 Agent 出现在目录里,你便可以把它的 id 加入任意 Profile 的 Agent 链(并把任务路由给它)。id 必须与文件名一致——`custom-docs` 这个条目对应的是 `.claude/agents/custom-docs.md`。
18
+ Asset 存在后会出现在对应 provider 的目录中,其 id 只能加入同 provider 的 Profile。`custom-docs` 在 Claude 中对应 `.claude/agents/custom-docs.md`,在 Kimi 中对应 `.kimi-code/skills/custom-docs/SKILL.md`;二者互不混用。
17
19
 
18
20
  由于它们就住在你的仓库里,自定义 Agent 是**可提交的团队资产**:提交这个文件,你的整个团队就都拥有了这个 Agent。这呼应了贯穿整个 Agents 区的核心观念——
19
21
 
20
22
  > **Agent 定义是共享的(它们住在仓库里,随 `git` 一起流转)。模型配置则因项目而异(它住在 Profile 里)。**
21
23
 
22
- `custom-*` 命名空间是保留且受保护的:`specrails-core` 的 `init` 和 `update` 命令绝不会触碰 `.claude/agents/custom-*.md`,因此你的自定义 Agent 能在 core 升级中毫发无损地保留下来。(同样的保护也覆盖插件贡献的片段,比如 `custom-serena.md`。)
24
+ Core 保护两种格式。Kimi 支持手动 create/edit/run;Generate、Test 和
25
+ AI Refine 会在 spawn 前拒绝。
23
26
 
24
27
  ## 让自定义 Agent 上岗
25
28
 
26
29
  典型流程如下:
27
30
 
28
- 1. 编写 `.claude/agents/custom-<name>.md`,写好指令和一个默认模型。
31
+ 1. 创建 native Claude asset 或 Kimi Skill,并使用有效指令/model。
29
32
  2. 确认它出现在 **Agents → 目录** 的「自定义」分组下。
30
33
  3. 在 **Agents → Profile** 中,把这个 Agent 加入某条 Profile 链(也可在该 Profile 内覆盖它的模型)。
31
34
  4. 添加一条路由规则,让带有合适标签的任务到达它——或者依赖链的顺序。
@@ -36,6 +36,7 @@ specrails 支持主流的 AI 编程 CLI:
36
36
  - **Claude**(Claude Code)
37
37
  - **Codex**(Codex CLI)
38
38
  - **Gemini**(Gemini CLI)
39
+ - **Kimi**(Kimi Code)
39
40
 
40
41
  挑一个你已经在用的就行——或者多装几个,按任务来选。一个项目可以只跑一个提供商,也可以同时跑多个,所以你永远不会被某一个绑死。
41
42
 
@@ -23,6 +23,7 @@ specrails 唯一无法内置的,是 **AI 提供商 CLI** 本身。你至少需
23
23
  - **Claude Code**
24
24
  - **Codex CLI**
25
25
  - **Gemini CLI**
26
+ - **Kimi Code**
26
27
 
27
28
  把你打算用的那个装好,在终端里登录一次,就齐活了。specrails 会自动检测出有哪些提供商可用。
28
29
 
@@ -26,13 +26,13 @@
26
26
 
27
27
  - **仪表盘**——spec 看板和 rails(你刚才待的地方)。
28
28
  - **任务**——这个项目的每一次流水线运行,无论过去还是当下,都带有状态、耗时,并能深入查看任意一次运行的详情和日志。
29
- - **分析**——你的 AI 用量花了多少钱。按天、按活动、按模型、按工单拆解的开销——不会有任何意外惊吓。
30
- - **Agent**——你项目的 agent profile:流水线里跑哪些 agent、它们各自用什么 AI 模型。*(仅限由 Claude 驱动的项目。)*
31
- - **代码**——一个只读的文件浏览器,附带通俗易懂的 AI 摘要,还有标签显示 AI 动过哪些文件。对想跟上进度的非开发者来说非常友好。
29
+ - **分析**——按天、活动、模型和工单拆分的调用。Claude 报告账单成本,Codex/Gemini 使用估算值;Kimi 会把无法获得的 token/USD 字段留空。
30
+ - **Agent**——Claude 与 Kimi 各自独立的 Profile 和 Role 目录。Kimi Role 可手动创建/编辑;Generate、Test 和 AI Refine 不可用。
31
+ - **代码**——只读文件浏览器,以及显示 AI 动过哪些文件的标签。通俗 AI 摘要只对兼容 provider 显示,Kimi 不支持该转换。
32
32
  - **集成**——可选的附加组件,比如把你的 spec 连接到 **Jira** 看板,或为 AI 启用额外的工具。
33
33
  - **设置**——项目级选项(遥测、预算、提供商配置等等)。
34
34
 
35
- > 有些区块只有在对你所选的提供商有意义时才会出现——例如,**Agent** 是 Claude 专属的。如果你没看到某个区块,那只是说明它不适用于这个项目的配置。
35
+ > 区块和操作会遵循当前 provider 的 capability。例如 Profile 可用于 Claude/Kimi,但 Kimi 的 Agent Studio AI 操作会 fail closed。
36
36
 
37
37
  ## 状态栏
38
38
 
@@ -1,16 +1,19 @@
1
- # AI 提供方(Claude、Codex、Gemini)
1
+ # AI 提供方(Claude、Codex、Gemini、Kimi)
2
2
 
3
- Specrails 并不绑定在某一个 AI 上。应用里所有会调用 AI 的环节——Explore Spec、Quick spec、rail、聊天、AI Edit,以及终端里的「Open AI CLI」按钮——都可以走三家一流提供方中的任意一家。你来决定每个项目用哪些,甚至可以按任务逐个切换。
3
+ Specrails 并不绑定某一个 AI。Claude、Codex、Gemini 和 Kimi 都是一流
4
+ 提供方;每个界面只显示满足该功能 capability 合约的引擎。
4
5
 
5
- ## 三家提供方
6
+ ## 四家提供方
6
7
 
7
8
  | 提供方 | CLI | 出品方 | 说明 |
8
9
  |---|---|---|---|
9
- | **Claude** | `claude` | Anthropic | 功能最完整。Agents(profile)、Freestyle rail 以及 Contract Refine 都只有它支持。 |
10
+ | **Claude** | `claude` | Anthropic | 原生成本和持久交互 transport。 |
10
11
  | **Codex** | `codex` | OpenAI | 需要 codex `0.128.0+`。从你的全局 `~/.codex/config.toml` 读取 MCP 服务器。 |
11
12
  | **Gemini** | `gemini` | Google | 需要 gemini `0.11.0+`。使用原生遥测,以及 `GEMINI.md` 指令文件。 |
13
+ | **Kimi Code** | `kimi` | Moonshot AI | 需要 Kimi `0.27.0+`。Desktop 用 `-p` 启动外部 CLI,不安装或启动 server。 |
12
14
 
13
- 三家都是**默认启用**的。只要某家提供方的 CLI 已安装并在你的 `PATH` 上,它就会出现在 **Add Project** 里。所以第一步永远是一样的:按那个工具自己的文档把你想用的 CLI 装好并登录。一旦 `claude --version`(或 `codex`、`gemini`)能在你的终端里正常运行,Specrails 就能用它了。
15
+ 四家都是**默认启用**的。CLI 在 `PATH` 上就会显示。Kimi 请先确认
16
+ `kimi --version`,再运行 `kimi login`。
14
17
 
15
18
  ## 为一个项目安装单个提供方
16
19
 
@@ -25,40 +28,45 @@ Specrails 并不绑定在某一个 AI 上。应用里所有会调用 AI 的环
25
28
  关于多提供方项目,有几点值得了解:
26
29
 
27
30
  - **只有一个提供方时,行为和以前完全一样。** 如果一个项目只有单个提供方,你在任何地方都不会看到提供方选择器——应用保持干净、简单。
28
- - **右侧边栏只显示所有已安装提供方都支持的板块。** 因为 Agents(profile)是 Claude 独有的概念,所以一旦项目里包含任何非 Claude 的提供方,**Agents** 板块就会消失。其余的(Specs、Code、Analytics、Integrations、Terminal、Chat)都会保留。
31
+ - **UI 由 capability 驱动。** Claude 和 Kimi 支持按提供方隔离的
32
+ profile;Codex 和 Gemini 使用 legacy mode。
29
33
  - **提供方在创建后就锁定了。** 在这个版本里,你在添加项目时选定提供方,之后无法再从 Settings 更改。如果你需要不同的组合,那就新建一个项目。
30
34
 
31
35
  ## 按调用逐个选择提供方
32
36
 
33
37
  多提供方项目真正的价值,在于为每个任务挑到合适的 AI——而无需改动任何全局设置。凡是会运行 AI 的地方,都会出现一个小小的提供方选择器(仅当项目拥有不止一个提供方时):
34
38
 
35
- - **Add Spec**——有一个引擎选择器,让你用喜欢的提供方来 Explore 或 Quick 生成规格。
39
+ - **Add Spec**——Explore 支持 Kimi;Quick Spec 只显示能够保证安全
40
+ pure-output 边界的提供方,因此不包含 Kimi。
36
41
  - **rail 头部**——在启动某条具体的 rail 之前,为它挑选引擎。
37
42
  - **终端**——「Open AI CLI」(Sparkles)按钮会打开一个提供方菜单,让你在该项目目录下进入任意已安装的 CLI。
38
43
 
39
44
  你的选择会按项目被记住,默认是主提供方,所以你不用每次都重新选。
40
45
 
41
- ## 只有 Claude 才能做的事
46
+ ## Capability 差异
42
47
 
43
- 有少数功能天生就是 Claude 专属的,因此当其他提供方参与时,它们要么被隐藏、要么被跳过:
48
+ Kimi 支持 Project/Agent Chat、Explore/proposal、Quick Launcher
49
+ (`/opsx:ff`)、rail、Freestyle、没有 Decider 的 loop、profile/手动 role、
50
+ MCP、Serena、terminal 和附件。
44
51
 
45
- - **Agents(profile)**——按项目的 agent 目录与模型路由。在任何包含非 Claude 提供方的项目上都会隐藏。
46
- - **Freestyle rail**——始终在 Claude 上运行。
47
- - **Contract Refine**——对已提交规格追加的「Contract Layer」环节,只有当对话的提供方是 Claude 时才会运行。
48
- - **Add Spec 高级模式**(SMASH / Contract Layer)——对非 Claude 引擎隐藏。
49
-
50
- 其余的一切——Explore、Quick spec、完整的 rail 流水线、AI Edit、聊天、成本分析——三家全都能用。
52
+ `kimi -p` 会自动批准工具,无法强制 no-tools/read-only 边界。因此
53
+ Quick Spec、AI Edit、Contract Refine、SMASH/Re-SMASH、Project Builder
54
+ blueprint/milestone 生成、Loop Decider、文件摘要/construction story 和
55
+ Agent Studio automation 都会在 spawn 前拒绝。AI auto-title 使用确定性
56
+ fallback。详见 [Kimi 指南](../../../kimi.md)。
51
57
 
52
58
  ## 跨提供方的成本追踪
53
59
 
54
- **Analytics** 页面会追踪每一次产生费用的调用,无论用的是哪家提供方。在多提供方项目上,它还会加上引擎筛选标签,方便你按提供方对比开销。Claude 会报告自己的精确成本;而对 Codex 和 Gemini,Specrails 会用内置的费率表来估算成本,所以那些数字是接近的近似值,而非实际账单金额。
60
+ **Analytics** 记录实际启动的调用。Claude 报告成本,Codex/Gemini
61
+ 使用估算。Kimi 不报告 authoritative token 或 USD cost,因此这些字段
62
+ 保持为空。
55
63
 
56
64
  ## 疑难排查
57
65
 
58
- - **我装了某个提供方,却没出现在选项里。** 确认该 CLI 在你的 `PATH` 上(在一个全新终端里试试 `claude --version` / `codex --version` / `gemini --version`)。应用是通过你系统的 `PATH` 来探测提供方 CLI 的。
66
+ - **我装了某个提供方,却没出现在选项里。** 检查 `claude --version` / `codex --version` / `gemini --version` / `kimi --version`。
59
67
  - **聊天里没加载 Codex 的 MCP 服务器。** Codex 从你的全局 `~/.codex/config.toml` 读取 MCP 服务器——用 `codex mcp add` 在那里注册它们。
60
68
  - **紧急停用。** 可以通过环境变量在应用范围内关闭某个提供方(`SPECRAILS_CODEX_BETA=0` 或 `SPECRAILS_GEMINI_BETA=0`)。这只会把提供方从*选择列表*中隐藏;很少会用到。
61
69
 
62
70
  ## 另见
63
71
 
64
- 各提供方的专属指南会对每个 CLI 讲得更深入:Codex 指南和 Gemini 指南都涵盖了安装设置、能做什么,以及各自特有的小脾气。
72
+ 请参阅 [Kimi 指南](../../../kimi.md)、Codex 指南和 Gemini 指南。
@@ -21,7 +21,7 @@
21
21
  3. 点进插件,**预览安装**——这会在任何改动发生之前,明确告诉你哪些文件会被改动。
22
22
  4. 点击 **安装**。安装过程中你会看到实时进度。
23
23
 
24
- 在底层,安装是*精准且增量*的:它只会把自己的条目加进你项目的 `.mcp.json`(对某些插件,还会在受保护的 `.claude/agents/` 命名空间下加一个片段文件)。它绝不会整体重写你的配置,而且再装第二个插件也绝不会干扰第一个。如果安装无法自我验证为健康状态,它会干净利落地回滚。
24
+ 底层安装是*精准且增量*的:它只向所选 provider 的原生 MCP 配置添加自己的条目(某些 Claude 安装还会写入 `.claude/agents/` 片段)。它不会整体重写配置;健康检查失败时会干净回滚。
25
25
 
26
26
  ## 管理已安装的插件
27
27
 
@@ -37,8 +37,8 @@
37
37
 
38
38
  ## 提供方相关说明
39
39
 
40
- 插件是「提供方感知」的。Serena 及类似的 MCP 插件,会对那些通过项目 `.mcp.json` 注册 MCP 的提供方(Claude 和 Gemini)生效。对于 Codex 项目,MCP 服务器是通过 Codex 自己的全局配置来管理的,因此 **Integrations** 里的插件条目会相应地被过滤掉。Integrations 里的 Jira 卡片与提供方无关,对所有人都会显示——参见 Jira 指南。
40
+ 插件是 provider-aware 的。Serena 通过 `.mcp.json` 支持 Claude,通过项目隔离的 `CODEX_HOME` 和 `codex mcp add` 支持 Codex,并通过 `.kimi-code/mcp.json` 支持 Kimi。只有 manifest 声明支持时才显示,因此 Gemini 不提供 Serena。Jira 卡片与 provider 无关。
41
41
 
42
42
  ## 受保留的文件
43
43
 
44
- 插件会管理你项目里一小撮定义明确的文件:你的 `.mcp.json`(精准合并)、`.specrails/plugins/` 下的一些状态,以及位于 `.claude/agents/custom-<plugin>.md` 的各插件 agent 片段。如果你想和队友共享某个集成,这些都是可以提交进仓库的团队资产——应用绝不会盲目覆盖它们。
44
+ 插件只管理 provider 的原生 MCP 配置、`.specrails/plugins/` 状态,以及 Claude 确实需要时的 `.claude/agents/custom-<plugin>.md` 片段。Kimi 条目位于 `.kimi-code/mcp.json`;应用不会为 Kimi 写 Claude-only 片段,也不会盲目覆盖配置。
@@ -22,7 +22,12 @@ Agent Chat 通过内嵌的 **Specrails MCP 服务器**来驱动应用,因此
22
22
 
23
23
  ## 提供方与模型
24
24
 
25
- 在消息框正上方,你可以选择**提供方**(Claude、Codex 或 Gemini)及其**模型**。每个提供方都有各自的模型清单,切换提供方会以该提供方的默认模型开启一段全新会话——因此你可以,比如说,用 Claude 驱动应用,再切到 Codex 进行另一段对话,两者互不串扰。
25
+ 在消息框上方可选择**提供方**(Claude、Codex、Gemini 或 Kimi)及其
26
+ **模型**。切换提供方会开始独立 session。
27
+
28
+ 对于 Kimi,level 会限制 Specrails MCP 工具,但不会把 `kimi -p` 变成
29
+ sandbox:Kimi native 工具会自动批准。不安全的 pure-output action 会在
30
+ spawn 前拒绝;详见 [Kimi matrix](../../../kimi.md)。
26
31
 
27
32
  ## 权限级别——缰绳在你手里
28
33
 
@@ -35,8 +35,8 @@ rail 是一条**执行通道**。你从 SpecsBoard 上拖一张 spec 卡片放
35
35
  | **状态标签** | `idle`、`running` 或 `failed`。这里没有单独的"completed"——任务干净地跑完后,rail 会回到 `idle`。 |
36
36
  | **spec 列表** | 分配给这条 rail 的 ID。可以再拖进来,也可以拖出去解除关联。 |
37
37
  | **Loop 选择器** | 这条 rail 运行的 Loop——内置的(`Implement` / `Batch` / `Freestyle`)或某个自定义 loop。见下表。按 rail 单独记忆。 |
38
- | **Profile 选择器** | 运行哪个 Agent Profile(仅限 Claude rail)。只有当项目至少有一个 Profile 时才会出现。 |
39
- | **引擎选择器** | 这条 rail 用哪个已安装的提供方来跑——Claude、Codex 或 Gemini。仅当项目装有不止一个提供方时才显示。见 [为每条 rail 选择引擎](picking-an-engine-per-rail)。 |
38
+ | **Profile 选择器** | 使用哪个 provider profile(Claude/Kimi rail)。 |
39
+ | **引擎选择器** | 哪个 provider 运行 rail——Claude、Codex、Gemini 或 Kimi。 |
40
40
  | **▶ Play / ■ Stop** | 启动或取消。 |
41
41
 
42
42
  ### rail 运行的是什么:Loop
@@ -47,9 +47,11 @@ rail 是一条**执行通道**。你从 SpecsBoard 上拖一张 spec 卡片放
47
47
  |------|---------|--------------|
48
48
  | **Implement** | `/specrails:implement` | 一个任务覆盖这条 rail 上的所有 spec。跑完整的 Architect → Developer → Reviewer → Ship 流水线。日常默认选项。 |
49
49
  | **Batch** | `/specrails:batch-implement` | 一个任务,按依赖感知的批次(wave)依次处理 rail 上的各个 spec。最适合一组相关的 spec。 |
50
- | **Freestyle** | Freestyle | Claude 自主实现每个 spec,**绕过**流水线。每个 spec 一个独立任务。仅限 Claude。 |
50
+ | **Freestyle** | Freestyle | Claude 或 Kimi 自主实现每个 spec,**绕过**流水线。 |
51
51
 
52
- Freestyle 是个特例:它跳过 Agent 链条,把原始 spec 直接交给 Claude,让它用自己的原生工具去做。因为它比较"放飞",所以按下 Play 会先弹出一个确认框,而且有一个按 rail 单独的模型选择器,让你在 Haiku / Sonnet / Opus 之间挑选。只有当 rail 的引擎是 Claude 时它才会出现。Freestyle 运行还是唯一会**一直开着等你**的任务:在任务详情的输入框里和它聊天,满意了就点击 **Finalize**(其他所有任务都会自己收尾)。
52
+ Freestyle 使用 provider 的 native tool/model。Claude 有 persistent
53
+ interactive transport;Kimi 使用没有 persistent stdin 的 agentic
54
+ `kimi -p` process。
53
55
 
54
56
  除了这些内置 loop,你还可以**搭建自己的 loop**——重复一个 verify → fix → verify 的循环直到目标达成、在 AI 步骤之间串联 shell 命令,等等。这些自定义 loop 会出现在同一个 Loop 选择器里。这就是下一个大点子:[Loop Builder](the-loop-builder)。
55
57
 
@@ -81,7 +83,8 @@ Freestyle 是个特例:它跳过 Agent 链条,把原始 spec 直接交给 Cl
81
83
 
82
84
  ## 如果一条 rail 启动不起来
83
85
 
84
- 如果你选了一个对应 CLI 还没装到机器上的引擎,启动会**快速失败**,而不是开一个坏掉的任务——什么都不会启动。装上缺失的提供方 CLI([使用 Codex](../integrations/using-codex)、[使用 Gemini](../integrations/using-gemini))再启动一次即可。缺 Claude 或 Codex 时会给出精确的 "*&lt;provider&gt; CLI not found*" 提示;缺 Gemini 目前会显示一个通用的启动错误,但结果是一样的。
86
+ 如果缺少所选 CLI,会在 spawn 前失败。Kimi 需要安装并登录 `kimi`
87
+ 0.27+;Desktop 不会启动 server。
85
88
 
86
89
  ## 全部停下
87
90
 
@@ -96,4 +99,4 @@ Freestyle 是个特例:它跳过 Agent 链条,把原始 spec 直接交给 Cl
96
99
  - [Loop Builder](the-loop-builder)——rail 运行的是什么,以及如何搭建你自己的 loop。
97
100
  - [任务详情视图](the-job-detail-view)——阶段、实时指标、工单卡片。
98
101
  - [批量实现与多功能](batch-implement-and-multi-feature)——一次跑多个 spec。
99
- - [为每条 rail 选择引擎](picking-an-engine-per-rail)——Claude、Codex 还是 Gemini。
102
+ - [为每条 rail 选择引擎](picking-an-engine-per-rail)——Claude、Codex、Gemini 或 Kimi。
@@ -94,7 +94,8 @@ Architect ──► Developer ──► Reviewer ──► Ship
94
94
  - **总计行是真实的。** 输入框会显示一条实时的 `N 轮 · $X` 摘要,由每个已完成轮次的真实用量累加而来——和本页"绝不猜数字"的承诺一致。
95
95
  - **会话有两种结束方式。** 大多数任务**自己收尾**:一旦某轮结束且没有排队的消息,会话就自行落定、任务完成——你的消息是可选的引导,从来不是义务。一个低调的**立即收尾**操作可以提前结束它,保留到目前为止产出的一切。**Freestyle** 任务是例外:它们在轮次之间待命,直到你点击 **Finalize**——这正是它的设计,一场由你来关闭的往返会话。
96
96
  - **loop 运行中,消息会送到活跃的步骤。** 在内置或自定义 loop 上,你的消息会到达**此刻正在运行的 AI 步骤**。步骤之间(Loop Decider 思考时,或 shell 命令运行时)输入框会短暂显示*"等待下一步……"*状态——你草拟的文字会保留,下一个 AI 步骤启动时发送会重新可用。**结算此步骤**可以提前结束当前步骤,让 loop 带着它的产出继续前进。
97
- - **目前仅限 Claude。** Codex 和 Gemini 任务和以前一样一次性运行——不会出现输入框。(服务器运维可以用 `SPECRAILS_INTERACTIVE_JOBS=false` 关掉整个功能。)
97
+ - **persistent interaction 仅限 Claude。** Codex、Gemini、Kimi 都是
98
+ one-shot;Kimi chat 在收到 resume hint 后用新的 `kimi --session=<id> -p` 恢复。
98
99
 
99
100
  ## 诊断导出
100
101
 
@@ -81,4 +81,4 @@ Project B ▶ Rail running feature Y ┘
81
81
 
82
82
  - [Rail 与任务](rails-and-jobs)——深入理解队列模型。
83
83
  - [任务详情视图](the-job-detail-view)——实时观看一次批量运行。
84
- - [为每条 rail 选择引擎](picking-an-engine-per-rail)——注意 Batch 可在任意提供方上运行;Freestyle 仅限 Claude。
84
+ - [为每条 rail 选择引擎](picking-an-engine-per-rail)——Batch 可在任意提供方上运行;Freestyle 可用于 Claude 和 Kimi。
@@ -1,6 +1,7 @@
1
1
  # 为每条 rail 选择引擎
2
2
 
3
- Specrails desktop 把 **Claude Code**、**Codex CLI** 和 **Gemini CLI** 都当作一等公民的引擎。一个项目可以装其中一个、两个,或三个全装——而当装的不止一个时,你就能为每条 rail 选择用哪个引擎。本页讲解按 rail 的引擎选择器,以及什么时候该选哪一个。
3
+ Specrails desktop 把 **Claude Code**、**Codex CLI**、**Gemini CLI** 和
4
+ **Kimi Code** 都当作一等引擎。可安装任何 compatible 组合。
4
5
 
5
6
  ## 选择器何时出现
6
7
 
@@ -13,7 +14,7 @@ Specrails desktop 把 **Claude Code**、**Codex CLI** 和 **Gemini CLI** 都当
13
14
  ## 如何选择一个引擎
14
15
 
15
16
  1. 确认这条 rail 的引擎选择器正在显示(项目有 2 个及以上提供方)。
16
- 2. 点开它,选 **Claude**、**Codex** 或 **Gemini**。
17
+ 2. 选择 **Claude**、**Codex**、**Gemini** 或 **Kimi**。
17
18
  3. 用 **▶ Play** 启动这条 rail。
18
19
 
19
20
  被选中的引擎会跑这条 rail 流水线的每一个阶段。如果所选引擎对应的 CLI 没装,启动会快速失败——什么都不会启动。装上缺失的 CLI 再试一次即可。
@@ -24,19 +25,16 @@ Specrails desktop 把 **Claude Code**、**Codex CLI** 和 **Gemini CLI** 都当
24
25
 
25
26
  | 引擎 | 在什么情况下选它…… | 说明 |
26
27
  |--------|--------------------|-------|
27
- | **Claude** | 你想要全套功能:Agent Profile、Freestyle、原生成本上报、最丰富的工具支持。大多数工作的默认之选。 | 唯一支持 **Agent Profile**、**Freestyle** 以及几个 Claude 专属 spec 功能(Contract Layer、SMASH)的引擎。 |
28
+ | **Claude** | 需要原生成本、持久交互或严格 tool policy。 | Profile、Freestyle 和 structured transform。 |
28
29
  | **Codex** | 你更喜欢 OpenAI Codex CLI,或想跨提供方对比实现。 | `codex` ≥ 0.128.0。无原生成本上报——应用会用自己的价格表来补上成本。Profile 不适用。 |
29
30
  | **Gemini** | 你想用 Google 的 Gemini CLI、原生遥测,或为常规 spec 跑得更省钱。 | `gemini` ≥ 0.11.0(需设置 `GEMINI_API_KEY`)。原生 OTLP 遥测。Profile 不适用。 |
31
+ | **Kimi** | 用 agentic Kimi 跑 Implement、Batch、Freestyle 或无 Decider 的 loop。 | 外部 `kimi` ≥ 0.27.0;profile/role,effort 仅 K3;token/cost unavailable。 |
30
32
 
31
- ### Claude 专属功能
33
+ ### Capability 差异
32
34
 
33
- 有几样东西只在 Claude rail 上能用——如果你需要它们,就选 Claude:
34
-
35
- - **Agent Profile**——按 Agent 的模型路由。在 Codex 或 Gemini rail 上,运行始终走传统模式,所选的任何 Profile 都会被**忽略**。非 Claude 引擎下 Profile 选择器会被隐藏。
36
- - **Freestyle**——那个自主的、绕过流水线的模式。`Freestyle` 分段及其 Haiku/Sonnet/Opus 模型选择器,只有当 rail 的引擎是 Claude 时才会出现。
37
- - **Contract Layer 与 SMASH**——Claude 专属的 spec 优化功能(这些是 Add Spec 的选项,不是 rail 的选项,但同样的限制适用)。
38
-
39
- 如果一个项目混用了引擎,右侧栏只会显示**每一个**已安装提供方都支持的区块——所以在一个含有任何非 Claude 提供方的项目上,**Agents** 区会彻底消失,因为 Profile 是 Claude 特有的。
35
+ Claude/Kimi 支持 Profile 和 Freestyle;Codex/Gemini 使用 legacy。Kimi
36
+ 拒绝 Loop Decider 和 [Kimi 指南](../../../kimi.md) 中的 pure-output
37
+ transform。Claude/Kimi Profile 彼此隔离。
40
38
 
41
39
  ## 一套实用的工作流
42
40
 
@@ -49,12 +47,14 @@ Specrails desktop 把 **Claude Code**、**Codex CLI** 和 **Gemini CLI** 都当
49
47
  ## 几点需要记住
50
48
 
51
49
  - **提供方选择在项目创建后不可更改**(v1)。你在添加项目时选定要安装的提供方;之后没有 Settings 开关可以再增删。
52
- - **成本始终会被追踪**,即便是不原生上报成本的引擎——应用会回退到价格表,让 Codex 和 Gemini 的运行也照样出现在[分析](../analytics/tracking-cost)里。
50
+ - **available metrics 会记录。** Kimi 不提供 authoritative token/USD
51
+ cost,字段保持为空。
53
52
  - 在多提供方项目上,**终端的"Open AI CLI"按钮**也会提供一个提供方选择器,方便你想手动驱动某个 CLI 时使用。
54
53
 
55
54
  ## 接下来去哪儿
56
55
 
57
56
  - [使用 Codex](../integrations/using-codex)——安装与登录。
58
57
  - [使用 Gemini](../integrations/using-gemini)——安装、`GEMINI_API_KEY`、遥测。
58
+ - [使用 Kimi](../../../kimi.md)——安装与完整矩阵。
59
59
  - [Rail 与任务](rails-and-jobs)——队列与启动流程。
60
60
  - [追踪成本](../analytics/tracking-cost)——按引擎的成本明细。
@@ -17,7 +17,7 @@
17
17
 
18
18
  - loop 住在 **Loops** 区里(左侧栏,和你的项目并列)——它们是**全局**的,跨所有项目共享。
19
19
  - 一条 rail 在它的头部(Loop 选择器)**挑一个 loop**,按下 Play 时就运行它。
20
- - 是 **rail** 决定提供方、模型和推理强度——而*不是* loop 的步骤。同一个 loop 跑在 Claude、Codex 还是 Gemini 上,取决于这条 rail。
20
+ - **rail** 决定 provider、model 和 compatible effort。compatible loop 可在 Claude、Codex、Gemini 或 Kimi 上运行。
21
21
 
22
22
  所以:一个 loop 只需搭一次,之后就能在任意项目的任意 rail 上挑来用。
23
23
 
@@ -41,6 +41,10 @@
41
41
 
42
42
  边按顺序把各个步骤连起来。**Loop Decider** 有两个带标签的输出——**continue** 和 **stop**——所以你把"还没完"接回到活儿里去,把"完成了"接出去到一个 End。
43
43
 
44
+ > **Kimi 支持包含 AI/shell step 的 loop,但不支持 Loop Decider。**
45
+ > verdict 是 pure-output,`kimi -p` 无法强制 no-tools 边界;run 会在第一
46
+ > 个 step 前拒绝。
47
+
44
48
  ### 编写步骤文本
45
49
 
46
50
  在任意 AI Step 或 Decider 里,你都可以引用:
@@ -57,7 +61,7 @@
57
61
  |-------|--------------|
58
62
  | **Max iterations** | 不管 Decider 怎么裁决,它最多能绕回多少次的硬上限。 |
59
63
  | **Timeout (min)** | 整次运行的挂钟时间上限。 |
60
- | **Max cost ($)** | *可选。* 一旦累计成本越过你的预算就停掉 loop。它在**步骤之间**检查(一个步骤的成本只有等它结束才知道),所以可能会超出一个步骤。在 Claude 上成本是精确的;在 Codex 和 Gemini 上是估算值。留空就表示不设上限。 |
64
+ | **Max cost ($)** | *可选。* Claude 报告 cost;Codex/Gemini 使用估算。Kimi 不报告 authoritative USD cost。 |
61
65
 
62
66
  ## 有把握地搭建
63
67
 
@@ -2,6 +2,10 @@
2
2
 
3
3
  当你已经清楚自己想要什么时,Quick 模式正合适。你输入想法,AI 写出完整的 spec,它就以 **待办** 状态落在你的看板上。不需要来回讨论——只管描述,然后开干。
4
4
 
5
+ > **Kimi 不支持 Quick Spec。** `kimi -p` 无法强制此表单的 pure-output
6
+ > 边界,因此请求会在 spawn 前拒绝。请使用 Explore、Raw 或 Quick
7
+ > Launcher(`/opsx:ff`)。
8
+
5
9
  ## 用 Quick 模式创建 spec
6
10
 
7
11
  要快速创建一份 spec:
@@ -19,7 +23,8 @@
19
23
 
20
24
  **模型**——默认情况下,AI 会挑选一个合适的模型。如果你想要更快或更强的模型,可以在模型选择器里按 spec 单独覆写。
21
25
 
22
- **引擎**——如果你的项目安装了不止一个 AI provider(Claude、Codex、Gemini 的任意组合),对话框顶部会有一个引擎选择器,让你选择由哪一个来生成这份 spec。你的选择会按项目记住。单 provider 的项目不会显示它——因为没有可选的余地。
26
+ **引擎**——选择器只显示 **compatible** provider;Quick Spec 不包含
27
+ Kimi。
23
28
 
24
29
  **上下文**——Quick 模式通常作为单轮运行,因为它不需要读取你的代码库就能根据你的描述写出 spec。但一个上下文滑块可以给它更多素材:
25
30
 
@@ -21,7 +21,10 @@ If you're a user looking for **how do I do X?** docs, head back to the [user gui
21
21
  | [gemini-mcp-registration.md](gemini-mcp-registration.md) | How MCP servers actually reach gemini-cli (`.gemini/settings.json` + trust env, FQN tool prefix) and the deferred `.mcp.json` gap on non-agent-chat surfaces |
22
22
  | [browser-capture-performance.md](browser-capture-performance.md) | Embedded-browser fluidity: the CDP screencast → WS → canvas pipeline, the latency levers (non-blocking navigation, input coalescing, latest-frame-wins drawing, frame conflation), tuning knobs, and the OAuth popup design |
23
23
 
24
- **See also:** the app supports multiple AI CLIs as first-class, interchangeable engines — Claude Code, Codex CLI, and Gemini CLI. See [`../codex.md`](../codex.md) and [`../gemini.md`](../gemini.md) for the per-provider detail. Gemini is **enabled by default** (selectable whenever the `gemini` CLI is on `PATH`); the emergency rollback is `SPECRAILS_GEMINI_BETA=0` (only the exact string `0` disables it). Codex parallels this with `SPECRAILS_CODEX_BETA=0`.
24
+ **See also:** the app registers Claude Code, Codex CLI, Gemini CLI, and Kimi
25
+ Code as first-class engines. See [`../kimi.md`](../kimi.md),
26
+ [`../codex.md`](../codex.md), and [`../gemini.md`](../gemini.md). First-class
27
+ status is capability-aware: Kimi pure-output transforms fail closed.
25
28
 
26
29
  ## Contributing
27
30