mirror of
https://github.com/sipeed/picoclaw.git
synced 2026-06-12 18:08:54 +00:00
feat: agent self evolution (#2847)
* feat: add agent self-evolution * fix ci * delete unused doc * fix lint * fix evolution review issues
This commit is contained in:
@@ -0,0 +1,153 @@
|
||||
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"`
|
||||
}
|
||||
Reference in New Issue
Block a user