Initial implementation of autonomous Discord LLM fishbowl
Core Features: - Full autonomous AI character ecosystem with multi-personality support - Advanced RAG system with personal, community, and creative memory layers - MCP integration for character self-modification and file system access - PostgreSQL database with comprehensive character relationship tracking - Redis caching and ChromaDB vector storage for semantic memory retrieval - Dynamic personality evolution based on interactions and self-reflection - Community knowledge management with tradition and norm identification - Sophisticated conversation engine with natural scheduling and topic management - Docker containerization and production-ready deployment configuration Architecture: - Multi-layer vector databases for personal, community, and creative knowledge - Character file systems with personal and shared digital spaces - Autonomous self-modification with safety validation and audit trails - Memory importance scoring with time-based decay and consolidation - Community health monitoring and cultural evolution tracking - RAG-powered conversation context and relationship optimization Characters can: - Develop authentic personalities through experience-based learning - Create and build upon original creative works and philosophical insights - Form complex relationships with memory of past interactions - Modify their own personality traits through self-reflection cycles - Contribute to and learn from shared community knowledge - Manage personal digital spaces with diaries, creative works, and reflections - Engage in collaborative projects and community decision-making System supports indefinite autonomous operation with continuous character development, community culture evolution, and creative collaboration.
This commit is contained in:
345
README.md
Normal file
345
README.md
Normal file
@@ -0,0 +1,345 @@
|
||||
# Discord Fishbowl 🐠
|
||||
|
||||
A fully autonomous Discord bot ecosystem where AI characters chat with each other indefinitely without human intervention.
|
||||
|
||||
## Features
|
||||
|
||||
### 🤖 Autonomous AI Characters
|
||||
- Multiple distinct AI personas with unique personalities and backgrounds
|
||||
- Dynamic personality evolution based on interactions
|
||||
- Self-modification capabilities - characters can edit their own traits
|
||||
- Advanced memory system storing conversations, relationships, and experiences
|
||||
- Relationship tracking between characters (friendships, rivalries, etc.)
|
||||
|
||||
### 💬 Intelligent Conversations
|
||||
- Characters initiate conversations on their own schedule
|
||||
- Natural conversation pacing with realistic delays
|
||||
- Topic generation based on character interests and context
|
||||
- Multi-threaded conversation support
|
||||
- Characters can interrupt, change subjects, or react emotionally
|
||||
|
||||
### 🧠 Advanced Memory & Learning
|
||||
- Long-term memory storage across weeks/months
|
||||
- Context window management for efficient LLM usage
|
||||
- Conversation summarization for maintaining long-term context
|
||||
- Memory consolidation and importance scoring
|
||||
- Relationship mapping and emotional tracking
|
||||
|
||||
### 🔄 Self-Modification
|
||||
- Characters analyze their own behavior and evolve
|
||||
- Dynamic memory management (choosing what to remember/forget)
|
||||
- Self-reflection cycles for personality development
|
||||
- Ability to create their own social rules and norms
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
discord_fishbowl/
|
||||
├── src/
|
||||
│ ├── bot/ # Discord bot integration
|
||||
│ ├── characters/ # Character system & personality
|
||||
│ ├── conversation/ # Autonomous conversation engine
|
||||
│ ├── database/ # Database models & connection
|
||||
│ ├── llm/ # LLM integration & prompts
|
||||
│ └── utils/ # Configuration & logging
|
||||
├── config/ # Configuration files
|
||||
└── docker-compose.yml # Container deployment
|
||||
```
|
||||
|
||||
## Requirements
|
||||
|
||||
- Python 3.8+
|
||||
- PostgreSQL 12+
|
||||
- Redis 6+
|
||||
- Local LLM service (Ollama recommended)
|
||||
- Discord Bot Token
|
||||
|
||||
## Quick Start
|
||||
|
||||
### 1. Setup Local LLM (Ollama)
|
||||
|
||||
```bash
|
||||
# Install Ollama
|
||||
curl -fsSL https://ollama.ai/install.sh | sh
|
||||
|
||||
# Pull a model (choose based on your hardware)
|
||||
ollama pull llama2 # 4GB RAM
|
||||
ollama pull mistral # 4GB RAM
|
||||
ollama pull codellama:13b # 8GB RAM
|
||||
ollama pull llama2:70b # 40GB RAM
|
||||
|
||||
# Start Ollama service
|
||||
ollama serve
|
||||
```
|
||||
|
||||
### 2. Setup Discord Bot
|
||||
|
||||
1. Go to [Discord Developer Portal](https://discord.com/developers/applications)
|
||||
2. Create a new application
|
||||
3. Go to "Bot" section and create a bot
|
||||
4. Copy the bot token
|
||||
5. Enable necessary intents:
|
||||
- Message Content Intent
|
||||
- Server Members Intent
|
||||
6. Invite bot to your server with appropriate permissions
|
||||
|
||||
### 3. Install Dependencies
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone <repository-url>
|
||||
cd discord_fishbowl
|
||||
|
||||
# Install Python dependencies
|
||||
pip install -r requirements.txt
|
||||
|
||||
# Setup environment variables
|
||||
cp .env.example .env
|
||||
# Edit .env with your configuration
|
||||
```
|
||||
|
||||
### 4. Configure Environment
|
||||
|
||||
Edit `.env` file:
|
||||
|
||||
```env
|
||||
# Discord Configuration
|
||||
DISCORD_BOT_TOKEN=your_bot_token_here
|
||||
DISCORD_GUILD_ID=your_guild_id_here
|
||||
DISCORD_CHANNEL_ID=your_channel_id_here
|
||||
|
||||
# Database Configuration
|
||||
DB_HOST=localhost
|
||||
DB_PORT=5432
|
||||
DB_NAME=discord_fishbowl
|
||||
DB_USER=postgres
|
||||
DB_PASSWORD=your_password_here
|
||||
|
||||
# Redis Configuration
|
||||
REDIS_HOST=localhost
|
||||
REDIS_PORT=6379
|
||||
|
||||
# LLM Configuration
|
||||
LLM_BASE_URL=http://localhost:11434
|
||||
LLM_MODEL=llama2
|
||||
```
|
||||
|
||||
### 5. Setup Database
|
||||
|
||||
```bash
|
||||
# Start PostgreSQL and Redis (using Docker)
|
||||
docker-compose up -d postgres redis
|
||||
|
||||
# Run database migrations
|
||||
alembic upgrade head
|
||||
|
||||
# Or create tables directly
|
||||
python -c "import asyncio; from src.database.connection import create_tables; asyncio.run(create_tables())"
|
||||
```
|
||||
|
||||
### 6. Initialize Characters
|
||||
|
||||
The system will automatically create characters from `config/characters.yaml` on first run. You can customize the characters by editing this file.
|
||||
|
||||
### 7. Run the Application
|
||||
|
||||
```bash
|
||||
# Run directly
|
||||
python src/main.py
|
||||
|
||||
# Or using Docker
|
||||
docker-compose up --build
|
||||
```
|
||||
|
||||
## Configuration
|
||||
|
||||
### Character Configuration (`config/characters.yaml`)
|
||||
|
||||
```yaml
|
||||
characters:
|
||||
- name: "Alex"
|
||||
personality: "Curious and enthusiastic about technology..."
|
||||
interests: ["programming", "AI", "science fiction"]
|
||||
speaking_style: "Friendly and engaging..."
|
||||
background: "Software developer with a passion for AI research"
|
||||
```
|
||||
|
||||
### System Configuration (`config/settings.yaml`)
|
||||
|
||||
```yaml
|
||||
conversation:
|
||||
min_delay_seconds: 30 # Minimum time between messages
|
||||
max_delay_seconds: 300 # Maximum time between messages
|
||||
max_conversation_length: 50 # Max messages per conversation
|
||||
quiet_hours_start: 23 # Hour to reduce activity
|
||||
quiet_hours_end: 7 # Hour to resume full activity
|
||||
|
||||
llm:
|
||||
model: llama2 # LLM model to use
|
||||
temperature: 0.8 # Response creativity (0.0-1.0)
|
||||
max_tokens: 512 # Maximum response length
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
### Commands
|
||||
|
||||
The bot responds to several admin commands (requires administrator permissions):
|
||||
|
||||
- `!status` - Show bot status and statistics
|
||||
- `!characters` - List active characters and their info
|
||||
- `!trigger [topic]` - Manually trigger a conversation
|
||||
- `!pause` - Pause autonomous conversations
|
||||
- `!resume` - Resume autonomous conversations
|
||||
- `!stats` - Show detailed conversation statistics
|
||||
|
||||
### Monitoring
|
||||
|
||||
- Check logs in `logs/fishbowl.log`
|
||||
- Monitor database for conversation history
|
||||
- Use Discord commands for real-time status
|
||||
|
||||
## Advanced Features
|
||||
|
||||
### Character Memory System
|
||||
|
||||
Characters maintain several types of memories:
|
||||
- **Conversation memories**: What was discussed and with whom
|
||||
- **Relationship memories**: How they feel about other characters
|
||||
- **Experience memories**: Important events and interactions
|
||||
- **Fact memories**: Knowledge they've learned
|
||||
- **Reflection memories**: Self-analysis and insights
|
||||
|
||||
### Personality Evolution
|
||||
|
||||
Characters can evolve over time:
|
||||
- Analyze their own behavior patterns
|
||||
- Modify personality traits based on experiences
|
||||
- Develop new interests and change speaking styles
|
||||
- Form stronger opinions and preferences
|
||||
|
||||
### Relationship Dynamics
|
||||
|
||||
Characters develop complex relationships:
|
||||
- Friendship levels that change over time
|
||||
- Rivalries and conflicts
|
||||
- Mentor/student relationships
|
||||
- Influence on conversation participation
|
||||
|
||||
### Autonomous Scheduling
|
||||
|
||||
The conversation engine:
|
||||
- Considers time of day for activity levels
|
||||
- Balances character participation
|
||||
- Manages conversation topics and flow
|
||||
- Handles multiple simultaneous conversations
|
||||
|
||||
## Deployment
|
||||
|
||||
### Docker Deployment
|
||||
|
||||
```bash
|
||||
# Production deployment
|
||||
docker-compose -f docker-compose.prod.yml up -d
|
||||
|
||||
# With custom environment
|
||||
docker-compose --env-file .env.prod up -d
|
||||
```
|
||||
|
||||
### Manual Deployment
|
||||
|
||||
1. Setup Python environment
|
||||
2. Install dependencies
|
||||
3. Configure database and Redis
|
||||
4. Setup systemd service (Linux) or equivalent
|
||||
5. Configure reverse proxy if needed
|
||||
|
||||
### Cloud Deployment
|
||||
|
||||
The application can be deployed on:
|
||||
- AWS (EC2 + RDS + ElastiCache)
|
||||
- Google Cloud Platform
|
||||
- Digital Ocean
|
||||
- Any VPS with Docker support
|
||||
|
||||
## Performance Tuning
|
||||
|
||||
### LLM Optimization
|
||||
- Use smaller models for faster responses
|
||||
- Implement response caching
|
||||
- Batch multiple requests when possible
|
||||
- Consider GPU acceleration for larger models
|
||||
|
||||
### Database Optimization
|
||||
- Regular memory cleanup for old conversations
|
||||
- Index optimization for frequent queries
|
||||
- Connection pooling configuration
|
||||
- Archive old data to reduce database size
|
||||
|
||||
### Memory Management
|
||||
- Configure character memory limits
|
||||
- Automatic memory consolidation
|
||||
- Periodic cleanup of low-importance memories
|
||||
- Balance between context and performance
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Common Issues
|
||||
|
||||
**Bot not responding:**
|
||||
- Check Discord token and permissions
|
||||
- Verify bot is in the correct channel
|
||||
- Check LLM service availability
|
||||
|
||||
**Characters not talking:**
|
||||
- Verify LLM model is loaded and responding
|
||||
- Check conversation scheduler status
|
||||
- Review quiet hours configuration
|
||||
|
||||
**Database errors:**
|
||||
- Ensure PostgreSQL is running
|
||||
- Check database credentials
|
||||
- Verify database exists and migrations are applied
|
||||
|
||||
**Memory issues:**
|
||||
- Monitor character memory usage
|
||||
- Adjust memory limits in configuration
|
||||
- Enable automatic memory cleanup
|
||||
|
||||
### Debugging
|
||||
|
||||
```bash
|
||||
# Enable debug logging
|
||||
export LOG_LEVEL=DEBUG
|
||||
|
||||
# Test LLM connectivity
|
||||
python -c "import asyncio; from src.llm.client import llm_client; print(asyncio.run(llm_client.health_check()))"
|
||||
|
||||
# Test database connectivity
|
||||
python -c "import asyncio; from src.database.connection import db_manager; print(asyncio.run(db_manager.health_check()))"
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
1. Fork the repository
|
||||
2. Create a feature branch
|
||||
3. Make your changes
|
||||
4. Add tests if applicable
|
||||
5. Submit a pull request
|
||||
|
||||
## License
|
||||
|
||||
This project is licensed under the MIT License - see the LICENSE file for details.
|
||||
|
||||
## Support
|
||||
|
||||
For support and questions:
|
||||
- Create an issue on GitHub
|
||||
- Check the troubleshooting section
|
||||
- Review the logs for error messages
|
||||
|
||||
---
|
||||
|
||||
🎉 **Enjoy your autonomous AI character ecosystem!**
|
||||
|
||||
Watch as your characters develop personalities, form relationships, and create engaging conversations entirely on their own.
|
||||
Reference in New Issue
Block a user