@alan512/experienceengine 0.1.3 → 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/plugin.json +1 -1
- package/README.md +213 -130
- package/README.zh-CN.md +250 -119
- package/dist/adapters/claude-code/session-store.d.ts +1 -0
- package/dist/adapters/claude-code/session-store.js +24 -1
- package/dist/adapters/claude-code/session-store.js.map +1 -1
- package/dist/adapters/codex/action-registry.d.ts +84 -0
- package/dist/adapters/codex/action-registry.js +277 -0
- package/dist/adapters/codex/action-registry.js.map +1 -0
- package/dist/adapters/codex/broker-tools.d.ts +114 -0
- package/dist/adapters/codex/broker-tools.js +130 -0
- package/dist/adapters/codex/broker-tools.js.map +1 -0
- package/dist/adapters/codex/mcp-server.d.ts +21 -0
- package/dist/adapters/codex/mcp-server.js +103 -423
- package/dist/adapters/codex/mcp-server.js.map +1 -1
- package/dist/analyzer/candidate-signals.d.ts +3 -1
- package/dist/analyzer/candidate-signals.js +159 -0
- package/dist/analyzer/candidate-signals.js.map +1 -1
- package/dist/analyzer/llm-learning-gate.d.ts +12 -1
- package/dist/analyzer/llm-learning-gate.js +633 -16
- package/dist/analyzer/llm-learning-gate.js.map +1 -1
- package/dist/cli/commands/claude-hook.js +11 -4
- package/dist/cli/commands/claude-hook.js.map +1 -1
- package/dist/cli/commands/codex.d.ts +60 -0
- package/dist/cli/commands/codex.js +188 -0
- package/dist/cli/commands/codex.js.map +1 -0
- package/dist/cli/commands/doctor.js +35 -2
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/evaluate.d.ts +9 -3
- package/dist/cli/commands/evaluate.js +31 -5
- package/dist/cli/commands/evaluate.js.map +1 -1
- package/dist/cli/commands/init.js +21 -8
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/inspect.js +73 -4
- package/dist/cli/commands/inspect.js.map +1 -1
- package/dist/cli/commands/repair.js +3 -3
- package/dist/cli/commands/repair.js.map +1 -1
- package/dist/cli/commands/status.js +38 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/dispatch.js +16 -4
- package/dist/cli/dispatch.js.map +1 -1
- package/dist/config/config-schema.d.ts +177 -0
- package/dist/config/config-schema.js +142 -1
- package/dist/config/config-schema.js.map +1 -1
- package/dist/config/default-config.js +19 -1
- package/dist/config/default-config.js.map +1 -1
- package/dist/config/load-config.js +72 -1
- package/dist/config/load-config.js.map +1 -1
- package/dist/config/settings-store.d.ts +19 -0
- package/dist/config/settings-store.js +11 -0
- package/dist/config/settings-store.js.map +1 -1
- package/dist/controller/candidate-retriever.d.ts +16 -1
- package/dist/controller/candidate-retriever.js +199 -137
- package/dist/controller/candidate-retriever.js.map +1 -1
- package/dist/controller/injection-scorecard.d.ts +2 -14
- package/dist/controller/injection-scorecard.js +29 -0
- package/dist/controller/injection-scorecard.js.map +1 -1
- package/dist/controller/intervention-controller.d.ts +3 -15
- package/dist/controller/intervention-controller.js +219 -57
- package/dist/controller/intervention-controller.js.map +1 -1
- package/dist/controller/policy-enricher.d.ts +10 -0
- package/dist/controller/policy-enricher.js +186 -0
- package/dist/controller/policy-enricher.js.map +1 -0
- package/dist/controller/retrieval-context.d.ts +3 -0
- package/dist/controller/retrieval-context.js +37 -0
- package/dist/controller/retrieval-context.js.map +1 -0
- package/dist/controller/second-opinion-gate.d.ts +41 -0
- package/dist/controller/second-opinion-gate.js +225 -0
- package/dist/controller/second-opinion-gate.js.map +1 -0
- package/dist/controller/trigger-evaluator.d.ts +6 -1
- package/dist/controller/trigger-evaluator.js +31 -1
- package/dist/controller/trigger-evaluator.js.map +1 -1
- package/dist/distillation/prompt-contract.d.ts +1 -1
- package/dist/distillation/prompt-contract.js +3 -1
- package/dist/distillation/prompt-contract.js.map +1 -1
- package/dist/distillation/providers/gemini.js +5 -1
- package/dist/distillation/providers/gemini.js.map +1 -1
- package/dist/distillation/queue-worker.js +22 -3
- package/dist/distillation/queue-worker.js.map +1 -1
- package/dist/evaluation/codex-lifecycle-validation.d.ts +60 -0
- package/dist/evaluation/codex-lifecycle-validation.js +233 -0
- package/dist/evaluation/codex-lifecycle-validation.js.map +1 -0
- package/dist/evaluation/hybrid-phase1-rollout-summary.d.ts +63 -0
- package/dist/evaluation/hybrid-phase1-rollout-summary.js +108 -0
- package/dist/evaluation/hybrid-phase1-rollout-summary.js.map +1 -0
- package/dist/evaluation/hybrid-phase3-gate-metrics.d.ts +26 -0
- package/dist/evaluation/hybrid-phase3-gate-metrics.js +23 -0
- package/dist/evaluation/hybrid-phase3-gate-metrics.js.map +1 -0
- package/dist/evaluation/openclaw-baseline.d.ts +8 -0
- package/dist/evaluation/openclaw-baseline.js +27 -0
- package/dist/evaluation/openclaw-baseline.js.map +1 -1
- package/dist/experience-management/governance-observability.d.ts +13 -0
- package/dist/experience-management/governance-observability.js +37 -0
- package/dist/experience-management/governance-observability.js.map +1 -0
- package/dist/experience-management/node-lifecycle-governance.d.ts +8 -0
- package/dist/experience-management/node-lifecycle-governance.js +80 -0
- package/dist/experience-management/node-lifecycle-governance.js.map +1 -0
- package/dist/experience-management/task-management-signals.d.ts +29 -0
- package/dist/experience-management/task-management-signals.js +148 -0
- package/dist/experience-management/task-management-signals.js.map +1 -0
- package/dist/feedback/feedback-manager.d.ts +4 -1
- package/dist/feedback/feedback-manager.js +11 -22
- package/dist/feedback/feedback-manager.js.map +1 -1
- package/dist/feedback/state-transition.d.ts +6 -1
- package/dist/feedback/state-transition.js +6 -3
- package/dist/feedback/state-transition.js.map +1 -1
- package/dist/hybrid/capsule-builder.d.ts +23 -0
- package/dist/hybrid/capsule-builder.js +114 -0
- package/dist/hybrid/capsule-builder.js.map +1 -0
- package/dist/hybrid/explain-provider-client.d.ts +19 -0
- package/dist/hybrid/explain-provider-client.js +34 -0
- package/dist/hybrid/explain-provider-client.js.map +1 -0
- package/dist/hybrid/postmortem-provider-client.d.ts +19 -0
- package/dist/hybrid/postmortem-provider-client.js +34 -0
- package/dist/hybrid/postmortem-provider-client.js.map +1 -0
- package/dist/hybrid/rollout.d.ts +9 -0
- package/dist/hybrid/rollout.js +49 -0
- package/dist/hybrid/rollout.js.map +1 -0
- package/dist/hybrid/router.d.ts +4 -0
- package/dist/hybrid/router.js +62 -0
- package/dist/hybrid/router.js.map +1 -0
- package/dist/hybrid/types.d.ts +140 -0
- package/dist/hybrid/types.js +2 -0
- package/dist/hybrid/types.js.map +1 -0
- package/dist/hybrid/validators.d.ts +5 -0
- package/dist/hybrid/validators.js +94 -0
- package/dist/hybrid/validators.js.map +1 -0
- package/dist/hybrid/worker-client.d.ts +61 -0
- package/dist/hybrid/worker-client.js +196 -0
- package/dist/hybrid/worker-client.js.map +1 -0
- package/dist/hybrid/workers/explain-decision-llm.d.ts +8 -0
- package/dist/hybrid/workers/explain-decision-llm.js +152 -0
- package/dist/hybrid/workers/explain-decision-llm.js.map +1 -0
- package/dist/hybrid/workers/explain-decision.d.ts +2 -0
- package/dist/hybrid/workers/explain-decision.js +40 -0
- package/dist/hybrid/workers/explain-decision.js.map +1 -0
- package/dist/hybrid/workers/postmortem-review-llm.d.ts +8 -0
- package/dist/hybrid/workers/postmortem-review-llm.js +398 -0
- package/dist/hybrid/workers/postmortem-review-llm.js.map +1 -0
- package/dist/hybrid/workers/postmortem-review.d.ts +2 -0
- package/dist/hybrid/workers/postmortem-review.js +66 -0
- package/dist/hybrid/workers/postmortem-review.js.map +1 -0
- package/dist/install/claude-code-doctor.d.ts +1 -0
- package/dist/install/claude-code-doctor.js +20 -4
- package/dist/install/claude-code-doctor.js.map +1 -1
- package/dist/install/claude-code-installer.js +50 -1
- package/dist/install/claude-code-installer.js.map +1 -1
- package/dist/install/codex-cli.d.ts +15 -0
- package/dist/install/codex-cli.js +55 -3
- package/dist/install/codex-cli.js.map +1 -1
- 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/openclaw-cli.d.ts +11 -0
- package/dist/install/openclaw-cli.js.map +1 -1
- package/dist/install/openclaw-installer.d.ts +12 -7
- package/dist/install/openclaw-installer.js +197 -46
- package/dist/install/openclaw-installer.js.map +1 -1
- package/dist/interaction/service.d.ts +15 -0
- package/dist/interaction/service.js +189 -31
- package/dist/interaction/service.js.map +1 -1
- package/dist/plugin/hooks/before-prompt-build.d.ts +1 -0
- package/dist/plugin/hooks/before-prompt-build.js +4 -1
- package/dist/plugin/hooks/before-prompt-build.js.map +1 -1
- package/dist/plugin/openclaw-install-state.d.ts +39 -0
- package/dist/plugin/openclaw-install-state.js +24 -0
- package/dist/plugin/openclaw-install-state.js.map +1 -0
- package/dist/plugin/openclaw-plugin.d.ts +125 -0
- package/dist/plugin/openclaw-plugin.js +18 -7
- package/dist/plugin/openclaw-plugin.js.map +1 -1
- package/dist/plugin/openclaw-routine-interaction.d.ts +2 -1
- package/dist/plugin/openclaw-routine-interaction.js +12 -7
- package/dist/plugin/openclaw-routine-interaction.js.map +1 -1
- package/dist/plugin/openclaw-runtime-defaults.d.ts +16 -0
- package/dist/plugin/openclaw-runtime-defaults.js +16 -0
- package/dist/plugin/openclaw-runtime-defaults.js.map +1 -0
- package/dist/runtime/service.d.ts +34 -5
- package/dist/runtime/service.js +474 -49
- package/dist/runtime/service.js.map +1 -1
- package/dist/store/sqlite/db.js +28 -0
- package/dist/store/sqlite/db.js.map +1 -1
- package/dist/store/sqlite/repositories/hybrid-invocation-trace-repo.d.ts +11 -0
- package/dist/store/sqlite/repositories/hybrid-invocation-trace-repo.js +76 -0
- package/dist/store/sqlite/repositories/hybrid-invocation-trace-repo.js.map +1 -0
- package/dist/store/sqlite/repositories/hybrid-review-artifact-repo.d.ts +11 -0
- package/dist/store/sqlite/repositories/hybrid-review-artifact-repo.js +73 -0
- package/dist/store/sqlite/repositories/hybrid-review-artifact-repo.js.map +1 -0
- package/dist/store/sqlite/repositories/input-record-repo.d.ts +1 -0
- package/dist/store/sqlite/repositories/input-record-repo.js +13 -0
- package/dist/store/sqlite/repositories/input-record-repo.js.map +1 -1
- package/dist/store/sqlite/repositories/node-repo.d.ts +4 -0
- package/dist/store/sqlite/repositories/node-repo.js +54 -6
- package/dist/store/sqlite/repositories/node-repo.js.map +1 -1
- package/dist/store/sqlite/schema.sql +40 -0
- package/dist/store/vector/embeddings.js +26 -8
- package/dist/store/vector/embeddings.js.map +1 -1
- package/dist/types/domain.d.ts +151 -2
- package/dist/types/plugin.d.ts +2 -1
- package/docs/releases/v0.1.3.md +3 -2
- package/docs/releases/v0.2.0.md +85 -0
- package/docs/releases/v0.2.1.md +21 -0
- package/docs/user-guide.md +44 -13
- package/openclaw.plugin.json +81 -1
- package/package.json +11 -2
- package/plugins/claude-code-experienceengine/.claude-plugin/plugin.json +1 -1
- package/plugins/claude-code-experienceengine/scripts/install-deps.sh +1 -1
package/docs/user-guide.md
CHANGED
|
@@ -59,10 +59,12 @@ When it injects guidance, you will usually see a lightweight notice like:
|
|
|
59
59
|
[ExperienceEngine] Injected 1 strategy hint for this task.
|
|
60
60
|
```
|
|
61
61
|
|
|
62
|
-
If there is no intervention, it stays silent.
|
|
62
|
+
If there is no intervention, it stays silent during the task. The delivery decision is still recorded, so `ee inspect --last` and host-side inspection can explain whether ExperienceEngine skipped because the match was weak, the node was not safe to ship yet, or the decision stayed in a conservative path.
|
|
63
63
|
|
|
64
64
|
When ExperienceEngine is less certain but still sees a credible same-family match, it may choose a conservative injection instead of skipping entirely. In that case the injected block stays smaller by default, but mature low-risk nodes can still include a short `Goal / Steps / Avoid` structure when that makes the guidance more actionable.
|
|
65
65
|
|
|
66
|
+
ExperienceEngine now uses a deterministic match scorecard before live delivery. Same-repo, high-match experience can ship directly when trust is already strong. Same-repo conservative experience can be promoted after a successful high-match reuse. Cross-repo matches are allowed only as conservative candidates unless later evidence proves they are safe in the new scope.
|
|
67
|
+
|
|
66
68
|
When you inspect the latest turn, you may also see a learning decision such as:
|
|
67
69
|
|
|
68
70
|
```text
|
|
@@ -155,6 +157,8 @@ ee status
|
|
|
155
157
|
|
|
156
158
|
Use `ee init` once to initialize ExperienceEngine's shared distillation, embedding, and secret state. New host installations should reuse that same shared EE state instead of asking you to re-enter the same API key per host window.
|
|
157
159
|
|
|
160
|
+
For Codex, `ee status` and `ee doctor codex` also show whether the `ee` CLI fallback is available on `PATH`. Codex MCP wiring can still be healthy without that fallback, but explicit operator commands such as `ee inspect --last` need either a PATH-visible `ee` binary or an explicit package invocation.
|
|
161
|
+
|
|
158
162
|
In practical terms, the routine loop currently looks like this:
|
|
159
163
|
|
|
160
164
|
- `Codex`
|
|
@@ -251,9 +255,9 @@ When you inspect a specific node, ExperienceEngine now also shows a lightweight
|
|
|
251
255
|
|
|
252
256
|
## How MCP Interaction Works
|
|
253
257
|
|
|
254
|
-
For `Codex` and `Claude Code`, ExperienceEngine is designed to
|
|
258
|
+
For `Codex` and `Claude Code`, ExperienceEngine is designed to keep routine review and management inside the host session first.
|
|
255
259
|
|
|
256
|
-
That means after installation, you usually do not leave the agent session to manage ExperienceEngine. Instead, you ask the agent naturally and the
|
|
260
|
+
That means after installation, you usually do not leave the agent session to manage ExperienceEngine. Instead, you ask the agent naturally and the host uses its native EE wiring for routine interaction.
|
|
257
261
|
|
|
258
262
|
This is one host-specific implementation of the same shared product model described above:
|
|
259
263
|
|
|
@@ -275,14 +279,23 @@ Typical examples:
|
|
|
275
279
|
|
|
276
280
|
### MCP Interaction Model
|
|
277
281
|
|
|
278
|
-
|
|
282
|
+
`Codex` exposes a layered MCP surface:
|
|
283
|
+
|
|
284
|
+
- `Direct tools`
|
|
285
|
+
- core loop actions like lookup, recording important tool outcomes, finalize, last-feedback, capabilities, and doctor
|
|
286
|
+
- `Routine read resources`
|
|
287
|
+
- read-only state like last interaction, recent history, repo summary, and routine node views
|
|
288
|
+
- `Brokered advanced actions`
|
|
289
|
+
- lower-frequency inspect, admin, maintenance, and high-impact plan/execute flows exposed through a small broker tool surface instead of many direct schemas
|
|
279
290
|
|
|
280
|
-
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
-
|
|
285
|
-
|
|
291
|
+
For `Codex`, this means routine host-native interaction stays discoverable, while long-tail admin and maintenance actions are reached through brokered actions rather than public prompts or one-tool-per-action registration.
|
|
292
|
+
|
|
293
|
+
`Claude Code` still uses both `hooks` and `MCP`:
|
|
294
|
+
|
|
295
|
+
- hooks drive runtime capture and injection
|
|
296
|
+
- MCP drives inspect, control, and operational interaction
|
|
297
|
+
|
|
298
|
+
So the two hosts share the same product model, but they do not expose the exact same interaction shape.
|
|
286
299
|
|
|
287
300
|
For high-impact actions, ExperienceEngine does not execute immediately. It uses a:
|
|
288
301
|
|
|
@@ -352,12 +365,13 @@ These are operator-facing controls, not the preferred public onboarding path.
|
|
|
352
365
|
|
|
353
366
|
## Embedding Retrieval
|
|
354
367
|
|
|
355
|
-
ExperienceEngine now supports a multi-provider embedding stack
|
|
368
|
+
ExperienceEngine now supports a multi-provider embedding stack inside a staged hybrid retrieval pipeline.
|
|
356
369
|
|
|
357
370
|
Retrieval is now hybrid by default:
|
|
358
371
|
|
|
359
|
-
-
|
|
360
|
-
- lexical retrieval
|
|
372
|
+
- query normalization and rewrite happen first so retrieval keeps engineering intent when prompt wording shifts
|
|
373
|
+
- lexical and semantic retrieval are fused into one candidate shortlist instead of treating semantic retrieval as the unquestioned main path
|
|
374
|
+
- policy enrichment stays separate from retrieval scoring, so maturity and governance signals do not replace retrieval evidence
|
|
361
375
|
- reranking can promote a better-matching candidate above older score advantages, especially when an external reranker is configured
|
|
362
376
|
|
|
363
377
|
Default behavior (`embeddingProvider = "api"`):
|
|
@@ -369,6 +383,12 @@ Default behavior (`embeddingProvider = "api"`):
|
|
|
369
383
|
- if the API provider fails, ExperienceEngine falls back to the managed local model
|
|
370
384
|
- if the local model fails, ExperienceEngine falls back to legacy hash-based retrieval
|
|
371
385
|
|
|
386
|
+
Prompt-time behavior:
|
|
387
|
+
|
|
388
|
+
- first-turn or prompt-only retrieval may not have any tool names or failure signatures yet
|
|
389
|
+
- ExperienceEngine treats those fields as opportunistic evidence, not required retrieval inputs
|
|
390
|
+
- when prompt-only evidence is sparse, lexical, semantic, and policy stages still run with the task summary and context summary alone
|
|
391
|
+
|
|
372
392
|
Offline behavior (`embeddingProvider = "local"`):
|
|
373
393
|
|
|
374
394
|
- the default local model is `Xenova/multilingual-e5-small`
|
|
@@ -414,6 +434,8 @@ ee install openclaw
|
|
|
414
434
|
What happens:
|
|
415
435
|
- ExperienceEngine installs as an OpenClaw plugin/runtime integration (not `src/adapters/`)
|
|
416
436
|
- OpenClaw runtime events are used for intervention and persistence
|
|
437
|
+
- OpenClaw uses the shared background learning loop by default
|
|
438
|
+
- async hybrid posttask review stays disabled by default unless the runtime is explicitly overridden
|
|
417
439
|
- management remains mostly through CLI fallback today
|
|
418
440
|
- install ends with a short cold-start note so users know capture is active before the first formal hint appears
|
|
419
441
|
|
|
@@ -511,6 +533,9 @@ Useful commands:
|
|
|
511
533
|
```bash
|
|
512
534
|
ee doctor codex
|
|
513
535
|
ee upgrade codex
|
|
536
|
+
ee codex exec -C /path/to/repo -s read-only "Say ok and exit."
|
|
537
|
+
printf "Say ok and exit." | ee codex exec -C /path/to/repo -s read-only -
|
|
538
|
+
ee codex exec --ee-session-id ci-smoke-1 -C /path/to/repo -s read-only "Say ok and exit."
|
|
514
539
|
```
|
|
515
540
|
|
|
516
541
|
First validation:
|
|
@@ -529,6 +554,12 @@ Host note:
|
|
|
529
554
|
- ExperienceEngine installs a longer `startup_timeout_sec` for Codex automatically
|
|
530
555
|
- this avoids MCP handshake failures on slower local startups
|
|
531
556
|
- if Codex still cannot see ExperienceEngine in new sessions, re-run `ee install codex`
|
|
557
|
+
- `ee codex exec` is a deterministic wrapper for non-interactive runs
|
|
558
|
+
- the wrapper owns `lookup -> child codex exec -> record -> finalize` outside the child process
|
|
559
|
+
- for wrapped runs, ExperienceEngine removes the nested `experienceengine` MCP server from the child Codex config temporarily so lifecycle evidence is not double-written
|
|
560
|
+
- use prompt `-` when you want the wrapper to read task instructions from stdin; child Codex still receives a wrapped prompt argument and does not inherit stdin
|
|
561
|
+
- use `--ee-session-id <id>` when CI or debugging needs a stable ExperienceEngine session id
|
|
562
|
+
- `codex exec review` is not wrapped yet; keep using native Codex review or the MCP/CLI surfaces for review workflows
|
|
532
563
|
|
|
533
564
|
Developer validation docs:
|
|
534
565
|
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "experienceengine",
|
|
3
3
|
"name": "ExperienceEngine",
|
|
4
|
-
"version": "0.1
|
|
4
|
+
"version": "0.2.1",
|
|
5
5
|
"description": "Context-aware experience intervention controller for coding and debugging tasks.",
|
|
6
6
|
"configSchema": {
|
|
7
7
|
"type": "object",
|
|
@@ -28,6 +28,15 @@
|
|
|
28
28
|
"type": "string",
|
|
29
29
|
"description": "Directory used to store raw runtime payload captures."
|
|
30
30
|
},
|
|
31
|
+
"distillerProvider": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"enum": ["openai", "anthropic", "gemini", "openrouter", "deepseek", "bedrock", "vertex_gemini", "groq", "openai_compatible"],
|
|
34
|
+
"description": "Distillation provider reused by phase 2 provider-backed explain."
|
|
35
|
+
},
|
|
36
|
+
"distillerModel": {
|
|
37
|
+
"type": "string",
|
|
38
|
+
"description": "Distillation model identifier reused by phase 2 provider-backed explain."
|
|
39
|
+
},
|
|
31
40
|
"maxHints": {
|
|
32
41
|
"type": "integer",
|
|
33
42
|
"minimum": 1,
|
|
@@ -39,6 +48,44 @@
|
|
|
39
48
|
"minimum": 0,
|
|
40
49
|
"maximum": 1,
|
|
41
50
|
"description": "Trigger threshold for intervention gating."
|
|
51
|
+
},
|
|
52
|
+
"hybridEnabled": {
|
|
53
|
+
"type": "boolean",
|
|
54
|
+
"description": "Enable the hybrid routing layer."
|
|
55
|
+
},
|
|
56
|
+
"hybridSyncExplainEnabled": {
|
|
57
|
+
"type": "boolean",
|
|
58
|
+
"description": "Allow bounded sync escalation for explicit explanation requests."
|
|
59
|
+
},
|
|
60
|
+
"hybridAsyncPostmortemEnabled": {
|
|
61
|
+
"type": "boolean",
|
|
62
|
+
"description": "Allow bounded async postmortem review for eligible completed runs."
|
|
63
|
+
},
|
|
64
|
+
"hybridAsyncPostmortemLlmEnabled": {
|
|
65
|
+
"type": "boolean",
|
|
66
|
+
"description": "Enable provider-backed postmortem_review in phase 3."
|
|
67
|
+
},
|
|
68
|
+
"hybridExplainLlmEnabled": {
|
|
69
|
+
"type": "boolean",
|
|
70
|
+
"description": "Enable provider-backed explain_decision in phase 2."
|
|
71
|
+
},
|
|
72
|
+
"hybridExplainProviderMode": {
|
|
73
|
+
"type": "string",
|
|
74
|
+
"enum": ["shared_distiller"],
|
|
75
|
+
"description": "Provider resolution mode for phase 2 explain_decision."
|
|
76
|
+
},
|
|
77
|
+
"hybridExplainModelProfileVersion": {
|
|
78
|
+
"type": "string",
|
|
79
|
+
"description": "Version label for the provider-backed explain_decision model profile."
|
|
80
|
+
},
|
|
81
|
+
"hybridPostmortemProviderMode": {
|
|
82
|
+
"type": "string",
|
|
83
|
+
"enum": ["shared_distiller"],
|
|
84
|
+
"description": "Provider resolution mode for phase 3 postmortem_review."
|
|
85
|
+
},
|
|
86
|
+
"hybridPostmortemModelProfileVersion": {
|
|
87
|
+
"type": "string",
|
|
88
|
+
"description": "Version label for the provider-backed postmortem_review model profile."
|
|
42
89
|
}
|
|
43
90
|
}
|
|
44
91
|
},
|
|
@@ -61,11 +108,44 @@
|
|
|
61
108
|
"label": "Capture Directory",
|
|
62
109
|
"placeholder": "./data/runtime-captures"
|
|
63
110
|
},
|
|
111
|
+
"distillerProvider": {
|
|
112
|
+
"label": "Distiller Provider"
|
|
113
|
+
},
|
|
114
|
+
"distillerModel": {
|
|
115
|
+
"label": "Distiller Model"
|
|
116
|
+
},
|
|
64
117
|
"maxHints": {
|
|
65
118
|
"label": "Max Hints"
|
|
66
119
|
},
|
|
67
120
|
"triggerThreshold": {
|
|
68
121
|
"label": "Trigger Threshold"
|
|
122
|
+
},
|
|
123
|
+
"hybridEnabled": {
|
|
124
|
+
"label": "Hybrid Enabled"
|
|
125
|
+
},
|
|
126
|
+
"hybridSyncExplainEnabled": {
|
|
127
|
+
"label": "Hybrid Sync Explain Enabled"
|
|
128
|
+
},
|
|
129
|
+
"hybridAsyncPostmortemEnabled": {
|
|
130
|
+
"label": "Hybrid Async Postmortem Enabled"
|
|
131
|
+
},
|
|
132
|
+
"hybridAsyncPostmortemLlmEnabled": {
|
|
133
|
+
"label": "Hybrid Async Postmortem LLM Enabled"
|
|
134
|
+
},
|
|
135
|
+
"hybridExplainLlmEnabled": {
|
|
136
|
+
"label": "Hybrid Explain LLM Enabled"
|
|
137
|
+
},
|
|
138
|
+
"hybridExplainProviderMode": {
|
|
139
|
+
"label": "Hybrid Explain Provider Mode"
|
|
140
|
+
},
|
|
141
|
+
"hybridExplainModelProfileVersion": {
|
|
142
|
+
"label": "Hybrid Explain Model Profile Version"
|
|
143
|
+
},
|
|
144
|
+
"hybridPostmortemProviderMode": {
|
|
145
|
+
"label": "Hybrid Postmortem Provider Mode"
|
|
146
|
+
},
|
|
147
|
+
"hybridPostmortemModelProfileVersion": {
|
|
148
|
+
"label": "Hybrid Postmortem Model Profile Version"
|
|
69
149
|
}
|
|
70
150
|
}
|
|
71
151
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alan512/experienceengine",
|
|
3
|
-
"version": "0.1
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Experience governance for coding agents: learn from real task outcomes, inject reusable hints, and retire low-value guidance.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -11,7 +11,15 @@
|
|
|
11
11
|
"openclaw": {
|
|
12
12
|
"extensions": [
|
|
13
13
|
"./dist/plugin/openclaw-plugin.js"
|
|
14
|
-
]
|
|
14
|
+
],
|
|
15
|
+
"compat": {
|
|
16
|
+
"pluginApi": ">=2026.4.1",
|
|
17
|
+
"minGatewayVersion": "2026.4.1"
|
|
18
|
+
},
|
|
19
|
+
"build": {
|
|
20
|
+
"openclawVersion": "2026.4.1",
|
|
21
|
+
"pluginSdkVersion": "2026.4.1"
|
|
22
|
+
}
|
|
15
23
|
},
|
|
16
24
|
"engines": {
|
|
17
25
|
"node": ">=20.0.0"
|
|
@@ -37,6 +45,7 @@
|
|
|
37
45
|
"dev": "tsx watch src/cli/index.ts",
|
|
38
46
|
"evaluate:openclaw-baseline": "tsx src/cli/index.ts evaluate openclaw-baseline",
|
|
39
47
|
"evaluate:openclaw-scenarios": "tsx src/cli/index.ts evaluate openclaw-scenarios --pack high-confidence",
|
|
48
|
+
"evaluate:codex-lifecycle": "tsx src/cli/index.ts evaluate codex-lifecycle",
|
|
40
49
|
"maintenance:merge-warning-variants": "tsx scripts/maintenance/merge-warning-variants.ts",
|
|
41
50
|
"runtime:promote-payload": "tsx scripts/openclaw/promote-runtime-payload.ts",
|
|
42
51
|
"runtime:replay-fixture": "tsx scripts/openclaw/replay-runtime-fixture.ts",
|
|
@@ -11,7 +11,7 @@ PACKAGE_ENTRY="${PACKAGE_DIR}/dist/cli/index.js"
|
|
|
11
11
|
STAMP_PATH="${PLUGIN_DATA}/.experienceengine-plugin-version"
|
|
12
12
|
EXPERIENCE_ENGINE_HOME_PATH="${EXPERIENCE_ENGINE_HOME:-${PLUGIN_DATA}/experienceengine-home}"
|
|
13
13
|
STATE_PATH="${EXPERIENCE_ENGINE_HOME_PATH}/claude-marketplace-state.json"
|
|
14
|
-
PACKAGE_VERSION="0.1
|
|
14
|
+
PACKAGE_VERSION="0.2.1"
|
|
15
15
|
PACKAGE_SPEC="${EXPERIENCE_ENGINE_PLUGIN_PACKAGE_SPEC:-@alan512/experienceengine@${PACKAGE_VERSION}}"
|
|
16
16
|
|
|
17
17
|
mkdir -p "${PLUGIN_DATA}"
|