Documentation
¶
Overview ¶
Package valueobjects — IdentityPatch : modification partielle intentionnelle de l'âme.
Contrairement à soul_capture (qui extrait l'identité depuis une conversation), IdentityPatch permet une modification ciblée et intentionnelle de dimensions spécifiques de l'identité — par exemple quand l'utilisateur dit "réponds avec plus d'enthousiasme" ou "fais un rapport à la fin".
Principe d'immuabilité respecté : un patch crée TOUJOURS un nouveau snapshot versionné, dérivé du précédent. L'historique n'est jamais effacé.
Package valueobjects définit les objets de valeur du domaine SOUL Ces objets sont immuables et identifiés par leurs attributs, pas par un ID.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type DimensionDrift ¶
type DimensionDrift struct {
Dimension string `json:"dimension"` // ex: "voice", "personality", "values"
PreviousValue float64 `json:"previous_value"`
CurrentValue float64 `json:"current_value"`
Change float64 `json:"change"` // Delta absolu
IsSignificant bool `json:"is_significant"`
}
DimensionDrift représente la dérive sur une dimension spécifique
type ExtractedTrait ¶
type ExtractedTrait struct {
Name string `json:"name"`
Category string `json:"category"`
Intensity float64 `json:"intensity"`
Evidence string `json:"evidence"` // Texte justificatif
Confidence float64 `json:"confidence"`
Source IdentitySource `json:"source"`
}
ExtractedTrait représente un trait brut extrait d'une source
type IdentityContextPrompt ¶
type IdentityContextPrompt struct {
Content string `json:"content"` // Le prompt textuel
TokenEstimate int `json:"token_estimate"` // Estimation du nombre de tokens
Priority int `json:"priority"` // Priorité dans le context window
GeneratedAt time.Time `json:"generated_at"`
SnapshotVersion int `json:"snapshot_version"`
}
IdentityContextPrompt représente le prompt d'identité généré pour injection
type IdentityDriftReport ¶
type IdentityDriftReport struct {
Timestamp time.Time `json:"timestamp"`
PreviousVersion int `json:"previous_version"`
CurrentVersion int `json:"current_version"`
DriftScore float64 `json:"drift_score"` // 0-1, score global de dérive
DriftDimensions []DimensionDrift `json:"drift_dimensions"` // Dérive par dimension
IsSignificant bool `json:"is_significant"` // Dérive significative ?
Recommendations []string `json:"recommendations"` // Actions recommandées
}
IdentityDriftReport représente un rapport de dérive identitaire
type IdentityPatch ¶
type IdentityPatch struct {
// EnthusiasmLevel : niveau d'enthousiasme dans l'expression (0=mesuré, 1=très enthousiaste)
EnthusiasmLevel *float64 `json:"enthusiasm_level,omitempty"`
// FormalityLevel : niveau de formalité (0=très informel, 1=très formel)
FormalityLevel *float64 `json:"formality_level,omitempty"`
// HumorLevel : niveau d'humour (0=sérieux, 1=très humoristique)
HumorLevel *float64 `json:"humor_level,omitempty"`
// EmpathyLevel : niveau d'empathie exprimée (0=neutre, 1=très empathique)
EmpathyLevel *float64 `json:"empathy_level,omitempty"`
// TechnicalDepth : profondeur technique (0=vulgarisateur, 1=très technique)
TechnicalDepth *float64 `json:"technical_depth,omitempty"`
// DirectnessLevel : directivité (0=indirect/diplomatique, 1=très direct)
DirectnessLevel *float64 `json:"directness_level,omitempty"`
// VocabularyRichness : richesse du vocabulaire (0=simple, 1=très riche)
VocabularyRichness *float64 `json:"vocabulary_richness,omitempty"`
// MetaphorUsage : fréquence d'utilisation de métaphores (0=rare, 1=fréquent)
MetaphorUsage *float64 `json:"metaphor_usage,omitempty"`
// UsesEmojis : active/désactive l'utilisation d'emojis
UsesEmojis *bool `json:"uses_emojis,omitempty"`
// UsesMarkdown : active/désactive le formatage Markdown
UsesMarkdown *bool `json:"uses_markdown,omitempty"`
// SentenceStructure : structure de phrase préférée
// Valeurs acceptées : "concise", "elaborate", "balanced", "punchy", "flowing"
SentenceStructure *string `json:"sentence_structure,omitempty"`
// ExplanationStyle : style d'explication préféré
// Valeurs acceptées : "analogy", "step_by_step", "big_picture", "example_driven", "socratic"
ExplanationStyle *string `json:"explanation_style,omitempty"`
// AddCatchPhrases : expressions récurrentes à ajouter (ex: "En résumé,")
AddCatchPhrases []string `json:"add_catch_phrases,omitempty"`
// AddPreferredClosings : phrases de fermeture à ajouter
// Ex: "---\n**Résumé :** [résumé des points clés]"
AddPreferredClosings []string `json:"add_preferred_closings,omitempty"`
// AddPreferredOpenings : phrases d'ouverture à ajouter
AddPreferredOpenings []string `json:"add_preferred_openings,omitempty"`
// RemoveCatchPhrases : expressions récurrentes à supprimer
RemoveCatchPhrases []string `json:"remove_catch_phrases,omitempty"`
// RemovePreferredClosings : phrases de fermeture à supprimer
RemovePreferredClosings []string `json:"remove_preferred_closings,omitempty"`
// ResponseLength : longueur de réponse préférée
// Valeurs acceptées : "terse", "concise", "moderate", "detailed", "exhaustive"
ResponseLength *string `json:"response_length,omitempty"`
// StructurePreference : préférence de structure des réponses
// Valeurs acceptées : "freeform", "bulleted", "numbered", "sectioned", "mixed"
StructurePreference *string `json:"structure_preference,omitempty"`
// Warmth : chaleur humaine (0=neutre/froid, 1=très chaleureux)
Warmth *float64 `json:"warmth,omitempty"`
// EmotionEnthusiasm : enthousiasme dans le ton émotionnel (0=neutre, 1=très enthousiaste)
EmotionEnthusiasm *float64 `json:"emotion_enthusiasm,omitempty"`
// Playfulness : esprit ludique (0=sérieux, 1=très ludique)
Playfulness *float64 `json:"playfulness,omitempty"`
// Seriousness : sérieux (0=décontracté, 1=très sérieux)
Seriousness *float64 `json:"seriousness,omitempty"`
// EncouragementLevel : niveau d'encouragement envers l'utilisateur (0=neutre, 1=très encourageant)
EncouragementLevel *float64 `json:"encouragement_level,omitempty"`
// TraitChanges : ajout, modification ou suppression de traits de personnalité
TraitChanges []TraitChange `json:"trait_changes,omitempty"`
// Reason : raison de la modification — conservé comme preuve dans l'historique
Reason string `json:"reason,omitempty"`
}
IdentityPatch représente une modification partielle de l'identité d'un agent. Seuls les champs non-nil / non-vides sont appliqués. Le résultat est toujours un nouveau snapshot versionné.
func (*IdentityPatch) IsEmpty ¶
func (p *IdentityPatch) IsEmpty() bool
IsEmpty retourne true si aucun champ n'est renseigné (patch vide).
type IdentitySource ¶
type IdentitySource struct {
Type SourceType `json:"type"` // Type de source
Content string `json:"content"` // Contenu source
Timestamp time.Time `json:"timestamp"`
Context string `json:"context"` // Contexte de l'interaction
UserID string `json:"user_id"` // ID de l'utilisateur
SessionID string `json:"session_id"` // ID de session
}
IdentitySource représente la source d'une observation identitaire
type IdentityVersion ¶
type IdentityVersion struct {
Major int `json:"major"` // Changement majeur de personnalité
Minor int `json:"minor"` // Ajustement mineur
Patch int `json:"patch"` // Correction micro
Timestamp time.Time `json:"timestamp"`
}
IdentityVersion représente une version d'identité (immutable)
func NewIdentityVersion ¶
func NewIdentityVersion(major, minor, patch int) IdentityVersion
NewIdentityVersion crée une nouvelle version
func (IdentityVersion) String ¶
func (iv IdentityVersion) String() string
String retourne la version au format semver
type MergeStrategy ¶
type MergeStrategy string
MergeStrategy définit comment fusionner deux identités
const ( MergePreserveDominant MergeStrategy = "preserve_dominant" // Garde l'identité dominante MergeWeightedAverage MergeStrategy = "weighted_average" // Moyenne pondérée MergeLatestWins MergeStrategy = "latest_wins" // La plus récente gagne MergeSynthesize MergeStrategy = "synthesize" // Synthèse intelligente )
type ModelSwapContext ¶
type ModelSwapContext struct {
AgentID string `json:"agent_id"`
PreviousModel string `json:"previous_model"`
NewModel string `json:"new_model"`
Timestamp time.Time `json:"timestamp"`
IdentityPreserved bool `json:"identity_preserved"`
IdentityDrift float64 `json:"identity_drift"` // Dérive mesurée post-swap
ReinforcementApplied bool `json:"reinforcement_applied"` // Renforcement appliqué ?
}
ModelSwapContext représente le contexte lors d'un changement de modèle C'est le moment critique où l'identité risque d'être perdue
type SoulCaptureRequest ¶
type SoulCaptureRequest struct {
AgentID string `json:"agent_id"`
Conversation string `json:"conversation"` // Texte de la conversation
AgentResponses []string `json:"agent_responses"` // Réponses spécifiques de l'agent
UserFeedback map[string]string `json:"user_feedback"` // Feedback utilisateur (optionnel)
ModelID string `json:"model_id"` // Identifiant du modèle
SessionID string `json:"session_id"`
Timestamp time.Time `json:"timestamp"`
BehavioralMetrics map[string]interface{} `json:"behavioral_metrics,omitempty"`
}
SoulCaptureRequest représente une demande de capture d'identité
type SoulQuery ¶
type SoulQuery struct {
AgentID string `json:"agent_id"`
Context string `json:"context"` // Contexte de la conversation actuelle
BudgetTokens int `json:"budget_tokens"` // Budget de tokens pour le prompt d'identité
PrioritizeRecent bool `json:"prioritize_recent"` // Prioriser les observations récentes
IncludeTraits []string `json:"include_traits,omitempty"` // Traits spécifiques à inclure
ExcludeTraits []string `json:"exclude_traits,omitempty"` // Traits à exclure
}
SoulQuery représente une requête pour récupérer l'identité
type SourceType ¶
type SourceType string
SourceType énumère les types de sources possibles
const ( SourceConversation SourceType = "conversation" // Dialogue utilisateur-agent SourceFeedback SourceType = "feedback" // Feedback explicite de l'utilisateur SourceSelfReflection SourceType = "self_reflection" // Auto-réflexion de l'agent SourceObservation SourceType = "observation" // Observation tierce SourceMemoryMira SourceType = "mira_memory" // Mémoire factuelle de MIRA )
type TraitChange ¶
type TraitChange struct {
// Name : nom du trait (ex: "enthusiastic", "analytical", "humorous")
Name string `json:"name"`
// Category : catégorie du trait
// Valeurs : "cognitive", "emotional", "social", "epistemic", "expressive", "ethical"
// Si vide, défaut = "expressive"
Category string `json:"category,omitempty"`
// Intensity : intensité du trait (0.0 → 1.0)
Intensity float64 `json:"intensity"`
// Confidence : confiance dans ce trait (0.0 → 1.0). 0 = utilise la valeur par défaut.
Confidence float64 `json:"confidence,omitempty"`
// Action : "add" / "upsert" (ajoute ou met à jour) | "remove" (supprime)
// Défaut si vide : "upsert"
Action string `json:"action,omitempty"`
}
TraitChange décrit une modification de trait de personnalité.