cherry-studio/src/main/services/agents
2025-09-22 16:32:32 +08:00
..
database Refactor/agent align (#10276) 2025-09-20 16:56:53 +08:00
interfaces Refactor/agent align (#10276) 2025-09-20 16:56:53 +08:00
services Refactor logging levels in transform.ts and adjust JSON body parser configuration in app.ts 2025-09-22 16:32:32 +08:00
AGENT_MESSAGE_ARCHITECTURE.md rewrite agents schema and types 2025-09-16 23:55:31 +08:00
BaseService.ts ♻️ refactor: standardize tool management and API responses 2025-09-21 17:23:04 +08:00
drizzle.config.ts feat: Implement database migration system and update agent/session handling 2025-09-17 14:59:08 +08:00
errors.ts 💄 style: format code with yarn format 2025-09-21 16:44:54 +08:00
index.ts feat(agents): implement model validation for agent and session creation/updating 2025-09-19 20:20:20 +08:00
README.md feat(agents): implement model validation for agent and session creation/updating 2025-09-19 20:20:20 +08:00
TODO.md Refactor/agent align (#10276) 2025-09-20 16:56:53 +08:00

Agents Service

Simplified Drizzle ORM implementation for agent and session management in Cherry Studio.

Features

  • Native Drizzle migrations - Uses built-in migrate() function
  • Zero CLI dependencies in production
  • Auto-initialization with retry logic
  • Full TypeScript type safety
  • Model validation to ensure models exist and provider configuration matches the agent type

Schema

  • agents.schema.ts - Agent definitions
  • sessions.schema.ts - Session and message tables
  • migrations.schema.ts - Migration tracking

Usage

import { agentService } from './services'

// Create agent - fully typed
const agent = await agentService.createAgent({
  type: 'custom',
  name: 'My Agent',
  model: 'anthropic:claude-3-5-sonnet-20241022'
})

Model Validation

  • Model identifiers must use the provider:model_id format (for example anthropic:claude-3-5-sonnet-20241022).
  • model, plan_model, and small_model are validated against the configured providers before the database is touched.
  • Invalid configurations return a 400 invalid_request_error response and the create/update operation is aborted.

Development Commands

# Apply schema changes
yarn agents:generate

# Quick development sync
yarn agents:push

# Database tools
yarn agents:studio    # Open Drizzle Studio
yarn agents:health    # Health check
yarn agents:drop      # Reset database

Workflow

  1. Edit schema in /database/schema/
  2. Generate migration with yarn agents:generate
  3. Test changes with yarn agents:health
  4. Deploy - migrations apply automatically

Services

  • AgentService - Agent CRUD operations
  • SessionService - Session management
  • SessionMessageService - Message logging
  • BaseService - Database utilities
  • schemaSyncer - Migration handler

Troubleshooting

# Check status
yarn agents:health

# Apply migrations
yarn agents:migrate

# Reset completely
yarn agents:reset --yes

The simplified migration system reduced complexity from 463 to ~30 lines while maintaining all functionality through Drizzle's native migration system.