news 2026/7/13 2:17:35

专题栏说明

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
专题栏说明

AgentTalk / AITalk 项目新手复习导读

一、这套笔记适合谁

这套文档是为第一次系统学习 Django + Vue + AI 应用开发的新手整理的项目复习资料。

如果你只会一点点 Python、JavaScript,甚至还不太熟悉前后端分离,也可以按下面的阅读顺序慢慢看。阅读时不要求一次全部理解,建议每看完一节都回到项目代码里对照文件位置。

这份笔记是我自己的笔记结合AI生成的一份用来自己复习用的文档,放到博客方便复习。

项目地址:https://github.com/lionlnuc/AgentTalk


二、先用一句话理解这个项目

AgentTalk 是一个AI 角色聊天网站

用户可以:

  1. 注册、登录账号;
  2. 修改头像、用户名、简介;
  3. 创建自己的 AI 角色;
  4. 在首页浏览别人创建的角色;
  5. 点击角色开始聊天;
  6. 让 AI 以文字或语音回复;
  7. 让 AI 记住一部分长期对话信息;
  8. 让 AI 使用工具、查询知识库。

可以把它想象成:

一个类似“角色广场 + AI 聊天室 + 语音助手”的综合项目。


三、新手必须先理解的 10 个概念

3.1 前端是什么

前端就是用户能看到、能点击、能输入的页面。

本项目前端使用Vue 3

它负责:

  • 显示登录页、首页、个人空间、聊天框;
  • 接收用户输入;
  • 调用后端 API;
  • 把后端返回的数据展示出来。

3.2 后端是什么

后端就是运行在服务器上的程序。

本项目后端使用Django

它负责:

  • 保存用户、角色、聊天记录;
  • 校验用户是否登录;
  • 接收图片、音频文件;
  • 调用大模型、语音识别、语音合成;
  • 给前端返回 JSON 或流式数据。

3.3 数据库是什么

数据库用于长期保存数据。

例如:

  • 用户账号;
  • 用户头像;
  • AI 角色;
  • 好友关系;
  • 聊天记录;
  • 系统提示词。

如果不保存到数据库,刷新页面或重启服务后数据就会丢失。

3.4 API 是什么

API 可以理解成前端和后端之间约定好的“窗口”。

例如:

POST /api/user/account/login/

意思是:前端把用户名和密码交给这个接口,后端检查后告诉前端是否登录成功。

3.5 GET 和 POST 有什么区别

方法用途例子
GET获取数据获取首页角色列表
POST提交或修改数据登录、注册、创建角色

3.6 JSON 是什么

JSON 是前后端常用的数据格式。

{"result":"success","username":"alice"}

前端和后端都能方便地读取这种结构。

3.7 Token 是什么

Token 可以理解成“临时通行证”。

用户登录后,后端发给前端一个 Token。之后前端访问需要登录的接口时,就带上这个 Token,后端看到 Token 合法,就知道“你是谁”。

3.8 组件是什么

Vue 中的组件就是页面的一小块。

例如:

  • 导航栏是一个组件;
  • 用户菜单是一个组件;
  • 角色卡片是一个组件;
  • 聊天输入框是一个组件。

把页面拆成组件,可以让代码更清晰。

3.9 路由是什么

路由就是 URL 和页面之间的对应关系。

例如:

/ → 首页 /friend/ → 好友页面 /user/profile/ → 编辑资料页面

3.10 流式输出是什么

普通输出:AI 想完所有内容后一次性返回。

流式输出:AI 生成一点,就立刻返回一点。

这就是聊天中常见的“打字机效果”。


四、推荐学习路线

顺序文档新手重点
11. 配置环境、创建导航栏.md明白项目怎么跑起来,前后端怎么分工
22.登录模块.md明白用户如何登录,Token 如何保持状态
33. 编辑资料、编辑角色模块.md明白表单、图片、文件上传和角色 CRUD
44. 流式布局.md明白首页、个人空间、搜索和无限滚动
55. 文字聊天.md明白大模型聊天、SSE、历史记录和记忆
66. 语音模块.md明白语音输入、识别、合成和播放

五、项目目录用新手语言解释

AgentTalk/ ├── backend/ # 后端,负责数据库、API、大模型调用 ├── frontend/ # 前端,负责页面、按钮、表单、聊天框 ├── AITalk笔记/ # 你现在看的复习笔记 ├── deploy/ # 部署相关脚本和配置 └── README.md # 项目说明

5.1 backend 目录

backend/ ├── manage.py # Django 命令入口,例如运行服务、迁移数据库 ├── db.sqlite3 # 开发环境数据库 ├── backend/settings.py # 后端总配置 ├── backend/urls.py # 后端总路由 ├── web/models/ # 数据库表定义 ├── web/views/ # API 逻辑 ├── web/urls.py # API 路由表 ├── media/ # 用户上传的头像、背景图 └── static/ # 前端打包后的静态文件

5.2 frontend 目录

frontend/ ├── package.json # 前端依赖和脚本 ├── vite.config.js # Vite 打包配置 ├── src/main.js # 前端入口 ├── src/router/index.js # 前端路由表 ├── src/stores/user.js # 用户登录状态 ├── src/components/ # 公共组件 └── src/views/ # 页面组件

六、完整功能流程总览

6.1 登录流程

用户输入用户名密码 ↓ 前端调用登录 API ↓ 后端校验用户名密码 ↓ 后端返回 access token,并把 refresh token 写入 Cookie ↓ 前端保存用户信息 ↓ 导航栏显示用户头像

6.2 创建角色流程

用户填写角色名、人设、头像、背景图 ↓ 前端把图片裁剪成 Base64 ↓ Base64 转 File ↓ FormData 上传给后端 ↓ 后端保存角色和图片路径 ↓ 个人空间显示新角色

6.3 文字聊天流程

用户点击角色卡片 ↓ 后端创建或获取 Friend 关系 ↓ 打开聊天框 ↓ 用户发送文字 ↓ 后端拼接系统提示词、历史消息、长期记忆 ↓ 调用大模型 ↓ SSE 一段一段返回文本 ↓ 前端实时显示

6.4 语音聊天流程

用户说话 ↓ 前端 VAD 检测到一段人声 ↓ 音频上传到 ASR 接口 ↓ 后端把语音转成文字 ↓ 文字继续走聊天流程 ↓ 后端把 AI 回复转成语音 ↓ 前端边接收边播放

七、学习时怎么看代码

建议每次看一个模块时按这个顺序:

  1. 先看文档中的“本节目标”;
  2. 看“业务流程图”;
  3. 找后端模型models
  4. 找后端视图views
  5. 找后端路由urls.py
  6. 找前端页面views
  7. 找前端组件components
  8. 打开浏览器测试功能;
  9. 如果报错,先看终端和浏览器控制台。

八、常见调试位置

8.1 浏览器控制台

F12打开开发者工具。

重点看:

  • Console:前端 JS 报错;
  • Network:API 请求是否成功;
  • Application:Cookie、LocalStorage 等。

8.2 Django 终端

运行后端的窗口会显示:

  • 请求路径;
  • HTTP 状态码;
  • Python 报错堆栈。

8.3 常见状态码

状态码含义常见原因
200成功请求正常
400请求参数错误少传字段、字段为空
401未认证Token 缺失或过期
403无权限登录了但不能操作该资源
404找不到路径路由写错
500后端报错Python 代码异常

九、新手复习问题

  1. 前端和后端分别负责什么?
  2. 为什么登录后需要 Token?
  3. Access TokenRefresh Token有什么区别?
  4. 图片上传为什么要用FormData
  5. Vue 组件为什么要拆分?
  6. Django 的modelsviewsurls分别是什么?
  7. 什么是 SSE?为什么聊天要用流式输出?
  8. 为什么语音模块既有 ASR 又有 TTS?
  9. 什么是 RAG?为什么大模型需要知识库?
  10. 项目中Friend模型为什么很重要?

十、阅读建议

不要试图一次完全记住所有内容。推荐方式:

  1. 第一次:只理解功能流程;
  2. 第二次:看前后端文件位置;
  3. 第三次:理解关键代码;
  4. 第四次:自己尝试改一个小功能;
  5. 第五次:整理自己的问题和报错。

真正掌握项目不是靠背代码,而是靠理解:

用户操作发生后,数据从哪里来,到哪里去,中间经过了哪些处理。


十一、统一问题排查总表

11.1 后端启动类问题

现象优先检查常见原因解决方向
python manage.py runserver报错终端完整报错依赖缺失、配置错误、迁移未执行pip install、检查settings.py、执行migrate
数据库表不存在Django traceback没有迁移数据库python manage.py makemigrationspython manage.py migrate
接口 500Django 终端Python 异常看 traceback 最后一段,定位文件和行号
接口 404浏览器 NetworkURL 路径写错或urls.py未注册对照前端请求路径和后端路由

11.2 前端页面类问题

现象优先检查常见原因解决方向
页面白屏Console组件导入失败、JS 报错、静态资源 404看第一条红色错误
点击路由没反应router 配置name写错、路径写错对照router/index.js
刷新页面 404Django 路由缺少 SPA 兜底路由配置返回index.html的兜底规则
样式不生效Elements / NetworkTailwind 未编译、CSS 未加载检查 class、打包资源路径

11.3 登录认证类问题

现象优先检查常见原因解决方向
登录成功但仍显示未登录Pinia store没保存用户信息检查登录成功后的 store 更新
请求一直 401Request Headers没带Authorization或 token 过期检查 Axios 请求拦截器
refresh 失败CookiesCookie 未写入或过期检查withCredentials和 Cookie 配置
退出后仍显示头像store 状态没清空用户状态logout 时清空 token 和 userInfo

11.4 文件上传类问题

现象优先检查常见原因解决方向
后端拿不到图片Network Payload没用FormData或字段名不一致检查request.FILES.get('photo')
图片显示 404图片 URLMEDIA_URLMEDIA_ROOT配置错误检查媒体文件路由
更新图片后旧图还在media 目录没删除旧文件更新前删除旧文件
Croppie 不显示Console容器未渲染、组件重复初始化使用nextTick,卸载时destroy

11.5 列表和搜索类问题

现象优先检查常见原因解决方向
无限滚动重复请求Network没有isLoading请求开始和结束维护 loading 状态
搜索结果混乱组件状态没清空旧列表query 改变后重置列表和计数
搜索无结果但数据库有后端查询字段名或查询条件错检查Q查询和参数名
删除按钮触发打开聊天点击事件事件冒泡使用@click.stop

11.6 聊天和大模型类问题

现象优先检查常见原因解决方向
没有流式效果Response后端不是 SSE 格式检查text/event-streamyield
JSON.parse报错SSE 数据[DONE]当 JSON 解析先判断[DONE]再解析
AI 没上下文后端 prompt没拼接历史或记忆检查系统提示词、短期历史、长期记忆
工具调用不生效LangGraph 配置工具没绑定或 docstring 不清楚检查bind_tools和 ToolNode
RAG 查不到内容向量库文档没入库或 embedding 不一致重新构建向量库

11.7 语音类问题

现象优先检查常见原因解决方向
麦克风无法使用浏览器权限非 HTTPS、权限被拒绝使用 localhost 或 HTTPS,允许麦克风
VAD 加载失败Network模型路径错误检查 public/vad 静态资源
ASR 结果为空音频格式PCM 格式或采样率错误检查 Float32 转 PCM16
有文字没声音SSE 数据没收到 audio 或播放失败检查 base64、MediaSource、自动播放限制
新旧回复混在一起processId没打断旧流和旧音频每轮对话更新 processId 并 stopAudio

十二、统一接口调试模板

以后调试任意接口时,都按这个顺序看:

1. 请求 URL 是否正确 2. 请求方法 GET / POST 是否正确 3. 请求头是否包含 Authorization 4. Content-Type 是否符合接口要求 5. 请求参数名是否和后端一致 6. 后端是否进入对应 View 7. 后端返回状态码是多少 8. Response 内容是否符合前端预期 9. 前端是否正确读取字段 10. 页面状态是否正确更新

十三、统一自测方法

每完成一个模块,都做这 5 件事:

  1. 正常流程测试:按预期操作一次;
  2. 空值测试:不填必填项试一次;
  3. 未登录测试:退出登录后访问受保护接口;
  4. 权限测试:尝试操作不属于自己的资源;
  5. 刷新测试:刷新页面后状态是否正确恢复。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/13 2:17:03

OpenGauss内置函数初始化与查询全解析

1. initdb 时写入 pg_proc 的代码 builtin_funcs.ini 不是运行时读取的文本文件,而是通过 #include 在编译时被预处理器内联到 C…

作者头像 李华
网站建设 2026/7/13 2:15:53

AI代码审查实践指南:从环境配置到团队集成

1. 先搞清楚 AI 自动审查 PR 代码到底能帮你解决什么问题如果你在团队里做过代码审查,肯定遇到过这些情况:PR 堆积没人看、审查意见来回扯皮、低级错误反复出现、或者审查者时间不够只能草草过一遍。OpenAI Codex 这类 AI 代码审查工具,核心价…

作者头像 李华
网站建设 2026/7/13 2:15:51

深度学习入门指南:基于Python的神经网络理论与实践

很多刚接触深度学习的同学都有这样的困惑:面对复杂的数学公式和抽象的理论概念,不知道从哪里开始入手。其实深度学习入门并没有想象中那么困难,关键在于找到合适的学习资料和实践方法。《深度学习入门:基于Python的理论与实现》&a…

作者头像 李华
网站建设 2026/7/13 2:13:59

直流有刷电机驱动方案:TC78H651AFNG与PIC18F85K22组合设计

1. 项目背景与核心器件选型解析在工业自动化和消费电子领域,直流有刷电机因其结构简单、控制方便、成本低廉等优势,仍然是许多应用场景的首选驱动方案。TC78H651AFNG(东芝)与PIC18F85K22(Microchip)的组合&…

作者头像 李华
网站建设 2026/7/13 2:13:44

Houdini Vellum 布料 10 种材质参数对比:丝绸/牛仔/皮革等关键数值差异表

Houdini Vellum 布料材质参数完全指南:从丝绸到皮革的10种关键数值解析在数字角色服装、动态广告特效或游戏角色设计中,布料模拟的真实感往往决定了作品的质感层级。Houdini的Vellum系统提供了工业级精度的布料解算能力,但面对官方预设的10种…

作者头像 李华
网站建设 2026/7/13 2:11:25

LangGraph构建智能Agentic RAG:从传统检索到决策式问答系统

如果你正在构建基于大语言模型的智能应用,可能会遇到这样的困境:当用户提问时,模型要么直接回答(可能产生幻觉或信息过时),要么盲目检索外部知识库(即使问题很简单)。这种"要么…

作者头像 李华