AgentExperience.Core
0.1.0-preview.7
dotnet add package AgentExperience.Core --version 0.1.0-preview.7
NuGet\Install-Package AgentExperience.Core -Version 0.1.0-preview.7
<PackageReference Include="AgentExperience.Core" Version="0.1.0-preview.7" />
<PackageVersion Include="AgentExperience.Core" Version="0.1.0-preview.7" />
<PackageReference Include="AgentExperience.Core" />
paket add AgentExperience.Core --version 0.1.0-preview.7
#r "nuget: AgentExperience.Core, 0.1.0-preview.7"
#:package AgentExperience.Core@0.1.0-preview.7
#addin nuget:?package=AgentExperience.Core&version=0.1.0-preview.7&prerelease
#tool nuget:?package=AgentExperience.Core&version=0.1.0-preview.7&prerelease
AgentExperience.Core
Preview — not production ready. This is a
0.1.0-previewpackage, and it claims no production readiness. Public APIs may change between previews. Read Known limits and documented boundaries before you rely on it.
The engine of AgentExperience.NET. It turns what an agent observably
did into a verified, auditable lesson, keeps that lesson's lifecycle and confidence honest, and finds it again when
similar work comes up. It does not talk to a database or a model itself: storage comes from an adapter such as
AgentExperience.Storage.Postgres, and agent integration from AgentExperience.MicrosoftAgentFramework.
Dependencies: AgentExperience.Abstractions, Microsoft.Extensions.Compliance.Redaction, and
Microsoft.Extensions.DependencyInjection.Abstractions (abstractions only — no container, no hosting). No Microsoft
Agent Framework, EF Core, Npgsql, DbUp, OpenTelemetry SDK, or model-provider package. Targets net10.0.
What is in it
| Service | What it does | Guide |
|---|---|---|
DefaultSanitizer |
Per-kind allowlists, secret-field redaction, recursive traversal, fail-closed rejection — before anything is stored | Capture |
InMemoryExperienceCaptureService |
Thread-safe run capture with idempotent appends and size limits | Capture |
VerificationAggregator, TaskCheckEvaluators |
Deterministic task verification bound to a host-closed round; no LLM | Finalization |
DefaultExperienceReflector |
Template-based reflections traceable to evidence IDs (IExperienceReflector is the seam for your own) |
Finalization |
ExperienceFinalizationService |
One call from a completed run to a durable record: evaluate, gate, reflect, create, commit — replay-safe | Finalization |
ExperienceLifecycleService |
The audited transition table, and evidence-based confidence updates whose independence key is verified, scored by a replaceable IExperienceConfidenceEngine |
Lifecycle, Confidence |
AssessmentTokenIssuer |
Mints the HMAC assessment tokens a human assessment must present to move a score (never registered in DI: whoever can call it can mint) | Confidence |
ExperienceIndexingService |
Embedding ingestion after the canonical commit; derived data never blocks canonical data | Indexing |
ExperienceRetrievalService |
Bounded, fail-closed text and hybrid retrieval with explainable ranking; optional IEnvironmentCompatibilityScorer and ConfidenceDecayPolicy |
Retrieval |
ExperienceReuseFeedbackService |
Records what a run was exposed to, and lets only established evidence move a score — for records the run was actually given | Reuse feedback |
EnvelopeExperienceKeyStore |
Per-record data keys wrapped by your KMS key, for crypto-shredding | Crypto-shredding |
Wiring it
using AgentExperience.Core.DependencyInjection;
services.AddAgentExperienceCore(sanitizationOptions, captureLimits);
// -> ISanitizer, IExperienceCaptureService, IExperienceReflector,
// ExperienceLifecycleService, ExperienceFinalizationService
services.AddSingleton(new ExperienceIndependenceOptions
{
AssessmentTokenKey = secrets.AssessmentTokenKey, // >= 32 random bytes, from your secret store
}); // optional: without it, human evidence is refused
// AssessmentTokenIssuer is deliberately not registered: construct it in your review flow, where a person decides.
services.AddAgentExperienceIndexing(); // optional: needs an IExperienceEmbeddingIndex and generator
services.AddAgentExperienceRetrieval(); // ExperienceRetrievalService
// Optional seams, picked up from the container in any order (register as singletons):
// IEnvironmentCompatibilityScorer grades a request's PreferredEnvironmentAttributes
// ConfidenceDecayPolicy per-domain confidence half-lives, applied only when ranking
// IExperienceConfidenceEngine replaces the default (1+S)/(2+S+F) confidence heuristic
services.AddAgentExperienceReuseFeedback(); // needs an IExperienceReuseFeedbackStore
Every registration uses TryAdd, so a host's own implementation wins. The storage ports come from an adapter. The
lifecycle service verifies confidence independence by default and counts the registered capture service's runs as
known; ExperienceIndependenceOptions carries the assessment token key, the token lifetime (a day by default), the
clock, and the opt-out. The full wiring for every package is in
Deployment.
What Core never does
- It never decides policy on the host's behalf. Authorization (
AuthorizationContext), the storage decision, and the injection risk decision all travel in the request; Core obeys them. - It never throws for an expected outcome. Finalization, retrieval, indexing, and feedback return structured results; retrieval is bounded by a timeout (500 ms by default) that is never an exception.
- It never makes a completion score into reuse confidence. Confidence is a versioned score over independent
evidence, by default the
(1 + S) / (2 + S + F)heuristic (the engine is replaceable), — useful for ranking, not a calibrated probability. - It never stores hidden reasoning. Only observable evidence, sanitized at capture.
Limits to know
Confidence independence is the one documented boundary that lives mostly in this package (KL-11): verification
proves a run was given a lesson, not that the lesson mattered, and the library believes the host's own bookkeeping
and key custody. IndependenceVerification.TrustHostSuppliedIdentifiers turns verification off for a host that
cannot adopt it; what it admits is stored as HostTrusted and can be excluded on read. Read
Confidence and independence
before relying on a score.
Telemetry is emitted through the BCL's ActivitySource and Meter named AgentExperience.Core; the host subscribes
and exports. Every span, instrument, dimension and attribute is in the
telemetry contract.
The public surface of this package is pinned by an approval baseline in the repository, so any change to it is a reviewed diff. Breaking changes between previews are listed in the changelog.
More
- Documentation: guide and glossary
- License: Apache-2.0
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- AgentExperience.Abstractions (>= 0.1.0-preview.7)
- Microsoft.Extensions.Compliance.Redaction (>= 10.10.0)
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 10.0.12)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on AgentExperience.Core:
| Package | Downloads |
|---|---|
|
AgentExperience.MicrosoftAgentFramework
Preview, not production ready. Microsoft Agent Framework (MAF) adapter for AgentExperience.NET: one AIAgentBuilder.UseExperienceCapture(...) call records every MAF invocation (ordinary, streaming, failed, cancelled, or abandoned mid-stream) and its tool calls as a sanitized Experience Run through AgentExperience.Core's IExperienceCaptureService. Requires Microsoft.Agents.AI 1.22.0 or any later 1.x. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-preview.7 | 135 | 10/5/2026 |
| 0.1.0-preview.6 | 57 | 10/1/2026 |
| 0.1.0-preview.5 | 56 | 10/1/2026 |
| 0.1.0-preview.4 | 54 | 9/29/2026 |
| 0.1.0-preview.3 | 58 | 9/29/2026 |
| 0.1.0-preview.2 | 530 | 9/26/2026 |
| 0.1.0-preview.1 | 526 | 9/24/2026 |
Preview release. Not production ready, and it claims no production readiness: the Known limits table lists every unresolved item, and any unresolved item blocks a production-readiness claim. The Documented boundaries table beside it states exactly what no code change can remove. Public APIs may change between previews. See https://github.com/fabbrik/AgentExperience.NET/blob/main/docs/known-limits.md