Files
QwenClaw-with-Auth/docs/RIG-INTEGRATION.md

418 lines
8.7 KiB
Markdown

# QwenClaw Rig Integration
## Overview
QwenClaw now integrates with **Rig** (https://github.com/0xPlaygrounds/rig), a high-performance Rust AI agent framework, providing:
- 🤖 **Multi-Agent Orchestration** - Agent councils for complex tasks
- 🛠️ **Dynamic Tool Calling** - Context-aware tool resolution
- 📚 **RAG Workflows** - Vector store integration for semantic search
-**High Performance** - Rust-native speed and efficiency
---
## Architecture
```
┌─────────────────┐ ┌─────────────────┐
│ QwenClaw │────▶│ Rig Service │
│ (TypeScript) │◀────│ (Rust + Rig) │
│ - Daemon │ │ - Agents │
│ - Web UI │ │ - Tools │
│ - Scheduling │ │ - Vector Store │
└─────────────────┘ └─────────────────┘
│ │
▼ ▼
Qwen Code OpenAI/Anthropic
Telegram SQLite Vectors
```
---
## Quick Start
### 1. Start Rig Service
```bash
cd rig-service
# Set environment variables
export OPENAI_API_KEY="your-key-here"
export RIG_HOST="127.0.0.1"
export RIG_PORT="8080"
# Build and run
cargo build --release
cargo run
```
### 2. Use Rig in QwenClaw
```typescript
import { initRigClient, executeWithRig } from "./src/rig";
// Initialize Rig client
const rig = initRigClient("127.0.0.1", 8080);
// Check if Rig is available
if (await rig.health()) {
console.log("✅ Rig service is running!");
}
// Create an agent
const sessionId = await rig.createAgent({
name: "researcher",
preamble: "You are a research specialist.",
model: "gpt-4",
});
// Execute prompt
const result = await executeWithRig(sessionId, "Research AI trends in 2026");
console.log(result);
```
---
## API Reference
### Agents
```typescript
// Create agent
const sessionId = await rig.createAgent({
name: "assistant",
preamble: "You are a helpful assistant.",
model: "gpt-4",
provider: "openai",
temperature: 0.7,
});
// List agents
const agents = await rig.listAgents();
// Execute prompt
const response = await rig.executePrompt(sessionId, "Hello!");
// Get agent details
const agent = await rig.getAgent(sessionId);
// Delete agent
await rig.deleteAgent(sessionId);
```
### Multi-Agent Councils
```typescript
// Create council with multiple agents
const councilId = await rig.createCouncil("Research Team", [
{
name: "researcher",
preamble: "You are a research specialist.",
model: "gpt-4",
},
{
name: "analyst",
preamble: "You are a data analyst.",
model: "gpt-4",
},
{
name: "writer",
preamble: "You are a content writer.",
model: "gpt-4",
},
]);
// Execute task with council
const result = await rig.executeCouncil(councilId, "Write a research report on AI");
console.log(result);
// Output includes responses from all agents
```
### Tools
```typescript
// List all available tools
const tools = await rig.listTools();
// Search for relevant tools
const searchTools = await rig.searchTools("research", 5);
// Returns: web_search, academic_search, etc.
```
### RAG (Retrieval-Augmented Generation)
```typescript
// Add document to vector store
const docId = await rig.addDocument(
"AI agents are transforming software development...",
{ source: "blog", author: "admin" }
);
// Search documents semantically
const results = await rig.searchDocuments("AI in software development", 5);
// Get specific document
const doc = await rig.getDocument(docId);
// Delete document
await rig.deleteDocument(docId);
```
---
## HTTP API
### Agents
| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | `/api/agents` | Create agent |
| GET | `/api/agents` | List agents |
| GET | `/api/agents/:id` | Get agent |
| POST | `/api/agents/:id/prompt` | Execute prompt |
| DELETE | `/api/agents/:id` | Delete agent |
### Councils
| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | `/api/councils` | Create council |
| GET | `/api/councils` | List councils |
| POST | `/api/councils/:id/execute` | Execute council task |
### Tools
| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/api/tools` | List all tools |
| POST | `/api/tools/search` | Search tools |
### Documents
| Method | Endpoint | Description |
|--------|----------|-------------|
| POST | `/api/documents` | Add document |
| GET | `/api/documents` | List documents |
| POST | `/api/documents/search` | Search documents |
| GET | `/api/documents/:id` | Get document |
| DELETE | `/api/documents/:id` | Delete document |
---
## Configuration
### Environment Variables
```bash
# Rig Service Configuration
RIG_HOST=127.0.0.1
RIG_PORT=8080
RIG_DATABASE_PATH=rig-store.db
# Model Providers
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
QWEN_API_KEY=...
# Defaults
RIG_DEFAULT_PROVIDER=openai
RIG_DEFAULT_MODEL=gpt-4
```
### Rig Service Config
Edit `rig-service/.env`:
```env
RIG_HOST=127.0.0.1
RIG_PORT=8080
RIG_DATABASE_PATH=./data/rig-store.db
OPENAI_API_KEY=your-key-here
```
---
## Use Cases
### 1. Research Assistant
```typescript
const researcher = await rig.createAgent({
name: "researcher",
preamble: "You are a research specialist. Find accurate, up-to-date information.",
model: "gpt-4",
});
// Add research papers to vector store
await rig.addDocument("Paper: Attention Is All You Need...", { type: "paper" });
await rig.addDocument("Paper: BERT: Pre-training...", { type: "paper" });
// Search and execute
const context = await rig.searchDocuments("transformer architecture", 3);
const result = await rig.executePrompt(
researcher,
`Based on this context: ${context.map(d => d.content).join("\n")}, explain transformers.`
);
```
### 2. Code Review Council
```typescript
const councilId = await rig.createCouncil("Code Review Team", [
{
name: "security",
preamble: "You are a security expert. Review code for vulnerabilities.",
},
{
name: "performance",
preamble: "You are a performance expert. Identify bottlenecks.",
},
{
name: "style",
preamble: "You are a code style expert. Ensure clean, maintainable code.",
},
]);
const review = await rig.executeCouncil(councilId, `
Review this code:
\`\`\`typescript
${code}
\`\`\`
`);
```
### 3. Content Creation Pipeline
```typescript
// Create specialized agents
const researcher = await rig.createAgent({
name: "researcher",
preamble: "Research topics thoroughly.",
});
const writer = await rig.createAgent({
name: "writer",
preamble: "Write engaging content.",
});
const editor = await rig.createAgent({
name: "editor",
preamble: "Edit and polish content.",
});
// Or use a council
const councilId = await rig.createCouncil("Content Team", [
{ name: "researcher", preamble: "Research topics thoroughly." },
{ name: "writer", preamble: "Write engaging content." },
{ name: "editor", preamble: "Edit and polish content." },
]);
const article = await rig.executeCouncil(councilId, "Write an article about AI agents");
```
---
## Building Rig Service
### Prerequisites
- Rust 1.70+
- Cargo
### Build
```bash
cd rig-service
# Debug build
cargo build
# Release build (optimized)
cargo build --release
# Run
cargo run
```
### Cross-Platform
```bash
# Linux/macOS
cargo build --release
# Windows (MSVC)
cargo build --release
# Cross-compile for Linux from macOS
cargo install cross
cross build --release --target x86_64-unknown-linux-gnu
```
---
## Troubleshooting
### Rig Service Won't Start
```bash
# Check if port is in use
lsof -i :8080
# Check logs
RUST_LOG=debug cargo run
```
### Connection Issues
```typescript
// Test connection
const rig = initRigClient("127.0.0.1", 8080);
const healthy = await rig.health();
console.log("Rig healthy:", healthy);
```
### Vector Store Issues
```bash
# Reset database
rm rig-store.db
# Check document count via API
curl http://127.0.0.1:8080/api/documents
```
---
## Performance
| Metric | QwenClaw (TS) | Rig (Rust) |
|--------|---------------|------------|
| Startup | ~2-3s | ~0.5s |
| Memory | ~200MB | ~50MB |
| Tool Lookup | O(n) | O(log n) |
| Concurrent | Event loop | Native threads |
---
## Next Steps
1. **Start Rig Service**: `cd rig-service && cargo run`
2. **Initialize Client**: `initRigClient()` in your code
3. **Create Agents**: Define specialized agents for tasks
4. **Use Councils**: Orchestrate multi-agent workflows
5. **Add RAG**: Store and search documents semantically
---
## Resources
- **Rig GitHub**: https://github.com/0xPlaygrounds/rig
- **Rig Docs**: https://docs.rig.rs
- **QwenClaw Repo**: https://github.rommark.dev/admin/QwenClaw-with-Auth
---
## License
MIT - Same as QwenClaw