Полный коммит проекта Perplexica
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
82
CONTRIBUTING.md
Normal file
82
CONTRIBUTING.md
Normal file
@@ -0,0 +1,82 @@
|
||||
# How to Contribute to Perplexica
|
||||
|
||||
Thanks for your interest in contributing to Perplexica! Your help makes this project better. This guide explains how to contribute effectively.
|
||||
|
||||
Perplexica is a modern AI chat application with advanced search capabilities.
|
||||
|
||||
## Project Structure
|
||||
|
||||
Perplexica's codebase is organized as follows:
|
||||
|
||||
- **UI Components and Pages**:
|
||||
- **Components (`src/components`)**: Reusable UI components.
|
||||
- **Pages and Routes (`src/app`)**: Next.js app directory structure with page components.
|
||||
- Main app routes include: home (`/`), chat (`/c`), discover (`/discover`), and library (`/library`).
|
||||
- **API Routes (`src/app/api`)**: Server endpoints implemented with Next.js route handlers.
|
||||
- **Backend Logic (`src/lib`)**: Contains all the backend functionality including search, database, and API logic.
|
||||
- The search system lives in `src/lib/agents/search`.
|
||||
- The search pipeline is split into classification, research, widgets, and writing.
|
||||
- Database functionality is in `src/lib/db`.
|
||||
- Chat model and embedding model providers are in `src/lib/models/providers`, and models are loaded via `src/lib/models/registry.ts`.
|
||||
- Prompt templates are in `src/lib/prompts`.
|
||||
- SearXNG integration is in `src/lib/searxng.ts`.
|
||||
- Upload search lives in `src/lib/uploads`.
|
||||
|
||||
### Where to make changes
|
||||
|
||||
If you are not sure where to start, use this section as a map.
|
||||
|
||||
- **Search behavior and reasoning**
|
||||
|
||||
- `src/lib/agents/search` contains the core chat and search pipeline.
|
||||
- `classifier.ts` decides whether research is needed and what should run.
|
||||
- `researcher/` gathers information in the background.
|
||||
|
||||
- **Add or change a search capability**
|
||||
|
||||
- Research tools (web, academic, discussions, uploads, scraping) live in `src/lib/agents/search/researcher/actions`.
|
||||
- Tools are registered in `src/lib/agents/search/researcher/actions/index.ts`.
|
||||
|
||||
- **Add or change widgets**
|
||||
|
||||
- Widgets live in `src/lib/agents/search/widgets`.
|
||||
- Widgets run in parallel with research and show structured results in the UI.
|
||||
|
||||
- **Model integrations**
|
||||
|
||||
- Providers live in `src/lib/models/providers`.
|
||||
- Add new providers there and wire them into the model registry so they show up in the app.
|
||||
|
||||
- **Architecture docs**
|
||||
- High level overview: `docs/architecture/README.md`
|
||||
- High level flow: `docs/architecture/WORKING.md`
|
||||
|
||||
## API Documentation
|
||||
|
||||
Perplexica includes API documentation for programmatic access.
|
||||
|
||||
- **Search API**: For detailed documentation, see `docs/API/SEARCH.md`.
|
||||
|
||||
## Setting Up Your Environment
|
||||
|
||||
Before diving into coding, setting up your local environment is key. Here's what you need to do:
|
||||
|
||||
1. Run `npm install` to install all dependencies.
|
||||
2. Use `npm run dev` to start the application in development mode.
|
||||
3. Open http://localhost:3000 and complete the setup in the UI (API keys, models, search backend URL, etc.).
|
||||
|
||||
Database migrations are applied automatically on startup.
|
||||
|
||||
For full installation options (Docker and non Docker), see the installation guide in the repository README.
|
||||
|
||||
**Please note**: Docker configurations are present for setting up production environments, whereas `npm run dev` is used for development purposes.
|
||||
|
||||
## Coding and Contribution Practices
|
||||
|
||||
Before committing changes:
|
||||
|
||||
1. Ensure that your code functions correctly by thorough testing.
|
||||
2. Always run `npm run format:write` to format your code according to the project's coding standards. This helps maintain consistency and code quality.
|
||||
3. We currently do not have a code of conduct, but it is in the works. In the meantime, please be mindful of how you engage with the project and its community.
|
||||
|
||||
Following these steps will help maintain the integrity of Perplexica's codebase and facilitate a smoother integration of your valuable contributions. Thank you for your support and commitment to improving Perplexica.
|
||||
Reference in New Issue
Block a user