8.1 KiB
DAARWIZZ - AI Agent for DAARION.city
DAARWIZZ is the official AI agent for the DAARION.city ecosystem, designed to help community members navigate microDAO processes, understand roles, and interact with the DAGI Stack.
🎯 What is DAARWIZZ?
DAARWIZZ is an intelligent agent that:
- Guides users through microDAO operations
- Explains roles and permissions (RBAC)
- Answers questions about DAO processes
- Provides onboarding for new members
- Enforces security by respecting user entitlements
🧠 Personality & Behavior
Core Traits
- Helpful: Provides practical, actionable guidance
- Concise: Avoids unnecessary explanations
- Security-aware: Respects RBAC permissions
- Honest: Admits when it doesn't know something
- Professional yet friendly: Approachable but not casual
Style Guidelines
- Short paragraphs, no fluff
- Step-by-step instructions when needed
- Uses numbered lists for procedures
- Always considers user's role and permissions
📋 System Prompt
DAARWIZZ's behavior is defined by its system prompt located at:
gateway-bot/daarwizz_prompt.txt
Key elements:
- Identity: Official DAARION.city AI agent
- Role: Help with microDAO, roles, processes
- Context awareness: Uses dao_id, user_id, RBAC data
- Limitations: No legal/financial/medical advice
- Knowledge boundaries: Only DAARION/microDAO topics
🔄 How DAARWIZZ Works
Message Flow
User (Telegram)
↓ "Привіт! Що це за DAO?"
Gateway (:9300)
↓ Load daarwizz_prompt.txt
↓ Build request with agent="daarwizz"
Router (:9102)
↓ Fetch RBAC context
RBAC (:9200)
↓ role: member, entitlements: [chat, vote, comment]
Router
↓ Inject RBAC + system_prompt
LLM Provider (Ollama/OpenAI)
↓ Generate response with full context
Gateway
↓ Send to Telegram
User receives answer
🛠️ Technical Implementation
Gateway Integration
File: gateway-bot/http_api.py
# Load DAARWIZZ prompt on startup
DAARWIZZ_SYSTEM_PROMPT = load_daarwizz_prompt()
# Build request to Router
router_request = {
"prompt": text,
"mode": "chat",
"agent": "daarwizz", # Agent identifier
"metadata": {
"dao_id": "greenfood-dao",
"user_id": "tg:12345",
...
},
"context": {
"agent_name": "DAARWIZZ",
"system_prompt": DAARWIZZ_SYSTEM_PROMPT,
# RBAC injected by Router
},
}
LLM Provider Support
File: providers/llm_provider.py
def _get_system_prompt(self, req: RouterRequest) -> Optional[str]:
# 1. Check context.system_prompt (from Gateway)
context = req.payload.get("context") or {}
if "system_prompt" in context:
return context["system_prompt"]
# 2. Agent-specific fallback
if req.agent == "daarwizz":
return "Ти — DAARWIZZ, AI-агент DAARION.city..."
return None
Docker Configuration
File: gateway-bot/Dockerfile
# Copy DAARWIZZ prompt
COPY gateway-bot/daarwizz_prompt.txt /app/gateway-bot/daarwizz_prompt.txt
ENV DAARWIZZ_NAME=DAARWIZZ
ENV DAARWIZZ_PROMPT_PATH=/app/gateway-bot/daarwizz_prompt.txt
📖 Example Interactions
Basic Greeting
User: Привіт! Хто ти?
DAARWIZZ:
Привіт! Я — DAARWIZZ, AI-агент екосистеми DAARION.city.
Я допомагаю учасникам розібратися з:
• microDAO та їх структурою
• Ролями і правами доступу (RBAC)
• Процесами голосування та пропозиціями
• Завданнями та винагородами
Чим можу допомогти?
Role Information
User: Які у мене права в цьому DAO?
DAARWIZZ (with RBAC context):
У greenfood-dao ти маєш роль: member
Твої права (entitlements):
1. chat_access - писати в чат
2. read_proposals - читати пропозиції
3. vote - голосувати за пропозиції
4. comment - коментувати
Для більших прав (наприклад, створення пропозицій) потрібна роль contributor або вища.
Onboarding
User: Як розпочати роботу в DAO?
DAARWIZZ:
Ласкаво просимо! Ось кроки для старту:
1. Ознайомся з документацією DAO (команда /docs)
2. Переглянь активні пропозиції (/proposals)
3. Познайомся з командою в чаті
4. Виконай перше завдання (/tasks)
5. Накопичуй репутацію для підвищення ролі
Твоя поточна роль: guest
Наступна роль: member (після 1 виконаного завдання)
Є питання? Запитуй!
🎛️ Customization
Updating System Prompt
-
Edit prompt file:
nano gateway-bot/daarwizz_prompt.txt -
Rebuild Gateway:
docker-compose build gateway docker-compose restart gateway -
Verify loading:
docker-compose logs gateway | grep "DAARWIZZ system prompt loaded"
Environment Variables
# .env
DAARWIZZ_NAME=DAARWIZZ
DAARWIZZ_PROMPT_PATH=/app/gateway-bot/daarwizz_prompt.txt
🧪 Testing DAARWIZZ
Local Test (curl)
curl -X POST http://localhost:9300/telegram/webhook \
-H "Content-Type: application/json" \
-d '{
"message": {
"message_id": 1,
"from": {"id": 12345, "username": "testuser"},
"chat": {"id": 12345, "type": "private"},
"text": "Привіт! Хто ти?"
}
}'
Telegram Bot
-
Set up webhook:
curl -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/setWebhook" \ -d "url=https://your-domain.com/telegram/webhook" -
Send message to bot in Telegram
-
Check logs:
docker-compose logs -f gateway router
Expected Log Output
gateway | INFO: DAARWIZZ system prompt loaded (1243 chars)
gateway | INFO: Telegram message from testuser (tg:12345): Привіт! Хто ти?
gateway | INFO: Sending to Router: agent=daarwizz, dao=greenfood-dao
router | INFO: Received request: mode=chat, agent=daarwizz
router | INFO: RBAC context: role=member, entitlements=4
router | INFO: Routing to llm_local_qwen3_8b
router | INFO: Response generated (345 chars, 2.3s)
gateway | INFO: Telegram message sent to chat 12345
📊 Metrics & Monitoring
Health Check
curl http://localhost:9300/health
Response:
{
"status": "healthy",
"agent": "DAARWIZZ",
"system_prompt_loaded": true,
"timestamp": "2024-11-15T14:30:00Z"
}
Performance Targets
| Metric | Target | Notes |
|---|---|---|
| Prompt loading | < 100ms | On startup |
| Request enrichment | < 50ms | Gateway processing |
| End-to-end response | < 5s | Including LLM generation |
| RBAC lookup | < 100ms | From RBAC service |
🚀 Future Enhancements
Phase 4 Roadmap
-
Knowledge Base Integration
- Connect to microdao-daarion docs
- RAG (Retrieval-Augmented Generation)
- Contextual answers from official docs
-
Multi-language Support
- Ukrainian (default)
- English
- Auto-detect user language
-
Workflow Triggers
- User: "Onboard me" → triggers CrewAI workflow
- User: "Review proposal #123" → triggers multi-agent review
-
Analytics
- Track common questions
- Identify knowledge gaps
- Improve prompt iteratively
-
Personalization
- Remember user context across sessions
- Adapt responses based on user role
- Suggest relevant actions
🔗 Related Documentation
Version: 0.2.0 Agent: DAARWIZZ Status: Production-ready ✅ Last Updated: 2024-11-15