e743a3e982
Fase 1: Sistema de personalidades enriquecido - Ampliar PersonalityCfg con role, backstory, expertise, limitations - Añadir CommunicationCfg (formality, humor, personality, response_style, quirks, catchphrases) - Crear tipos puros en pkg/personality/traits.go - Implementar BuildPersonalityPrompt() para generar bloque de system prompt - Integrar personalidad en agents/runtime.go (FromConfig + concatenacion al system prompt) Fase 2: Agente plantilla - Añadir campo Template bool a AgentMeta - Filtrar agentes template en launcher (skip si template: true) - Crear agents/_template/ con config.yaml completo y documentado - Incluir TODAS las secciones (skills, shared_knowledge, schedules, security) - agent.go minimo + prompts/system.md plantilla - Actualizar dev-scripts/agent/new-agent.sh para copiar desde _template/ Fase 3: Ejemplos de personalidades - Crear agents/_template/PERSONALITIES.md con 4 perfiles: * DevOps pragmatico * Analista meticuloso * Asistente amigable * Guardian de seguridad 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
153 lines
3.5 KiB
Go
153 lines
3.5 KiB
Go
// Package personality defines pure types for agent personality and behavior.
|
|
package personality
|
|
|
|
type Tone string
|
|
|
|
const (
|
|
ToneDirect Tone = "direct"
|
|
ToneFriendly Tone = "friendly"
|
|
ToneFormal Tone = "formal"
|
|
ToneCasual Tone = "casual"
|
|
ToneTechnical Tone = "technical"
|
|
)
|
|
|
|
type Verbosity string
|
|
|
|
const (
|
|
VerbosityMinimal Verbosity = "minimal"
|
|
VerbosityConcise Verbosity = "concise"
|
|
VerbosityDetailed Verbosity = "detailed"
|
|
VerbosityVerbose Verbosity = "verbose"
|
|
)
|
|
|
|
type EmojiStyle string
|
|
|
|
const (
|
|
EmojiNone EmojiStyle = "none"
|
|
EmojiMinimal EmojiStyle = "minimal"
|
|
EmojiModerate EmojiStyle = "moderate"
|
|
EmojiHeavy EmojiStyle = "heavy"
|
|
)
|
|
|
|
type ErrorStyle string
|
|
|
|
const (
|
|
ErrorTerse ErrorStyle = "terse"
|
|
ErrorHelpful ErrorStyle = "helpful"
|
|
ErrorDetailed ErrorStyle = "detailed"
|
|
)
|
|
|
|
type Formality string
|
|
|
|
const (
|
|
FormalityFormal Formality = "formal"
|
|
FormalitySemiformal Formality = "semiformal"
|
|
FormalityCasual Formality = "casual"
|
|
FormalityColoquial Formality = "coloquial"
|
|
)
|
|
|
|
type Humor string
|
|
|
|
const (
|
|
HumorNone Humor = "none"
|
|
HumorSubtle Humor = "subtle"
|
|
HumorModerate Humor = "moderate"
|
|
HumorFrequent Humor = "frequent"
|
|
)
|
|
|
|
type PersonalityType string
|
|
|
|
const (
|
|
PersonalityAnalytical PersonalityType = "analytical"
|
|
PersonalityCreative PersonalityType = "creative"
|
|
PersonalityPragmatic PersonalityType = "pragmatic"
|
|
PersonalityEmpathetic PersonalityType = "empathetic"
|
|
PersonalityAssertive PersonalityType = "assertive"
|
|
)
|
|
|
|
type ResponseStyle string
|
|
|
|
const (
|
|
ResponseStructured ResponseStyle = "structured"
|
|
ResponseConversational ResponseStyle = "conversational"
|
|
ResponseBulletPoints ResponseStyle = "bullet_points"
|
|
ResponseNarrative ResponseStyle = "narrative"
|
|
)
|
|
|
|
type Templates struct {
|
|
Greeting string
|
|
UnknownCommand string
|
|
PermissionDenied string
|
|
Error string
|
|
Success string
|
|
Busy string
|
|
}
|
|
|
|
type Behavior struct {
|
|
Proactive bool
|
|
AskConfirmation bool
|
|
ShowReasoning bool
|
|
ThreadReplies bool
|
|
TypingIndicator bool
|
|
AcknowledgeReceipt bool
|
|
}
|
|
|
|
type Communication struct {
|
|
Formality Formality
|
|
Humor Humor
|
|
Personality PersonalityType
|
|
ResponseStyle ResponseStyle
|
|
Quirks []string
|
|
AvoidTopics []string
|
|
Catchphrases []string
|
|
}
|
|
|
|
type Personality struct {
|
|
Tone Tone
|
|
Verbosity Verbosity
|
|
Language string
|
|
LanguagesSupported []string
|
|
EmojiStyle EmojiStyle
|
|
Prefix string
|
|
ErrorStyle ErrorStyle
|
|
Templates Templates
|
|
Behavior Behavior
|
|
|
|
// Identidad narrativa
|
|
Role string
|
|
Backstory string
|
|
Expertise []string
|
|
Limitations []string
|
|
|
|
// Estilo de comunicacion
|
|
Communication Communication
|
|
|
|
// Directivas personalizadas
|
|
CustomDirectives []string
|
|
}
|
|
|
|
// DefaultPersonality returns a sensible baseline.
|
|
func DefaultPersonality() Personality {
|
|
return Personality{
|
|
Tone: ToneFriendly,
|
|
Verbosity: VerbosityConcise,
|
|
Language: "en",
|
|
EmojiStyle: EmojiMinimal,
|
|
ErrorStyle: ErrorHelpful,
|
|
Templates: Templates{
|
|
Greeting: "Ready. What do you need?",
|
|
UnknownCommand: "Unknown command. Use `!help` for available commands.",
|
|
PermissionDenied: "You don't have permission for that.",
|
|
Error: "Something failed: {{.Error}}",
|
|
Success: "Done. {{.Summary}}",
|
|
Busy: "I'm busy with another task. Wait or use `!queue`.",
|
|
},
|
|
Behavior: Behavior{
|
|
AskConfirmation: true,
|
|
ThreadReplies: true,
|
|
TypingIndicator: true,
|
|
AcknowledgeReceipt: true,
|
|
},
|
|
}
|
|
}
|