|
|
5 dagen geleden | |
|---|---|---|
| .github | 3 maanden geleden | |
| assets | 3 maanden geleden | |
| backend | 6 dagen geleden | |
| frontend | 6 dagen geleden | |
| scripts | 1 maand geleden | |
| .dockerignore | 6 maanden geleden | |
| .env.example | 6 dagen geleden | |
| .gitignore | 7 maanden geleden | |
| LICENSE | 7 maanden geleden | |
| README.en.md | 6 dagen geleden | |
| README.md | 5 dagen geleden | |
| docker-compose.milvus.yml | 5 maanden geleden | |
| docker-compose.prod.yml | 3 maanden geleden | |
| docker-compose.yml | 3 maanden geleden |
English | 中文
Open-source AI customer service: AI + human agents, self-hostable, configurable, observable.
Ship a website chat widget and an agent dashboard together.
Marketing homepage
Visitor chat widget
Human agent mode
|
AI mode
|
widget.jsaccess_token required for visitor API / WebSocket (IDOR fix).env)/ FAQ searchAI-CS/
├── backend/ # Go: API, WebSocket, AI, RAG
│ ├── controller/
│ ├── service/
│ ├── repository/
│ ├── models/
│ ├── infra/ # DB, Milvus, ip2region, storage
│ ├── websocket/
│ ├── router/
│ ├── data/ # ip2region xdb (optional)
│ └── main.go
├── frontend/ # Next.js: site, widget, agent UI
│ ├── app/
│ ├── components/
│ ├── features/
│ └── public/widget.js
├── doc/
├── scripts/
├── assets/readme/
├── docker-compose.yml
├── docker-compose.prod.yml
└── .env.example
/.env only)Copy .env.example to .env and set at least: MYSQL_ROOT_PASSWORD, DB_PASSWORD, ADMIN_PASSWORD, ENCRYPTION_KEY (64-char hex).
git clone https://github.com/2930134478/AI-CS.git
cd AI-CS
cp .env.example .env
# edit .env, then:
docker-compose -f docker-compose.prod.yml up -d
admin / your ADMIN_PASSWORD)docker-compose up -d --build
go run main.go in backend/, npm run dev in frontend/See the Chinese README for demo-site admin policies, port notes, and full deployment details.
/.env)Full variable reference is in .env.example and the Chinese README configuration table.
Required for most deployments: database credentials, ADMIN_PASSWORD, ENCRYPTION_KEY, and (for production frontends) NEXT_PUBLIC_API_BASE_URL.
/v1/embeddings).MILVUS_DISABLED=true — app still runs; RAG offMILVUS_REQUIRED=true — exit if Milvus is unavailableRAG_MIN_SCORE (default 0.22) if search returns empty after chunking.Configure REDIS_URL (or REDIS_ADDR + password) so WebSocket events sync across replicas. Single instance works without Redis.
Paste before </body>. Point iframe src to https://your-domain/chat. The page auto-detects iframe embed mode (no double floating button). See Chinese README for the full HTML snippet, or use frontend/public/widget.js.
MILVUS_REQUIRED; use MILVUS_DISABLED=true if you do not need RAGRAG_MIN_SCORE (default 0.22)X-User-IdNEXT_PUBLIC_SITE_URLcurl :18080/health, docker logs ai-cs-backend; in Docker use DB_HOST=mysql<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=2930134478/AI-CS&type=Date&theme=dark" />
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=2930134478/AI-CS&type=Date" />
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=2930134478/AI-CS&type=Date" />
Issues and PRs welcome. For bugs, include deployment method, backend logs, and redacted .env keys.
MIT © 2025 2930134478