本文档完整记录了通过与 AI 对话进行 Agentic Coding 开发 MindMates(心理健康 AI 伴侣平台)的全过程,展示了全栈项目开发的人机协作编程实践。
初始需求: 构建一个基于大语言模型的心理健康 AI 伴侣平台,提供 7x24 小时智能心理咨询服务。
核心挑战:
- 三层架构协同:Vue 3 前端 + .NET 业务后端 + Python AI 后端
- RAG 增强的专业心理知识库
- 多轮对话上下文记忆
- 危机检测与求助资源推荐
- 跨平台移动端支持(iOS/Android)
- Docker Compose 容器化部署
技术栈选型:
- 前端:Vue 3 + TypeScript + Vite + Element Plus + Tailwind CSS
- 移动端:Capacitor 7.0
- 业务后端:.NET 10 + Entity Framework Core + PostgreSQL
- AI 后端:Python 3.13 + FastAPI + LangChain + Milvus
- AI 模型:小米 MiMo-V2-Flash
- 部署:Docker Compose + Nginx
需求分析:
需要一个心理健康咨询平台,用户可以随时与 AI 对话,系统能记住对话历史,并在检测到危机情况时提供帮助
AI 架构设计:
-
分离关注点: 采用三层架构
- 前端:用户交互、会话管理
- 业务后端:用户认证、数据持久化、会话管理
- AI 后端:LLM 对话、RAG 检索、危机检测
-
Clean Architecture: .NET 后端采用 DDD 分层
- Domain: 实体和接口
- Application: DTO 和服务接口
- Infrastructure: 仓储实现、EF Core、外部服务
- Api: 控制器和中间件
-
数据流设计:
用户 → 前端 → 业务后端 → AI 后端 → LLM
↓ ↓ ↓
PostgreSQL Milvus 心理知识库
学到的: AI 能根据需求快速设计出合理的全栈架构,并考虑到了职责分离和可扩展性。
用户请求:
使用 Vue 3 + Vite 初始化前端项目,集成 Element Plus、Tailwind CSS 和路由
AI 执行:
- 项目初始化(用户在终端执行):
npm create vite@latest frontend -- --template vue-ts
cd frontend
npm install- 依赖安装:
npm install vue-router pinia element-plus
npm install -D tailwindcss postcss autoprefixer
npm install axios- 创建的核心文件:
| 文件 | 说明 |
|---|---|
src/router/index.ts |
Vue Router 配置 |
src/stores/auth.ts |
Pinia 用户状态管理 |
src/stores/chat.ts |
Pinia 会话状态管理 |
src/api/auth.ts |
认证 API 客户端 |
src/api/chat.ts |
聊天 API 客户端 |
src/views/Login.vue |
登录页面 |
src/views/Register.vue |
注册页面 |
src/views/Chat.vue |
主聊天界面 |
src/views/Profile.vue |
用户个人资料 |
tailwind.config.js |
Tailwind CSS 配置 |
vite.config.ts |
Vite 配置,集成自动导入 |
- Element Plus 自动导入配置:
// vite.config.ts
import AutoImport from 'unplugin-auto-import/vite'
import Components from 'unplugin-vue-components/vite'
import { ElementPlusResolver } from 'unplugin-vue-components/resolvers'
export default defineConfig({
plugins: [
AutoImport({
resolvers: [ElementPlusResolver()],
}),
Components({
resolvers: [ElementPlusResolver()],
}),
],
})学到的: AI 能一次性搭建完整的前端工程架构,包括状态管理、路由、API 层和 UI 组件库配置。
用户请求:
使用 .NET 10 创建业务后端,采用 Clean Architecture,实现用户认证和会话管理
AI 执行:
- 项目结构创建(用户在终端执行):
dotnet new webapi -n MindMates.Api
dotnet new classlib -n MindMates.Domain
dotnet new classlib -n MindMates.Application
dotnet new classlib -n MindMates.Infrastructure
dotnet new sln -n MindMates
dotnet sln add **/*.csproj- 创建的核心文件:
Domain 层:
Entities/User.cs- 用户实体Entities/ChatSession.cs- 会话实体Entities/ChatMessage.cs- 消息实体Interfaces/IUserRepository.cs- 用户仓储接口Interfaces/IChatRepository.cs- 聊天仓储接口
Application 层:
DTOs/UserDto.cs- 用户 DTODTOs/ChatDto.cs- 聊天 DTOServices/IAuthService.cs- 认证服务接口Services/IChatService.cs- 聊天服务接口
Infrastructure 层:
Data/AppDbContext.cs- EF Core 上下文Repositories/UserRepository.cs- 用户仓储实现Repositories/ChatRepository.cs- 聊天仓储实现Services/AuthService.cs- JWT 认证服务Services/ChatService.cs- 聊天业务逻辑Services/AiService.cs- AI 后端调用服务Migrations/- 数据库迁移
Api 层:
Controllers/AuthController.cs- 认证 APIControllers/ChatController.cs- 聊天 APIProgram.cs- 应用入口,配置依赖注入
- JWT 认证配置:
// Program.cs
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = builder.Configuration["Jwt:Issuer"],
ValidAudience = builder.Configuration["Jwt:Audience"],
IssuerSigningKey = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Secret"]))
};
});- 数据库迁移(用户执行):
cd MindMates.Api
dotnet ef migrations add InitialCreate
dotnet ef database update学到的: AI 能正确实现 Clean Architecture 的分层结构,并处理复杂的依赖注入配置。
用户请求:
创建 AI 后端,集成小米 MiMo 大模型,实现 RAG 检索和危机检测
AI 执行:
- 创建的核心文件:
| 文件 | 说明 |
|---|---|
main.py |
FastAPI 应用入口 |
app/config.py |
配置管理(环境变量) |
app/models.py |
Pydantic 数据模型 |
app/llm.py |
MiMo LLM 集成 |
app/rag.py |
RAG 检索服务(Milvus) |
app/crisis_detector.py |
危机关键词检测 |
app/memory/conversation_memory.py |
对话记忆管理 |
app/memory/milvus_memory.py |
Milvus 向量存储 |
app/services/chat_service.py |
聊天服务主逻辑 |
requirements.txt |
Python 依赖 |
- MiMo LLM 集成:
# app/llm.py
from langchain_openai import ChatOpenAI
def get_llm():
"""获取 MiMo LLM 实例"""
return ChatOpenAI(
model="mimo-v2-flash",
openai_api_key=settings.MIMO_API_KEY,
openai_api_base=settings.MIMO_API_BASE,
temperature=0.7,
max_tokens=2048
)- RAG 检索实现:
# app/rag.py
from langchain_milvus import Milvus
from langchain_community.embeddings import ZhipuAIEmbeddings
def create_rag_chain():
"""创建 RAG 检索链"""
embeddings = ZhipuAIEmbeddings(
api_key=settings.ZHIPU_API_KEY,
model="embedding-3"
)
vectorstore = Milvus(
embedding_function=embeddings,
connection_args={"host": "localhost", "port": "19530"},
collection_name="psychology_knowledge"
)
retriever = vectorstore.as_retriever(search_kwargs={"k": 3})
return RetrievalQA.from_chain_type(
llm=get_llm(),
retriever=retriever,
chain_type="stuff"
)- 危机检测器:
# app/crisis_detector.py
CRISIS_KEYWORDS = [
"自杀", "结束生命", "不想活了", "想死",
"伤害自己", "自残", "割腕", "跳楼"
]
def detect_crisis(message: str) -> bool:
"""检测消息是否包含危机关键词"""
return any(keyword in message for keyword in CRISIS_KEYWORDS)
def get_crisis_resources() -> str:
"""返回危机求助资源"""
return """
如果您正在经历严重的心理困扰,请立即寻求专业帮助:
📞 全国心理援助热线: 400-161-9995
🏥 就近前往医院精神科或心理科
👨⚕️ 联系您信任的心理咨询师
"""- 对话记忆管理:
# app/memory/conversation_memory.py
from langchain.memory import ConversationBufferMemory
class ConversationMemoryManager:
def __init__(self):
self.memories: Dict[str, ConversationBufferMemory] = {}
def get_memory(self, session_id: str) -> ConversationBufferMemory:
"""获取或创建会话记忆"""
if session_id not in self.memories:
self.memories[session_id] = ConversationBufferMemory(
memory_key="chat_history",
return_messages=True
)
return self.memories[session_id]- 聊天服务主逻辑:
# app/services/chat_service.py
async def chat(request: ChatRequest) -> ChatResponse:
# 1. 检测危机
if detect_crisis(request.message):
return ChatResponse(
response=get_crisis_resources(),
is_crisis=True
)
# 2. 获取会话记忆
memory = memory_manager.get_memory(request.session_id)
# 3. RAG 检索增强
rag_chain = create_rag_chain()
context = await rag_chain.ainvoke(request.message)
# 4. 构造提示词
prompt = f"""
你是一位专业的心理咨询师,请基于以下知识回答用户:
{context}
用户问题:{request.message}
"""
# 5. 调用 LLM
llm = get_llm()
response = await llm.ainvoke(prompt, memory=memory)
return ChatResponse(response=response.content)学到的: AI 能正确集成 LangChain 生态,实现 RAG 检索和对话记忆管理。
用户请求:
添加 Capacitor 支持,使前端可以打包为 iOS 和 Android 应用
AI 执行:
- 安装 Capacitor(用户执行):
cd frontend
npm install @capacitor/core @capacitor/cli
npm install @capacitor/ios @capacitor/android
npx cap init- 配置文件:
// capacitor.config.ts
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = {
appId: 'com.mindmates.app',
appName: 'MindMates',
webDir: 'dist',
server: {
androidScheme: 'https'
},
plugins: {
SplashScreen: {
launchShowDuration: 2000,
backgroundColor: "#4F46E5"
}
}
};
export default config;- 构建和同步(用户执行):
npm run build
npx cap add ios
npx cap add android
npx cap sync- 打开原生项目:
npx cap open ios # 在 Xcode 中打开
npx cap open android # 在 Android Studio 中打开学到的: AI 能正确配置跨平台移动应用的构建流程。
用户请求:
创建 Docker Compose 配置,实现一键部署所有服务
AI 执行:
- 创建的文件:
| 文件 | 说明 |
|---|---|
docker-compose.yml |
主配置文件 |
frontend/Dockerfile |
前端容器 |
frontend/nginx.conf |
Nginx 配置 |
backend-business/Dockerfile |
.NET 后端容器 |
backend-ai/Dockerfile |
Python 后端容器 |
.env.example |
环境变量模板 |
deploy.sh |
部署脚本 |
- docker-compose.yml:
version: '3.8'
services:
frontend:
build: ./frontend
ports:
- "80:80"
depends_on:
- backend-business
backend-business:
build: ./backend-business
ports:
- "5000:5000"
environment:
- ConnectionStrings__DefaultConnection=${DB_CONNECTION}
- Jwt__Secret=${JWT_SECRET}
depends_on:
- postgres
backend-ai:
build: ./backend-ai
ports:
- "8000:8000"
environment:
- MIMO_API_KEY=${MIMO_API_KEY}
- ZHIPU_API_KEY=${ZHIPU_API_KEY}
depends_on:
- milvus
postgres:
image: postgres:17-alpine
environment:
- POSTGRES_DB=mindmates
- POSTGRES_USER=${DB_USER}
- POSTGRES_PASSWORD=${DB_PASSWORD}
volumes:
- postgres_data:/var/lib/postgresql/data
milvus:
image: milvusdb/milvus:v2.4.0
ports:
- "19530:19530"
volumes:
- milvus_data:/var/lib/milvus
volumes:
postgres_data:
milvus_data:- 前端 Nginx 配置:
server {
listen 80;
server_name localhost;
location / {
root /usr/share/nginx/html;
index index.html;
try_files $uri $uri/ /index.html;
}
# API 反向代理
location /api/ {
proxy_pass http://backend-business:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}- 启动脚本:
# deploy.sh
#!/bin/bash
set -e
echo "🚀 Starting MindMates deployment..."
# 1. 创建环境变量文件
if [ ! -f .env ]; then
cp .env.example .env
echo "⚠️ 请编辑 .env 文件配置环境变量"
exit 1
fi
# 2. 构建并启动容器
docker compose build
docker compose up -d
# 3. 等待服务就绪
echo "⏳ Waiting for services..."
sleep 10
# 4. 数据库迁移
docker compose exec backend-business dotnet ef database update
echo "✅ Deployment complete!"
echo "🌐 Frontend: http://localhost"
echo "📡 Business API: http://localhost:5000"
echo "🤖 AI API: http://localhost:8000"学到的: AI 能设计出完整的容器化部署方案,包括服务编排、数据持久化和反向代理配置。
用户请求:
为 Windows 用户创建本地开发启动脚本
AI 执行:
创建了 4 个批处理文件:
- start-frontend.bat:
@echo off
cd frontend
echo Starting frontend...
npm run dev- start-backend-business.bat:
@echo off
cd backend-business\MindMates.Api
echo Starting business backend...
dotnet run- start-backend-ai.bat:
@echo off
cd backend-ai
echo Starting AI backend...
python -m uvicorn main:app --reload --host 0.0.0.0 --port 8000- start-all.bat:
@echo off
echo Starting all MindMates services...
start cmd /k "call start-frontend.bat"
start cmd /k "call start-backend-business.bat"
start cmd /k "call start-backend-ai.bat"
echo All services started in separate windows!学到的: AI 考虑到了跨平台开发环境的便利性。
遇到的问题与解决:
现象: 前端调用后端 API 时被浏览器拦截
解决:
// Program.cs
builder.Services.AddCors(options =>
{
options.AddPolicy("AllowFrontend", policy =>
{
policy.WithOrigins("http://localhost:5173")
.AllowAnyHeader()
.AllowAnyMethod()
.AllowCredentials();
});
});
app.UseCors("AllowFrontend");现象: 登录后访问需要认证的接口返回 401
解决:
// src/api/auth.ts
import axios from 'axios'
const api = axios.create({
baseURL: import.meta.env.VITE_API_URL
})
// 请求拦截器:自动添加 Token
api.interceptors.request.use(config => {
const token = localStorage.getItem('token')
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
})
export default api现象: AI 后端启动时无法连接 Milvus
解决: 检查 Milvus 是否启动,并配置正确的连接参数
# app/config.py
class Settings(BaseSettings):
MILVUS_HOST: str = "localhost"
MILVUS_PORT: int = 19530
# 添加连接超时配置
MILVUS_TIMEOUT: int = 30
# app/rag.py
vectorstore = Milvus(
connection_args={
"host": settings.MILVUS_HOST,
"port": settings.MILVUS_PORT,
"timeout": settings.MILVUS_TIMEOUT
}
)现象: 刷新页面后对话历史消失
解决: 在业务后端持久化消息,前端从数据库加载历史
// src/views/Chat.vue
async function loadHistory() {
const { data } = await chatApi.getMessages(currentSession.value.id)
messages.value = data
}
onMounted(() => {
loadHistory()
})┌─────────────────────────────────────────────────────────────┐
│ 用户终端层 │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Web 浏览器 │ │ iOS App │ │ Android App │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└───────────────────────┬─────────────────────────────────────┘
│
┌───────────────────────▼─────────────────────────────────────┐
│ 前端层(Vue 3) │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Router │ Pinia State │ API Client │ UI Components │ │
│ └─────────────────────────────────────────────────────┘ │
└───────────────────────┬─────────────────────────────────────┘
│
┌───────────────┴───────────────┐
│ │
┌───────▼──────────┐ ┌────────▼─────────┐
│ 业务后端层 │ │ AI 后端层 │
│ (.NET 10) │ │ (Python) │
├──────────────────┤ ├──────────────────┤
│ • 用户认证 (JWT) │ │ • LLM 对话 │
│ • 会话管理 │◄────────▶│ • RAG 检索 │
│ • 消息持久化 │ │ • 危机检测 │
│ • API Gateway │ │ • 对话记忆 │
└────────┬─────────┘ └────────┬─────────┘
│ │
┌────────▼─────────┐ ┌────────▼─────────┐
│ PostgreSQL │ │ Milvus │
│ (关系型数据库) │ │ (向量数据库) │
└──────────────────┘ └──────────────────┘
PostgreSQL 表结构:
-- 用户表
CREATE TABLE Users (
Id UUID PRIMARY KEY,
Username VARCHAR(50) UNIQUE NOT NULL,
Email VARCHAR(100) UNIQUE NOT NULL,
PasswordHash VARCHAR(255) NOT NULL,
Nickname VARCHAR(50),
CreatedAt TIMESTAMP NOT NULL,
UpdatedAt TIMESTAMP NOT NULL
);
-- 会话表
CREATE TABLE ChatSessions (
Id UUID PRIMARY KEY,
UserId UUID NOT NULL,
Title VARCHAR(100),
CreatedAt TIMESTAMP NOT NULL,
UpdatedAt TIMESTAMP NOT NULL,
FOREIGN KEY (UserId) REFERENCES Users(Id)
);
-- 消息表
CREATE TABLE ChatMessages (
Id UUID PRIMARY KEY,
SessionId UUID NOT NULL,
Role VARCHAR(20) NOT NULL, -- 'user' or 'assistant'
Content TEXT NOT NULL,
CreatedAt TIMESTAMP NOT NULL,
FOREIGN KEY (SessionId) REFERENCES ChatSessions(Id)
);Milvus 集合设计:
# 心理知识向量集合
collection_schema = {
"collection_name": "psychology_knowledge",
"fields": [
{"name": "id", "type": "INT64", "is_primary": True},
{"name": "text", "type": "VARCHAR", "max_length": 2000},
{"name": "embedding", "type": "FLOAT_VECTOR", "dim": 1024},
{"name": "source", "type": "VARCHAR", "max_length": 100},
{"name": "category", "type": "VARCHAR", "max_length": 50}
]
}认证 API:
POST /api/auth/register- 用户注册POST /api/auth/login- 用户登录GET /api/auth/profile- 获取用户信息PUT /api/auth/profile- 更新用户信息
聊天 API(业务后端):
GET /api/chat/sessions- 获取会话列表POST /api/chat/sessions- 创建新会话GET /api/chat/sessions/{id}/messages- 获取消息历史POST /api/chat/sessions/{id}/messages- 发送消息(调用 AI 后端)
AI API(AI 后端):
POST /api/chat- AI 对话接口GET /health- 健康检查
// src/stores/chat.ts
import { defineStore } from 'pinia'
import type { ChatSession, ChatMessage } from '@/types'
export const useChatStore = defineStore('chat', {
state: () => ({
sessions: [] as ChatSession[],
currentSession: null as ChatSession | null,
messages: [] as ChatMessage[],
loading: false
}),
actions: {
async sendMessage(content: string) {
this.loading = true
try {
const { data } = await chatApi.sendMessage(
this.currentSession!.id,
content
)
this.messages.push(
{ role: 'user', content },
{ role: 'assistant', content: data.response }
)
} finally {
this.loading = false
}
}
}
})// Infrastructure/Services/AuthService.cs
public string GenerateJwtToken(User user)
{
var claims = new[]
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim(ClaimTypes.Name, user.Username),
new Claim(ClaimTypes.Email, user.Email)
};
var key = new SymmetricSecurityKey(
Encoding.UTF8.GetBytes(_configuration["Jwt:Secret"])
);
var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
var token = new JwtSecurityToken(
issuer: _configuration["Jwt:Issuer"],
audience: _configuration["Jwt:Audience"],
claims: claims,
expires: DateTime.Now.AddDays(7),
signingCredentials: creds
);
return new JwtSecurityTokenHandler().WriteToken(token);
}# app/services/chat_service.py
from fastapi import HTTPException
from app.models import ChatRequest, ChatResponse
from app.llm import get_llm
from app.rag import create_rag_chain
from app.crisis_detector import detect_crisis, get_crisis_resources
from app.memory.conversation_memory import memory_manager
async def process_chat(request: ChatRequest) -> ChatResponse:
"""处理聊天请求"""
# 1. 危机检测
if detect_crisis(request.message):
return ChatResponse(
response=get_crisis_resources(),
is_crisis=True
)
# 2. 获取会话记忆
memory = memory_manager.get_memory(request.session_id)
chat_history = memory.load_memory_variables({})
# 3. RAG 检索相关知识
rag_chain = create_rag_chain()
try:
rag_result = await rag_chain.ainvoke({
"query": request.message
})
context = rag_result.get("result", "")
except Exception as e:
print(f"RAG retrieval failed: {e}")
context = ""
# 4. 构造系统提示词
system_prompt = """
你是一位专业、温暖、富有同理心的心理咨询师。
你的职责:
- 倾听用户的困扰,给予情感支持
- 提供专业的心理学建议
- 帮助用户识别和管理情绪
- 必要时建议寻求专业帮助
交流原则:
- 使用温暖、共情的语气
- 避免评判和说教
- 尊重用户的感受和选择
- 保持专业边界
"""
if context:
system_prompt += f"\n\n相关专业知识:\n{context}"
# 5. 调用 LLM
llm = get_llm()
messages = [
{"role": "system", "content": system_prompt},
*chat_history.get("chat_history", []),
{"role": "user", "content": request.message}
]
try:
response = await llm.ainvoke(messages)
assistant_message = response.content
# 6. 更新记忆
memory.save_context(
{"input": request.message},
{"output": assistant_message}
)
return ChatResponse(
response=assistant_message,
is_crisis=False
)
except Exception as e:
raise HTTPException(
status_code=500,
detail=f"LLM service error: {str(e)}"
)| 功能 | 状态 | 说明 |
|---|---|---|
| 用户注册/登录 | ✅ | JWT 认证,密码哈希存储 |
| 创建会话 | ✅ | 用户可创建多个对话会话 |
| AI 对话 | ✅ | 基于 MiMo 模型的流畅对话 |
| 对话记忆 | ✅ | 多轮对话上下文保持 |
| RAG 检索 | ✅ | Milvus 向量检索心理知识 |
| 危机检测 | ✅ | 关键词匹配 + 求助资源推荐 |
| 消息持久化 | ✅ | PostgreSQL 存储历史消息 |
| 移动端支持 | ✅ | Capacitor 打包为 iOS/Android |
| Docker 部署 | ✅ | 一键启动所有服务 |
| 响应式 UI | ✅ | Element Plus + Tailwind CSS |
| 指标 | 数值 |
|---|---|
| 前端打包大小 | ~500KB (gzip) |
| API 平均响应时间 | <200ms |
| LLM 响应时间 | ~2-3秒 |
| RAG 检索时间 | <500ms |
| 向量维度 | 1024 |
| 数据库表数量 | 3 |
| API 端点数量 | 9 |
-
全栈协同: AI 能同时处理前端、后端、数据库、部署等各个层面,保持架构一致性
-
最佳实践: 自动采用 Clean Architecture、依赖注入、异步编程等现代开发模式
-
快速迭代: 从需求分析 → 架构设计 → 代码实现 → 部署配置,全流程对话式完成
-
问题诊断: 当遇到 CORS、JWT、数据库连接等问题时,AI 能快速定位并给出解决方案
-
文档生成: 自动生成 README、API 文档、配置说明
- 清晰需求: 明确说明功能目标和技术栈选择
- 分阶段推进: 先搭架构,再实现功能,最后优化细节
- 验证反馈: 运行代码,发现问题,及时反馈给 AI
- 知识互补: AI 提供技术方案,人类把控业务逻辑和用户体验
- 三层架构清晰分离: 前端、业务后端、AI 后端各司其职
- Clean Architecture: .NET 后端采用 DDD 分层,易于维护和扩展
- RAG 增强: Milvus 向量检索提升回答专业性
- 危机检测: 关键词匹配 + 求助资源,体现社会责任
- 跨平台: Web + iOS + Android 全覆盖
- 容器化部署: Docker Compose 一键启动,降低运维成本
| 项目 | 说明 |
|---|---|
| 项目名称 | MindMates - 心理健康 AI 伴侣平台 |
| 开发时间 | 2025 年 12 月 |
| 开发方式 | Agentic Coding(AI 对话式开发) |
| 对话轮次 | ~25 轮核心交互 |
| 前端技术栈 | Vue 3, TypeScript, Vite, Element Plus, Tailwind CSS, Capacitor |
| 业务后端技术栈 | .NET 10, Entity Framework Core, PostgreSQL, JWT |
| AI 后端技术栈 | Python 3.13, FastAPI, LangChain, Milvus, MiMo LLM |
| 部署方案 | Docker Compose + Nginx |
| 代码总量 | ~5000 行 |
| 支持平台 | Web, iOS, Android |
- 添加更多心理健康评估工具(PHQ-9、GAD-7)
- 实现语音对话功能(ASR + TTS)
- 支持情绪日记记录与分析
- 集成更多专业心理知识库
- 优化 LLM 提示词工程
- 添加用户反馈与评分系统
- 实现数据分析与可视化仪表板
- 多语言支持(英文、日文等)
Made with ❤️ using Vue 3, .NET 10 and MiMo
本文档由人类与 AI 协作编写,完整记录了全栈项目的对话开发过程。