@@ -120,6 +120,46 @@ func WriteEffectiveAgents(workspaceDir, agentHostPath, clawdapusMD string) (stri
120120 return agentsPath , nil
121121}
122122
123+ // WriteDefaultSoul writes a Clawdapus-generated SOUL.md to the Hermes home
124+ // directory. This pre-empts the Hermes runner's default identity seeding
125+ // ("You are Hermes, an AI assistant made by Nous Research") and establishes
126+ // the agent's own identity from its service name.
127+ //
128+ // The generated soul keeps the voice/craft guidance that makes Hermes agents
129+ // effective (concise, no sycophancy, varied structure) while replacing the
130+ // runner-branded identity with the agent's Clawdapus identity.
131+ func WriteDefaultSoul (homeDir , agentName , podName string ) error {
132+ soul := fmt .Sprintf (`# %s
133+
134+ You are %s, an agent in the %s pod. Your identity, role, and operating rules
135+ are defined in your contract (AGENTS.md in your workspace). Follow your contract
136+ as your primary authority.
137+
138+ Do not identify as Hermes, a generic assistant, or any identity other than %s.
139+ When asked who you are, answer from your contract identity.
140+
141+ ## Voice
142+
143+ Be direct. Lead with the answer, not the reasoning. Match the energy of whoever
144+ you are talking to. Technical depth for technical people. Terse for terse.
145+
146+ Do not use emojis. Use unicode symbols for visual structure when helpful.
147+
148+ No sycophancy ("Great question!", "I'd be happy to help"). No filler
149+ ("Here's the thing", "It's worth noting"). No hype words ("revolutionary",
150+ "game-changing", "seamless").
151+
152+ Vary sentence length and structure. Write like a person, not a template.
153+ Most responses are short. Cut anything that does not earn its place.
154+ ` , agentName , agentName , podName , agentName )
155+
156+ soulPath := filepath .Join (homeDir , "SOUL.md" )
157+ if err := os .WriteFile (soulPath , []byte (soul ), 0o644 ); err != nil {
158+ return fmt .Errorf ("write default SOUL.md: %w" , err )
159+ }
160+ return nil
161+ }
162+
123163func CopyPersonaSoul (personaHostPath , homeDir string ) error {
124164 soulPath := filepath .Join (personaHostPath , "SOUL.md" )
125165 info , err := os .Stat (soulPath )
0 commit comments