AgentDesk 是一个基于 Nuxt 3 的全栈 AI 聊天与轻量 Agent 工作台。项目支持会话管理、流式 AI 回复、多模态附件输入、长期记忆、分享链接、反馈统计、Token 用量统计,以及 Cloudflare Pages + D1 + R2 的部署链路。
项目定位
它不是只完成一次问答的聊天界面,而是把一次 AI 交互沉淀为可管理、可回溯、可观测的工作流:用户可以发起对话或任务,查看模型回复与 Agent 执行过程,保存上下文和长期记忆,并通过分享、反馈与数据统计持续评估使用效果。
项目截图



功能说明
对话与上下文
- AI 流式聊天:基于 Vercel AI SDK 输出流式回复,并通过响应头返回 Trace ID、Prompt 版本和模型信息。
- 会话与消息管理:支持新建、置顶、重命名、自动生成标题和删除会话;用户、AI、系统消息统一持久化,刷新后可恢复完整上下文。
- 用户体系:支持登录、注册和登录态恢复;未登录用户也可先创建会话,完成登录或注册后自动迁移原有匿名数据。
- 多模态输入:图片自动路由至
qwen-vl-plus,文档自动路由至qwen-long,普通文本默认使用deepseek-v4-flash。 - 长期记忆:用户可管理沉淀的记忆内容;线上环境可结合 Cloudflare Vectorize 按相关性召回记忆,为后续对话补充上下文。
- Prompt 实验:支持 Prompt 版本管理与 A/B 流量分流,并将实际使用版本写入调用记录,便于在统计页比较效果与用量。
Agent 与过程可见性
- Agent 工作台:将目标拆解为任务、步骤和工具调用日志,记录状态变化、输入输出与执行结果,方便查看规划和执行过程。
- 执行轨迹与人工确认:通过轨迹抽屉查看任务、步骤和工具日志;写入、删除、部署或权限类高风险操作会进入人工确认入口,确认后才继续执行。
- 工具调用留痕:天气、网页、文件、项目上下文等工具通过统一注册表接入,执行日志与 Trace ID 可串联定位。
- 分享协作:可将会话快照生成分享链接,并控制公开范围、有效期与撤销状态,避免直接暴露原始会话数据。
运营与工程支撑
- 数据持久化:通过 Drizzle ORM 统一访问数据库;本地开发使用 SQLite,部署到 Cloudflare 后使用 D1,承载会话、消息、Agent 任务、分享链接、反馈和统计等核心业务数据。
- 文件上传:本地开发保存至
public/uploads,生产环境切换至 Cloudflare R2,保持调用方式一致。 - 边缘服务:Cloudflare KV 用于接口限流,R2 存储上传文件,Vectorize 支撑长期记忆检索,降低边缘部署下的外部依赖。
- 反馈与统计:提供点赞/点踩反馈,记录每次模型调用的 Prompt / Completion Token、模型和 Prompt 版本,并统计热门问题、成本估算和每日趋势。
- 可观测性:接入 Sentry;
X-Trace-ID串联前端、服务端、模型调用与工具执行,便于排查一次请求的完整链路。
技术栈
| 分类 | 技术 |
|---|---|
| 前端框架 | Nuxt 3、Vue 3、TypeScript |
| 状态与 UI | Pinia、Element Plus、Tailwind CSS、SCSS |
| AI 调用 | Vercel AI SDK、DeepSeek、通义千问 Qwen VL / Qwen Long |
| 数据库 | Drizzle ORM、本地 SQLite、Cloudflare D1 |
| 文件存储 | 本地文件系统、Cloudflare R2 |
| 云服务 | Cloudflare Pages、D1、R2、KV、AI、Vectorize |
| 可观测性 | Sentry、服务端日志、Trace ID |
| 构建部署 | Nitro、Wrangler、Cloudflare Pages preset |
项目亮点
- 面向生产的全栈闭环:从会话、消息、任务、分享、反馈到统计均有对应的数据模型和 API,不止是前端聊天演示。
- 多模型路由与多模态扩展:根据输入类型选择更匹配的模型,同时保留统一的聊天交互和消息存储体验。
- 可解释的 Agent 执行过程:任务、步骤、工具日志和 Trace ID 共同构成可回溯链路,降低 AI 调试和问题定位的成本。
- 本地与 Cloudflare 双环境适配:开发期使用 SQLite 和本地上传,部署后无缝衔接 D1、R2、KV、AI 与 Vectorize,适合边缘运行场景。
- 内容与页面不重复维护:About 页面在构建期读取本 README 的
about区间;项目说明更新后,部署产物会同步更新,兼容 Cloudflare Pages 的无文件系统运行环境。