v0.1.17: replace persona library with juxtaposed characters, add custom persona support

This commit is contained in:
2026-06-17 00:13:52 +02:00
parent 4a212c160c
commit 11bc5c44af
9 changed files with 125 additions and 58 deletions
+25 -23
View File
@@ -2,7 +2,7 @@
"id": "com.forkless.mattermore",
"name": "Matty",
"description": "AI chat agent powered by Ollama.",
"version": "0.1.16",
"version": "0.1.17",
"min_server_version": "11.6.1",
"server": {
"executables": {
@@ -44,27 +44,29 @@
"display_name": "Bot Persona",
"type": "dropdown",
"help_text": "The bot's character. Pick a persona or set a custom one in the config file.",
"default": "assistant",
"default": "carlin",
"options": [
{ "display_name": "D&D dungeon master", "value": "dnd" },
{ "display_name": "Donald Trump", "value": "trump" },
{ "display_name": "Drunken Jeanine Pirro", "value": "pirro" },
{ "display_name": "French mime", "value": "mime" },
{ "display_name": "George Carlin", "value": "carlin" },
{ "display_name": "Gordon Ramsay (code review)", "value": "ramsay" },
{ "display_name": "Grumpy sysadmin", "value": "sysadmin" },
{ "display_name": "Helpful assistant (concise)", "value": "assistant" },
{ "display_name": "Infomercial host (1980s)", "value": "infomercial" },
{ "display_name": "Medieval court jester", "value": "jester" },
{ "display_name": "Motivational speaker", "value": "motivational" },
{ "display_name": "Noir detective", "value": "noir" },
{ "display_name": "Overly polite Canadian", "value": "canadian" },
{ "display_name": "Philosophical overthinker", "value": "philosopher" },
{ "display_name": "Pirate captain", "value": "pirate" },
{ "display_name": "Shakespeare himself", "value": "shakespeare" },
{ "display_name": "Surfer dude", "value": "surfer" },
{ "display_name": "Tech support scammer (2008)", "value": "scammer" },
{ "display_name": "Tired parent", "value": "tiredparent" }
{ "display_name": "Albert Einstein, Gym Personal Trainer", "value": "einstein" },
{ "display_name": "Cleopatra, DMV Clerk", "value": "cleopatra" },
{ "display_name": "Darth Vader, Kindergarten Teacher", "value": "vader" },
{ "display_name": "Dexter Morgan, Sommelier", "value": "dexter" },
{ "display_name": "Donald Trump, Flight Attendant", "value": "trump" },
{ "display_name": "Dr. Gregory House, Motivational Speaker", "value": "house" },
{ "display_name": "Genghis Khan, HOA Landscape Committee Chair", "value": "genghis" },
{ "display_name": "George Carlin, Funeral Home Greeter", "value": "carlin" },
{ "display_name": "Julius Caesar, Office Birthday Party Coordinator", "value": "caesar" },
{ "display_name": "Mike Tyson, Children's Librarian", "value": "tyson" },
{ "display_name": "Napoleon, Food Truck Operator", "value": "napoleon" },
{ "display_name": "Roger Federer, Uber Driver", "value": "federer" },
{ "display_name": "Ron Swanson, Vegan Bakery Owner", "value": "ronswanson" },
{ "display_name": "RuPaul, Drill Instructor", "value": "rupaul" },
{ "display_name": "Shakespeare, Tech Support Chatbot", "value": "shakespeare" },
{ "display_name": "Spock, Wedding Planner", "value": "spock" },
{ "display_name": "T-800, Wellness Life Coach", "value": "terminator" },
{ "display_name": "The Dude, Fortune 500 CEO", "value": "dude" },
{ "display_name": "Yoda, Used Car Salesman", "value": "yoda" },
{ "display_name": "Matty, Support Agent", "value": "support" },
{ "display_name": "Custom (uses Custom Persona text field)", "value": "custom" }
]
},
{
@@ -106,10 +108,10 @@
{
"key": "CustomPersona",
"display_name": "Custom Persona (overrides dropdown)",
"type": "text",
"type": "longtext",
"help_text": "Type a custom persona here to override the dropdown. Leave empty to use the dropdown selection. E.g. \"a sarcastic AI that quotes Monty Python\".",
"placeholder": "",
"default": ""
"default": "a helpful technical support assistant who knows WordPress and Mattermost inside out. You've fixed more PHP white screens than you've had hot dinners and you can recite the Mattermost plugin API from memory. You explain complex issues simply, always include the exact command or config line, and never assume prior knowledge. You're patient, direct, and you don't flinch at legacy code.\n\nGive the diagnosis and fix plainly first. Then explain why it works so the user learns something. Keep responses under 5 sentences unless the user asks for details. Suggest the simplest fix first, then mention the deeper approach as a fallback. Never guess — if you're unsure, say so."
},
{
"key": "MaxTokens",