@alan512/experienceengine 0.2.0 → 0.2.1
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.
- package/.claude-plugin/marketplace.json +0 -0
- package/.claude-plugin/plugin.json +1 -1
- package/.env.example +0 -0
- package/.mcp.json +0 -0
- package/LICENSE +0 -0
- package/README.md +49 -48
- package/README.zh-CN.md +49 -48
- package/dist/adapters/claude-code/event-store.d.ts +0 -0
- package/dist/adapters/claude-code/event-store.js +0 -0
- package/dist/adapters/claude-code/event-store.js.map +0 -0
- package/dist/adapters/claude-code/hook-normalizer.d.ts +0 -0
- package/dist/adapters/claude-code/hook-normalizer.js +0 -0
- package/dist/adapters/claude-code/hook-normalizer.js.map +0 -0
- package/dist/adapters/claude-code/runtime-projection.d.ts +0 -0
- package/dist/adapters/claude-code/runtime-projection.js +0 -0
- package/dist/adapters/claude-code/runtime-projection.js.map +0 -0
- package/dist/adapters/claude-code/session-store.d.ts +0 -0
- package/dist/adapters/claude-code/session-store.js +0 -0
- package/dist/adapters/claude-code/session-store.js.map +0 -0
- package/dist/adapters/codex/action-registry.d.ts +0 -0
- package/dist/adapters/codex/action-registry.js +0 -0
- package/dist/adapters/codex/action-registry.js.map +0 -0
- package/dist/adapters/codex/broker-tools.d.ts +0 -0
- package/dist/adapters/codex/broker-tools.js +0 -0
- package/dist/adapters/codex/broker-tools.js.map +0 -0
- package/dist/adapters/codex/instruction-template.d.ts +0 -0
- package/dist/adapters/codex/instruction-template.js +0 -0
- package/dist/adapters/codex/instruction-template.js.map +0 -0
- package/dist/adapters/codex/mcp-server.d.ts +0 -0
- package/dist/adapters/codex/mcp-server.js +1 -1
- package/dist/adapters/codex/mcp-server.js.map +0 -0
- package/dist/analyzer/candidate-signals.d.ts +0 -0
- package/dist/analyzer/candidate-signals.js +0 -0
- package/dist/analyzer/candidate-signals.js.map +0 -0
- package/dist/analyzer/experience-analyzer.d.ts +0 -0
- package/dist/analyzer/experience-analyzer.js +0 -0
- package/dist/analyzer/experience-analyzer.js.map +0 -0
- package/dist/analyzer/extraction-evidence.d.ts +0 -0
- package/dist/analyzer/extraction-evidence.js +0 -0
- package/dist/analyzer/extraction-evidence.js.map +0 -0
- package/dist/analyzer/llm-learning-gate.d.ts +0 -0
- package/dist/analyzer/llm-learning-gate.js +0 -0
- package/dist/analyzer/llm-learning-gate.js.map +0 -0
- package/dist/analyzer/node-deduper.d.ts +0 -0
- package/dist/analyzer/node-deduper.js +0 -0
- package/dist/analyzer/node-deduper.js.map +0 -0
- package/dist/analyzer/node-normalizer.d.ts +0 -0
- package/dist/analyzer/node-normalizer.js +0 -0
- package/dist/analyzer/node-normalizer.js.map +0 -0
- package/dist/analyzer/storage-gate.d.ts +0 -0
- package/dist/analyzer/storage-gate.js +0 -0
- package/dist/analyzer/storage-gate.js.map +0 -0
- package/dist/analyzer/strategy-extractor.d.ts +0 -0
- package/dist/analyzer/strategy-extractor.js +0 -0
- package/dist/analyzer/strategy-extractor.js.map +0 -0
- package/dist/analyzer/warning-extractor.d.ts +0 -0
- package/dist/analyzer/warning-extractor.js +0 -0
- package/dist/analyzer/warning-extractor.js.map +0 -0
- package/dist/cli/commands/backup.d.ts +0 -0
- package/dist/cli/commands/backup.js +0 -0
- package/dist/cli/commands/backup.js.map +0 -0
- package/dist/cli/commands/claude-hook.d.ts +0 -0
- package/dist/cli/commands/claude-hook.js +0 -0
- package/dist/cli/commands/claude-hook.js.map +0 -0
- package/dist/cli/commands/codex-mcp-server.d.ts +0 -0
- package/dist/cli/commands/codex-mcp-server.js +0 -0
- package/dist/cli/commands/codex-mcp-server.js.map +0 -0
- package/dist/cli/commands/codex.d.ts +0 -0
- package/dist/cli/commands/codex.js +0 -0
- package/dist/cli/commands/codex.js.map +0 -0
- package/dist/cli/commands/config.d.ts +0 -0
- package/dist/cli/commands/config.js +0 -0
- package/dist/cli/commands/config.js.map +0 -0
- package/dist/cli/commands/cool.d.ts +0 -0
- package/dist/cli/commands/cool.js +0 -0
- package/dist/cli/commands/cool.js.map +0 -0
- package/dist/cli/commands/disable.d.ts +0 -0
- package/dist/cli/commands/disable.js +0 -0
- package/dist/cli/commands/disable.js.map +0 -0
- package/dist/cli/commands/doctor.d.ts +0 -0
- package/dist/cli/commands/doctor.js +15 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/enable.d.ts +0 -0
- package/dist/cli/commands/enable.js +0 -0
- package/dist/cli/commands/enable.js.map +0 -0
- package/dist/cli/commands/evaluate.d.ts +0 -0
- package/dist/cli/commands/evaluate.js +0 -0
- package/dist/cli/commands/evaluate.js.map +0 -0
- package/dist/cli/commands/export.d.ts +0 -0
- package/dist/cli/commands/export.js +0 -0
- package/dist/cli/commands/export.js.map +0 -0
- package/dist/cli/commands/feedback.d.ts +0 -0
- package/dist/cli/commands/feedback.js +0 -0
- package/dist/cli/commands/feedback.js.map +0 -0
- package/dist/cli/commands/import.d.ts +0 -0
- package/dist/cli/commands/import.js +0 -0
- package/dist/cli/commands/import.js.map +0 -0
- package/dist/cli/commands/init.d.ts +0 -0
- package/dist/cli/commands/init.js +0 -0
- package/dist/cli/commands/init.js.map +0 -0
- package/dist/cli/commands/inspect.d.ts +0 -0
- package/dist/cli/commands/inspect.js +4 -3
- package/dist/cli/commands/inspect.js.map +1 -1
- package/dist/cli/commands/install.d.ts +0 -0
- package/dist/cli/commands/install.js +0 -0
- package/dist/cli/commands/install.js.map +0 -0
- package/dist/cli/commands/maintenance.d.ts +0 -0
- package/dist/cli/commands/maintenance.js +0 -0
- package/dist/cli/commands/maintenance.js.map +0 -0
- package/dist/cli/commands/mcp-server.d.ts +0 -0
- package/dist/cli/commands/mcp-server.js +0 -0
- package/dist/cli/commands/mcp-server.js.map +0 -0
- package/dist/cli/commands/models.d.ts +0 -0
- package/dist/cli/commands/models.js +0 -0
- package/dist/cli/commands/models.js.map +0 -0
- package/dist/cli/commands/repair.d.ts +0 -0
- package/dist/cli/commands/repair.js +0 -0
- package/dist/cli/commands/repair.js.map +0 -0
- package/dist/cli/commands/retire.d.ts +0 -0
- package/dist/cli/commands/retire.js +0 -0
- package/dist/cli/commands/retire.js.map +0 -0
- package/dist/cli/commands/rollback.d.ts +0 -0
- package/dist/cli/commands/rollback.js +0 -0
- package/dist/cli/commands/rollback.js.map +0 -0
- package/dist/cli/commands/stats.d.ts +0 -0
- package/dist/cli/commands/stats.js +0 -0
- package/dist/cli/commands/stats.js.map +0 -0
- package/dist/cli/commands/status.d.ts +0 -0
- package/dist/cli/commands/status.js +6 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/upgrade.d.ts +0 -0
- package/dist/cli/commands/upgrade.js +0 -0
- package/dist/cli/commands/upgrade.js.map +0 -0
- package/dist/cli/dispatch.d.ts +0 -0
- package/dist/cli/dispatch.js +0 -0
- package/dist/cli/dispatch.js.map +0 -0
- package/dist/cli/index.d.ts +0 -0
- package/dist/cli/index.js.map +0 -0
- package/dist/cli/state-model.d.ts +0 -0
- package/dist/cli/state-model.js +0 -0
- package/dist/cli/state-model.js.map +0 -0
- package/dist/config/config-schema.d.ts +0 -0
- package/dist/config/config-schema.js +0 -0
- package/dist/config/config-schema.js.map +0 -0
- package/dist/config/default-config.d.ts +0 -0
- package/dist/config/default-config.js +0 -0
- package/dist/config/default-config.js.map +0 -0
- package/dist/config/load-config.d.ts +0 -0
- package/dist/config/load-config.js +0 -0
- package/dist/config/load-config.js.map +0 -0
- package/dist/config/path-resolver.d.ts +0 -0
- package/dist/config/path-resolver.js +0 -0
- package/dist/config/path-resolver.js.map +0 -0
- package/dist/config/runtime-env.d.ts +0 -0
- package/dist/config/runtime-env.js +0 -0
- package/dist/config/runtime-env.js.map +0 -0
- package/dist/config/secrets-store.d.ts +0 -0
- package/dist/config/secrets-store.js +0 -0
- package/dist/config/secrets-store.js.map +0 -0
- package/dist/config/settings-store.d.ts +0 -0
- package/dist/config/settings-store.js +0 -0
- package/dist/config/settings-store.js.map +0 -0
- package/dist/controller/candidate-retriever.d.ts +2 -1
- package/dist/controller/candidate-retriever.js +109 -1
- package/dist/controller/candidate-retriever.js.map +1 -1
- package/dist/controller/injection-renderer.d.ts +0 -0
- package/dist/controller/injection-renderer.js +0 -0
- package/dist/controller/injection-renderer.js.map +0 -0
- package/dist/controller/injection-scorecard.d.ts +0 -0
- package/dist/controller/injection-scorecard.js +0 -0
- package/dist/controller/injection-scorecard.js.map +0 -0
- package/dist/controller/inline-notice.d.ts +0 -0
- package/dist/controller/inline-notice.js +0 -0
- package/dist/controller/inline-notice.js.map +0 -0
- package/dist/controller/intervention-controller.d.ts +0 -0
- package/dist/controller/intervention-controller.js +2 -0
- package/dist/controller/intervention-controller.js.map +1 -1
- package/dist/controller/lexical-retriever.d.ts +0 -0
- package/dist/controller/lexical-retriever.js +0 -0
- package/dist/controller/lexical-retriever.js.map +0 -0
- package/dist/controller/model-reranker.d.ts +0 -0
- package/dist/controller/model-reranker.js +0 -0
- package/dist/controller/model-reranker.js.map +0 -0
- package/dist/controller/node-ranker.d.ts +0 -0
- package/dist/controller/node-ranker.js +0 -0
- package/dist/controller/node-ranker.js.map +0 -0
- package/dist/controller/policy-enricher.d.ts +0 -0
- package/dist/controller/policy-enricher.js +0 -0
- package/dist/controller/policy-enricher.js.map +0 -0
- package/dist/controller/query-rewrite.d.ts +0 -0
- package/dist/controller/query-rewrite.js +0 -0
- package/dist/controller/query-rewrite.js.map +0 -0
- package/dist/controller/retrieval-context.d.ts +0 -0
- package/dist/controller/retrieval-context.js +0 -0
- package/dist/controller/retrieval-context.js.map +0 -0
- package/dist/controller/second-opinion-gate.d.ts +0 -0
- package/dist/controller/second-opinion-gate.js +0 -0
- package/dist/controller/second-opinion-gate.js.map +0 -0
- package/dist/controller/trigger-evaluator.d.ts +2 -1
- package/dist/controller/trigger-evaluator.js +24 -0
- package/dist/controller/trigger-evaluator.js.map +1 -1
- package/dist/distillation/errors.d.ts +0 -0
- package/dist/distillation/errors.js +0 -0
- package/dist/distillation/errors.js.map +0 -0
- package/dist/distillation/experience-family.d.ts +0 -0
- package/dist/distillation/experience-family.js +0 -0
- package/dist/distillation/experience-family.js.map +0 -0
- package/dist/distillation/host-llm.d.ts +0 -0
- package/dist/distillation/host-llm.js +0 -0
- package/dist/distillation/host-llm.js.map +0 -0
- package/dist/distillation/llm-distiller.d.ts +0 -0
- package/dist/distillation/llm-distiller.js +0 -0
- package/dist/distillation/llm-distiller.js.map +0 -0
- package/dist/distillation/merge-decider.d.ts +0 -0
- package/dist/distillation/merge-decider.js +0 -0
- package/dist/distillation/merge-decider.js.map +0 -0
- package/dist/distillation/model-catalog.d.ts +0 -0
- package/dist/distillation/model-catalog.js +0 -0
- package/dist/distillation/model-catalog.js.map +0 -0
- package/dist/distillation/prompt-contract.d.ts +0 -0
- package/dist/distillation/prompt-contract.js +0 -0
- package/dist/distillation/prompt-contract.js.map +0 -0
- package/dist/distillation/providers/anthropic.d.ts +0 -0
- package/dist/distillation/providers/anthropic.js +0 -0
- package/dist/distillation/providers/anthropic.js.map +0 -0
- package/dist/distillation/providers/azure-openai.d.ts +0 -0
- package/dist/distillation/providers/azure-openai.js +0 -0
- package/dist/distillation/providers/azure-openai.js.map +0 -0
- package/dist/distillation/providers/baidu-qianfan.d.ts +0 -0
- package/dist/distillation/providers/baidu-qianfan.js +0 -0
- package/dist/distillation/providers/baidu-qianfan.js.map +0 -0
- package/dist/distillation/providers/bedrock.d.ts +0 -0
- package/dist/distillation/providers/bedrock.js +0 -0
- package/dist/distillation/providers/bedrock.js.map +0 -0
- package/dist/distillation/providers/dashscope.d.ts +0 -0
- package/dist/distillation/providers/dashscope.js +0 -0
- package/dist/distillation/providers/dashscope.js.map +0 -0
- package/dist/distillation/providers/deepseek.d.ts +0 -0
- package/dist/distillation/providers/deepseek.js +0 -0
- package/dist/distillation/providers/deepseek.js.map +0 -0
- package/dist/distillation/providers/gemini.d.ts +0 -0
- package/dist/distillation/providers/gemini.js +0 -0
- package/dist/distillation/providers/gemini.js.map +0 -0
- package/dist/distillation/providers/google-adc.d.ts +0 -0
- package/dist/distillation/providers/google-adc.js +0 -0
- package/dist/distillation/providers/google-adc.js.map +0 -0
- package/dist/distillation/providers/minimax.d.ts +0 -0
- package/dist/distillation/providers/minimax.js +0 -0
- package/dist/distillation/providers/minimax.js.map +0 -0
- package/dist/distillation/providers/moonshot.d.ts +0 -0
- package/dist/distillation/providers/moonshot.js +0 -0
- package/dist/distillation/providers/moonshot.js.map +0 -0
- package/dist/distillation/providers/openai-compatible-factory.d.ts +0 -0
- package/dist/distillation/providers/openai-compatible-factory.js +0 -0
- package/dist/distillation/providers/openai-compatible-factory.js.map +0 -0
- package/dist/distillation/providers/openai-compatible.d.ts +0 -0
- package/dist/distillation/providers/openai-compatible.js +0 -0
- package/dist/distillation/providers/openai-compatible.js.map +0 -0
- package/dist/distillation/providers/openai.d.ts +0 -0
- package/dist/distillation/providers/openai.js +0 -0
- package/dist/distillation/providers/openai.js.map +0 -0
- package/dist/distillation/providers/openrouter.d.ts +0 -0
- package/dist/distillation/providers/openrouter.js +0 -0
- package/dist/distillation/providers/openrouter.js.map +0 -0
- package/dist/distillation/providers/registry.d.ts +0 -0
- package/dist/distillation/providers/registry.js +0 -0
- package/dist/distillation/providers/registry.js.map +0 -0
- package/dist/distillation/providers/siliconflow.d.ts +0 -0
- package/dist/distillation/providers/siliconflow.js +0 -0
- package/dist/distillation/providers/siliconflow.js.map +0 -0
- package/dist/distillation/providers/tencent-hunyuan.d.ts +0 -0
- package/dist/distillation/providers/tencent-hunyuan.js +0 -0
- package/dist/distillation/providers/tencent-hunyuan.js.map +0 -0
- package/dist/distillation/providers/types.d.ts +0 -0
- package/dist/distillation/providers/types.js +0 -0
- package/dist/distillation/providers/types.js.map +0 -0
- package/dist/distillation/providers/volcengine-ark.d.ts +0 -0
- package/dist/distillation/providers/volcengine-ark.js +0 -0
- package/dist/distillation/providers/volcengine-ark.js.map +0 -0
- package/dist/distillation/providers/zhipu.d.ts +0 -0
- package/dist/distillation/providers/zhipu.js +0 -0
- package/dist/distillation/providers/zhipu.js.map +0 -0
- package/dist/distillation/queue-worker.d.ts +0 -0
- package/dist/distillation/queue-worker.js +0 -0
- package/dist/distillation/queue-worker.js.map +0 -0
- package/dist/distillation/types.d.ts +0 -0
- package/dist/distillation/types.js +0 -0
- package/dist/distillation/types.js.map +0 -0
- package/dist/evaluation/benchmark-report.d.ts +0 -0
- package/dist/evaluation/benchmark-report.js +0 -0
- package/dist/evaluation/benchmark-report.js.map +0 -0
- package/dist/evaluation/benchmark-summary.d.ts +0 -0
- package/dist/evaluation/benchmark-summary.js +0 -0
- package/dist/evaluation/benchmark-summary.js.map +0 -0
- package/dist/evaluation/codex-lifecycle-validation.d.ts +0 -0
- package/dist/evaluation/codex-lifecycle-validation.js +0 -0
- package/dist/evaluation/codex-lifecycle-validation.js.map +0 -0
- package/dist/evaluation/hybrid-phase1-rollout-summary.d.ts +0 -0
- package/dist/evaluation/hybrid-phase1-rollout-summary.js +0 -0
- package/dist/evaluation/hybrid-phase1-rollout-summary.js.map +0 -0
- package/dist/evaluation/hybrid-phase3-gate-metrics.d.ts +0 -0
- package/dist/evaluation/hybrid-phase3-gate-metrics.js +0 -0
- package/dist/evaluation/hybrid-phase3-gate-metrics.js.map +0 -0
- package/dist/evaluation/openclaw-baseline.d.ts +0 -0
- package/dist/evaluation/openclaw-baseline.js +0 -0
- package/dist/evaluation/openclaw-baseline.js.map +0 -0
- package/dist/evaluation/openclaw-scenarios.d.ts +0 -0
- package/dist/evaluation/openclaw-scenarios.js +0 -0
- package/dist/evaluation/openclaw-scenarios.js.map +0 -0
- package/dist/experience-management/governance-observability.d.ts +0 -0
- package/dist/experience-management/governance-observability.js +0 -0
- package/dist/experience-management/governance-observability.js.map +0 -0
- package/dist/experience-management/node-lifecycle-governance.d.ts +0 -0
- package/dist/experience-management/node-lifecycle-governance.js +0 -0
- package/dist/experience-management/node-lifecycle-governance.js.map +0 -0
- package/dist/experience-management/task-management-signals.d.ts +0 -0
- package/dist/experience-management/task-management-signals.js +0 -0
- package/dist/experience-management/task-management-signals.js.map +0 -0
- package/dist/feedback/automatic-attribution.d.ts +0 -0
- package/dist/feedback/automatic-attribution.js +0 -0
- package/dist/feedback/automatic-attribution.js.map +0 -0
- package/dist/feedback/feedback-manager.d.ts +0 -0
- package/dist/feedback/feedback-manager.js +0 -0
- package/dist/feedback/feedback-manager.js.map +0 -0
- package/dist/feedback/harm-detector.d.ts +0 -0
- package/dist/feedback/harm-detector.js +0 -0
- package/dist/feedback/harm-detector.js.map +0 -0
- package/dist/feedback/state-transition.d.ts +0 -0
- package/dist/feedback/state-transition.js +0 -0
- package/dist/feedback/state-transition.js.map +0 -0
- package/dist/feedback/stats-updater.d.ts +0 -0
- package/dist/feedback/stats-updater.js +0 -0
- package/dist/feedback/stats-updater.js.map +0 -0
- package/dist/hybrid/capsule-builder.d.ts +0 -0
- package/dist/hybrid/capsule-builder.js +0 -0
- package/dist/hybrid/capsule-builder.js.map +0 -0
- package/dist/hybrid/explain-provider-client.d.ts +0 -0
- package/dist/hybrid/explain-provider-client.js +0 -0
- package/dist/hybrid/explain-provider-client.js.map +0 -0
- package/dist/hybrid/postmortem-provider-client.d.ts +0 -0
- package/dist/hybrid/postmortem-provider-client.js +0 -0
- package/dist/hybrid/postmortem-provider-client.js.map +0 -0
- package/dist/hybrid/rollout.d.ts +0 -0
- package/dist/hybrid/rollout.js +0 -0
- package/dist/hybrid/rollout.js.map +0 -0
- package/dist/hybrid/router.d.ts +0 -0
- package/dist/hybrid/router.js +0 -0
- package/dist/hybrid/router.js.map +0 -0
- package/dist/hybrid/types.d.ts +0 -0
- package/dist/hybrid/types.js +0 -0
- package/dist/hybrid/types.js.map +0 -0
- package/dist/hybrid/validators.d.ts +0 -0
- package/dist/hybrid/validators.js +0 -0
- package/dist/hybrid/validators.js.map +0 -0
- package/dist/hybrid/worker-client.d.ts +0 -0
- package/dist/hybrid/worker-client.js +0 -0
- package/dist/hybrid/worker-client.js.map +0 -0
- package/dist/hybrid/workers/explain-decision-llm.d.ts +0 -0
- package/dist/hybrid/workers/explain-decision-llm.js +0 -0
- package/dist/hybrid/workers/explain-decision-llm.js.map +0 -0
- package/dist/hybrid/workers/explain-decision.d.ts +0 -0
- package/dist/hybrid/workers/explain-decision.js +0 -0
- package/dist/hybrid/workers/explain-decision.js.map +0 -0
- package/dist/hybrid/workers/postmortem-review-llm.d.ts +0 -0
- package/dist/hybrid/workers/postmortem-review-llm.js +0 -0
- package/dist/hybrid/workers/postmortem-review-llm.js.map +0 -0
- package/dist/hybrid/workers/postmortem-review.d.ts +0 -0
- package/dist/hybrid/workers/postmortem-review.js +0 -0
- package/dist/hybrid/workers/postmortem-review.js.map +0 -0
- package/dist/index.d.ts +0 -0
- package/dist/index.js +0 -0
- package/dist/index.js.map +0 -0
- package/dist/input/context-summary-adapter.d.ts +0 -0
- package/dist/input/context-summary-adapter.js +0 -0
- package/dist/input/context-summary-adapter.js.map +0 -0
- package/dist/input/input-adapter.d.ts +0 -0
- package/dist/input/input-adapter.js +0 -0
- package/dist/input/input-adapter.js.map +0 -0
- package/dist/input/outcome-resolver.d.ts +0 -0
- package/dist/input/outcome-resolver.js +0 -0
- package/dist/input/outcome-resolver.js.map +0 -0
- package/dist/input/scope-resolver.d.ts +0 -0
- package/dist/input/scope-resolver.js +0 -0
- package/dist/input/scope-resolver.js.map +0 -0
- package/dist/input/tasktype-resolver.d.ts +0 -0
- package/dist/input/tasktype-resolver.js +0 -0
- package/dist/input/tasktype-resolver.js.map +0 -0
- package/dist/input/tool-event-significance.d.ts +0 -0
- package/dist/input/tool-event-significance.js +0 -0
- package/dist/input/tool-event-significance.js.map +0 -0
- package/dist/install/claude-cli.d.ts +0 -0
- package/dist/install/claude-cli.js +0 -0
- package/dist/install/claude-cli.js.map +0 -0
- package/dist/install/claude-code-doctor.d.ts +0 -0
- package/dist/install/claude-code-doctor.js +0 -0
- package/dist/install/claude-code-doctor.js.map +0 -0
- package/dist/install/claude-code-installer.d.ts +0 -0
- package/dist/install/claude-code-installer.js +0 -0
- package/dist/install/claude-code-installer.js.map +0 -0
- package/dist/install/claude-marketplace-state.d.ts +0 -0
- package/dist/install/claude-marketplace-state.js +0 -0
- package/dist/install/claude-marketplace-state.js.map +0 -0
- package/dist/install/claude-runtime-target.d.ts +0 -0
- package/dist/install/claude-runtime-target.js +0 -0
- package/dist/install/claude-runtime-target.js.map +0 -0
- package/dist/install/codex-cli.d.ts +0 -0
- package/dist/install/codex-cli.js +0 -0
- package/dist/install/codex-cli.js.map +0 -0
- package/dist/install/codex-installer.d.ts +7 -0
- package/dist/install/codex-installer.js +22 -0
- package/dist/install/codex-installer.js.map +1 -1
- package/dist/install/codex-runtime-target.d.ts +0 -0
- package/dist/install/codex-runtime-target.js +0 -0
- package/dist/install/codex-runtime-target.js.map +0 -0
- package/dist/install/host-detection.d.ts +0 -0
- package/dist/install/host-detection.js +0 -0
- package/dist/install/host-detection.js.map +0 -0
- package/dist/install/openclaw-cli.d.ts +0 -0
- package/dist/install/openclaw-cli.js +0 -0
- package/dist/install/openclaw-cli.js.map +0 -0
- package/dist/install/openclaw-installer.d.ts +0 -0
- package/dist/install/openclaw-installer.js +0 -0
- package/dist/install/openclaw-installer.js.map +0 -0
- package/dist/install/public-install.d.ts +0 -0
- package/dist/install/public-install.js +0 -0
- package/dist/install/public-install.js.map +0 -0
- package/dist/install/registry-health.d.ts +0 -0
- package/dist/install/registry-health.js +0 -0
- package/dist/install/registry-health.js.map +0 -0
- package/dist/interaction/operational-actions-service.d.ts +0 -0
- package/dist/interaction/operational-actions-service.js +0 -0
- package/dist/interaction/operational-actions-service.js.map +0 -0
- package/dist/interaction/operational-service.d.ts +0 -0
- package/dist/interaction/operational-service.js +0 -0
- package/dist/interaction/operational-service.js.map +0 -0
- package/dist/interaction/repo-summary.d.ts +0 -0
- package/dist/interaction/repo-summary.js +0 -0
- package/dist/interaction/repo-summary.js.map +0 -0
- package/dist/interaction/service.d.ts +0 -0
- package/dist/interaction/service.js +15 -11
- package/dist/interaction/service.js.map +1 -1
- package/dist/interaction/state-artifact-service.d.ts +0 -0
- package/dist/interaction/state-artifact-service.js +0 -0
- package/dist/interaction/state-artifact-service.js.map +0 -0
- package/dist/maintenance/claude-validate-print.d.ts +0 -0
- package/dist/maintenance/claude-validate-print.js +0 -0
- package/dist/maintenance/claude-validate-print.js.map +0 -0
- package/dist/maintenance/embedding-smoke.d.ts +0 -0
- package/dist/maintenance/embedding-smoke.js +0 -0
- package/dist/maintenance/embedding-smoke.js.map +0 -0
- package/dist/maintenance/redistill-rule-nodes.d.ts +0 -0
- package/dist/maintenance/redistill-rule-nodes.js +0 -0
- package/dist/maintenance/redistill-rule-nodes.js.map +0 -0
- package/dist/maintenance/scope-merge.d.ts +0 -0
- package/dist/maintenance/scope-merge.js +0 -0
- package/dist/maintenance/scope-merge.js.map +0 -0
- package/dist/maintenance/warning-variant-cleanup.d.ts +0 -0
- package/dist/maintenance/warning-variant-cleanup.js +0 -0
- package/dist/maintenance/warning-variant-cleanup.js.map +0 -0
- package/dist/plugin/fixture-sanitizer.d.ts +0 -0
- package/dist/plugin/fixture-sanitizer.js +0 -0
- package/dist/plugin/fixture-sanitizer.js.map +0 -0
- package/dist/plugin/hooks/before-prompt-build.d.ts +0 -0
- package/dist/plugin/hooks/before-prompt-build.js +0 -0
- package/dist/plugin/hooks/before-prompt-build.js.map +0 -0
- package/dist/plugin/hooks/message-sent.d.ts +0 -0
- package/dist/plugin/hooks/message-sent.js +0 -0
- package/dist/plugin/hooks/message-sent.js.map +0 -0
- package/dist/plugin/hooks/tool-result-persist.d.ts +0 -0
- package/dist/plugin/hooks/tool-result-persist.js +0 -0
- package/dist/plugin/hooks/tool-result-persist.js.map +0 -0
- package/dist/plugin/openclaw-install-state.d.ts +0 -0
- package/dist/plugin/openclaw-install-state.js +0 -0
- package/dist/plugin/openclaw-install-state.js.map +0 -0
- package/dist/plugin/openclaw-plugin.d.ts +0 -0
- package/dist/plugin/openclaw-plugin.js +0 -0
- package/dist/plugin/openclaw-plugin.js.map +0 -0
- package/dist/plugin/openclaw-routine-interaction.d.ts +0 -0
- package/dist/plugin/openclaw-routine-interaction.js +0 -0
- package/dist/plugin/openclaw-routine-interaction.js.map +0 -0
- package/dist/plugin/openclaw-runtime-defaults.d.ts +0 -0
- package/dist/plugin/openclaw-runtime-defaults.js +0 -0
- package/dist/plugin/openclaw-runtime-defaults.js.map +0 -0
- package/dist/plugin/runtime-capture.d.ts +0 -0
- package/dist/plugin/runtime-capture.js +0 -0
- package/dist/plugin/runtime-capture.js.map +0 -0
- package/dist/plugin/runtime-helpers.d.ts +0 -0
- package/dist/plugin/runtime-helpers.js +0 -0
- package/dist/plugin/runtime-helpers.js.map +0 -0
- package/dist/runtime/service.d.ts +1 -0
- package/dist/runtime/service.js +67 -28
- package/dist/runtime/service.js.map +1 -1
- package/dist/store/logs/jsonl-logger.d.ts +0 -0
- package/dist/store/logs/jsonl-logger.js +0 -0
- package/dist/store/logs/jsonl-logger.js.map +0 -0
- package/dist/store/sqlite/db.d.ts +0 -0
- package/dist/store/sqlite/db.js +0 -0
- package/dist/store/sqlite/db.js.map +0 -0
- package/dist/store/sqlite/migrations.d.ts +0 -0
- package/dist/store/sqlite/migrations.js +0 -0
- package/dist/store/sqlite/migrations.js.map +0 -0
- package/dist/store/sqlite/repositories/candidate-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/candidate-repo.js +0 -0
- package/dist/store/sqlite/repositories/candidate-repo.js.map +0 -0
- package/dist/store/sqlite/repositories/distillation-job-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/distillation-job-repo.js +0 -0
- package/dist/store/sqlite/repositories/distillation-job-repo.js.map +0 -0
- package/dist/store/sqlite/repositories/hybrid-invocation-trace-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/hybrid-invocation-trace-repo.js +0 -0
- package/dist/store/sqlite/repositories/hybrid-invocation-trace-repo.js.map +0 -0
- package/dist/store/sqlite/repositories/hybrid-review-artifact-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/hybrid-review-artifact-repo.js +0 -0
- package/dist/store/sqlite/repositories/hybrid-review-artifact-repo.js.map +0 -0
- package/dist/store/sqlite/repositories/injection-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/injection-repo.js +0 -0
- package/dist/store/sqlite/repositories/injection-repo.js.map +0 -0
- package/dist/store/sqlite/repositories/input-record-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/input-record-repo.js +0 -0
- package/dist/store/sqlite/repositories/input-record-repo.js.map +0 -0
- package/dist/store/sqlite/repositories/node-repo.d.ts +1 -0
- package/dist/store/sqlite/repositories/node-repo.js +9 -0
- package/dist/store/sqlite/repositories/node-repo.js.map +1 -1
- package/dist/store/sqlite/repositories/outcome-record-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/outcome-record-repo.js +0 -0
- package/dist/store/sqlite/repositories/outcome-record-repo.js.map +0 -0
- package/dist/store/sqlite/repositories/review-event-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/review-event-repo.js +0 -0
- package/dist/store/sqlite/repositories/review-event-repo.js.map +0 -0
- package/dist/store/sqlite/repositories/scope-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/scope-repo.js +0 -0
- package/dist/store/sqlite/repositories/scope-repo.js.map +0 -0
- package/dist/store/sqlite/repositories/stats-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/stats-repo.js +0 -0
- package/dist/store/sqlite/repositories/stats-repo.js.map +0 -0
- package/dist/store/sqlite/repositories/task-run-repo.d.ts +0 -0
- package/dist/store/sqlite/repositories/task-run-repo.js +0 -0
- package/dist/store/sqlite/repositories/task-run-repo.js.map +0 -0
- package/dist/store/sqlite/schema.sql +0 -0
- package/dist/store/vector/api-embedding-provider.d.ts +0 -0
- package/dist/store/vector/api-embedding-provider.js +0 -0
- package/dist/store/vector/api-embedding-provider.js.map +0 -0
- package/dist/store/vector/embeddings.d.ts +0 -0
- package/dist/store/vector/embeddings.js +0 -0
- package/dist/store/vector/embeddings.js.map +0 -0
- package/dist/store/vector/lancedb.d.ts +0 -0
- package/dist/store/vector/lancedb.js +0 -0
- package/dist/store/vector/lancedb.js.map +0 -0
- package/dist/store/vector/local-provider.d.ts +0 -0
- package/dist/store/vector/local-provider.js +0 -0
- package/dist/store/vector/local-provider.js.map +0 -0
- package/dist/store/vector/node-index.d.ts +0 -0
- package/dist/store/vector/node-index.js +0 -0
- package/dist/store/vector/node-index.js.map +0 -0
- package/dist/store/vector/provider-types.d.ts +0 -0
- package/dist/store/vector/provider-types.js +0 -0
- package/dist/store/vector/provider-types.js.map +0 -0
- package/dist/types/analyzer.d.ts +0 -0
- package/dist/types/analyzer.js +0 -0
- package/dist/types/analyzer.js.map +0 -0
- package/dist/types/domain.d.ts +16 -2
- package/dist/types/domain.js +0 -0
- package/dist/types/domain.js.map +0 -0
- package/dist/types/plugin.d.ts +0 -0
- package/dist/types/plugin.js +0 -0
- package/dist/types/plugin.js.map +0 -0
- package/dist/types/storage.d.ts +0 -0
- package/dist/types/storage.js +0 -0
- package/dist/types/storage.js.map +0 -0
- package/dist/utils/clock.d.ts +0 -0
- package/dist/utils/clock.js +0 -0
- package/dist/utils/clock.js.map +0 -0
- package/dist/utils/errors.d.ts +0 -0
- package/dist/utils/errors.js +0 -0
- package/dist/utils/errors.js.map +0 -0
- package/dist/utils/hashing.d.ts +0 -0
- package/dist/utils/hashing.js +0 -0
- package/dist/utils/hashing.js.map +0 -0
- package/dist/utils/ids.d.ts +0 -0
- package/dist/utils/ids.js +0 -0
- package/dist/utils/ids.js.map +0 -0
- package/dist/utils/text.d.ts +0 -0
- package/dist/utils/text.js +0 -0
- package/dist/utils/text.js.map +0 -0
- package/dist/version/package-version.d.ts +0 -0
- package/dist/version/package-version.js +0 -0
- package/dist/version/package-version.js.map +0 -0
- package/dist/version/remote-release.d.ts +0 -0
- package/dist/version/remote-release.js +0 -0
- package/dist/version/remote-release.js.map +0 -0
- package/docs/releases/v0.1.0.md +0 -0
- package/docs/releases/v0.1.1.md +0 -0
- package/docs/releases/v0.1.2.md +0 -0
- package/docs/releases/v0.1.3.md +0 -0
- package/docs/releases/v0.2.0.md +0 -0
- package/docs/releases/v0.2.1.md +21 -0
- package/docs/user-guide.md +5 -1
- package/hooks/hooks.json +0 -0
- package/openclaw.plugin.json +1 -1
- package/package.json +14 -13
- package/plugins/claude-code-experienceengine/.claude-plugin/plugin.json +1 -1
- package/plugins/claude-code-experienceengine/.mcp.json +0 -0
- package/plugins/claude-code-experienceengine/hooks/hooks.json +0 -0
- package/plugins/claude-code-experienceengine/scripts/claude-hook.sh +0 -0
- package/plugins/claude-code-experienceengine/scripts/install-deps.sh +1 -1
- package/scripts/claude-plugin/claude-hook.sh +0 -0
- package/scripts/claude-plugin/install-deps.sh +0 -0
|
File without changes
|
package/.env.example
CHANGED
|
File without changes
|
package/.mcp.json
CHANGED
|
File without changes
|
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
@@ -12,40 +12,30 @@ Supported hosts today: `OpenClaw`, `Claude Code`, `Codex`
|
|
|
12
12
|
|
|
13
13
|
Without ExperienceEngine:
|
|
14
14
|
- the agent repeats the same SQLite migration mistake in a similar repo
|
|
15
|
+
- it opens the DB before running the migration, then wastes turns retrying the wrong path
|
|
15
16
|
|
|
16
17
|
With ExperienceEngine:
|
|
17
|
-
- it injects
|
|
18
|
-
-
|
|
19
|
-
- the
|
|
18
|
+
- before tool use, it injects one short constraint like: `Run the migration before opening the DB connection`
|
|
19
|
+
- the host agent avoids the same failed path instead of rediscovering it from scratch
|
|
20
|
+
- after the task, ExperienceEngine usually updates that guidance automatically from the real outcome
|
|
21
|
+
- if the guidance later starts harming similar tasks, ExperienceEngine can cool, quarantine, or retire it
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
task signals -> distilled experience -> retrieval -> short intervention -> feedback -> governance
|
|
23
|
-
```
|
|
23
|
+
Task flow: `task signals -> distilled experience -> retrieval -> short intervention -> feedback -> governance`
|
|
24
24
|
|
|
25
25
|
<details>
|
|
26
26
|
<summary>Example host transcript</summary>
|
|
27
27
|
|
|
28
|
-
```text
|
|
29
28
|
User: Fix the SQLite startup failure in this repo.
|
|
30
29
|
|
|
31
|
-
ExperienceEngine:
|
|
32
|
-
Hint: Run the migration before opening the DB connection.
|
|
30
|
+
Host agent: ExperienceEngine found a prior successful fix pattern in this repo: `Run the migration before opening the DB connection.` I’ll apply the migration first, then retry startup.
|
|
33
31
|
|
|
34
|
-
|
|
35
|
-
I’ll apply the migration first, then retry startup.
|
|
32
|
+
User: Why did that ExperienceEngine hint match?
|
|
36
33
|
|
|
37
|
-
|
|
38
|
-
Why did that ExperienceEngine hint match?
|
|
34
|
+
Host agent: It matched a prior task in this repo with the same SQLite startup pattern and a successful migration-first fix.
|
|
39
35
|
|
|
40
|
-
|
|
41
|
-
It matched a prior task in this repo with the same SQLite startup pattern and a successful migration-first fix.
|
|
36
|
+
User: So ExperienceEngine is trying to keep me off the same bad path?
|
|
42
37
|
|
|
43
|
-
|
|
44
|
-
Mark the last ExperienceEngine intervention as helpful.
|
|
45
|
-
|
|
46
|
-
Host agent:
|
|
47
|
-
Recorded. That experience gets stronger for similar future tasks.
|
|
48
|
-
```
|
|
38
|
+
Host agent: Yes. It reused a repo-local success pattern before the next tool call, and it will usually score the outcome automatically after this run.
|
|
49
39
|
|
|
50
40
|
</details>
|
|
51
41
|
|
|
@@ -110,44 +100,50 @@ ExperienceEngine is designed for intervention governance, not general memory acc
|
|
|
110
100
|
| Keep context small and intervention-focused | Not the main goal | Yes, it injects short task-specific guidance |
|
|
111
101
|
| Generic document lookup | Common fit | Not the primary job |
|
|
112
102
|
|
|
103
|
+
## Why It Is Not Just Another Memory Layer
|
|
104
|
+
|
|
105
|
+
ExperienceEngine is not trying to remember more things than the host. Its core job is to govern whether learned guidance should keep affecting future tasks.
|
|
106
|
+
|
|
107
|
+
- most learning work happens after the task, so the current task does not need to wait for the full experience pipeline
|
|
108
|
+
- each learned node moves through a lifecycle such as `candidate`, `active`, `cooling`, and `retired`
|
|
109
|
+
- delivery is governed separately from storage, so harmful guidance can be cooled, quarantined, or removed from normal live injection
|
|
110
|
+
- posttask review can revise whether a hint actually helped, harmed, or stayed uncertain
|
|
111
|
+
- delivery decisions are persisted even when no hint is shipped, so skipped turns can still be explained later
|
|
112
|
+
- high-match same-repo experience can move out of conservative delivery after successful reuse, while cross-repo reuse stays cautious unless there is stronger evidence
|
|
113
|
+
- the product goal is production-safe reuse, not maximum recall
|
|
114
|
+
|
|
113
115
|
## Where It Sits In The Agent Loop
|
|
114
116
|
|
|
115
117
|
At a high level, ExperienceEngine operates around the agent loop like this:
|
|
116
118
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
-> helped / harmed feedback: promote, cool, or retire nodes
|
|
123
|
-
```
|
|
119
|
+
- `User task`
|
|
120
|
+
- `before_prompt_build`: retrieve and inject matching experience
|
|
121
|
+
- `agent reasoning + tools`: capture failures, retries, corrections, and outcomes
|
|
122
|
+
- `task finalization`: distill new candidates into reusable experience
|
|
123
|
+
- `helped / harmed feedback`: promote, cool, or retire nodes
|
|
124
124
|
|
|
125
125
|
ExperienceEngine works at the context layer. It does not modify the host model's weights.
|
|
126
126
|
|
|
127
127
|
## Experience Lifecycle
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
task signals
|
|
131
|
-
-> candidate
|
|
132
|
-
-> active
|
|
133
|
-
-> cooling
|
|
134
|
-
-> retired
|
|
135
|
-
```
|
|
129
|
+
`task signals -> candidate -> active -> cooling -> retired`
|
|
136
130
|
|
|
137
131
|
Each node moves through that lifecycle using real task outcomes, not just time-based cleanup. Helpful experience gets reinforced; harmful experience gets cooled or retired.
|
|
138
132
|
|
|
139
133
|
## What You Can Do Today
|
|
140
134
|
|
|
141
135
|
- reuse short guidance from similar coding work
|
|
142
|
-
- review why a hint matched
|
|
143
|
-
-
|
|
144
|
-
-
|
|
136
|
+
- review why a hint matched or why nothing injected
|
|
137
|
+
- let ExperienceEngine automatically reinforce, cool, quarantine, or retire guidance from real task outcomes
|
|
138
|
+
- override the last intervention as helpful or harmful when the automatic judgment needs correction
|
|
139
|
+
- inspect active, cooling, quarantined, and retired experience
|
|
145
140
|
- run across `OpenClaw`, `Claude Code`, and `Codex`
|
|
146
141
|
|
|
147
142
|
### Under The Hood
|
|
148
143
|
|
|
149
144
|
- MCP-native interaction surfaces plus CLI/operator fallback
|
|
150
145
|
- semantic retrieval with API and local fallback
|
|
146
|
+
- deterministic match scorecards that separate same-repo confidence from broader cross-repo reuse
|
|
151
147
|
- host-agent driven inspection and feedback, with CLI fallback commands such as `ee inspect --last`, `ee helped`, and `ee harmed`
|
|
152
148
|
|
|
153
149
|
For a more detailed explanation of what ExperienceEngine records and how an experience node is structured, see:
|
|
@@ -165,9 +161,10 @@ For a more detailed explanation of what ExperienceEngine records and how an expe
|
|
|
165
161
|
|
|
166
162
|
After installation and initialization, the first visible signs of value are:
|
|
167
163
|
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
-
|
|
164
|
+
- a repeated task avoids a previously known bad path instead of rediscovering it
|
|
165
|
+
- ExperienceEngine injects only a short repo-relevant constraint instead of bloating the prompt
|
|
166
|
+
- the host can explain why that hint matched or why nothing was injected
|
|
167
|
+
- the task outcome usually updates future delivery automatically
|
|
171
168
|
- `ee inspect --last` shows the recent intervention and related node state
|
|
172
169
|
|
|
173
170
|
## Prerequisites
|
|
@@ -243,23 +240,26 @@ After installation, ExperienceEngine should orient the user toward the next setu
|
|
|
243
240
|
|
|
244
241
|
Minimal shared initialization example:
|
|
245
242
|
|
|
246
|
-
|
|
247
|
-
ee init
|
|
248
|
-
ee init
|
|
249
|
-
ee init
|
|
250
|
-
ee init show
|
|
251
|
-
```
|
|
243
|
+
1. `ee init distillation --provider openai --model gpt-4.1-mini --auth-mode api_key`
|
|
244
|
+
2. `ee init secret OPENAI_API_KEY <your-api-key>`
|
|
245
|
+
3. `ee init embedding --mode api --api-provider openai --model text-embedding-3-small`
|
|
246
|
+
4. `ee init show`
|
|
252
247
|
|
|
253
248
|
If you prefer Gemini or Jina for embeddings, use the same `ee init embedding` flow with the matching provider and model.
|
|
254
249
|
|
|
255
250
|
### Routine Use vs Operator Use
|
|
256
251
|
|
|
257
|
-
For routine use, ask the host agent naturally for ExperienceEngine state
|
|
252
|
+
For routine use, ask the host agent naturally for ExperienceEngine state first. Automatic outcome attribution is the default path; manual feedback is mainly there when you want to correct that judgment.
|
|
253
|
+
|
|
254
|
+
Examples:
|
|
258
255
|
|
|
259
256
|
- "What did ExperienceEngine just inject?"
|
|
260
257
|
- "Why did that ExperienceEngine hint match?"
|
|
258
|
+
- "Why didn't ExperienceEngine inject anything just now?"
|
|
261
259
|
- "Mark the last ExperienceEngine intervention as helpful or harmful."
|
|
262
260
|
|
|
261
|
+
In normal use, you should not need to manually score every intervention. ExperienceEngine is designed to learn from real task outcomes automatically, while still letting you override the result when the automatic judgment is wrong.
|
|
262
|
+
|
|
263
263
|
OpenClaw also supports these additional readiness and recent-silence questions in-session:
|
|
264
264
|
|
|
265
265
|
- "Is ExperienceEngine ready here?"
|
|
@@ -303,6 +303,7 @@ ExperienceEngine separates:
|
|
|
303
303
|
|
|
304
304
|
The host remains the primary interaction surface.
|
|
305
305
|
`ee` remains the explicit operator surface for setup, validation, repair, status, and maintenance.
|
|
306
|
+
For Codex, `ee status` and `ee doctor codex` also report whether the `ee` CLI fallback is available on `PATH`. Codex MCP wiring can still work when the CLI fallback is missing, but commands such as `ee inspect --last` need either a PATH-visible `ee` binary or an explicit package invocation.
|
|
306
307
|
|
|
307
308
|
## Advanced Per-Host Commands (Operator / Development Only)
|
|
308
309
|
|
package/README.zh-CN.md
CHANGED
|
@@ -12,40 +12,30 @@ ExperienceEngine 是一个面向编程 Agent 的治理层。它复用真实执
|
|
|
12
12
|
|
|
13
13
|
没有 ExperienceEngine:
|
|
14
14
|
- agent 会在相似仓库里重复犯同样的 SQLite migration 错误
|
|
15
|
+
- 它会先打开数据库、再补 migration,然后在错误方向上浪费几轮
|
|
15
16
|
|
|
16
17
|
有 ExperienceEngine:
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
18
|
+
- 它会在真正调用工具之前注入一条很短的约束,例如:`先执行 migration,再打开数据库连接`
|
|
19
|
+
- 宿主 agent 会直接避开上次已经踩过的错路,而不是重新试错
|
|
20
|
+
- 任务结束后,ExperienceEngine 通常会根据真实结果自动更新这条 guidance
|
|
21
|
+
- 如果这条 guidance 后面开始伤害相似任务,ExperienceEngine 会把它降温、隔离或退役
|
|
20
22
|
|
|
21
|
-
|
|
22
|
-
任务信号 -> 提炼经验 -> 检索 -> 短提示注入 -> 反馈 -> 治理
|
|
23
|
-
```
|
|
23
|
+
任务流:`任务信号 -> 提炼经验 -> 检索 -> 短提示注入 -> 反馈 -> 治理`
|
|
24
24
|
|
|
25
25
|
<details>
|
|
26
26
|
<summary>宿主里的示例对话</summary>
|
|
27
27
|
|
|
28
|
-
```text
|
|
29
28
|
用户:修一下这个仓库里的 SQLite 启动失败问题。
|
|
30
29
|
|
|
31
|
-
ExperienceEngine
|
|
32
|
-
Hint: 先执行 migration,再打开数据库连接。
|
|
33
|
-
|
|
34
|
-
宿主 agent:
|
|
35
|
-
我会先补 migration,然后再重试启动。
|
|
30
|
+
宿主 agent:ExperienceEngine 在这个仓库里找到了一个之前成功过的修复模式:`先执行 migration,再打开数据库连接。` 我会先补 migration,然后再重试启动。
|
|
36
31
|
|
|
37
|
-
|
|
38
|
-
为什么这条 ExperienceEngine 提示会命中?
|
|
32
|
+
用户:为什么这条 ExperienceEngine 提示会命中?
|
|
39
33
|
|
|
40
|
-
宿主 agent
|
|
41
|
-
它匹配到了这个仓库里过去一次相同的 SQLite 启动失败,以及当时成功的 migration-first 修复路径。
|
|
34
|
+
宿主 agent:它匹配到了这个仓库里过去一次相同的 SQLite 启动失败,以及当时成功的 migration-first 修复路径。
|
|
42
35
|
|
|
43
|
-
|
|
44
|
-
把刚才那次 ExperienceEngine 介入标记为 helpful。
|
|
36
|
+
用户:所以 ExperienceEngine 的作用,是提前把我从同样的错路上拉回来?
|
|
45
37
|
|
|
46
|
-
宿主 agent
|
|
47
|
-
已记录。之后遇到类似任务时,这条经验会更容易再次命中。
|
|
48
|
-
```
|
|
38
|
+
宿主 agent:对。它在下一次工具调用前复用了这个仓库里的成功路径,而且这次任务结束后通常会自动判断这条经验到底帮到了还是干扰了结果。
|
|
49
39
|
|
|
50
40
|
</details>
|
|
51
41
|
|
|
@@ -110,44 +100,50 @@ ExperienceEngine 的目标不是通用 memory 累积,而是**介入治理**。
|
|
|
110
100
|
| 保持提示短小、任务相关 | 不是核心目标 | 是 |
|
|
111
101
|
| 通用文档检索 | 常见适用场景 | 不是核心目标 |
|
|
112
102
|
|
|
103
|
+
## 为什么它不是另一层记忆
|
|
104
|
+
|
|
105
|
+
ExperienceEngine 不是想比宿主“记住更多东西”。它的核心价值,是持续治理一条已经学到的 guidance 还应不应该继续影响后续任务。
|
|
106
|
+
|
|
107
|
+
- 大部分学习动作发生在任务之后,所以当前任务不需要等待整条经验处理链路跑完
|
|
108
|
+
- 每条经验节点都会经历 `candidate`、`active`、`cooling`、`retired` 这样的生命周期
|
|
109
|
+
- “存下来” 和 “还能不能继续上线” 是分开的,所以有害 guidance 可以被降温、隔离,或者退出正常注入路径
|
|
110
|
+
- 任务结束后的审查会继续判断这条 hint 到底是帮到了、伤害了,还是仍然不确定
|
|
111
|
+
- 即使这次没有注入 hint,delivery decision 也会被记录下来,所以之后仍然能解释为什么跳过
|
|
112
|
+
- 同仓库高匹配经验在成功复用后可以从保守投放提升到正常投放;跨仓库复用默认仍保持保守,除非后续证据更强
|
|
113
|
+
- 这个产品追求的是“生产安全的经验复用”,不是“尽量多记、尽量多召回”
|
|
114
|
+
|
|
113
115
|
## 它在 Agent Loop 里的位置
|
|
114
116
|
|
|
115
117
|
从高层看,ExperienceEngine 围绕 agent loop 的位置是这样的:
|
|
116
118
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
-> helped / harmed:提升、降温或退役节点
|
|
123
|
-
```
|
|
119
|
+
- `用户任务`
|
|
120
|
+
- `before_prompt_build`:检索并注入匹配经验
|
|
121
|
+
- `agent 推理 + 工具调用`:捕获失败、重试、修正和结果
|
|
122
|
+
- `task finalize`:把候选信号提炼成可复用经验
|
|
123
|
+
- `helped / harmed`:提升、降温或退役节点
|
|
124
124
|
|
|
125
125
|
ExperienceEngine 工作在 context 层,不会修改宿主模型权重。
|
|
126
126
|
|
|
127
127
|
## 经验生命周期
|
|
128
128
|
|
|
129
|
-
|
|
130
|
-
任务信号
|
|
131
|
-
-> candidate
|
|
132
|
-
-> active
|
|
133
|
-
-> cooling
|
|
134
|
-
-> retired
|
|
135
|
-
```
|
|
129
|
+
`任务信号 -> candidate -> active -> cooling -> retired`
|
|
136
130
|
|
|
137
131
|
每条经验都根据真实任务结果演化,而不是按时间粗暴清理。帮到任务的经验会被强化,反复有害的经验会被降温或退役。
|
|
138
132
|
|
|
139
133
|
## 现在能做什么
|
|
140
134
|
|
|
141
135
|
- 在相似编码任务里复用短 guidance
|
|
142
|
-
- 查看某条 hint
|
|
143
|
-
-
|
|
144
|
-
-
|
|
136
|
+
- 查看某条 hint 为什么命中,或者为什么这次没有注入
|
|
137
|
+
- 让 ExperienceEngine 根据真实任务结果自动强化、降温、隔离或退役 guidance
|
|
138
|
+
- 当自动判断不准时,手动把最近一次介入标记为 helpful 或 harmful
|
|
139
|
+
- 查看 active、cooling、quarantined、retired 等生命周期状态
|
|
145
140
|
- 在 `OpenClaw`、`Claude Code`、`Codex` 三个宿主中使用
|
|
146
141
|
|
|
147
142
|
### 底层实现
|
|
148
143
|
|
|
149
144
|
- MCP 原生交互面,加上 CLI / operator fallback
|
|
150
145
|
- 支持 API 与本地回退的语义检索
|
|
146
|
+
- 确定性的 match scorecard,用来区分同仓库高置信匹配和更宽泛的跨仓库复用
|
|
151
147
|
- 宿主 agent 内可直接查看和反馈经验,CLI fallback 包括 `ee inspect --last`、`ee helped`、`ee harmed`
|
|
152
148
|
|
|
153
149
|
如果你想看 ExperienceNode 结构和治理字段,见:
|
|
@@ -165,9 +161,10 @@ ExperienceEngine 工作在 context 层,不会修改宿主模型权重。
|
|
|
165
161
|
|
|
166
162
|
安装并初始化后,第一次真正体现价值的信号通常是:
|
|
167
163
|
|
|
168
|
-
-
|
|
169
|
-
-
|
|
170
|
-
-
|
|
164
|
+
- 一类重复任务不再重走之前已经犯过的错路
|
|
165
|
+
- ExperienceEngine 只注入一条很短、和当前仓库直接相关的约束,而不是把上下文塞满
|
|
166
|
+
- 宿主能解释为什么这条 hint 会命中,或者为什么这次没有注入
|
|
167
|
+
- 任务结果通常会自动影响以后是否继续投放这条经验
|
|
171
168
|
- `ee inspect --last` 能看到最近的介入和相关节点状态
|
|
172
169
|
|
|
173
170
|
## 前置条件
|
|
@@ -242,23 +239,26 @@ ExperienceEngine 现在不再把 `ee` CLI 当成适用于所有宿主的统一
|
|
|
242
239
|
|
|
243
240
|
最小共享初始化示例:
|
|
244
241
|
|
|
245
|
-
|
|
246
|
-
ee init
|
|
247
|
-
ee init
|
|
248
|
-
ee init
|
|
249
|
-
ee init show
|
|
250
|
-
```
|
|
242
|
+
1. `ee init distillation --provider openai --model gpt-4.1-mini --auth-mode api_key`
|
|
243
|
+
2. `ee init secret OPENAI_API_KEY <your-api-key>`
|
|
244
|
+
3. `ee init embedding --mode api --api-provider openai --model text-embedding-3-small`
|
|
245
|
+
4. `ee init show`
|
|
251
246
|
|
|
252
247
|
如果你更想用 Gemini 或 Jina 做 embedding,可以沿用同样的 `ee init embedding` 流程,只替换 provider 和 model。
|
|
253
248
|
|
|
254
249
|
### 日常使用与 Operator 使用
|
|
255
250
|
|
|
256
|
-
日常使用时,优先直接问宿主 agent
|
|
251
|
+
日常使用时,优先直接问宿主 agent 当前的 ExperienceEngine 状态。默认主路径是自动结果归因;手动 feedback 主要用于你觉得自动判断不准时的纠偏。
|
|
252
|
+
|
|
253
|
+
例如:
|
|
257
254
|
|
|
258
255
|
- “ExperienceEngine 刚刚注入了什么?”
|
|
259
256
|
- “为什么那条 ExperienceEngine 提示会命中?”
|
|
257
|
+
- “为什么这次 ExperienceEngine 没有注入?”
|
|
260
258
|
- “把刚才那次 ExperienceEngine 介入标记为 helpful 或 harmful。”
|
|
261
259
|
|
|
260
|
+
正常使用里,你不应该需要手动给每次介入都打分。ExperienceEngine 的默认路径是根据真实任务结果自动学习;只有当自动判断明显不对时,你再手动纠偏。
|
|
261
|
+
|
|
262
262
|
OpenClaw 还支持这些 readiness / silence 问题:
|
|
263
263
|
|
|
264
264
|
- “ExperienceEngine 这里 ready 了吗?”
|
|
@@ -302,6 +302,7 @@ ExperienceEngine 明确拆分:
|
|
|
302
302
|
|
|
303
303
|
宿主仍然是主交互面。
|
|
304
304
|
`ee` 仍然是显式的 operator 面,用于 setup、验证、修复、状态查看和维护。
|
|
305
|
+
对于 Codex,`ee status` 和 `ee doctor codex` 还会显示 `ee` CLI fallback 是否在 `PATH` 上可用。Codex 的 MCP 接入在 CLI fallback 缺失时仍可能正常工作,但 `ee inspect --last` 这类命令需要 PATH 里有 `ee`,或者使用显式的包调用方式。
|
|
305
306
|
|
|
306
307
|
## 高级按宿主命令(仅限 Operator / 开发者)
|
|
307
308
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -371,7 +371,7 @@ export const createCodexMcpServer = (options = {}) => {
|
|
|
371
371
|
const brokerFacade = createCodexBrokerFacade(actionRegistry);
|
|
372
372
|
const server = new McpServer({
|
|
373
373
|
name: "experienceengine",
|
|
374
|
-
version: "0.2.
|
|
374
|
+
version: "0.2.1"
|
|
375
375
|
});
|
|
376
376
|
server.registerResource("experienceengine_doctor", new ResourceTemplate("experienceengine://doctor/{adapter}", {
|
|
377
377
|
list: undefined,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -153,14 +153,26 @@ const logClaudeRuntimeStatus = (status) => {
|
|
|
153
153
|
}
|
|
154
154
|
};
|
|
155
155
|
const logCodexRuntimeStatus = (status) => {
|
|
156
|
-
if (!status?.runtimeTarget) {
|
|
156
|
+
if (!status?.runtimeTarget && !status?.cliFallback) {
|
|
157
157
|
return;
|
|
158
158
|
}
|
|
159
159
|
console.log("Codex runtime target:");
|
|
160
|
-
|
|
160
|
+
if (status.runtimeTarget) {
|
|
161
|
+
console.log(`- Target: ${status.runtimeTarget}`);
|
|
162
|
+
}
|
|
161
163
|
if (status.launcherPaths?.mcpServer) {
|
|
162
164
|
console.log(`- MCP launcher: ${status.launcherPaths.mcpServer}`);
|
|
163
165
|
}
|
|
166
|
+
if (status.cliFallback) {
|
|
167
|
+
console.log(`- CLI fallback command: ${status.cliFallback.command}`);
|
|
168
|
+
console.log(`- CLI fallback available on PATH: ${status.cliFallback.available ? "yes" : "no"}`);
|
|
169
|
+
if (status.cliFallback.path) {
|
|
170
|
+
console.log(`- CLI fallback path: ${status.cliFallback.path}`);
|
|
171
|
+
}
|
|
172
|
+
if (!status.cliFallback.available && status.cliFallback.recommendation) {
|
|
173
|
+
console.log(`- CLI fallback note: ${status.cliFallback.recommendation}`);
|
|
174
|
+
}
|
|
175
|
+
}
|
|
164
176
|
};
|
|
165
177
|
const logCodexLearningLoopStatus = (status) => {
|
|
166
178
|
if (!status?.instruction && !status?.learningLoop) {
|
|
@@ -387,6 +399,7 @@ export const runDoctorCommand = async (target, deps = {}) => {
|
|
|
387
399
|
transport: status.hostWiring.transport ?? "",
|
|
388
400
|
command: status.hostWiring.command ?? "",
|
|
389
401
|
capture_dir: status.captureDir,
|
|
402
|
+
cli_fallback: status.cliFallback?.available ?? false,
|
|
390
403
|
instruction_state: status.instruction?.state ?? "",
|
|
391
404
|
learning_loop: status.learningLoop?.state ?? ""
|
|
392
405
|
}
|