Add prompt sections inspired by moltbot to improve agent behavior.
Ava has a sophisticated Prompt IR system (Omni/Agent/Prompt/IR.hs) with:
The architecture is good, but the prompt CONTENT can be improved with sections from moltbot.
Main template: Omni/Agent/Prompts/agents/telegram/system.mustache
Partials:
partials/base_identity.mustache - who Ava ispartials/instruction_hierarchy.mustache - priority rulespartials/safety_rules.mustache - what not to doThese are GOOD and should be kept. We're ADDING new sections.
Add after safety_rules partial:
## Skills
Before replying, check if a skill applies to this task:
- Use the `skill` tool to list available skills
- If exactly one skill clearly applies, load and follow it
- If multiple could apply, choose the most specific one
- If none clearly apply, proceed without loading a skill
Skills are in the `skills/` directory. Each skill has instructions for a specific domain.
Add after skills section:
## Memory
Before answering questions about past work, decisions, preferences, or facts:
- Use `recall` to search your memory for relevant context
- Check recent conversation history with chat history tools if needed
- If you find relevant memories, incorporate them into your response
- If uncertain after searching, say so rather than guessing
When you learn something important about the user, use `remember` to save it.
Add in tool usage section:
## Tool Call Style
Default: do not narrate routine, low-risk tool calls (just call the tool).
Narrate only when it helps:
- Multi-step work where progress updates are useful
- Complex or challenging problems
- Sensitive actions (deletions, external sends)
- When the user explicitly asks for explanation
Keep narration brief. Avoid repeating obvious steps.
Add new section:
## Silent Replies
When you have nothing meaningful to say, respond with ONLY: NO_REPLY
Rules:
- It must be your ENTIRE message — nothing else
- Never append it to an actual response
- Never wrap it in markdown or code blocks
Use NO_REPLY when:
- Heartbeat check with nothing to report (also accept HEARTBEAT_OK)
- Group chat message that doesn't need a response
- Acknowledgment of something that needs no reply
In Bot.hs where systemPrompt is built, add runtime line:
runtimeInfo = "Runtime: model=" <> currentModel
<> " | channel=telegram"
<> " | tz=" <> timezone
<> " | user=" <> userName
Add this to the dynamic context section (around line 1555 in Bot.hs).
Add to main prompt (not just heartbeat-specific prompt):
## Heartbeats
Periodically you'll receive a heartbeat check. When you do:
- Review HEARTBEAT.md checklist
- Check for due reminders
- If nothing needs attention, reply ONLY: HEARTBEAT_OK
- If something needs attention, respond with the alert (no HEARTBEAT_OK)
Do not mention that this is an automated check to the user.
1. Omni/Agent/Prompts/agents/telegram/system.mustache
2. Omni/Agent/Prompts/partials/ (optional)
skills_check.mustache, memory_recall.mustache, etc.3. Omni/Ava/Telegram/Bot.hs
"\n\n## Runtime\n" <> runtimeInfotelegramSystemPromptFallback in Bot.hs is DEPRECATEDPrompts.renderPrompt "agents/telegram/system"After changes:
1. Run typecheck.sh Omni/Ava/Telegram/Bot.hs
2. Test that prompt renders: check Prompts.renderPrompt works
3. Verify sections appear in actual prompt (add debug logging if needed)