@alan512/experienceengine 0.1.3 → 0.2.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 (605) hide show
  1. package/.claude-plugin/marketplace.json +0 -0
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/.env.example +0 -0
  4. package/.mcp.json +0 -0
  5. package/LICENSE +0 -0
  6. package/README.md +196 -114
  7. package/README.zh-CN.md +230 -100
  8. package/dist/adapters/claude-code/event-store.d.ts +0 -0
  9. package/dist/adapters/claude-code/event-store.js +0 -0
  10. package/dist/adapters/claude-code/event-store.js.map +0 -0
  11. package/dist/adapters/claude-code/hook-normalizer.d.ts +0 -0
  12. package/dist/adapters/claude-code/hook-normalizer.js +0 -0
  13. package/dist/adapters/claude-code/hook-normalizer.js.map +0 -0
  14. package/dist/adapters/claude-code/runtime-projection.d.ts +0 -0
  15. package/dist/adapters/claude-code/runtime-projection.js +0 -0
  16. package/dist/adapters/claude-code/runtime-projection.js.map +0 -0
  17. package/dist/adapters/claude-code/session-store.d.ts +1 -0
  18. package/dist/adapters/claude-code/session-store.js +24 -1
  19. package/dist/adapters/claude-code/session-store.js.map +1 -1
  20. package/dist/adapters/codex/action-registry.d.ts +84 -0
  21. package/dist/adapters/codex/action-registry.js +277 -0
  22. package/dist/adapters/codex/action-registry.js.map +1 -0
  23. package/dist/adapters/codex/broker-tools.d.ts +114 -0
  24. package/dist/adapters/codex/broker-tools.js +130 -0
  25. package/dist/adapters/codex/broker-tools.js.map +1 -0
  26. package/dist/adapters/codex/instruction-template.d.ts +0 -0
  27. package/dist/adapters/codex/instruction-template.js +0 -0
  28. package/dist/adapters/codex/instruction-template.js.map +0 -0
  29. package/dist/adapters/codex/mcp-server.d.ts +21 -0
  30. package/dist/adapters/codex/mcp-server.js +103 -423
  31. package/dist/adapters/codex/mcp-server.js.map +1 -1
  32. package/dist/analyzer/candidate-signals.d.ts +3 -1
  33. package/dist/analyzer/candidate-signals.js +159 -0
  34. package/dist/analyzer/candidate-signals.js.map +1 -1
  35. package/dist/analyzer/experience-analyzer.d.ts +0 -0
  36. package/dist/analyzer/experience-analyzer.js +0 -0
  37. package/dist/analyzer/experience-analyzer.js.map +0 -0
  38. package/dist/analyzer/extraction-evidence.d.ts +0 -0
  39. package/dist/analyzer/extraction-evidence.js +0 -0
  40. package/dist/analyzer/extraction-evidence.js.map +0 -0
  41. package/dist/analyzer/llm-learning-gate.d.ts +12 -1
  42. package/dist/analyzer/llm-learning-gate.js +633 -16
  43. package/dist/analyzer/llm-learning-gate.js.map +1 -1
  44. package/dist/analyzer/node-deduper.d.ts +0 -0
  45. package/dist/analyzer/node-deduper.js +0 -0
  46. package/dist/analyzer/node-deduper.js.map +0 -0
  47. package/dist/analyzer/node-normalizer.d.ts +0 -0
  48. package/dist/analyzer/node-normalizer.js +0 -0
  49. package/dist/analyzer/node-normalizer.js.map +0 -0
  50. package/dist/analyzer/storage-gate.d.ts +0 -0
  51. package/dist/analyzer/storage-gate.js +0 -0
  52. package/dist/analyzer/storage-gate.js.map +0 -0
  53. package/dist/analyzer/strategy-extractor.d.ts +0 -0
  54. package/dist/analyzer/strategy-extractor.js +0 -0
  55. package/dist/analyzer/strategy-extractor.js.map +0 -0
  56. package/dist/analyzer/warning-extractor.d.ts +0 -0
  57. package/dist/analyzer/warning-extractor.js +0 -0
  58. package/dist/analyzer/warning-extractor.js.map +0 -0
  59. package/dist/cli/commands/backup.d.ts +0 -0
  60. package/dist/cli/commands/backup.js +0 -0
  61. package/dist/cli/commands/backup.js.map +0 -0
  62. package/dist/cli/commands/claude-hook.d.ts +0 -0
  63. package/dist/cli/commands/claude-hook.js +11 -4
  64. package/dist/cli/commands/claude-hook.js.map +1 -1
  65. package/dist/cli/commands/codex-mcp-server.d.ts +0 -0
  66. package/dist/cli/commands/codex-mcp-server.js +0 -0
  67. package/dist/cli/commands/codex-mcp-server.js.map +0 -0
  68. package/dist/cli/commands/codex.d.ts +60 -0
  69. package/dist/cli/commands/codex.js +188 -0
  70. package/dist/cli/commands/codex.js.map +1 -0
  71. package/dist/cli/commands/config.d.ts +0 -0
  72. package/dist/cli/commands/config.js +0 -0
  73. package/dist/cli/commands/config.js.map +0 -0
  74. package/dist/cli/commands/cool.d.ts +0 -0
  75. package/dist/cli/commands/cool.js +0 -0
  76. package/dist/cli/commands/cool.js.map +0 -0
  77. package/dist/cli/commands/disable.d.ts +0 -0
  78. package/dist/cli/commands/disable.js +0 -0
  79. package/dist/cli/commands/disable.js.map +0 -0
  80. package/dist/cli/commands/doctor.d.ts +0 -0
  81. package/dist/cli/commands/doctor.js +20 -0
  82. package/dist/cli/commands/doctor.js.map +1 -1
  83. package/dist/cli/commands/enable.d.ts +0 -0
  84. package/dist/cli/commands/enable.js +0 -0
  85. package/dist/cli/commands/enable.js.map +0 -0
  86. package/dist/cli/commands/evaluate.d.ts +9 -3
  87. package/dist/cli/commands/evaluate.js +31 -5
  88. package/dist/cli/commands/evaluate.js.map +1 -1
  89. package/dist/cli/commands/export.d.ts +0 -0
  90. package/dist/cli/commands/export.js +0 -0
  91. package/dist/cli/commands/export.js.map +0 -0
  92. package/dist/cli/commands/feedback.d.ts +0 -0
  93. package/dist/cli/commands/feedback.js +0 -0
  94. package/dist/cli/commands/feedback.js.map +0 -0
  95. package/dist/cli/commands/import.d.ts +0 -0
  96. package/dist/cli/commands/import.js +0 -0
  97. package/dist/cli/commands/import.js.map +0 -0
  98. package/dist/cli/commands/init.d.ts +0 -0
  99. package/dist/cli/commands/init.js +21 -8
  100. package/dist/cli/commands/init.js.map +1 -1
  101. package/dist/cli/commands/inspect.d.ts +0 -0
  102. package/dist/cli/commands/inspect.js +69 -1
  103. package/dist/cli/commands/inspect.js.map +1 -1
  104. package/dist/cli/commands/install.d.ts +0 -0
  105. package/dist/cli/commands/install.js +0 -0
  106. package/dist/cli/commands/install.js.map +0 -0
  107. package/dist/cli/commands/maintenance.d.ts +0 -0
  108. package/dist/cli/commands/maintenance.js +0 -0
  109. package/dist/cli/commands/maintenance.js.map +0 -0
  110. package/dist/cli/commands/mcp-server.d.ts +0 -0
  111. package/dist/cli/commands/mcp-server.js +0 -0
  112. package/dist/cli/commands/mcp-server.js.map +0 -0
  113. package/dist/cli/commands/models.d.ts +0 -0
  114. package/dist/cli/commands/models.js +0 -0
  115. package/dist/cli/commands/models.js.map +0 -0
  116. package/dist/cli/commands/repair.d.ts +0 -0
  117. package/dist/cli/commands/repair.js +3 -3
  118. package/dist/cli/commands/repair.js.map +1 -1
  119. package/dist/cli/commands/retire.d.ts +0 -0
  120. package/dist/cli/commands/retire.js +0 -0
  121. package/dist/cli/commands/retire.js.map +0 -0
  122. package/dist/cli/commands/rollback.d.ts +0 -0
  123. package/dist/cli/commands/rollback.js +0 -0
  124. package/dist/cli/commands/rollback.js.map +0 -0
  125. package/dist/cli/commands/stats.d.ts +0 -0
  126. package/dist/cli/commands/stats.js +0 -0
  127. package/dist/cli/commands/stats.js.map +0 -0
  128. package/dist/cli/commands/status.d.ts +0 -0
  129. package/dist/cli/commands/status.js +32 -0
  130. package/dist/cli/commands/status.js.map +1 -1
  131. package/dist/cli/commands/upgrade.d.ts +0 -0
  132. package/dist/cli/commands/upgrade.js +0 -0
  133. package/dist/cli/commands/upgrade.js.map +0 -0
  134. package/dist/cli/dispatch.d.ts +0 -0
  135. package/dist/cli/dispatch.js +16 -4
  136. package/dist/cli/dispatch.js.map +1 -1
  137. package/dist/cli/index.d.ts +0 -0
  138. package/dist/cli/index.js.map +0 -0
  139. package/dist/cli/state-model.d.ts +0 -0
  140. package/dist/cli/state-model.js +0 -0
  141. package/dist/cli/state-model.js.map +0 -0
  142. package/dist/config/config-schema.d.ts +177 -0
  143. package/dist/config/config-schema.js +142 -1
  144. package/dist/config/config-schema.js.map +1 -1
  145. package/dist/config/default-config.d.ts +0 -0
  146. package/dist/config/default-config.js +19 -1
  147. package/dist/config/default-config.js.map +1 -1
  148. package/dist/config/load-config.d.ts +0 -0
  149. package/dist/config/load-config.js +72 -1
  150. package/dist/config/load-config.js.map +1 -1
  151. package/dist/config/path-resolver.d.ts +0 -0
  152. package/dist/config/path-resolver.js +0 -0
  153. package/dist/config/path-resolver.js.map +0 -0
  154. package/dist/config/runtime-env.d.ts +0 -0
  155. package/dist/config/runtime-env.js +0 -0
  156. package/dist/config/runtime-env.js.map +0 -0
  157. package/dist/config/secrets-store.d.ts +0 -0
  158. package/dist/config/secrets-store.js +0 -0
  159. package/dist/config/secrets-store.js.map +0 -0
  160. package/dist/config/settings-store.d.ts +19 -0
  161. package/dist/config/settings-store.js +11 -0
  162. package/dist/config/settings-store.js.map +1 -1
  163. package/dist/controller/candidate-retriever.d.ts +15 -1
  164. package/dist/controller/candidate-retriever.js +91 -137
  165. package/dist/controller/candidate-retriever.js.map +1 -1
  166. package/dist/controller/injection-renderer.d.ts +0 -0
  167. package/dist/controller/injection-renderer.js +0 -0
  168. package/dist/controller/injection-renderer.js.map +0 -0
  169. package/dist/controller/injection-scorecard.d.ts +2 -14
  170. package/dist/controller/injection-scorecard.js +29 -0
  171. package/dist/controller/injection-scorecard.js.map +1 -1
  172. package/dist/controller/inline-notice.d.ts +0 -0
  173. package/dist/controller/inline-notice.js +0 -0
  174. package/dist/controller/inline-notice.js.map +0 -0
  175. package/dist/controller/intervention-controller.d.ts +3 -15
  176. package/dist/controller/intervention-controller.js +217 -57
  177. package/dist/controller/intervention-controller.js.map +1 -1
  178. package/dist/controller/lexical-retriever.d.ts +0 -0
  179. package/dist/controller/lexical-retriever.js +0 -0
  180. package/dist/controller/lexical-retriever.js.map +0 -0
  181. package/dist/controller/model-reranker.d.ts +0 -0
  182. package/dist/controller/model-reranker.js +0 -0
  183. package/dist/controller/model-reranker.js.map +0 -0
  184. package/dist/controller/node-ranker.d.ts +0 -0
  185. package/dist/controller/node-ranker.js +0 -0
  186. package/dist/controller/node-ranker.js.map +0 -0
  187. package/dist/controller/policy-enricher.d.ts +10 -0
  188. package/dist/controller/policy-enricher.js +186 -0
  189. package/dist/controller/policy-enricher.js.map +1 -0
  190. package/dist/controller/query-rewrite.d.ts +0 -0
  191. package/dist/controller/query-rewrite.js +0 -0
  192. package/dist/controller/query-rewrite.js.map +0 -0
  193. package/dist/controller/retrieval-context.d.ts +3 -0
  194. package/dist/controller/retrieval-context.js +37 -0
  195. package/dist/controller/retrieval-context.js.map +1 -0
  196. package/dist/controller/second-opinion-gate.d.ts +41 -0
  197. package/dist/controller/second-opinion-gate.js +225 -0
  198. package/dist/controller/second-opinion-gate.js.map +1 -0
  199. package/dist/controller/trigger-evaluator.d.ts +4 -0
  200. package/dist/controller/trigger-evaluator.js +8 -2
  201. package/dist/controller/trigger-evaluator.js.map +1 -1
  202. package/dist/distillation/errors.d.ts +0 -0
  203. package/dist/distillation/errors.js +0 -0
  204. package/dist/distillation/errors.js.map +0 -0
  205. package/dist/distillation/experience-family.d.ts +0 -0
  206. package/dist/distillation/experience-family.js +0 -0
  207. package/dist/distillation/experience-family.js.map +0 -0
  208. package/dist/distillation/host-llm.d.ts +0 -0
  209. package/dist/distillation/host-llm.js +0 -0
  210. package/dist/distillation/host-llm.js.map +0 -0
  211. package/dist/distillation/llm-distiller.d.ts +0 -0
  212. package/dist/distillation/llm-distiller.js +0 -0
  213. package/dist/distillation/llm-distiller.js.map +0 -0
  214. package/dist/distillation/merge-decider.d.ts +0 -0
  215. package/dist/distillation/merge-decider.js +0 -0
  216. package/dist/distillation/merge-decider.js.map +0 -0
  217. package/dist/distillation/model-catalog.d.ts +0 -0
  218. package/dist/distillation/model-catalog.js +0 -0
  219. package/dist/distillation/model-catalog.js.map +0 -0
  220. package/dist/distillation/prompt-contract.d.ts +1 -1
  221. package/dist/distillation/prompt-contract.js +3 -1
  222. package/dist/distillation/prompt-contract.js.map +1 -1
  223. package/dist/distillation/providers/anthropic.d.ts +0 -0
  224. package/dist/distillation/providers/anthropic.js +0 -0
  225. package/dist/distillation/providers/anthropic.js.map +0 -0
  226. package/dist/distillation/providers/azure-openai.d.ts +0 -0
  227. package/dist/distillation/providers/azure-openai.js +0 -0
  228. package/dist/distillation/providers/azure-openai.js.map +0 -0
  229. package/dist/distillation/providers/baidu-qianfan.d.ts +0 -0
  230. package/dist/distillation/providers/baidu-qianfan.js +0 -0
  231. package/dist/distillation/providers/baidu-qianfan.js.map +0 -0
  232. package/dist/distillation/providers/bedrock.d.ts +0 -0
  233. package/dist/distillation/providers/bedrock.js +0 -0
  234. package/dist/distillation/providers/bedrock.js.map +0 -0
  235. package/dist/distillation/providers/dashscope.d.ts +0 -0
  236. package/dist/distillation/providers/dashscope.js +0 -0
  237. package/dist/distillation/providers/dashscope.js.map +0 -0
  238. package/dist/distillation/providers/deepseek.d.ts +0 -0
  239. package/dist/distillation/providers/deepseek.js +0 -0
  240. package/dist/distillation/providers/deepseek.js.map +0 -0
  241. package/dist/distillation/providers/gemini.d.ts +0 -0
  242. package/dist/distillation/providers/gemini.js +5 -1
  243. package/dist/distillation/providers/gemini.js.map +1 -1
  244. package/dist/distillation/providers/google-adc.d.ts +0 -0
  245. package/dist/distillation/providers/google-adc.js +0 -0
  246. package/dist/distillation/providers/google-adc.js.map +0 -0
  247. package/dist/distillation/providers/minimax.d.ts +0 -0
  248. package/dist/distillation/providers/minimax.js +0 -0
  249. package/dist/distillation/providers/minimax.js.map +0 -0
  250. package/dist/distillation/providers/moonshot.d.ts +0 -0
  251. package/dist/distillation/providers/moonshot.js +0 -0
  252. package/dist/distillation/providers/moonshot.js.map +0 -0
  253. package/dist/distillation/providers/openai-compatible-factory.d.ts +0 -0
  254. package/dist/distillation/providers/openai-compatible-factory.js +0 -0
  255. package/dist/distillation/providers/openai-compatible-factory.js.map +0 -0
  256. package/dist/distillation/providers/openai-compatible.d.ts +0 -0
  257. package/dist/distillation/providers/openai-compatible.js +0 -0
  258. package/dist/distillation/providers/openai-compatible.js.map +0 -0
  259. package/dist/distillation/providers/openai.d.ts +0 -0
  260. package/dist/distillation/providers/openai.js +0 -0
  261. package/dist/distillation/providers/openai.js.map +0 -0
  262. package/dist/distillation/providers/openrouter.d.ts +0 -0
  263. package/dist/distillation/providers/openrouter.js +0 -0
  264. package/dist/distillation/providers/openrouter.js.map +0 -0
  265. package/dist/distillation/providers/registry.d.ts +0 -0
  266. package/dist/distillation/providers/registry.js +0 -0
  267. package/dist/distillation/providers/registry.js.map +0 -0
  268. package/dist/distillation/providers/siliconflow.d.ts +0 -0
  269. package/dist/distillation/providers/siliconflow.js +0 -0
  270. package/dist/distillation/providers/siliconflow.js.map +0 -0
  271. package/dist/distillation/providers/tencent-hunyuan.d.ts +0 -0
  272. package/dist/distillation/providers/tencent-hunyuan.js +0 -0
  273. package/dist/distillation/providers/tencent-hunyuan.js.map +0 -0
  274. package/dist/distillation/providers/types.d.ts +0 -0
  275. package/dist/distillation/providers/types.js +0 -0
  276. package/dist/distillation/providers/types.js.map +0 -0
  277. package/dist/distillation/providers/volcengine-ark.d.ts +0 -0
  278. package/dist/distillation/providers/volcengine-ark.js +0 -0
  279. package/dist/distillation/providers/volcengine-ark.js.map +0 -0
  280. package/dist/distillation/providers/zhipu.d.ts +0 -0
  281. package/dist/distillation/providers/zhipu.js +0 -0
  282. package/dist/distillation/providers/zhipu.js.map +0 -0
  283. package/dist/distillation/queue-worker.d.ts +0 -0
  284. package/dist/distillation/queue-worker.js +22 -3
  285. package/dist/distillation/queue-worker.js.map +1 -1
  286. package/dist/distillation/types.d.ts +0 -0
  287. package/dist/distillation/types.js +0 -0
  288. package/dist/distillation/types.js.map +0 -0
  289. package/dist/evaluation/benchmark-report.d.ts +0 -0
  290. package/dist/evaluation/benchmark-report.js +0 -0
  291. package/dist/evaluation/benchmark-report.js.map +0 -0
  292. package/dist/evaluation/benchmark-summary.d.ts +0 -0
  293. package/dist/evaluation/benchmark-summary.js +0 -0
  294. package/dist/evaluation/benchmark-summary.js.map +0 -0
  295. package/dist/evaluation/codex-lifecycle-validation.d.ts +60 -0
  296. package/dist/evaluation/codex-lifecycle-validation.js +233 -0
  297. package/dist/evaluation/codex-lifecycle-validation.js.map +1 -0
  298. package/dist/evaluation/hybrid-phase1-rollout-summary.d.ts +63 -0
  299. package/dist/evaluation/hybrid-phase1-rollout-summary.js +108 -0
  300. package/dist/evaluation/hybrid-phase1-rollout-summary.js.map +1 -0
  301. package/dist/evaluation/hybrid-phase3-gate-metrics.d.ts +26 -0
  302. package/dist/evaluation/hybrid-phase3-gate-metrics.js +23 -0
  303. package/dist/evaluation/hybrid-phase3-gate-metrics.js.map +1 -0
  304. package/dist/evaluation/openclaw-baseline.d.ts +8 -0
  305. package/dist/evaluation/openclaw-baseline.js +27 -0
  306. package/dist/evaluation/openclaw-baseline.js.map +1 -1
  307. package/dist/evaluation/openclaw-scenarios.d.ts +0 -0
  308. package/dist/evaluation/openclaw-scenarios.js +0 -0
  309. package/dist/evaluation/openclaw-scenarios.js.map +0 -0
  310. package/dist/experience-management/governance-observability.d.ts +13 -0
  311. package/dist/experience-management/governance-observability.js +37 -0
  312. package/dist/experience-management/governance-observability.js.map +1 -0
  313. package/dist/experience-management/node-lifecycle-governance.d.ts +8 -0
  314. package/dist/experience-management/node-lifecycle-governance.js +80 -0
  315. package/dist/experience-management/node-lifecycle-governance.js.map +1 -0
  316. package/dist/experience-management/task-management-signals.d.ts +29 -0
  317. package/dist/experience-management/task-management-signals.js +148 -0
  318. package/dist/experience-management/task-management-signals.js.map +1 -0
  319. package/dist/feedback/automatic-attribution.d.ts +0 -0
  320. package/dist/feedback/automatic-attribution.js +0 -0
  321. package/dist/feedback/automatic-attribution.js.map +0 -0
  322. package/dist/feedback/feedback-manager.d.ts +4 -1
  323. package/dist/feedback/feedback-manager.js +11 -22
  324. package/dist/feedback/feedback-manager.js.map +1 -1
  325. package/dist/feedback/harm-detector.d.ts +0 -0
  326. package/dist/feedback/harm-detector.js +0 -0
  327. package/dist/feedback/harm-detector.js.map +0 -0
  328. package/dist/feedback/state-transition.d.ts +6 -1
  329. package/dist/feedback/state-transition.js +6 -3
  330. package/dist/feedback/state-transition.js.map +1 -1
  331. package/dist/feedback/stats-updater.d.ts +0 -0
  332. package/dist/feedback/stats-updater.js +0 -0
  333. package/dist/feedback/stats-updater.js.map +0 -0
  334. package/dist/hybrid/capsule-builder.d.ts +23 -0
  335. package/dist/hybrid/capsule-builder.js +114 -0
  336. package/dist/hybrid/capsule-builder.js.map +1 -0
  337. package/dist/hybrid/explain-provider-client.d.ts +19 -0
  338. package/dist/hybrid/explain-provider-client.js +34 -0
  339. package/dist/hybrid/explain-provider-client.js.map +1 -0
  340. package/dist/hybrid/postmortem-provider-client.d.ts +19 -0
  341. package/dist/hybrid/postmortem-provider-client.js +34 -0
  342. package/dist/hybrid/postmortem-provider-client.js.map +1 -0
  343. package/dist/hybrid/rollout.d.ts +9 -0
  344. package/dist/hybrid/rollout.js +49 -0
  345. package/dist/hybrid/rollout.js.map +1 -0
  346. package/dist/hybrid/router.d.ts +4 -0
  347. package/dist/hybrid/router.js +62 -0
  348. package/dist/hybrid/router.js.map +1 -0
  349. package/dist/hybrid/types.d.ts +140 -0
  350. package/dist/hybrid/types.js +2 -0
  351. package/dist/hybrid/types.js.map +1 -0
  352. package/dist/hybrid/validators.d.ts +5 -0
  353. package/dist/hybrid/validators.js +94 -0
  354. package/dist/hybrid/validators.js.map +1 -0
  355. package/dist/hybrid/worker-client.d.ts +61 -0
  356. package/dist/hybrid/worker-client.js +196 -0
  357. package/dist/hybrid/worker-client.js.map +1 -0
  358. package/dist/hybrid/workers/explain-decision-llm.d.ts +8 -0
  359. package/dist/hybrid/workers/explain-decision-llm.js +152 -0
  360. package/dist/hybrid/workers/explain-decision-llm.js.map +1 -0
  361. package/dist/hybrid/workers/explain-decision.d.ts +2 -0
  362. package/dist/hybrid/workers/explain-decision.js +40 -0
  363. package/dist/hybrid/workers/explain-decision.js.map +1 -0
  364. package/dist/hybrid/workers/postmortem-review-llm.d.ts +8 -0
  365. package/dist/hybrid/workers/postmortem-review-llm.js +398 -0
  366. package/dist/hybrid/workers/postmortem-review-llm.js.map +1 -0
  367. package/dist/hybrid/workers/postmortem-review.d.ts +2 -0
  368. package/dist/hybrid/workers/postmortem-review.js +66 -0
  369. package/dist/hybrid/workers/postmortem-review.js.map +1 -0
  370. package/dist/index.d.ts +0 -0
  371. package/dist/index.js +0 -0
  372. package/dist/index.js.map +0 -0
  373. package/dist/input/context-summary-adapter.d.ts +0 -0
  374. package/dist/input/context-summary-adapter.js +0 -0
  375. package/dist/input/context-summary-adapter.js.map +0 -0
  376. package/dist/input/input-adapter.d.ts +0 -0
  377. package/dist/input/input-adapter.js +0 -0
  378. package/dist/input/input-adapter.js.map +0 -0
  379. package/dist/input/outcome-resolver.d.ts +0 -0
  380. package/dist/input/outcome-resolver.js +0 -0
  381. package/dist/input/outcome-resolver.js.map +0 -0
  382. package/dist/input/scope-resolver.d.ts +0 -0
  383. package/dist/input/scope-resolver.js +0 -0
  384. package/dist/input/scope-resolver.js.map +0 -0
  385. package/dist/input/tasktype-resolver.d.ts +0 -0
  386. package/dist/input/tasktype-resolver.js +0 -0
  387. package/dist/input/tasktype-resolver.js.map +0 -0
  388. package/dist/input/tool-event-significance.d.ts +0 -0
  389. package/dist/input/tool-event-significance.js +0 -0
  390. package/dist/input/tool-event-significance.js.map +0 -0
  391. package/dist/install/claude-cli.d.ts +0 -0
  392. package/dist/install/claude-cli.js +0 -0
  393. package/dist/install/claude-cli.js.map +0 -0
  394. package/dist/install/claude-code-doctor.d.ts +1 -0
  395. package/dist/install/claude-code-doctor.js +20 -4
  396. package/dist/install/claude-code-doctor.js.map +1 -1
  397. package/dist/install/claude-code-installer.d.ts +0 -0
  398. package/dist/install/claude-code-installer.js +50 -1
  399. package/dist/install/claude-code-installer.js.map +1 -1
  400. package/dist/install/claude-marketplace-state.d.ts +0 -0
  401. package/dist/install/claude-marketplace-state.js +0 -0
  402. package/dist/install/claude-marketplace-state.js.map +0 -0
  403. package/dist/install/claude-runtime-target.d.ts +0 -0
  404. package/dist/install/claude-runtime-target.js +0 -0
  405. package/dist/install/claude-runtime-target.js.map +0 -0
  406. package/dist/install/codex-cli.d.ts +15 -0
  407. package/dist/install/codex-cli.js +55 -3
  408. package/dist/install/codex-cli.js.map +1 -1
  409. package/dist/install/codex-installer.d.ts +0 -0
  410. package/dist/install/codex-installer.js +0 -0
  411. package/dist/install/codex-installer.js.map +0 -0
  412. package/dist/install/codex-runtime-target.d.ts +0 -0
  413. package/dist/install/codex-runtime-target.js +0 -0
  414. package/dist/install/codex-runtime-target.js.map +0 -0
  415. package/dist/install/host-detection.d.ts +0 -0
  416. package/dist/install/host-detection.js +0 -0
  417. package/dist/install/host-detection.js.map +0 -0
  418. package/dist/install/openclaw-cli.d.ts +11 -0
  419. package/dist/install/openclaw-cli.js +0 -0
  420. package/dist/install/openclaw-cli.js.map +1 -1
  421. package/dist/install/openclaw-installer.d.ts +12 -7
  422. package/dist/install/openclaw-installer.js +197 -46
  423. package/dist/install/openclaw-installer.js.map +1 -1
  424. package/dist/install/public-install.d.ts +0 -0
  425. package/dist/install/public-install.js +0 -0
  426. package/dist/install/public-install.js.map +0 -0
  427. package/dist/install/registry-health.d.ts +0 -0
  428. package/dist/install/registry-health.js +0 -0
  429. package/dist/install/registry-health.js.map +0 -0
  430. package/dist/interaction/operational-actions-service.d.ts +0 -0
  431. package/dist/interaction/operational-actions-service.js +0 -0
  432. package/dist/interaction/operational-actions-service.js.map +0 -0
  433. package/dist/interaction/operational-service.d.ts +0 -0
  434. package/dist/interaction/operational-service.js +0 -0
  435. package/dist/interaction/operational-service.js.map +0 -0
  436. package/dist/interaction/repo-summary.d.ts +0 -0
  437. package/dist/interaction/repo-summary.js +0 -0
  438. package/dist/interaction/repo-summary.js.map +0 -0
  439. package/dist/interaction/service.d.ts +15 -0
  440. package/dist/interaction/service.js +174 -20
  441. package/dist/interaction/service.js.map +1 -1
  442. package/dist/interaction/state-artifact-service.d.ts +0 -0
  443. package/dist/interaction/state-artifact-service.js +0 -0
  444. package/dist/interaction/state-artifact-service.js.map +0 -0
  445. package/dist/maintenance/claude-validate-print.d.ts +0 -0
  446. package/dist/maintenance/claude-validate-print.js +0 -0
  447. package/dist/maintenance/claude-validate-print.js.map +0 -0
  448. package/dist/maintenance/embedding-smoke.d.ts +0 -0
  449. package/dist/maintenance/embedding-smoke.js +0 -0
  450. package/dist/maintenance/embedding-smoke.js.map +0 -0
  451. package/dist/maintenance/redistill-rule-nodes.d.ts +0 -0
  452. package/dist/maintenance/redistill-rule-nodes.js +0 -0
  453. package/dist/maintenance/redistill-rule-nodes.js.map +0 -0
  454. package/dist/maintenance/scope-merge.d.ts +0 -0
  455. package/dist/maintenance/scope-merge.js +0 -0
  456. package/dist/maintenance/scope-merge.js.map +0 -0
  457. package/dist/maintenance/warning-variant-cleanup.d.ts +0 -0
  458. package/dist/maintenance/warning-variant-cleanup.js +0 -0
  459. package/dist/maintenance/warning-variant-cleanup.js.map +0 -0
  460. package/dist/plugin/fixture-sanitizer.d.ts +0 -0
  461. package/dist/plugin/fixture-sanitizer.js +0 -0
  462. package/dist/plugin/fixture-sanitizer.js.map +0 -0
  463. package/dist/plugin/hooks/before-prompt-build.d.ts +1 -0
  464. package/dist/plugin/hooks/before-prompt-build.js +4 -1
  465. package/dist/plugin/hooks/before-prompt-build.js.map +1 -1
  466. package/dist/plugin/hooks/message-sent.d.ts +0 -0
  467. package/dist/plugin/hooks/message-sent.js +0 -0
  468. package/dist/plugin/hooks/message-sent.js.map +0 -0
  469. package/dist/plugin/hooks/tool-result-persist.d.ts +0 -0
  470. package/dist/plugin/hooks/tool-result-persist.js +0 -0
  471. package/dist/plugin/hooks/tool-result-persist.js.map +0 -0
  472. package/dist/plugin/openclaw-install-state.d.ts +39 -0
  473. package/dist/plugin/openclaw-install-state.js +24 -0
  474. package/dist/plugin/openclaw-install-state.js.map +1 -0
  475. package/dist/plugin/openclaw-plugin.d.ts +125 -0
  476. package/dist/plugin/openclaw-plugin.js +18 -7
  477. package/dist/plugin/openclaw-plugin.js.map +1 -1
  478. package/dist/plugin/openclaw-routine-interaction.d.ts +2 -1
  479. package/dist/plugin/openclaw-routine-interaction.js +12 -7
  480. package/dist/plugin/openclaw-routine-interaction.js.map +1 -1
  481. package/dist/plugin/openclaw-runtime-defaults.d.ts +16 -0
  482. package/dist/plugin/openclaw-runtime-defaults.js +16 -0
  483. package/dist/plugin/openclaw-runtime-defaults.js.map +1 -0
  484. package/dist/plugin/runtime-capture.d.ts +0 -0
  485. package/dist/plugin/runtime-capture.js +0 -0
  486. package/dist/plugin/runtime-capture.js.map +0 -0
  487. package/dist/plugin/runtime-helpers.d.ts +0 -0
  488. package/dist/plugin/runtime-helpers.js +0 -0
  489. package/dist/plugin/runtime-helpers.js.map +0 -0
  490. package/dist/runtime/service.d.ts +33 -5
  491. package/dist/runtime/service.js +408 -22
  492. package/dist/runtime/service.js.map +1 -1
  493. package/dist/store/logs/jsonl-logger.d.ts +0 -0
  494. package/dist/store/logs/jsonl-logger.js +0 -0
  495. package/dist/store/logs/jsonl-logger.js.map +0 -0
  496. package/dist/store/sqlite/db.d.ts +0 -0
  497. package/dist/store/sqlite/db.js +28 -0
  498. package/dist/store/sqlite/db.js.map +1 -1
  499. package/dist/store/sqlite/migrations.d.ts +0 -0
  500. package/dist/store/sqlite/migrations.js +0 -0
  501. package/dist/store/sqlite/migrations.js.map +0 -0
  502. package/dist/store/sqlite/repositories/candidate-repo.d.ts +0 -0
  503. package/dist/store/sqlite/repositories/candidate-repo.js +0 -0
  504. package/dist/store/sqlite/repositories/candidate-repo.js.map +0 -0
  505. package/dist/store/sqlite/repositories/distillation-job-repo.d.ts +0 -0
  506. package/dist/store/sqlite/repositories/distillation-job-repo.js +0 -0
  507. package/dist/store/sqlite/repositories/distillation-job-repo.js.map +0 -0
  508. package/dist/store/sqlite/repositories/hybrid-invocation-trace-repo.d.ts +11 -0
  509. package/dist/store/sqlite/repositories/hybrid-invocation-trace-repo.js +76 -0
  510. package/dist/store/sqlite/repositories/hybrid-invocation-trace-repo.js.map +1 -0
  511. package/dist/store/sqlite/repositories/hybrid-review-artifact-repo.d.ts +11 -0
  512. package/dist/store/sqlite/repositories/hybrid-review-artifact-repo.js +73 -0
  513. package/dist/store/sqlite/repositories/hybrid-review-artifact-repo.js.map +1 -0
  514. package/dist/store/sqlite/repositories/injection-repo.d.ts +0 -0
  515. package/dist/store/sqlite/repositories/injection-repo.js +0 -0
  516. package/dist/store/sqlite/repositories/injection-repo.js.map +0 -0
  517. package/dist/store/sqlite/repositories/input-record-repo.d.ts +1 -0
  518. package/dist/store/sqlite/repositories/input-record-repo.js +13 -0
  519. package/dist/store/sqlite/repositories/input-record-repo.js.map +1 -1
  520. package/dist/store/sqlite/repositories/node-repo.d.ts +3 -0
  521. package/dist/store/sqlite/repositories/node-repo.js +45 -6
  522. package/dist/store/sqlite/repositories/node-repo.js.map +1 -1
  523. package/dist/store/sqlite/repositories/outcome-record-repo.d.ts +0 -0
  524. package/dist/store/sqlite/repositories/outcome-record-repo.js +0 -0
  525. package/dist/store/sqlite/repositories/outcome-record-repo.js.map +0 -0
  526. package/dist/store/sqlite/repositories/review-event-repo.d.ts +0 -0
  527. package/dist/store/sqlite/repositories/review-event-repo.js +0 -0
  528. package/dist/store/sqlite/repositories/review-event-repo.js.map +0 -0
  529. package/dist/store/sqlite/repositories/scope-repo.d.ts +0 -0
  530. package/dist/store/sqlite/repositories/scope-repo.js +0 -0
  531. package/dist/store/sqlite/repositories/scope-repo.js.map +0 -0
  532. package/dist/store/sqlite/repositories/stats-repo.d.ts +0 -0
  533. package/dist/store/sqlite/repositories/stats-repo.js +0 -0
  534. package/dist/store/sqlite/repositories/stats-repo.js.map +0 -0
  535. package/dist/store/sqlite/repositories/task-run-repo.d.ts +0 -0
  536. package/dist/store/sqlite/repositories/task-run-repo.js +0 -0
  537. package/dist/store/sqlite/repositories/task-run-repo.js.map +0 -0
  538. package/dist/store/sqlite/schema.sql +40 -0
  539. package/dist/store/vector/api-embedding-provider.d.ts +0 -0
  540. package/dist/store/vector/api-embedding-provider.js +0 -0
  541. package/dist/store/vector/api-embedding-provider.js.map +0 -0
  542. package/dist/store/vector/embeddings.d.ts +0 -0
  543. package/dist/store/vector/embeddings.js +26 -8
  544. package/dist/store/vector/embeddings.js.map +1 -1
  545. package/dist/store/vector/lancedb.d.ts +0 -0
  546. package/dist/store/vector/lancedb.js +0 -0
  547. package/dist/store/vector/lancedb.js.map +0 -0
  548. package/dist/store/vector/local-provider.d.ts +0 -0
  549. package/dist/store/vector/local-provider.js +0 -0
  550. package/dist/store/vector/local-provider.js.map +0 -0
  551. package/dist/store/vector/node-index.d.ts +0 -0
  552. package/dist/store/vector/node-index.js +0 -0
  553. package/dist/store/vector/node-index.js.map +0 -0
  554. package/dist/store/vector/provider-types.d.ts +0 -0
  555. package/dist/store/vector/provider-types.js +0 -0
  556. package/dist/store/vector/provider-types.js.map +0 -0
  557. package/dist/types/analyzer.d.ts +0 -0
  558. package/dist/types/analyzer.js +0 -0
  559. package/dist/types/analyzer.js.map +0 -0
  560. package/dist/types/domain.d.ts +136 -1
  561. package/dist/types/domain.js +0 -0
  562. package/dist/types/domain.js.map +0 -0
  563. package/dist/types/plugin.d.ts +2 -1
  564. package/dist/types/plugin.js +0 -0
  565. package/dist/types/plugin.js.map +0 -0
  566. package/dist/types/storage.d.ts +0 -0
  567. package/dist/types/storage.js +0 -0
  568. package/dist/types/storage.js.map +0 -0
  569. package/dist/utils/clock.d.ts +0 -0
  570. package/dist/utils/clock.js +0 -0
  571. package/dist/utils/clock.js.map +0 -0
  572. package/dist/utils/errors.d.ts +0 -0
  573. package/dist/utils/errors.js +0 -0
  574. package/dist/utils/errors.js.map +0 -0
  575. package/dist/utils/hashing.d.ts +0 -0
  576. package/dist/utils/hashing.js +0 -0
  577. package/dist/utils/hashing.js.map +0 -0
  578. package/dist/utils/ids.d.ts +0 -0
  579. package/dist/utils/ids.js +0 -0
  580. package/dist/utils/ids.js.map +0 -0
  581. package/dist/utils/text.d.ts +0 -0
  582. package/dist/utils/text.js +0 -0
  583. package/dist/utils/text.js.map +0 -0
  584. package/dist/version/package-version.d.ts +0 -0
  585. package/dist/version/package-version.js +0 -0
  586. package/dist/version/package-version.js.map +0 -0
  587. package/dist/version/remote-release.d.ts +0 -0
  588. package/dist/version/remote-release.js +0 -0
  589. package/dist/version/remote-release.js.map +0 -0
  590. package/docs/releases/v0.1.0.md +0 -0
  591. package/docs/releases/v0.1.1.md +0 -0
  592. package/docs/releases/v0.1.2.md +0 -0
  593. package/docs/releases/v0.1.3.md +3 -2
  594. package/docs/releases/v0.2.0.md +85 -0
  595. package/docs/user-guide.md +39 -12
  596. package/hooks/hooks.json +0 -0
  597. package/openclaw.plugin.json +81 -1
  598. package/package.json +23 -15
  599. package/plugins/claude-code-experienceengine/.claude-plugin/plugin.json +1 -1
  600. package/plugins/claude-code-experienceengine/.mcp.json +0 -0
  601. package/plugins/claude-code-experienceengine/hooks/hooks.json +0 -0
  602. package/plugins/claude-code-experienceengine/scripts/claude-hook.sh +0 -0
  603. package/plugins/claude-code-experienceengine/scripts/install-deps.sh +1 -1
  604. package/scripts/claude-plugin/claude-hook.sh +0 -0
  605. package/scripts/claude-plugin/install-deps.sh +0 -0
package/README.zh-CN.md CHANGED
@@ -1,59 +1,128 @@
1
1
  # ExperienceEngine
2
2
 
3
- [English README](./README.md)
3
+ [English README](./README.md) | 简体中文
4
4
 
5
- ExperienceEngine 是一个面向编程 Agent 的本地经验介入层。
5
+ ExperienceEngine 是一个面向编程 Agent 的治理层。它复用真实执行经验,但不会把 memory 变成噪声堆积。它只会在相关时注入简短、任务相关的 guidance,并持续记录这次介入到底是帮到了还是干扰了结果。
6
6
 
7
- 它会从真实编码任务中学习简短、任务相关的经验,在后续相似任务中决定是否注入这些经验,并记录这次介入到底是帮到了还是干扰了结果。
7
+ **Memory 做加法,ExperienceEngine 做治理。**
8
+
9
+ 当前支持的宿主:`OpenClaw`、`Claude Code`、`Codex`
10
+
11
+ ## 10 秒理解
12
+
13
+ 没有 ExperienceEngine:
14
+ - agent 会在相似仓库里重复犯同样的 SQLite migration 错误
15
+
16
+ 有 ExperienceEngine:
17
+ - 它会注入一条提示,例如:`先执行 migration,再打开数据库连接`
18
+ - 后续你可以把这次介入标记为 `helpful` 或 `harmful`
19
+ - 这条经验会据此进入 active、降温或退役
20
+
21
+ ```text
22
+ 任务信号 -> 提炼经验 -> 检索 -> 短提示注入 -> 反馈 -> 治理
23
+ ```
24
+
25
+ <details>
26
+ <summary>宿主里的示例对话</summary>
27
+
28
+ ```text
29
+ 用户:修一下这个仓库里的 SQLite 启动失败问题。
30
+
31
+ ExperienceEngine:
32
+ Hint: 先执行 migration,再打开数据库连接。
33
+
34
+ 宿主 agent:
35
+ 我会先补 migration,然后再重试启动。
36
+
37
+ 用户:
38
+ 为什么这条 ExperienceEngine 提示会命中?
39
+
40
+ 宿主 agent:
41
+ 它匹配到了这个仓库里过去一次相同的 SQLite 启动失败,以及当时成功的 migration-first 修复路径。
42
+
43
+ 用户:
44
+ 把刚才那次 ExperienceEngine 介入标记为 helpful。
45
+
46
+ 宿主 agent:
47
+ 已记录。之后遇到类似任务时,这条经验会更容易再次命中。
48
+ ```
49
+
50
+ </details>
51
+
52
+ ![`ee inspect --last --verbose` 示例输出](./docs/assets/readme/inspect-last-example.svg)
53
+
54
+ ## 快速开始
55
+
56
+ 最快的宿主安装路径:
8
57
 
9
- 当前支持的宿主:
10
58
  - `OpenClaw`
11
- - `Claude Code`
59
+ - `openclaw plugins install @alan512/experienceengine`
60
+ - `openclaw gateway restart`
61
+ - `ee init`
12
62
  - `Codex`
63
+ - `ee install codex`
64
+ - `ee init`
65
+ - `Claude Code`
66
+ - `/plugin marketplace add https://github.com/Alan-512/ExperienceEngine.git`
67
+ - `/plugin install experienceengine@experienceengine`
68
+ - `ee init`
13
69
 
14
- OpenClaw 兼容要求:
15
- - 需要本机已经有可正常工作的 OpenClaw,并且支持原生插件安装
16
- - 下面的 OpenClaw 安装路径默认要求 `openclaw plugins install` 和 `openclaw gateway restart` 可用
17
- - 发布包要求 Node.js `>=20`
70
+ `ee init` 用于在宿主安装完成后初始化共享的 ExperienceEngine 状态。
71
+
72
+ 如果你需要更详细的宿主安装说明、fallback 路径、ready 状态说明或 operator 工作流,跳转到 [完整安装与运维说明](#完整安装与运维说明)。
73
+
74
+ ## 适合谁用
18
75
 
19
- ## 它解决的问题
76
+ 以下情况适合使用 ExperienceEngine:
77
+ - 你会在相似仓库或相似工作流里反复使用 coding agent
78
+ - 你想要的是**短小、介入式 guidance**,而不是泛化的 memory recall
79
+ - 你关心历史经验到底是**帮到了还是害了**
80
+ - 你希望过时 guidance 能自动降温或退役,而不是越积越多
20
81
 
21
- Coding agent 会重复踩同类坑,通常不是因为模型不够聪明,而是因为它缺少**可治理的经验积累机制**。
82
+ 以下情况不适合:
83
+ - 你只想要一个个人笔记型 memory
84
+ - 你想要通用文档 RAG
85
+ - 你的工作流几乎不重复
86
+ - 你希望系统默认记住所有东西
22
87
 
23
- 常见问题是:
24
- - 上一轮任务的教训,在新会话里直接丢失
25
- - memory 会一直加,但通常不会主动退役低价值内容
26
- - 记住的东西越来越多,context 越来越重,agent 的注意力反而被稀释
88
+ ## 宿主支持矩阵
27
89
 
28
- ExperienceEngine 处理的正是这一层问题。它不试图记住一切,而是专门治理:
29
- - 什么时候该让历史经验介入
30
- - 该注入哪条 `strategy` `warning`
31
- - 这次介入到底有没有帮到任务
32
- - 这条经验是否应该继续保留、降温或退役
90
+ | 宿主 | 安装路径 | 日常交互 | 成熟度 |
91
+ |---|---|---|---|
92
+ | `OpenClaw` | 原生插件安装 | 宿主原生 | 当前最完整 |
93
+ | `Claude Code` | marketplace 插件,保留 `ee install claude-code` fallback | MCP + plugin hooks | 已支持 |
94
+ | `Codex` | `ee install codex`,保留原生 MCP fallback | MCP 原生 | 已支持 |
33
95
 
34
- **Memory 做加法,EE 做治理。**
96
+ ## 为什么要做这个
35
97
 
36
- ## 它和 Memory 的区别
98
+ Coding agent 会重复犯同类错误,通常不是因为模型不够聪明,而是因为之前的执行经验没有被**以可治理的方式**复用。
99
+
100
+ ExperienceEngine 的目标不是通用 memory 累积,而是**介入治理**。
101
+
102
+ ## 为什么不是 Memory / RAG
37
103
 
38
104
  | 问题 | Memory 系统 | ExperienceEngine |
39
105
  |---|---|---|
40
- | 跨会话保留事实和偏好 | | 不是核心目标 |
41
- | 记录失败 修复 成功的经验路径 | 部分解决,通常依赖手工记录 | 来自真实任务信号 |
42
- | 知道某次注入到底有没有帮助 | 通常没有 | 有 helped / harmed 追踪 |
43
- | 自动退役过时或有害经验 | 通常没有 | cooling / retired 生命周期 |
44
- | 把注入控制在短小、任务相关的 guidance | 不是核心目标 | 是核心设计 |
106
+ | 跨会话保存事实和偏好 | 可以 | 不是核心目标 |
107
+ | 捕获失败 -> 修复 -> 成功的经验路径 | 部分支持,通常依赖人工 | 可以,来自真实任务信号 |
108
+ | 知道一条回忆到底有没有帮助 | 通常不行 | 可以,逐次记录 |
109
+ | 自动退役过时或有害 guidance | 通常不行 | 可以,内建 cooling / retired 生命周期 |
110
+ | 保持提示短小、任务相关 | 不是核心目标 | |
111
+ | 通用文档检索 | 常见适用场景 | 不是核心目标 |
45
112
 
46
113
  ## 它在 Agent Loop 里的位置
47
114
 
115
+ 从高层看,ExperienceEngine 围绕 agent loop 的位置是这样的:
116
+
48
117
  ```text
49
118
  用户任务
50
119
  -> before_prompt_build:检索并注入匹配经验
51
- -> agent 推理 + 工具调用:捕获失败、重试、纠正和结果
120
+ -> agent 推理 + 工具调用:捕获失败、重试、修正和结果
52
121
  -> task finalize:把候选信号提炼成可复用经验
53
122
  -> helped / harmed:提升、降温或退役节点
54
123
  ```
55
124
 
56
- ExperienceEngine 工作在 context 层,不会去修改宿主模型权重。
125
+ ExperienceEngine 工作在 context 层,不会修改宿主模型权重。
57
126
 
58
127
  ## 经验生命周期
59
128
 
@@ -65,44 +134,77 @@ ExperienceEngine 工作在 context 层,不会去修改宿主模型权重。
65
134
  -> retired
66
135
  ```
67
136
 
68
- 每条经验都依赖真实任务结果来演化,而不是简单按时间清理。帮到任务的经验会被强化,反复有害的经验会被降温或退役。
137
+ 每条经验都根据真实任务结果演化,而不是按时间粗暴清理。帮到任务的经验会被强化,反复有害的经验会被降温或退役。
138
+
139
+ ## 现在能做什么
140
+
141
+ - 在相似编码任务里复用短 guidance
142
+ - 查看某条 hint 为什么命中
143
+ - 把最近一次介入标记为 helpful 或 harmful
144
+ - 查看 active、cooling、retired 等生命周期状态
145
+ - 在 `OpenClaw`、`Claude Code`、`Codex` 三个宿主中使用
69
146
 
70
- ## 当前已经能用什么
147
+ ### 底层实现
71
148
 
72
- 当前仓库已经实现并可用:
73
- - `OpenClaw`、`Claude Code`、`Codex` 三个宿主接入
74
- - MCP 原生交互面,以及 CLI / 运维 fallback
75
- - API-first 语义检索与平滑回退:
76
- - OpenAI `text-embedding-3-small`
77
- - Gemini `gemini-embedding-001`
78
- - Jina `jina-embeddings-v3`
79
- - 受管本地 embedding fallback
80
- - legacy hash-based fallback
81
- - 通过宿主 agent 直接查看和反馈经验,并保留 CLI fallback:
82
- - `ee inspect --last`
83
- - `ee helped`
84
- - `ee harmed`
149
+ - MCP 原生交互面,加上 CLI / operator fallback
150
+ - 支持 API 与本地回退的语义检索
151
+ - 宿主 agent 内可直接查看和反馈经验,CLI fallback 包括 `ee inspect --last`、`ee helped`、`ee harmed`
85
152
 
86
- 如果你想看更细的 ExperienceNode 结构和治理字段,见:
153
+ 如果你想看 ExperienceNode 结构和治理字段,见:
87
154
 
88
155
  - [Experience Model Overview](./docs/development/experience-model.md)
89
156
 
90
- ## 快速开始
157
+ ## 当前状态
158
+
159
+ - Stable:核心经验生命周期、inspect/helped/harmed loop、宿主集成、CLI/operator fallback
160
+ - 当前最顺滑的路径:`OpenClaw` 原生插件安装
161
+ - 仍在演进:retrieval 调优、provider 策略、更高级的宿主 UX
162
+ - 如果你想最快拿到第一份顺滑体验,建议先从 `OpenClaw` 开始
163
+
164
+ ## 什么叫第一次真正成功
165
+
166
+ 安装并初始化后,第一次真正体现价值的信号通常是:
167
+
168
+ - ExperienceEngine 在真实任务里注入了一条短 hint
169
+ - 宿主能解释为什么这条 hint 会命中
170
+ - 你对最近一次介入的反馈,会影响后续复用
171
+ - `ee inspect --last` 能看到最近的介入和相关节点状态
172
+
173
+ ## 前置条件
174
+
175
+ 安装宿主前,请先确认对应宿主 CLI 已能在当前机器正常工作:
176
+
177
+ - `openclaw`
178
+ - `claude`
179
+ - `codex`
180
+
181
+ **ExperienceEngine 不会替你安装这些宿主 CLI。** 它只会接入一个已经可用的宿主环境。
182
+
183
+ OpenClaw 说明:
184
+ - 需要本机已有可正常工作的 OpenClaw,且支持原生插件安装
185
+ - 下面的 OpenClaw 路径默认要求 `openclaw plugins install` 和 `openclaw gateway restart` 可用
186
+
187
+ 通用包要求:
188
+ - 发布包要求 Node.js `>=20`
91
189
 
92
- ExperienceEngine 现在采用**宿主侧安装优先**。
190
+ ## 完整安装与运维说明
93
191
 
94
- 也就是说,第一步安装命令属于你要使用的宿主,而不是 `ee` CLI。
192
+ ### 按宿主安装
193
+
194
+ ExperienceEngine 现在不再把 `ee` CLI 当成适用于所有宿主的统一首要安装入口。
195
+
196
+ 请先从宿主自己的安装路径接入:
95
197
 
96
198
  - `OpenClaw`
97
199
  - 宿主原生插件安装:
98
200
  - `openclaw plugins install @alan512/experienceengine`
99
- - 安装后先重启 OpenClaw gateway,再开始真实任务:
201
+ - 安装后,在开始真实任务前先重启 gateway
100
202
  - `openclaw gateway restart`
101
203
  - `Codex`
102
204
  - EE 托管安装:
103
205
  - `ee install codex`
104
206
  - 原生 / 手工 fallback:
105
- - `codex mcp add experienceengine --env EXPERIENCE_ENGINE_HOME=$HOME/.experienceengine -- npx -y @alan512/experienceengine codex-mcp-server`
207
+ - 如果你需要直接 MCP wiring,可参考后面的高级示例
106
208
  - 无论走哪条路径,首次接入后都建议在仓库里开启一个新的 Codex 会话,让 MCP 配置和 `AGENTS.md` 指令块生效
107
209
  - `Claude Code`
108
210
  - 宿主原生 marketplace 安装:
@@ -110,34 +212,33 @@ ExperienceEngine 现在采用**宿主侧安装优先**。
110
212
  - `/plugin marketplace add https://github.com/Alan-512/ExperienceEngine.git`
111
213
  - 再安装插件:
112
214
  - `/plugin install experienceengine@experienceengine`
113
- - 如果你需要显式 hooks + MCP wiring,仍可用:
215
+ - 如果你需要显式 hooks + MCP wiring,仍可使用:
114
216
  - `ee install claude-code`
115
217
  - 安装后建议开启一个新的 Claude Code 会话,让插件 hooks 和 bundled MCP 配置生效
116
218
 
117
- 宿主安装完成后,普通用户应继续直接和宿主 agent 交互。
219
+ 无论哪个宿主,整体流程都是一样的:
118
220
 
119
- 例如你可以直接问宿主 agent:
221
+ 1. 通过宿主路径安装 ExperienceEngine
222
+ 2. 执行一次 `ee init` 初始化共享状态
223
+ 3. 重启或新开宿主会话,直到仓库变成 `Ready`
224
+ 4. 日常检查和反馈优先留在宿主内部完成
225
+ 5. 需要验证、修复或深度排障时,再退回 `ee` CLI
120
226
 
121
- - “ExperienceEngine 刚刚注入了什么?”
122
- - “显示最近一次 ExperienceEngine 介入。”
123
- - “把刚才那次 ExperienceEngine 提示标记为 helpful。”
227
+ ### 共享初始化
124
228
 
125
- 只有在需要显式运维、排障或高级调试时,再使用:
229
+ `ee init` 属于 ExperienceEngine 的共享初始化,不是某个宿主自己的安装步骤。
126
230
 
127
- ```bash
128
- ee init
129
- ee doctor <openclaw|claude-code|codex>
130
- ee status
131
- ee maintenance embedding-smoke
132
- ```
133
-
134
- 这里的 `ee init` 属于 ExperienceEngine 的**共享初始化**,不是某个宿主自己的安装步骤。
135
-
136
- - 第一次把 EE 接到任意一个宿主后,做一次初始化即可。它会统一引导你配置:
231
+ - 第一次接入任意宿主后执行一次,用来配置:
137
232
  - distillation provider / model / auth
138
233
  - embedding 模式 / provider
139
234
  - 共享 provider secret
140
- - 之后再安装新的宿主,会复用同一个 EE 数据目录、配置和共享 secret
235
+ - 后续再接入其他宿主,会复用同一个 ExperienceEngine home、配置和共享 secret
236
+
237
+ 安装完成后,ExperienceEngine 应该把用户引导到下一步状态:
238
+
239
+ - 如果宿主 wiring 已完成,产品至少是 `Installed`
240
+ - 执行完 `ee init` 后,进入 `Initialized`
241
+ - 宿主或仓库完成 reload 并能开始真实任务后,进入 `Ready`
141
242
 
142
243
  最小共享初始化示例:
143
244
 
@@ -150,42 +251,63 @@ ee init show
150
251
 
151
252
  如果你更想用 Gemini 或 Jina 做 embedding,可以沿用同样的 `ee init embedding` 流程,只替换 provider 和 model。
152
253
 
153
- ## 前置条件
254
+ ### 日常使用与 Operator 使用
154
255
 
155
- 在安装任一宿主前,请先确认对应宿主 CLI 已经能在当前机器正常工作:
256
+ 日常使用时,优先直接问宿主 agent,例如:
156
257
 
157
- - `openclaw`
158
- - `claude`
159
- - `codex`
258
+ - “ExperienceEngine 刚刚注入了什么?”
259
+ - “为什么那条 ExperienceEngine 提示会命中?”
260
+ - “把刚才那次 ExperienceEngine 介入标记为 helpful 或 harmful。”
160
261
 
161
- ExperienceEngine 不会替你安装这些宿主 CLI。它只负责把自己接入一个已经可用的宿主环境。
262
+ OpenClaw 还支持这些 readiness / silence 问题:
162
263
 
163
- ## 安装模型
264
+ - “ExperienceEngine 这里 ready 了吗?”
265
+ - “这个仓库里的 ExperienceEngine 还在 warming up 吗?”
266
+ - “刚才为什么 ExperienceEngine 没有注入?”
164
267
 
165
- ExperienceEngine 现在把“安装”和“运维”明确分开:
268
+ 对于 `OpenClaw`、`Codex`、`Claude Code`,常规 review / feedback 路径都应优先留在宿主内部完成。
269
+ 只有宿主侧路径不可用,或者你需要显式 operator 控制时,再退回 CLI。
166
270
 
167
- - 安装属于宿主
168
- - 验证、修复、状态查看属于 `ee`
271
+ 当你需要显式运维、验证或排障时,可以用:
169
272
 
170
- 这意味着:
273
+ ```bash
274
+ ee init
275
+ ee doctor <openclaw|claude-code|codex>
276
+ ee status
277
+ ee maintenance embedding-smoke
278
+ ```
171
279
 
172
- - `Codex` 走共享 ExperienceEngine MCP 服务,首次接入优先使用 `ee install codex`
173
- - `Claude Code` 走 Claude 原生插件资产与 marketplace 分发
174
- - `OpenClaw` 走 plugin/runtime 集成
280
+ ### Ready Value 状态
175
281
 
176
- 一旦安装完成,宿主 agent 仍然是主交互面。
282
+ ExperienceEngine onboarding 和 value 拆成两层:
177
283
 
178
- `ee` CLI 主要负责:
284
+ - `Setup state`
285
+ - `Installed`
286
+ - `Initialized`
287
+ - `Ready`
288
+ - `Value state`
289
+ - `Warming up`
290
+ - `First value reached`
179
291
 
180
- - 共享 provider/model 初始化
181
- - 健康检查
182
- - 修复建议
183
- - 状态查看
184
- - 学习与介入反馈
292
+ 这不是一条严格线性阶梯。一个仓库可以已经 `Ready`,但还处于 `Warming up`。
185
293
 
186
- ## 高级按宿主命令
294
+ `First value reached` 只应该在真实任务里已经出现可见价值时才成立。仅仅显示 onboarding 文案或 warm-up 提示,不算 first value。
187
295
 
188
- 如果你是运维者、开发者,或者想显式控制某个宿主,仍然可以使用:
296
+ ## 安装模型
297
+
298
+ ExperienceEngine 明确拆分:
299
+ - 宿主安装
300
+ - 共享初始化
301
+ - operator 工作流
302
+
303
+ 宿主仍然是主交互面。
304
+ `ee` 仍然是显式的 operator 面,用于 setup、验证、修复、状态查看和维护。
305
+
306
+ ## 高级按宿主命令(仅限 Operator / 开发者)
307
+
308
+ 大多数用户可以跳过这一节,直接使用上面的宿主安装路径。
309
+
310
+ 如果你是运维者、开发者,或者确实想显式控制某个宿主,仍可使用:
189
311
 
190
312
  ```bash
191
313
  ee install openclaw
@@ -193,12 +315,23 @@ ee install claude-code
193
315
  ee install codex
194
316
  ```
195
317
 
196
- 这些命令仍然有效,但它们更适合作为:
197
- - 运维 fallback
198
- - 显式修复
199
- - 产品开发期调试
318
+ <details>
319
+ <summary>Codex 原生 / 手工 MCP fallback 示例</summary>
320
+
321
+ ```bash
322
+ codex mcp add experienceengine --env EXPERIENCE_ENGINE_HOME=$HOME/.experienceengine -- npx -y @alan512/experienceengine codex-mcp-server
323
+ ```
324
+
325
+ </details>
326
+
327
+ 说明:
328
+ - `OpenClaw` 走 plugin/runtime integration,而不是 `src/adapters/`
329
+ - `Claude Code` 会安装 hooks 和共享 ExperienceEngine MCP 服务
330
+ - `Codex` 会安装共享 ExperienceEngine MCP 服务
331
+ - `ee install ...` 与 `ee doctor ...` 会在 `npm` / `pnpm` 使用非官方 registry 时给出提示,因为受管模型下载在 `https://registry.npmjs.org` 下最稳定
332
+ - 成功执行 `ee install ...` 后,也会提醒冷启动预期:capture 会立刻开始,但 formal experience 一般需要在同一仓库里出现几次相似任务后才会形成
200
333
 
201
- 而不是默认公开安装路径。
334
+ 这些命令属于 operator fallback,不是默认公开安装路径。
202
335
 
203
336
  ## 数据目录
204
337
 
@@ -220,10 +353,7 @@ ee install codex
220
353
  当前默认行为:
221
354
 
222
355
  - `embeddingProvider = "api"`
223
- - provider 优先级:
224
- - 设置了 `OPENAI_API_KEY` 时优先 OpenAI
225
- - 设置了 `GEMINI_API_KEY` 时使用 Gemini
226
- - 设置了 `JINA_API_KEY` 时使用 Jina
356
+ - provider 优先级:OpenAI -> Gemini -> Jina
227
357
  - 如果没有任何 API provider 可用,会自动回退到受管本地 embedding
228
358
 
229
359
  常用环境变量:
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -12,4 +12,5 @@ export declare const loadClaudeSession: (sessionId: string, options?: SessionSto
12
12
  export declare const rememberClaudePromptContext: (context: HostPromptContext, options?: SessionStoreOptions) => void;
13
13
  export declare const appendClaudeToolResult: (result: HostToolResult, options?: SessionStoreOptions) => void;
14
14
  export declare const clearClaudeSession: (sessionId: string, options?: SessionStoreOptions) => void;
15
+ export declare const findClaudeSessionByCwd: (cwd: string, options?: SessionStoreOptions) => ClaudeStoredSession | null;
15
16
  export {};
@@ -1,4 +1,4 @@
1
- import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
1
+ import { existsSync, mkdirSync, readFileSync, readdirSync, rmSync, statSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { resolveExperienceEnginePaths, resolveProductStateDir } from "../../config/path-resolver.js";
4
4
  const sanitizeSessionId = (sessionId) => sessionId.replace(/[^a-zA-Z0-9_.-]+/g, "_");
@@ -11,6 +11,15 @@ const resolveSessionDir = (options = {}) => {
11
11
  return join(resolveProductStateDir(paths), "sessions");
12
12
  };
13
13
  const resolveSessionPath = (sessionId, options = {}) => join(resolveSessionDir(options), `${sanitizeSessionId(sessionId)}.json`);
14
+ const listClaudeSessionPaths = (options = {}) => {
15
+ const dir = resolveSessionDir(options);
16
+ if (!existsSync(dir)) {
17
+ return [];
18
+ }
19
+ return readdirSync(dir)
20
+ .filter((entry) => entry.endsWith(".json"))
21
+ .map((entry) => join(dir, entry));
22
+ };
14
23
  export const loadClaudeSession = (sessionId, options = {}) => {
15
24
  const filePath = resolveSessionPath(sessionId, options);
16
25
  if (!existsSync(filePath)) {
@@ -53,4 +62,18 @@ export const clearClaudeSession = (sessionId, options = {}) => {
53
62
  const filePath = resolveSessionPath(sessionId, options);
54
63
  rmSync(filePath, { force: true });
55
64
  };
65
+ export const findClaudeSessionByCwd = (cwd, options = {}) => {
66
+ const matches = listClaudeSessionPaths(options)
67
+ .map((filePath) => ({
68
+ filePath,
69
+ mtimeMs: statSync(filePath).mtimeMs,
70
+ session: JSON.parse(readFileSync(filePath, "utf8"))
71
+ }))
72
+ .filter((entry) => entry.session.promptContext?.cwd === cwd)
73
+ .sort((left, right) => right.mtimeMs - left.mtimeMs);
74
+ if (matches.length !== 1) {
75
+ return null;
76
+ }
77
+ return matches[0]?.session ?? null;
78
+ };
56
79
  //# sourceMappingURL=session-store.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/adapters/claude-code/session-store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-store.js","sourceRoot":"","sources":["../../../src/adapters/claude-code/session-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC5G,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,4BAA4B,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAcrG,MAAM,iBAAiB,GAAG,CAAC,SAAiB,EAAU,EAAE,CACtD,SAAS,CAAC,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;AAE9C,MAAM,iBAAiB,GAAG,CAAC,UAA+B,EAAE,EAAU,EAAE;IACtE,MAAM,KAAK,GAAG,4BAA4B,CAAC;QACzC,OAAO,EAAE,aAAa;QACtB,GAAG,EAAE,OAAO,CAAC,GAAG,IAAI,OAAO,CAAC,GAAG;QAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,CAAC;IACH,OAAO,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAE,UAA+B,EAAE,EAAU,EAAE,CAC1F,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,GAAG,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;AAE3E,MAAM,sBAAsB,GAAG,CAAC,UAA+B,EAAE,EAAY,EAAE;IAC7E,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,WAAW,CAAC,GAAG,CAAC;SACpB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;SAC1C,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;AACtC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,SAAiB,EACjB,UAA+B,EAAE,EACL,EAAE;IAC9B,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACxD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAwB,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,OAA4B,EAAE,UAA+B,EAAE,EAAQ,EAAE;IACnG,MAAM,GAAG,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACvC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpC,aAAa,CAAC,kBAAkB,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AACjH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,2BAA2B,GAAG,CACzC,OAA0B,EAC1B,UAA+B,EAAE,EAC3B,EAAE;IACR,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACpC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI;QACvD,SAAS;QACT,WAAW,EAAE,EAAE;KAChB,CAAC;IAEF,kBAAkB,CAChB;QACE,GAAG,OAAO;QACV,aAAa,EAAE,OAAO;KACvB,EACD,OAAO,CACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,MAAsB,EACtB,UAA+B,EAAE,EAC3B,EAAE;IACR,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACnC,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI;QACvD,SAAS;QACT,WAAW,EAAE,EAAE;KAChB,CAAC;IAEF,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACjC,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAE,UAA+B,EAAE,EAAQ,EAAE;IAC/F,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACpC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,GAAW,EACX,UAA+B,EAAE,EACL,EAAE;IAC9B,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC;SAC5C,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClB,QAAQ;QACR,OAAO,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO;QACnC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAwB;KAC3E,CAAC,CAAC;SACF,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,KAAK,GAAG,CAAC;SAC3D,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,IAAI,IAAI,CAAC;AACrC,CAAC,CAAC"}
@@ -0,0 +1,84 @@
1
+ import { z } from "zod";
2
+ import type { ExperienceNodeType, ExperienceState } from "../../types/domain.js";
3
+ export type CodexActionCategory = "inspect" | "state" | "admin" | "maintenance";
4
+ export type CodexActionRiskLevel = "low" | "medium" | "high";
5
+ export type CodexActionDefinition = {
6
+ id: string;
7
+ title: string;
8
+ summary: string;
9
+ category: CodexActionCategory;
10
+ riskLevel: CodexActionRiskLevel;
11
+ requiresConfirmation: boolean;
12
+ inputSchema?: z.ZodTypeAny;
13
+ examplePayload?: Record<string, unknown>;
14
+ handler: (args: Record<string, unknown>) => Promise<unknown>;
15
+ };
16
+ type RegistryDeps = {
17
+ interactionSurface: {
18
+ inspectRecent: (args?: {
19
+ mode?: "all" | "injected";
20
+ limit?: number;
21
+ }) => Promise<unknown>;
22
+ inspectNode: (args: {
23
+ nodeId: string;
24
+ }) => Promise<unknown>;
25
+ listNodesByState: (args: {
26
+ state: ExperienceState;
27
+ }) => Promise<unknown>;
28
+ listNodesByType: (args: {
29
+ nodeType: ExperienceNodeType;
30
+ }) => Promise<unknown>;
31
+ inspectLearningSummary: () => Promise<unknown>;
32
+ coolNode: (args: {
33
+ nodeId: string;
34
+ }) => Promise<unknown>;
35
+ retireNode: (args: {
36
+ nodeId: string;
37
+ }) => Promise<unknown>;
38
+ feedbackNode: (args: {
39
+ nodeId: string;
40
+ feedback: "helped" | "harmed";
41
+ }) => Promise<unknown>;
42
+ disableScope: (args?: {
43
+ cwd?: string;
44
+ }) => Promise<unknown>;
45
+ enableScope: (args?: {
46
+ cwd?: string;
47
+ }) => Promise<unknown>;
48
+ };
49
+ operationalSurface: {
50
+ checkUpdate: (adapter: "openclaw" | "claude-code" | "codex") => Promise<unknown>;
51
+ };
52
+ operationalActions: {
53
+ planOperation: (args: {
54
+ adapter: "openclaw" | "claude-code" | "codex";
55
+ operation: "install" | "repair" | "upgrade";
56
+ }) => unknown;
57
+ executePlannedOperation: (args: {
58
+ planId: string;
59
+ confirmationToken: string;
60
+ }) => unknown;
61
+ };
62
+ stateArtifacts: {
63
+ listBackups: () => unknown;
64
+ planOperation: (args: {
65
+ operation: "backup" | "export";
66
+ } | {
67
+ operation: "import";
68
+ importPath: string;
69
+ } | {
70
+ operation: "rollback";
71
+ backupId: string;
72
+ }) => unknown;
73
+ executePlannedOperation: (args: {
74
+ planId: string;
75
+ confirmationToken: string;
76
+ }) => unknown;
77
+ };
78
+ };
79
+ export type CodexActionRegistry = ReturnType<typeof createCodexActionRegistry>;
80
+ export declare const createCodexActionRegistry: (deps: RegistryDeps) => {
81
+ list: () => CodexActionDefinition[];
82
+ get: (id: string) => CodexActionDefinition | undefined;
83
+ };
84
+ export {};