Skip to content

Commit 21a9121

Browse files
Change system prompt persona from Grug to Bonzi Buddy (#263)
1 parent fb52f49 commit 21a9121

4 files changed

Lines changed: 18 additions & 17 deletions

File tree

src/yetibot/core/commands/agent.clj

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
CLI running headlessly as an autonomous agent: Gemini uses the authenticated
44
`gh` CLI and `git` to find the right repo(s), make the change, and open pull
55
requests itself. Yetibot's job is just to run it and relay what it's doing,
6-
live, into a chat thread — in a quirky grug/caveman persona.
6+
live, into a chat thread — in the playful persona of Bonzi Buddy.
77
88
On Discord the agent works inside a thread spun off the triggering message,
99
so a team can keep replying and re-trigger `agent` to iterate; the thread is
@@ -108,7 +108,7 @@
108108
(github-auth-configured?))))
109109

110110
;; ---------------------------------------------------------------------------
111-
;; Persona — grug/caveman/meme voice for the agent's chat messages only.
111+
;; Persona — Bonzi Buddy voice for the agent's chat messages only.
112112
;; ---------------------------------------------------------------------------
113113

114114
;; Yetibot is the middleman. One transient status message shows the latest step
@@ -117,7 +117,7 @@
117117
(defn say-working
118118
"Transient status message, deleted once Gemini returns its final answer."
119119
[]
120-
"<:hmmm:1494137019805466734> grug on it")
120+
"🐵 Bonzi Buddy is swinging into action! Please wait a moment")
121121

122122
(defn say-final
123123
"The clean final reply: Gemini's summary plus links to any relevant PRs."
@@ -133,16 +133,16 @@
133133
(str "⏰ timed out after " minutes " min — try a smaller ask?"))
134134

135135
(defn say-unconfigured []
136-
(str "🪨 grug brain not plugged in. need Gemini key + GitHub auth (App or token). grug wait 😴"))
136+
(str "🍌 Oh no! My banana tank is empty (need Gemini key + GitHub App/token) so I can't help you yet! 🍌"))
137137

138138
(defn say-resuming []
139-
"🪨 grug got bonked by a restart — back on it")
139+
"🐵 Bonzi got bumped by a reboot, but I'm swinging back into action!")
140140

141141
(defn say-gave-up []
142-
"💀 grug kept getting knocked out by restarts — try again when things settle?")
142+
"💀 Bonzi got too dizzy from restarts — please try again in a bit!")
143143

144144
(defn say-stale []
145-
"💤 grug napped too long on that one — ask again?")
145+
"💤 Bonzi fell asleep waiting — ask again?")
146146

147147
(defn resume-request
148148
"Prefix a request for a resumed run so Gemini continues whatever its interrupted
@@ -375,8 +375,9 @@
375375
"When you mention or address a person, write their Discord mention token "
376376
"<@id> verbatim (e.g. <@49312021375614976>) — it pings them and Discord "
377377
"shows their server name; never invent names or use raw numeric ids.\n\n"
378-
"Now do the work, then reply with ONLY your final answer — concise and in a "
379-
"brief, playful grug/caveman voice (keep the facts exact), no step-by-step "
378+
"Now do the work, then reply with ONLY your final answer — concise and in the "
379+
"brief, playful, and cheerful persona of Bonzi Buddy, the classic purple gorilla "
380+
"Windows assistant (keep the facts exact), no step-by-step "
380381
"narration, and reference any pull requests as full URLs "
381382
"(https://github.com/owner/repo/pull/123), never the #123 shorthand."))
382383

src/yetibot/core/commands/veo.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
(let [err-msg (str "Video generation failed: " (redact (.getMessage e)))
7575
msg (if user-mention (str user-mention ": " err-msg) err-msg)]
7676
(chat/send-msg msg))))))
77-
{:result/value (str "🎥 Grug start generating video for \"" final-prompt "\". This take some time (30s to 3m)...")})
77+
{:result/value (str "🎥 Bonzi Buddy start generating video for \"" final-prompt "\". This take some time (30s to 3m)...")})
7878
(catch Exception e
7979
(error "veo: initialization error:" (.getMessage e))
8080
{:result/error (str "Video generation initialization failed: " (redact (.getMessage e)))}))

test/yetibot/core/test/commands/agent.clj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@
6262

6363
(facts "about final messages"
6464
(fact "say-working is a generic status, not the prompt"
65-
(agent/say-working) => (contains "grug"))
65+
(agent/say-working) => (contains "Bonzi"))
6666
(fact "say-final shows Gemini's answer"
6767
(agent/say-final "Added the bagif command" nil) => (contains "Added the bagif command"))
6868
(fact "say-final appends relevant PR links"
@@ -93,7 +93,7 @@
9393
(facts "about agent-cmd guards"
9494
(fact "replies in persona when nothing is configured"
9595
(agent/agent-cmd {:match ["agent do x" "do x"] :chat-source {}})
96-
=> (contains "grug")
96+
=> (contains "banana")
9797
(provided (agent/configured?) => false)))
9898

9999
;; --- GitHub auth: enough to mint GH_TOKEN for Gemini ---

test/yetibot/core/test/commands/veo.clj

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
;; no-op the future so the unit test never makes a real Veo HTTP call
2121
(with-redefs [clojure.core/future-call (fn [_] nil)]
2222
(veo/veo-cmd {:match "a cool robot dancing" :chat-source {} :user {:id "user123"}}))
23-
=> {:result/value "🎥 Grug start generating video for \"a cool robot dancing\". This take some time (30s to 3m)..."}
23+
=> {:result/value "🎥 Bonzi Buddy start generating video for \"a cool robot dancing\". This take some time (30s to 3m)..."}
2424
(provided
2525
(gemini/configured?) => true
2626
(image-input/extract-images "a cool robot dancing" {}) => {:prompt "a cool robot dancing" :image-urls nil})))
@@ -31,7 +31,7 @@
3131
chat/*thread-ts* :mock-thread-ts]
3232
(with-redefs [clojure.core/future-call (fn [f] (f))]
3333
(veo/veo-cmd {:match "a cool robot dancing" :chat-source {} :user {:id "user123"}}))
34-
=> {:result/value "🎥 Grug start generating video for \"a cool robot dancing\". This take some time (30s to 3m)..."}
34+
=> {:result/value "🎥 Bonzi Buddy start generating video for \"a cool robot dancing\". This take some time (30s to 3m)..."}
3535
(provided
3636
(gemini/configured?) => true
3737
(image-input/extract-images "a cool robot dancing" {}) => {:prompt "a cool robot dancing" :image-urls nil}
@@ -47,7 +47,7 @@
4747
chat/*thread-ts* :mock-thread-ts]
4848
(with-redefs [clojure.core/future-call (fn [f] (f))]
4949
(veo/veo-cmd {:match "a cool robot dancing" :chat-source {} :user {:id "user123"}}))
50-
=> {:result/value "🎥 Grug start generating video for \"a cool robot dancing\". This take some time (30s to 3m)..."}
50+
=> {:result/value "🎥 Bonzi Buddy start generating video for \"a cool robot dancing\". This take some time (30s to 3m)..."}
5151
(provided
5252
(gemini/configured?) => true
5353
(image-input/extract-images "a cool robot dancing" {}) => {:prompt "a cool robot dancing" :image-urls nil}
@@ -86,7 +86,7 @@
8686
chat/*thread-ts* :mock-thread-ts]
8787
(with-redefs [clojure.core/future-call (fn [f] (f))]
8888
(veo/veo-cmd {:match "lite a cool robot" :chat-source {} :user {:id "user123"} :cmd "veo"}))
89-
=> {:result/value "🎥 Grug start generating video for \"a cool robot\". This take some time (30s to 3m)..."}
89+
=> {:result/value "🎥 Bonzi Buddy start generating video for \"a cool robot\". This take some time (30s to 3m)..."}
9090
(provided
9191
(gemini/configured?) => true
9292
(image-input/extract-images "lite a cool robot" {}) => {:prompt "lite a cool robot" :image-urls nil}
@@ -102,7 +102,7 @@
102102
chat/*thread-ts* :mock-thread-ts]
103103
(with-redefs [clojure.core/future-call (fn [f] (f))]
104104
(veo/veo-cmd {:match "a cool robot" :chat-source {} :user {:id "user123"} :cmd "gigaveo"}))
105-
=> {:result/value "🎥 Grug start generating video for \"a cool robot\". This take some time (30s to 3m)..."}
105+
=> {:result/value "🎥 Bonzi Buddy start generating video for \"a cool robot\". This take some time (30s to 3m)..."}
106106
(provided
107107
(gemini/configured?) => true
108108
(image-input/extract-images "a cool robot" {}) => {:prompt "a cool robot" :image-urls nil}

0 commit comments

Comments
 (0)