Files
picoclaw/pkg/evolution/types.go
T
lxowalle b3a7b7ad64 feat: agent self evolution (#2847)
* feat: add agent self-evolution

* fix ci

* delete unused doc

* fix lint

* fix evolution review issues
2026-05-11 16:13:27 +08:00

154 lines
6.5 KiB
Go

package evolution
import "time"
type RecordKind string
const (
RecordKindTask RecordKind = "task"
RecordKindPattern RecordKind = "pattern"
legacyRecordKindCase RecordKind = "case"
legacyRecordKindRule RecordKind = "rule"
// Deprecated: use RecordKindTask.
RecordKindCase = RecordKindTask
// Deprecated: use RecordKindPattern.
RecordKindRule = RecordKindPattern
)
type RecordStatus string
type DraftType string
const (
DraftTypeWorkflow DraftType = "workflow"
DraftTypeShortcut DraftType = "shortcut"
)
type ChangeKind string
const (
ChangeKindCreate ChangeKind = "create"
ChangeKindAppend ChangeKind = "append"
ChangeKindReplace ChangeKind = "replace"
ChangeKindMerge ChangeKind = "merge"
)
type DraftStatus string
const (
DraftStatusCandidate DraftStatus = "candidate"
DraftStatusQuarantined DraftStatus = "quarantined"
DraftStatusAccepted DraftStatus = "accepted"
)
type SkillStatus string
const (
SkillStatusActive SkillStatus = "active"
SkillStatusCold SkillStatus = "cold"
SkillStatusArchived SkillStatus = "archived"
SkillStatusDeleted SkillStatus = "deleted"
)
type AttemptTrail struct {
AttemptedSkills []string `json:"attempted_skills,omitempty"`
FinalSuccessfulPath []string `json:"final_successful_path,omitempty"`
SkillContextSnapshots []SkillContextSnapshot `json:"skill_context_snapshots,omitempty"`
}
type SkillContextSnapshot struct {
Sequence int `json:"sequence"`
Trigger string `json:"trigger"`
SkillNames []string `json:"skill_names,omitempty"`
}
type ToolExecutionRecord struct {
Name string `json:"name"`
Success bool `json:"success"`
ErrorSummary string `json:"error_summary,omitempty"`
SkillNames []string `json:"skill_names,omitempty"`
}
type LearningRecord struct {
ID string `json:"id"`
Kind RecordKind `json:"kind"`
WorkspaceID string `json:"workspace_id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty"`
SessionKey string `json:"session_key,omitempty"`
TaskHash string `json:"task_hash,omitempty"`
Summary string `json:"summary"`
UserGoal string `json:"user_goal,omitempty"`
FinalOutput string `json:"final_output,omitempty"`
Source map[string]any `json:"source,omitempty"`
Status RecordStatus `json:"status"`
Success *bool `json:"success,omitempty"`
ToolKinds []string `json:"tool_kinds,omitempty"`
ToolExecutions []ToolExecutionRecord `json:"tool_executions,omitempty"`
InitialSkillNames []string `json:"initial_skill_names,omitempty"`
AddedSkillNames []string `json:"added_skill_names,omitempty"`
UsedSkillNames []string `json:"used_skill_names,omitempty"`
AllLoadedSkillNames []string `json:"all_loaded_skill_names,omitempty"`
ActiveSkillNames []string `json:"active_skill_names,omitempty"`
AttemptTrail *AttemptTrail `json:"attempt_trail,omitempty"`
Signals []string `json:"signals,omitempty"`
SourceRecordIDs []string `json:"source_record_ids,omitempty"`
TaskRecordIDs []string `json:"task_record_ids,omitempty"`
Label string `json:"label,omitempty"`
ClusterReason string `json:"cluster_reason,omitempty"`
EventCount int `json:"event_count,omitempty"`
SuccessRate float64 `json:"success_rate,omitempty"`
MaturityScore float64 `json:"maturity_score,omitempty"`
WinningPath []string `json:"winning_path,omitempty"`
LateAddedSkills []string `json:"late_added_skills,omitempty"`
FinalSnapshotTrigger string `json:"final_snapshot_trigger,omitempty"`
MatchedSkillNames []string `json:"matched_skill_names,omitempty"`
}
type SkillDraft struct {
ID string `json:"id"`
WorkspaceID string `json:"workspace_id"`
CreatedAt time.Time `json:"created_at"`
UpdatedAt *time.Time `json:"updated_at,omitempty"`
SourceRecordID string `json:"source_record_id"`
TargetSkillName string `json:"target_skill_name"`
MatchedSkillRefs []string `json:"matched_skill_refs,omitempty"`
DraftType DraftType `json:"draft_type"`
ChangeKind ChangeKind `json:"change_kind"`
HumanSummary string `json:"human_summary"`
IntendedUseCases []string `json:"intended_use_cases,omitempty"`
PreferredEntryPath []string `json:"preferred_entry_path,omitempty"`
AvoidPatterns []string `json:"avoid_patterns,omitempty"`
BodyOrPatch string `json:"body_or_patch"`
Status DraftStatus `json:"status"`
ReviewNotes []string `json:"review_notes,omitempty"`
ScanFindings []string `json:"scan_findings,omitempty"`
}
type SkillVersionEntry struct {
Version string `json:"version"`
Action string `json:"action"`
Timestamp time.Time `json:"timestamp"`
DraftID string `json:"draft_id,omitempty"`
Summary string `json:"summary"`
Rollback bool `json:"rollback,omitempty"`
RollbackReason string `json:"rollback_reason,omitempty"`
}
type SkillProfile struct {
SkillName string `json:"skill_name"`
WorkspaceID string `json:"workspace_id"`
CurrentVersion string `json:"current_version"`
Status SkillStatus `json:"status"`
Origin string `json:"origin"`
HumanSummary string `json:"human_summary"`
ChangeReason string `json:"change_reason,omitempty"`
IntendedUseCases []string `json:"intended_use_cases,omitempty"`
PreferredEntryPath []string `json:"preferred_entry_path,omitempty"`
AvoidPatterns []string `json:"avoid_patterns,omitempty"`
LastUsedAt time.Time `json:"last_used_at"`
UseCount int `json:"use_count"`
RetentionScore float64 `json:"retention_score"`
VersionHistory []SkillVersionEntry `json:"version_history"`
}