2025-09-16 06:22:14 +00:00
# AGENTS.md
## Project Overview
Dify is an open-source platform for developing LLM applications with an intuitive interface combining agentic AI workflows, RAG pipelines, agent capabilities, and model management.
2025-09-27 02:05:30 +00:00
The codebase is split into:
2025-09-16 06:22:14 +00:00
2025-09-27 02:05:30 +00:00
- **Backend API** (`/api`): Python Flask application organized with Domain-Driven Design
2026-01-29 09:58:10 +00:00
- **Frontend Web** (`/web`): Next.js application using TypeScript and React
2025-09-16 06:22:14 +00:00
- **Docker deployment** (`/docker`): Containerized deployment configurations
2025-09-27 02:05:30 +00:00
## Backend Workflow
2025-09-16 06:22:14 +00:00
2026-01-16 06:28:47 +00:00
- Read `api/AGENTS.md` for details
2025-09-27 02:05:30 +00:00
- Run backend CLI commands through `uv run --project api <command>` .
- Integration tests are CI-only and are not expected to run in the local environment.
2025-09-16 06:22:14 +00:00
2025-09-27 02:05:30 +00:00
## Frontend Workflow
2025-09-16 06:22:14 +00:00
2026-01-29 09:58:10 +00:00
- Read `web/AGENTS.md` for details
2026-01-27 01:32:55 +00:00
2025-09-27 02:05:30 +00:00
## Testing & Quality Practices
2025-09-16 06:22:14 +00:00
2025-09-27 02:05:30 +00:00
- Follow TDD: red → green → refactor.
- Use `pytest` for backend tests with Arrange-Act-Assert structure.
- Enforce strong typing; avoid `Any` and prefer explicit type annotations.
- Write self-documenting code; only add comments that explain intent.
2025-09-16 06:22:14 +00:00
2025-09-27 02:05:30 +00:00
## Language Style
2025-09-16 06:22:14 +00:00
2025-09-27 02:05:30 +00:00
- **Python**: Keep type hints on functions and attributes, and implement relevant special methods (e.g., `__repr__` , `__str__` ).
2025-12-07 03:37:26 +00:00
- **TypeScript**: Use the strict config, rely on ESLint (`pnpm lint:fix` preferred) plus `pnpm type-check:tsgo` , and avoid `any` types.
2025-09-16 06:22:14 +00:00
2025-09-27 02:05:30 +00:00
## General Practices
2025-09-16 06:22:14 +00:00
2025-09-27 02:05:30 +00:00
- Prefer editing existing files; add new documentation only when requested.
- Inject dependencies through constructors and preserve clean architecture boundaries.
- Handle errors with domain-specific exceptions at the correct layer.
2025-09-16 06:22:14 +00:00
2025-09-27 02:05:30 +00:00
## Project Conventions
2025-09-16 06:22:14 +00:00
2025-09-27 02:05:30 +00:00
- Backend architecture adheres to DDD and Clean Architecture principles.
- Async work runs through Celery with Redis as the broker.
- Frontend user-facing strings must use `web/i18n/en-US/` ; avoid hardcoded text.