@alan512/experienceengine 0.1.2 → 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 (642) 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 +4 -8
  5. package/LICENSE +21 -0
  6. package/README.md +288 -95
  7. package/README.zh-CN.md +316 -65
  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 +3 -0
  27. package/dist/adapters/codex/instruction-template.js +12 -0
  28. package/dist/adapters/codex/instruction-template.js.map +1 -0
  29. package/dist/adapters/codex/mcp-server.d.ts +59 -41
  30. package/dist/adapters/codex/mcp-server.js +177 -728
  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 +672 -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 +23 -7
  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 +88 -2
  73. package/dist/cli/commands/config.js.map +1 -1
  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 +4 -28
  81. package/dist/cli/commands/doctor.js +156 -68
  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 +4 -0
  94. package/dist/cli/commands/feedback.js.map +1 -1
  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 +28 -0
  99. package/dist/cli/commands/init.js +432 -0
  100. package/dist/cli/commands/init.js.map +1 -0
  101. package/dist/cli/commands/inspect.d.ts +0 -0
  102. package/dist/cli/commands/inspect.js +271 -37
  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 +9 -0
  106. package/dist/cli/commands/install.js.map +1 -1
  107. package/dist/cli/commands/maintenance.d.ts +0 -0
  108. package/dist/cli/commands/maintenance.js +1 -1
  109. package/dist/cli/commands/maintenance.js.map +1 -1
  110. package/dist/cli/commands/mcp-server.d.ts +0 -0
  111. package/dist/cli/commands/mcp-server.js +4 -0
  112. package/dist/cli/commands/mcp-server.js.map +1 -1
  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 +89 -7
  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 +36 -9
  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 +14 -0
  140. package/dist/cli/state-model.js +23 -0
  141. package/dist/cli/state-model.js.map +1 -0
  142. package/dist/config/config-schema.d.ts +209 -0
  143. package/dist/config/config-schema.js +168 -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 +22 -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 +91 -2
  150. package/dist/config/load-config.js.map +1 -1
  151. package/dist/config/path-resolver.d.ts +0 -1
  152. package/dist/config/path-resolver.js +0 -2
  153. package/dist/config/path-resolver.js.map +1 -1
  154. package/dist/config/runtime-env.d.ts +8 -0
  155. package/dist/config/runtime-env.js +14 -0
  156. package/dist/config/runtime-env.js.map +1 -0
  157. package/dist/config/secrets-store.d.ts +15 -0
  158. package/dist/config/secrets-store.js +56 -0
  159. package/dist/config/secrets-store.js.map +1 -0
  160. package/dist/config/settings-store.d.ts +29 -0
  161. package/dist/config/settings-store.js +55 -0
  162. package/dist/config/settings-store.js.map +1 -1
  163. package/dist/controller/candidate-retriever.d.ts +49 -2
  164. package/dist/controller/candidate-retriever.js +258 -125
  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 +52 -1
  168. package/dist/controller/injection-renderer.js.map +1 -1
  169. package/dist/controller/injection-scorecard.d.ts +2 -2
  170. package/dist/controller/injection-scorecard.js +47 -1
  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 -2
  176. package/dist/controller/intervention-controller.js +339 -17
  177. package/dist/controller/intervention-controller.js.map +1 -1
  178. package/dist/controller/lexical-retriever.d.ts +14 -0
  179. package/dist/controller/lexical-retriever.js +117 -0
  180. package/dist/controller/lexical-retriever.js.map +1 -0
  181. package/dist/controller/model-reranker.d.ts +20 -0
  182. package/dist/controller/model-reranker.js +187 -0
  183. package/dist/controller/model-reranker.js.map +1 -0
  184. package/dist/controller/node-ranker.d.ts +0 -0
  185. package/dist/controller/node-ranker.js +1 -0
  186. package/dist/controller/node-ranker.js.map +1 -1
  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 +8 -0
  191. package/dist/controller/query-rewrite.js +69 -0
  192. package/dist/controller/query-rewrite.js.map +1 -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 +27 -2
  200. package/dist/controller/trigger-evaluator.js +63 -3
  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 +4 -0
  206. package/dist/distillation/experience-family.js +14 -0
  207. package/dist/distillation/experience-family.js.map +1 -0
  208. package/dist/distillation/host-llm.d.ts +1 -0
  209. package/dist/distillation/host-llm.js +5 -1
  210. package/dist/distillation/host-llm.js.map +1 -1
  211. package/dist/distillation/llm-distiller.d.ts +0 -0
  212. package/dist/distillation/llm-distiller.js +4 -0
  213. package/dist/distillation/llm-distiller.js.map +1 -1
  214. package/dist/distillation/merge-decider.d.ts +0 -0
  215. package/dist/distillation/merge-decider.js +4 -0
  216. package/dist/distillation/merge-decider.js.map +1 -1
  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 +6 -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 +78 -9
  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 +14 -2
  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/{compiler → hybrid}/types.js +0 -0
  351. package/dist/{packs → hybrid}/types.js.map +1 -1
  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 +2 -1
  378. package/dist/input/input-adapter.js.map +1 -1
  379. package/dist/input/outcome-resolver.d.ts +0 -0
  380. package/dist/input/outcome-resolver.js +5 -5
  381. package/dist/input/outcome-resolver.js.map +1 -1
  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 +2 -0
  387. package/dist/input/tasktype-resolver.js.map +1 -1
  388. package/dist/input/tool-event-significance.d.ts +5 -0
  389. package/dist/input/tool-event-significance.js +7 -0
  390. package/dist/input/tool-event-significance.js.map +1 -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 +8 -2
  395. package/dist/install/claude-code-doctor.js +54 -9
  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 +14 -0
  401. package/dist/install/claude-marketplace-state.js +47 -0
  402. package/dist/install/claude-marketplace-state.js.map +1 -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 +18 -0
  410. package/dist/install/codex-installer.js +91 -1
  411. package/dist/install/codex-installer.js.map +1 -1
  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 -0
  422. package/dist/install/openclaw-installer.js +198 -31
  423. package/dist/install/openclaw-installer.js.map +1 -1
  424. package/dist/install/public-install.d.ts +14 -4
  425. package/dist/install/public-install.js +20 -7
  426. package/dist/install/public-install.js.map +1 -1
  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 +3 -17
  437. package/dist/interaction/repo-summary.js +10 -27
  438. package/dist/interaction/repo-summary.js.map +1 -1
  439. package/dist/interaction/service.d.ts +59 -95
  440. package/dist/interaction/service.js +505 -266
  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 -1
  455. package/dist/maintenance/scope-merge.js +0 -20
  456. package/dist/maintenance/scope-merge.js.map +1 -1
  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 +148 -0
  476. package/dist/plugin/openclaw-plugin.js +98 -7
  477. package/dist/plugin/openclaw-plugin.js.map +1 -1
  478. package/dist/plugin/openclaw-routine-interaction.d.ts +7 -0
  479. package/dist/plugin/openclaw-routine-interaction.js +301 -0
  480. package/dist/plugin/openclaw-routine-interaction.js.map +1 -0
  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 -6
  491. package/dist/runtime/service.js +427 -50
  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 +37 -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 +8 -2
  504. package/dist/store/sqlite/repositories/candidate-repo.js.map +1 -1
  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 +1 -0
  515. package/dist/store/sqlite/repositories/injection-repo.js +11 -0
  516. package/dist/store/sqlite/repositories/injection-repo.js.map +1 -1
  517. package/dist/store/sqlite/repositories/input-record-repo.d.ts +3 -0
  518. package/dist/store/sqlite/repositories/input-record-repo.js +35 -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 +62 -8
  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 +2 -0
  536. package/dist/store/sqlite/repositories/task-run-repo.js +18 -2
  537. package/dist/store/sqlite/repositories/task-run-repo.js.map +1 -1
  538. package/dist/store/sqlite/schema.sql +49 -49
  539. package/dist/store/vector/api-embedding-provider.d.ts +2 -0
  540. package/dist/store/vector/api-embedding-provider.js +23 -19
  541. package/dist/store/vector/api-embedding-provider.js.map +1 -1
  542. package/dist/store/vector/embeddings.d.ts +1 -1
  543. package/dist/store/vector/embeddings.js +26 -5
  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 +166 -47
  561. package/dist/types/domain.js +0 -0
  562. package/dist/types/domain.js.map +0 -0
  563. package/dist/types/plugin.d.ts +3 -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 +3 -3
  593. package/docs/releases/v0.1.3.md +95 -0
  594. package/docs/releases/v0.2.0.md +85 -0
  595. package/docs/user-guide.md +263 -133
  596. package/hooks/hooks.json +0 -0
  597. package/openclaw.plugin.json +81 -1
  598. package/package.json +25 -16
  599. package/plugins/claude-code-experienceengine/.claude-plugin/plugin.json +1 -1
  600. package/plugins/claude-code-experienceengine/.mcp.json +4 -3
  601. package/plugins/claude-code-experienceengine/hooks/hooks.json +0 -0
  602. package/plugins/claude-code-experienceengine/scripts/claude-hook.sh +30 -1
  603. package/plugins/claude-code-experienceengine/scripts/install-deps.sh +41 -6
  604. package/scripts/claude-plugin/claude-hook.sh +0 -0
  605. package/scripts/claude-plugin/install-deps.sh +0 -0
  606. package/dist/cli/commands/pack.d.ts +0 -1
  607. package/dist/cli/commands/pack.js +0 -321
  608. package/dist/cli/commands/pack.js.map +0 -1
  609. package/dist/compiler/agents-renderer.d.ts +0 -4
  610. package/dist/compiler/agents-renderer.js +0 -105
  611. package/dist/compiler/agents-renderer.js.map +0 -1
  612. package/dist/compiler/claude-renderer.d.ts +0 -2
  613. package/dist/compiler/claude-renderer.js +0 -40
  614. package/dist/compiler/claude-renderer.js.map +0 -1
  615. package/dist/compiler/codex-renderer.d.ts +0 -2
  616. package/dist/compiler/codex-renderer.js +0 -40
  617. package/dist/compiler/codex-renderer.js.map +0 -1
  618. package/dist/compiler/compiler.d.ts +0 -4
  619. package/dist/compiler/compiler.js +0 -87
  620. package/dist/compiler/compiler.js.map +0 -1
  621. package/dist/compiler/deployer.d.ts +0 -21
  622. package/dist/compiler/deployer.js +0 -64
  623. package/dist/compiler/deployer.js.map +0 -1
  624. package/dist/compiler/github-renderer.d.ts +0 -2
  625. package/dist/compiler/github-renderer.js +0 -63
  626. package/dist/compiler/github-renderer.js.map +0 -1
  627. package/dist/compiler/types.d.ts +0 -45
  628. package/dist/compiler/types.js.map +0 -1
  629. package/dist/interaction/pack-actions-service.d.ts +0 -59
  630. package/dist/interaction/pack-actions-service.js +0 -172
  631. package/dist/interaction/pack-actions-service.js.map +0 -1
  632. package/dist/packs/fs-registry.d.ts +0 -27
  633. package/dist/packs/fs-registry.js +0 -216
  634. package/dist/packs/fs-registry.js.map +0 -1
  635. package/dist/packs/index-sync.d.ts +0 -9
  636. package/dist/packs/index-sync.js +0 -54
  637. package/dist/packs/index-sync.js.map +0 -1
  638. package/dist/packs/types.d.ts +0 -55
  639. package/dist/packs/types.js +0 -2
  640. package/dist/store/sqlite/repositories/pack-repo.d.ts +0 -16
  641. package/dist/store/sqlite/repositories/pack-repo.js +0 -192
  642. package/dist/store/sqlite/repositories/pack-repo.js.map +0 -1
package/README.zh-CN.md CHANGED
@@ -1,93 +1,313 @@
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
8
 
9
- 当前已验证的宿主:
10
- - `OpenClaw`:runtime / plugin 集成
11
- - `Claude Code`:hooks + MCP 交互
12
- - `Codex`:MCP-first runtime 与交互
9
+ 当前支持的宿主:`OpenClaw`、`Claude Code`、`Codex`
13
10
 
14
- ## 它能做什么
11
+ ## 10 秒理解
15
12
 
16
- ExperienceEngine 不是通用记忆库,也不是 context engine 的替代品。
13
+ 没有 ExperienceEngine
14
+ - agent 会在相似仓库里重复犯同样的 SQLite migration 错误
17
15
 
18
- 它主要做 4 件事:
19
- - 从宿主 Agent 捕获任务、工具和结果信号
20
- - 把有价值的经验压缩成短小的 `strategy` 或 `warning` 节点
21
- - 判断当前任务是否值得注入经验
22
- - 根据真实 `helped` / `harmed` 结果更新节点状态
16
+ ExperienceEngine:
17
+ - 它会注入一条提示,例如:`先执行 migration,再打开数据库连接`
18
+ - 后续你可以把这次介入标记为 `helpful` 或 `harmful`
19
+ - 这条经验会据此进入 active、降温或退役
23
20
 
24
- ## 它和 Memory 有什么不同
21
+ ```text
22
+ 任务信号 -> 提炼经验 -> 检索 -> 短提示注入 -> 反馈 -> 治理
23
+ ```
24
+
25
+ <details>
26
+ <summary>宿主里的示例对话</summary>
27
+
28
+ ```text
29
+ 用户:修一下这个仓库里的 SQLite 启动失败问题。
30
+
31
+ ExperienceEngine:
32
+ Hint: 先执行 migration,再打开数据库连接。
25
33
 
26
- 大多数 agent memory 系统解决的是:
34
+ 宿主 agent
35
+ 我会先补 migration,然后再重试启动。
27
36
 
28
- - 记住哪些事实
29
- - 记住哪些用户偏好
30
- - 下次会话该带上哪些仓库上下文
37
+ 用户:
38
+ 为什么这条 ExperienceEngine 提示会命中?
31
39
 
32
- ExperienceEngine 解决的是另一层问题:
40
+ 宿主 agent:
41
+ 它匹配到了这个仓库里过去一次相同的 SQLite 启动失败,以及当时成功的 migration-first 修复路径。
33
42
 
34
- - 什么时候该让历史经验介入
35
- - 该注入哪条 `strategy` 或 `warning`
36
- - 这次介入到底有没有帮到任务
37
- - 这条经验是否应该继续保留、降温或退役
43
+ 用户:
44
+ 把刚才那次 ExperienceEngine 介入标记为 helpful。
38
45
 
39
- 简单说:
40
- - memory 更像“记住事实和偏好”
41
- - ExperienceEngine 更像“治理可复用的编码经验”
46
+ 宿主 agent:
47
+ 已记录。之后遇到类似任务时,这条经验会更容易再次命中。
48
+ ```
42
49
 
43
- ## 当前能直接使用的能力
50
+ </details>
44
51
 
45
- 当前仓库已经实现并可用:
46
- - `OpenClaw`、`Claude Code`、`Codex` 三个宿主接入
47
- - 基于 MCP 的主交互面,以及 CLI fallback
48
- - 基于本地 embedding 的检索
49
- - 快速查看与反馈:
50
- - `ee inspect --last`
51
- - `ee helped`
52
- - `ee harmed`
53
- - 本机共享目录的 `Experience Pack` 工作流:
54
- - `draft`
55
- - `review`
56
- - `publish`
57
- - `rollback`
58
- - 面向宿主文件的编译与部署:
59
- - `AGENTS.md`
60
- - `CODEX.md`
61
- - `CLAUDE.md`
62
- - GitHub agent profile markdown
52
+ ![`ee inspect --last --verbose` 示例输出](./docs/assets/readme/inspect-last-example.svg)
63
53
 
64
54
  ## 快速开始
65
55
 
66
- 从源码目录启动:
56
+ 最快的宿主安装路径:
57
+
58
+ - `OpenClaw`
59
+ - `openclaw plugins install @alan512/experienceengine`
60
+ - `openclaw gateway restart`
61
+ - `ee init`
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`
69
+
70
+ `ee init` 用于在宿主安装完成后初始化共享的 ExperienceEngine 状态。
71
+
72
+ 如果你需要更详细的宿主安装说明、fallback 路径、ready 状态说明或 operator 工作流,跳转到 [完整安装与运维说明](#完整安装与运维说明)。
73
+
74
+ ## 适合谁用
75
+
76
+ 以下情况适合使用 ExperienceEngine:
77
+ - 你会在相似仓库或相似工作流里反复使用 coding agent
78
+ - 你想要的是**短小、介入式 guidance**,而不是泛化的 memory recall
79
+ - 你关心历史经验到底是**帮到了还是害了**
80
+ - 你希望过时 guidance 能自动降温或退役,而不是越积越多
81
+
82
+ 以下情况不适合:
83
+ - 你只想要一个个人笔记型 memory
84
+ - 你想要通用文档 RAG
85
+ - 你的工作流几乎不重复
86
+ - 你希望系统默认记住所有东西
87
+
88
+ ## 宿主支持矩阵
89
+
90
+ | 宿主 | 安装路径 | 日常交互 | 成熟度 |
91
+ |---|---|---|---|
92
+ | `OpenClaw` | 原生插件安装 | 宿主原生 | 当前最完整 |
93
+ | `Claude Code` | marketplace 插件,保留 `ee install claude-code` fallback | MCP + plugin hooks | 已支持 |
94
+ | `Codex` | `ee install codex`,保留原生 MCP fallback | MCP 原生 | 已支持 |
95
+
96
+ ## 为什么要做这个
97
+
98
+ Coding agent 会重复犯同类错误,通常不是因为模型不够聪明,而是因为之前的执行经验没有被**以可治理的方式**复用。
99
+
100
+ ExperienceEngine 的目标不是通用 memory 累积,而是**介入治理**。
101
+
102
+ ## 为什么不是 Memory / RAG
103
+
104
+ | 问题 | Memory 系统 | ExperienceEngine |
105
+ |---|---|---|
106
+ | 跨会话保存事实和偏好 | 可以 | 不是核心目标 |
107
+ | 捕获失败 -> 修复 -> 成功的经验路径 | 部分支持,通常依赖人工 | 可以,来自真实任务信号 |
108
+ | 知道一条回忆到底有没有帮助 | 通常不行 | 可以,逐次记录 |
109
+ | 自动退役过时或有害 guidance | 通常不行 | 可以,内建 cooling / retired 生命周期 |
110
+ | 保持提示短小、任务相关 | 不是核心目标 | 是 |
111
+ | 通用文档检索 | 常见适用场景 | 不是核心目标 |
112
+
113
+ ## 它在 Agent Loop 里的位置
114
+
115
+ 从高层看,ExperienceEngine 围绕 agent loop 的位置是这样的:
116
+
117
+ ```text
118
+ 用户任务
119
+ -> before_prompt_build:检索并注入匹配经验
120
+ -> agent 推理 + 工具调用:捕获失败、重试、修正和结果
121
+ -> task finalize:把候选信号提炼成可复用经验
122
+ -> helped / harmed:提升、降温或退役节点
123
+ ```
124
+
125
+ ExperienceEngine 工作在 context 层,不会修改宿主模型权重。
126
+
127
+ ## 经验生命周期
128
+
129
+ ```text
130
+ 任务信号
131
+ -> candidate
132
+ -> active
133
+ -> cooling
134
+ -> retired
135
+ ```
136
+
137
+ 每条经验都根据真实任务结果演化,而不是按时间粗暴清理。帮到任务的经验会被强化,反复有害的经验会被降温或退役。
138
+
139
+ ## 现在能做什么
140
+
141
+ - 在相似编码任务里复用短 guidance
142
+ - 查看某条 hint 为什么命中
143
+ - 把最近一次介入标记为 helpful 或 harmful
144
+ - 查看 active、cooling、retired 等生命周期状态
145
+ - 在 `OpenClaw`、`Claude Code`、`Codex` 三个宿主中使用
146
+
147
+ ### 底层实现
148
+
149
+ - MCP 原生交互面,加上 CLI / operator fallback
150
+ - 支持 API 与本地回退的语义检索
151
+ - 宿主 agent 内可直接查看和反馈经验,CLI fallback 包括 `ee inspect --last`、`ee helped`、`ee harmed`
152
+
153
+ 如果你想看 ExperienceNode 结构和治理字段,见:
154
+
155
+ - [Experience Model Overview](./docs/development/experience-model.md)
156
+
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`
189
+
190
+ ## 完整安装与运维说明
191
+
192
+ ### 按宿主安装
193
+
194
+ ExperienceEngine 现在不再把 `ee` CLI 当成适用于所有宿主的统一首要安装入口。
195
+
196
+ 请先从宿主自己的安装路径接入:
197
+
198
+ - `OpenClaw`
199
+ - 宿主原生插件安装:
200
+ - `openclaw plugins install @alan512/experienceengine`
201
+ - 安装后,在开始真实任务前先重启 gateway:
202
+ - `openclaw gateway restart`
203
+ - `Codex`
204
+ - EE 托管安装:
205
+ - `ee install codex`
206
+ - 原生 / 手工 fallback:
207
+ - 如果你需要直接 MCP wiring,可参考后面的高级示例
208
+ - 无论走哪条路径,首次接入后都建议在仓库里开启一个新的 Codex 会话,让 MCP 配置和 `AGENTS.md` 指令块生效
209
+ - `Claude Code`
210
+ - 宿主原生 marketplace 安装:
211
+ - 先添加 GitHub marketplace:
212
+ - `/plugin marketplace add https://github.com/Alan-512/ExperienceEngine.git`
213
+ - 再安装插件:
214
+ - `/plugin install experienceengine@experienceengine`
215
+ - 如果你需要显式 hooks + MCP wiring,仍可使用:
216
+ - `ee install claude-code`
217
+ - 安装后建议开启一个新的 Claude Code 会话,让插件 hooks 和 bundled MCP 配置生效
218
+
219
+ 无论哪个宿主,整体流程都是一样的:
220
+
221
+ 1. 通过宿主路径安装 ExperienceEngine
222
+ 2. 执行一次 `ee init` 初始化共享状态
223
+ 3. 重启或新开宿主会话,直到仓库变成 `Ready`
224
+ 4. 日常检查和反馈优先留在宿主内部完成
225
+ 5. 需要验证、修复或深度排障时,再退回 `ee` CLI
226
+
227
+ ### 共享初始化
228
+
229
+ `ee init` 属于 ExperienceEngine 的共享初始化,不是某个宿主自己的安装步骤。
230
+
231
+ - 第一次接入任意宿主后执行一次,用来配置:
232
+ - distillation provider / model / auth
233
+ - embedding 模式 / provider
234
+ - 共享 provider secret
235
+ - 后续再接入其他宿主,会复用同一个 ExperienceEngine home、配置和共享 secret
236
+
237
+ 安装完成后,ExperienceEngine 应该把用户引导到下一步状态:
238
+
239
+ - 如果宿主 wiring 已完成,产品至少是 `Installed`
240
+ - 执行完 `ee init` 后,进入 `Initialized`
241
+ - 宿主或仓库完成 reload 并能开始真实任务后,进入 `Ready`
242
+
243
+ 最小共享初始化示例:
67
244
 
68
245
  ```bash
69
- pnpm install
70
- pnpm build
71
- node dist/cli/index.js doctor codex
246
+ ee init distillation --provider openai --model gpt-4.1-mini --auth-mode api_key
247
+ ee init secret OPENAI_API_KEY <your-api-key>
248
+ ee init embedding --mode api --api-provider openai --model text-embedding-3-small
249
+ ee init show
72
250
  ```
73
251
 
74
- 如果已经作为命令安装,可直接使用:
252
+ 如果你更想用 Gemini 或 Jina 做 embedding,可以沿用同样的 `ee init embedding` 流程,只替换 provider 和 model。
253
+
254
+ ### 日常使用与 Operator 使用
255
+
256
+ 日常使用时,优先直接问宿主 agent,例如:
257
+
258
+ - “ExperienceEngine 刚刚注入了什么?”
259
+ - “为什么那条 ExperienceEngine 提示会命中?”
260
+ - “把刚才那次 ExperienceEngine 介入标记为 helpful 或 harmful。”
261
+
262
+ OpenClaw 还支持这些 readiness / silence 问题:
263
+
264
+ - “ExperienceEngine 这里 ready 了吗?”
265
+ - “这个仓库里的 ExperienceEngine 还在 warming up 吗?”
266
+ - “刚才为什么 ExperienceEngine 没有注入?”
267
+
268
+ 对于 `OpenClaw`、`Codex`、`Claude Code`,常规 review / feedback 路径都应优先留在宿主内部完成。
269
+ 只有宿主侧路径不可用,或者你需要显式 operator 控制时,再退回 CLI。
270
+
271
+ 当你需要显式运维、验证或排障时,可以用:
75
272
 
76
273
  ```bash
77
- ee doctor codex
274
+ ee init
275
+ ee doctor <openclaw|claude-code|codex>
276
+ ee status
277
+ ee maintenance embedding-smoke
78
278
  ```
79
279
 
80
- ## 前置条件
280
+ ### Ready 与 Value 状态
281
+
282
+ ExperienceEngine 把 onboarding 和 value 拆成两层:
283
+
284
+ - `Setup state`
285
+ - `Installed`
286
+ - `Initialized`
287
+ - `Ready`
288
+ - `Value state`
289
+ - `Warming up`
290
+ - `First value reached`
291
+
292
+ 这不是一条严格线性阶梯。一个仓库可以已经 `Ready`,但还处于 `Warming up`。
81
293
 
82
- 在安装任一 adapter 前,请先确认对应宿主 CLI 已经能在当前机器正常工作:
294
+ `First value reached` 只应该在真实任务里已经出现可见价值时才成立。仅仅显示 onboarding 文案或 warm-up 提示,不算 first value。
83
295
 
84
- - `openclaw`:用于 OpenClaw adapter
85
- - `claude`:用于 Claude Code adapter
86
- - `codex`:用于 Codex adapter
296
+ ## 安装模型
87
297
 
88
- ExperienceEngine 不会替你安装这些宿主 CLI。它只会把自己接入一个已经可用的宿主环境。
298
+ ExperienceEngine 明确拆分:
299
+ - 宿主安装
300
+ - 共享初始化
301
+ - operator 工作流
89
302
 
90
- ## 按宿主安装
303
+ 宿主仍然是主交互面。
304
+ `ee` 仍然是显式的 operator 面,用于 setup、验证、修复、状态查看和维护。
305
+
306
+ ## 高级按宿主命令(仅限 Operator / 开发者)
307
+
308
+ 大多数用户可以跳过这一节,直接使用上面的宿主安装路径。
309
+
310
+ 如果你是运维者、开发者,或者确实想显式控制某个宿主,仍可使用:
91
311
 
92
312
  ```bash
93
313
  ee install openclaw
@@ -95,12 +315,23 @@ ee install claude-code
95
315
  ee install codex
96
316
  ```
97
317
 
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
+
98
327
  说明:
99
- - `OpenClaw` 走 plugin/runtime 集成,管理面更多依赖 CLI fallback
100
- - `Claude Code` 会同时安装 hooks 和共享 MCP server
101
- - `Codex` 会安装共享 MCP server
102
- - `ee install ...` `ee doctor ...` 现在会检查 `npm/pnpm` 是否使用非官方 registry;受管模型下载默认建议使用 `https://registry.npmjs.org`
103
- - `ee install ...` 成功后还会主动说明冷启动预期:采集会立刻开始,但正式经验通常需要同仓库内几次相似任务后才会出现
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 一般需要在同一仓库里出现几次相似任务后才会形成
333
+
334
+ 这些命令属于 operator fallback,不是默认公开安装路径。
104
335
 
105
336
  ## 数据目录
106
337
 
@@ -117,10 +348,30 @@ ee install codex
117
348
  - 受管本地 embedding 模型缓存,默认位于 `~/.experienceengine/models/embeddings`
118
349
  - 受管备份与导出快照
119
350
 
351
+ ## Embedding 默认行为
352
+
353
+ 当前默认行为:
354
+
355
+ - `embeddingProvider = "api"`
356
+ - provider 优先级:OpenAI -> Gemini -> Jina
357
+ - 如果没有任何 API provider 可用,会自动回退到受管本地 embedding
358
+
359
+ 常用环境变量:
360
+
361
+ - `EXPERIENCE_ENGINE_EMBEDDING_PROVIDER=local`
362
+ - 强制完全本地 embedding
363
+ - `EXPERIENCE_ENGINE_EMBEDDING_API_PROVIDER=openai|gemini|jina`
364
+ - 强制指定某个 API embedding provider
365
+
120
366
  ## 用户手册
121
367
 
122
368
  完整用户文档见:
123
369
 
124
370
  - [ExperienceEngine 用户手册](./docs/user-guide.md)
125
371
 
126
- 用户手册里包含安装、宿主差异、首次验证、pack 工作流、compiler/deploy 命令、维护命令和故障排查说明。
372
+ 用户手册里包含安装、宿主差异、首次验证、维护命令和故障排查说明。
373
+
374
+ ## 许可证
375
+
376
+ 本项目采用 MIT License。
377
+ 详见 [LICENSE](./LICENSE)。
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":"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"}
@@ -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 {};