TRAE × Spec Kit 实战:五步构建流式 AI 对话 Web 应用

资料来源:火山引擎-开发者社区

本文作者:茉卷,TRAE 开发者用户

Spec Kit 介绍

1.1 什么是 Spec Kit?

Spec Kit 是 GitHub 开源的一个开发工具包(https://github.com/github/spec-kit),它基于**规范驱动开发(Spec-Driven Development)** 的理念,旨在帮助开发团队更快地构建高质量软件。这一工具包的核心思想是颠覆传统的软件开发流程,让规范成为开发的核心驱动力。

1.2 核心理念:规范驱动开发

传统的软件开发流程:

 编写规范 → 编写代码 → 测试 → 部署

而规范驱动开发则完全颠覆了这一模式:

  • 规范成为核心: 规范不再是临时性的文档,而是可执行的
  • 自动生成代码: 规范直接生成可工作的实现代码
  • 规范即代码: 规范本身就是开发的一部分,而不是前期准备工作

1.3 Spec Kit 的核心特点

01 提升开发效率

  • 让组织专注于产品场景,而不是重复编写基础代码
  • 减少编写“无差别代码”的时间投入
  • 通过标准化流程提高团队协作效率

02 完整的工具生态

  • Specify CLI:命令行工具,用于执行规范驱动开发流程
  • AI 代理支持:集成多种 AI 助手来辅助开发过程
  • 文档和最佳实践:提供完整的使用指南和模版

03 解决传统开发痛点

  • 规范写完就被丢弃
  • 代码与文档脱节
  • 重复编写相似的基础代码
  • 开发效率低下

Spec-kit 环境搭建详解

2.1 下载与安装

首先从 GitHub 获取 Spec Kit 工具包:

 git clone https://github.com/github/spec-kit cd spec-kit

2.2 python 虚拟环境配置

为了确保环境隔离和依赖管理的清洁性,建议使用 Python 虚拟环境:

 # 创建虚拟环境 python3 -m venv venv # 激活虚拟环境 source ./venv/bin/activate # 安装 Spec Kit pip3 install -e .

安装完成后,你将获得关键的提示词模板和工具脚本,这些是后续开发流程的基础。

实战案例:构建 GLM-4.6 深度思考 AI 交互页面

3.1 项目背景

本案例将利用 GLM-4.6 模型构建一个类似 DeepSeek 的前端 AI 对话页面,支持深度思考和流式输出功能。通过这个实际项目,我们将深入了解 Spec Kit 的五个关键命令的使用方法。

  • /speckit.constitution
  • /speckit.specify
  • /speckit.plan
  • /speckit.tasks
  • /speckit.implement

3.2 项目初始化

在安装了 Spec Kit 工具的项目目录下运行初始化命令:

 specify init Glm4.6-DeepThink

注意事项:

  • 目前 Spec Kit 还没有明确支持 TRAE,可以选择其他选项来下载关键脚本
  • 项目名称可以自定义,系统会在当前目录下创建对应的子目录
  • 初始化过程会下载必要的模板和配置文件

环境初始化成功

3.3 进入项目环境

使用 TRAE 进入项目目录,无需激活之前的虚拟环境:

 cd spec-kit-main/Glm4.6-DeepThink

Spec Kit 五大核心命令详解

4.1 制定项目宪章 - /speckit.constitution

目的: 建立项目的核心治理原则和开发标准

配置建议: TRAE 配置使用 GPT-5 + Builder

执行命令:

注意⚠️:speckit.constitution.md 是通过 # 号添加的 speckit.constitution.md 文件

 #speckit.constitution.md 制定以代码质量、测试标准、用户体验一致性及性能要求为核心的原则

输出成果:生成 constitution.md 文件:

上下滑动查看完整内容

 <!-- Sync Impact Report - Version change: N/A → 1.0.0 - Modified principles: - I → 代码质量(不可妥协) - II → 测试标准与覆盖率 - III → 用户体验一致性 - IV → 性能要求与预算 - Added sections: - 质量门禁与度量 - 开发工作流与质量关卡 - Removed sections: - 第五原则占位符(PRINCIPLE_5) - Templates requiring updates: - .specify/templates/tasks-template.md → ✅ updated(测试为强制项) - .specify/templates/plan-template.md → ✅ updated(修正命令路径说明) - .specify/templates/spec-template.md → ✅ reviewed(已与强制测试一致) - .claude/commands/* → ✅ reviewed(无需改动) - Follow-up TODOs: - TODO(RATIFICATION_DATE): 原始采纳日期未知,需项目历史确认 --> # Glm4.6-DeepThink Constitution ## Core Principles ### I. 代码质量(不可妥协) - MUST 通过统一的代码风格与静态检查(lint/format/类型检查)。 - MUST 维持复杂度与可维护性在预算内;超标需书面豁免与后续任务。 - MUST 完成代码审查:至少 1 名审查者;所有审查意见均已解决。 - MUST 公共接口具备文档与示例;破坏性变更需变更记录与迁移指引。 - Rationale: 高质量代码降低缺陷率与维护成本,提升可演进性。 ### II. 测试标准与覆盖率 - MUST 测试优先(Red-Green-Refactor):先写测试、确保失败,再实现。 - MUST 提供单元测试(新代码)、契约测试(公共接口)、集成测试(跨模块/关键流程)。 - MUST 在 CI 中执行测试并作为合并门禁。 - MUST 覆盖率门槛:新增模块行覆盖率 ≥ 80%,关键路径 ≥ 90%;不达标需豁免说明与补齐计划。 - Rationale: 明确测试标准确保功能可靠、可回归与可维护。 ### III. 用户体验一致性 - MUST 采用统一设计系统/组件库;无库时设定设计令牌(颜色、字号、间距)。 - MUST 遵循一致的交互模式(导航、反馈、空态与错误处理)。 - MUST 满足可访问性基线(接近 WCAG 2.1 AA):键盘可达、对比度、语义结构。 - MUST 文案与术语一致;适用场景下提供国际化支持并可审阅。 - Compliance: 所有 UI 改动需通过 UX 检查清单。 - Rationale: 一致性降低学习成本、提升效率与满意度。 ### IV. 性能要求与预算 - MUST 在 plan.md 中声明可衡量的性能目标与预算(示例:后端 p95 < 200ms;前端 LCP < 2.5s;内存峰值 < 100MB)。 - MUST 提供性能基线测试(微基准或端到端)并在 CI 中跟踪回归。 - MUST 合并前证明性能不劣化超过预算;若不可避免需迁移方案与豁免。 - SHOULD 为热点路径设定资源占用上限与监控指标(CPU/内存/带宽)。 - Rationale: 性能是用户体验与成本的关键约束。 ## 质量门禁与度量 - 门禁项:Lint/Format/Typecheck 全通过;测试通过且覆盖率达标;性能基线不回归;安全与依赖扫描通过。 - 失败则禁止合并;豁免需在 PR 描述记录、关联后续任务并标注影响范围与期限。 ## 开发工作流与质量关卡 - 研究与设计:Phase 0/1 产出 research、data-model、contracts 与性能目标;明确质量门禁。 - 实施与交付:按用户故事独立实现;测试优先;每个故事可独立验证与交付。 - 代码审查:至少 1 名审查者;按宪章检查清单逐项核对(质量、测试、UX、性能)。 - 发布与回滚:变更记录(CHANGELOG);发布标签;必要时提供回滚方案与影响评估。 ## Governance - 宪章优先于其他实践;违反需经豁免流程并记录。 - 修订流程:通过 PR 修改宪章,说明变更类型(MAJOR/MINOR/PATCH)、影响与迁移计划;需维护者批准。 - 版本策略:语义化版本—MAJOR(不兼容原则变更),MINOR(新增/扩展原则或章节),PATCH(澄清与文字优化)。 - 合规审查:所有 PR 必须验证对本宪章的遵循;运行时开发指南参考由 `.specify/templates/agent-file-template.md` 生成的开发指南文件。 **Version**: 1.0.0 | **Ratified**: TODO(RATIFICATION_DATE) | **Last Amended**: 2025-10-20 

4.2 需求规格说明 - /speckit.specify

目的: 描述要构建什么,专注于 what 和 why,而非技术实现

执行命令:

注意⚠️ : # speckit.specify.md 是通过 # 号添加的 speckit.specify.md 文件

 #speckit.specify.md 我想做一个类似DeepSeek 的AI 深度思考,流式文字返回的 AI 对话 Web 应用,用户可以输入问题,AI 思考之后回答。可以查看、删除 AI 和 用户的对话历史,用户也可以建立新AI对话。

输出成果:生成 001-streaming-ai-chat 目录:

上下滑动查看完整内容

 # Feature Specification: AI 深度思考流式聊天 Web 应用 **Feature Branch**: `001-streaming-ai-chat` **Created**: 2025-10-20 **Status**: Draft **Input**: User description: "我想做一个类似DeepSeek 的AI 深度思考,流式文字返回的 AI 对话 Web 应用,用户可以输入问题,AI 思考之后回答。可以查看、删除 AI 和 用户的对话历史,用户也可以建立新AI对话。" ## User Scenarios & Testing *(mandatory)* ### User Story 1 - 发起 AI 对话并获得流式回答 (Priority: P1) 用户在对话输入框中提出问题,系统启动深度思考流程,并以流式方式逐步呈现回答,使用户能即时获取进展。 **Why this priority**: 这是产品的核心价值主张,必须作为 MVP 首先实现。 **Independent Test**: 仅实现对话输入与流式回答功能,即可完成一次完整演示与价值交付,无需依赖历史或管理功能。 **Acceptance Scenarios**: 1. Given 用户在页面加载后,When 输入问题并点击发送,Then 1 秒内显示“正在思考/生成”状态,并在 2 秒内开始流式输出。 2. Given 正在流式输出,When 用户点击“停止/暂停”,Then 系统停止后续输出并明确显示已停止状态。 3. Given 流式输出完成,When 用户查看回答,Then 回答包含清晰结论与必要的推理摘要(不要求技术细节)。 --- ### User Story 2 - 查看与管理对话历史 (Priority: P2) 用户可以查看历史对话列表与详情,并可删除单条对话(需要确认动作)。 **Why this priority**: 提升长期使用体验与可回溯性,是次要但重要的辅助能力。 **Independent Test**: 历史管理可独立于流式回答运行,通过预置数据或先完成一次对话后测试列表/删除。 **Acceptance Scenarios**: 1. Given 存在至少 1 条已完成的对话,When 进入“历史”页面,Then 展示列表(标题、时间、摘要),并可点击进入详情。 2. Given 用户在详情页,When 点击“删除”并确认,Then 对话被移除,列表实时更新且不可恢复(提示删除成功)。 3. Given 历史为空,When 进入“历史”页面,Then 显示空态与引导开始新对话。 --- ### User Story 3 - 新建对话 (Priority: P3) 用户可以创建新的对话会话,以清晰的上下文开始新的提问与回答。 **Why this priority**: 便于任务分隔与主题切换,提升组织性与可用性。 **Independent Test**: 在不依赖其他故事的情况下,用户能够创建新会话并发送首条消息,获得流式回答。 **Acceptance Scenarios**: 1. Given 用户处于任一页面,When 点击“新建对话”,Then 新会话创建成功并自动进入会话页面,显示空态与输入框。 2. Given 新建会话,When 输入首条消息并发送,Then 流式回答开始,且该会话独立于其他会话的上下文。 --- ### Edge Cases - 输入为空或仅包含空白字符:系统阻止发送并给出提示。 - 超长输入或包含潜在敏感信息:提示并要求用户确认或截断处理。 - 网络中断或服务暂不可用:保留用户输入,提供重试与恢复提示;若在流式过程中中断,显示已中断并支持重新请求。 - 并发窗口/多标签页:会话状态在各窗口保持一致或明确不可用的限制说明。 ## Requirements *(mandatory)* ### Functional Requirements - **FR-001**: 系统 MUST 允许用户在会话中输入问题并发送。 - **FR-002**: 系统 MUST 以可视化的进行中状态(如“正在思考/生成”)反馈,并在合适时间内开始流式输出。 - **FR-003**: 系统 MUST 在同一会话中连续显示消息与回答,维持清晰的时间顺序和身份标识(用户/AI)。 - **FR-004**: 系统 MUST 支持暂停/停止流式输出,并在停止后清晰标注状态。 - **FR-005**: 系统 MUST 提供“历史”视图,列出会话摘要(如首条问题、最近回答时间)。 - **FR-006**: 系统 MUST 允许用户删除单条会话;删除需确认并成功后从历史移除。 - **FR-007**: 系统 MUST 允许用户新建会话并自动跳转到新会话界面。 - **FR-008**: 系统 MUST 在错误情况下提供用户友好提示与恢复选项(重试/返回会话)。 - **FR-009**: 系统 SHOULD 在会话详情中提供简要推理摘要或结论高亮,以改善可读性。 - **FR-010**: 系统 MUST 在合理时间内开始流式输出(参考成功标准),并在完成后呈现完整回答。 ### Key Entities *(include if feature involves data)* - **Conversation**: 表示一次会话,包含标题(可由首条问题自动生成)、创建时间、最后活动时间、摘要。 - **Message**: 属于某个会话,包含角色(用户/AI)、内容、时间戳、状态(进行中/完成/中断)。 ## Success Criteria *(mandatory)* ### Measurable Outcomes - **SC-001**: 95% 的回答在发送后 2 秒内开始流式显示(用户可见进展)。 - **SC-002**: 90% 的用户在首次使用时可独立完成“新建会话 → 发送问题 → 获取回答”。 - **SC-003**: 历史页面的主要任务完成率 ≥ 90%(查看详情、删除会话)。 - **SC-004**: 发生错误时,用户在 1 分钟内可以通过提供的恢复选项重新获得可用状态。 

4.3 技术实现规划 - /speckit.plan

目的: 指定实现技术栈、框架和架构设计

执行命令:

注意⚠️:# speckit.plan.md 需要用 # 号选中 speckit.plan.md 文件

 #speckit.plan.md 用vite react 实现前端页面。 glm4.6 的API 说明可以参考 https://docs.bigmodel.cn/cn/guide/models/text/glm-4.6

输出成果:生成包括 plan.md 文件的一些文档

plan.md 文档

上下滑动查看完整内容

 # Implementation Plan: Streaming AI Chat **Branch**: `001-streaming-ai-chat` | **Date**: 2025-10-20 | **Spec**: `/specs/001-streaming-ai-chat/spec.md` **Input**: Feature specification from `/specs/001-streaming-ai-chat/spec.md` **Note**: This template is filled in by the `/speckit.plan` command. See `.claude/commands/speckit.plan.md` for the execution workflow. ## Summary - Build a DeepSeek-like conversational web app with streaming AI answers, question input, and history management(view, delete, new). - Frontend with Vite + React; streaming via `ReadableStream` from a backend proxy that calls GLM-4.6 with `stream: true`. - History stored client-side in IndexedDB; no auth for v1. Backend used only for secure API key proxy and streaming transformation. - Tests mandatory per constitution: unit + integration for core flows; performance budgets enforced. ## Technical Context **Language/Version**: TypeScript 5.x (frontend), Node.js 20 (backend), React 18, Vite 5 **Primary Dependencies**: React Router v6, Zustand (state) or Recoil, `idb-keyval` (IndexedDB), Vitest + React Testing Library, Express (proxy) **Storage**: Client-side IndexedDB for conversation history(v1). Server persists N/A in v1; future P2 can add DB. **Testing**: Vitest + React Testing Library(unit/integration), optional Playwright for E2E in P2 **Target Platform**: Modern browsers(Chromium/Firefox/Safari), desktop and mobile **Project Type**: web **Performance Goals**: First stream chunk < 2s; p95 chunk interval < 300ms; LCP < 2.5s; input-to-stream start < 4s **Constraints**: API key only on server; memory footprint < 50MB; offline-capable for local history read; graceful abort/pause **Scale/Scope**: ~3 pages, ~20 components, 1 backend proxy route, client-only history ## Constitution Check *GATE: Must pass before Phase 0 research. Re-check after Phase 1 design.* - Code Quality: TypeScript strict mode, ESLint + Prettier; enforce typed APIs. [PLANNED] - Testing: Unit + integration for Chat input/send, streaming render, stop/pause, history list/delete. Coverage ≥ 80% on changed code. [PLANNED] - UX Consistency: Shared design tokens, consistent loading/empty/error states, accessible controls. [PLANNED] - Performance: Budgets stated above; add measurement hooks and CI checks. [PLANNED] - Security: API key in server env only, CORS restrict to app origin, no PII storage. [PLANNED] Status: PASS (planned). Will re-check after Phase 1and adjust if any violations arise. ## Project Structure ### Documentation (this feature) 

specs/001-streaming-ai-chat/

├── plan.md # This file(/speckit.plan command output)

├── research.md # Phase 0 output(/speckit.plan command)

├── data-model.md # Phase 1 output(/speckit.plan command)

├── quickstart.md # Phase 1 output(/speckit.plan command)

├── contracts/ # Phase 1 output(/speckit.plan command)

└── tasks.md # Phase 2 output(/speckit.tasks command - NOT created by /speckit.plan)

### Source Code(repository root) 

backend/

├── src/

│ ├── api/

│ │ └── chatProxy.ts # POST /api/chat/stream → GLM-4.6 proxy(stream)

│ ├── services/

│ │ └── glm.ts # BigModel GLM-4.6 client wrapper

│ └── models/ # (reserved for P2 if server persistence added)

└── tests/

├── unit/

└── integration/

frontend/

├── src/

│ ├── components/

│ │ ├── ChatInput.tsx

│ │ ├── MessageList.tsx

│ │ ├── StreamingMessage.tsx

│ │ └── HistoryList.tsx

│ ├── pages/

│ │ ├── Chat.tsx

│ │ └── History.tsx

│ └── services/

│ ├── ai.ts # streamChat(conversationId, messages)

│ ├── storage.ts # IndexedDB wrappers

│ └── api.ts # backend proxy calls

└── tests/

├── unit/

└── integration/

**Structure Decision**: Web application with `frontend` + minimal `backend` proxy. Client stores history locally(IndexedDB). Backend holds API key and streams GLM-4.6 responses to the client. Aligns with security and performance gates. 

4.4 任务分解 - /speckit.tasks

目的: 将实现计划分解为详细的可执行任务

执行命令:

注意⚠️:# speckit.tasks.md 是通过 # 号选中的 speckit.tasks.md 文件

 #speckit.tasks.md 

输出成果:生成 tasks.md 文件

上下滑动查看完整内容

 --- description: "Task list for Streaming AI Chat feature" --- # Tasks: Streaming AI Chat **Input**: Design documents from `/specs/001-streaming-ai-chat/` **Prerequisites**: plan.md (required), spec.md (required), research.md, data-model.md, contracts/ **Tests**: 测试为强制项(依据宪章);至少包含单元、契约与必要的集成测试。 **Organization**: Tasks are grouped by user story to enable independent implementation and testing of each story. ## Format: `[ID] [P?] [Story?] Description with file path` - **[P]**: Can run in parallel(different files, no dependencies) - **[Story]**: Which user story this task belongs to(e.g., US1, US2, US3) - Include exact file paths in descriptions --- ## Phase 1: Setup(Shared Infrastructure) **Purpose**: Project initialization and basic structure - [ ] T001 初始化前端项目结构与依赖:Vite + React + TS 在 `frontend/` - [ ] T002 初始化后端项目结构与依赖:Express + TS 在 `backend/` - [ ] T003 配置 TypeScript 严格模式于 `frontend/tsconfig.json` - [ ] T004 配置 TypeScript 严格模式于 `backend/tsconfig.json` - [ ] T005 [P] 配置 ESLint/Prettier 于 `frontend/.eslintrc.cjs` 与 `frontend/.prettierrc` - [ ] T006 [P] 配置 ESLint/Prettier 于 `backend/.eslintrc.cjs` 与 `backend/.prettierrc` - [ ] T007 创建后端环境变量文件 `backend/.env` 并设置 `BIGMODEL_API_KEY` - [ ] T008 创建后端基础服务器入口 `backend/src/server.ts`(Express 应用与端口配置) --- ## Phase 2: Foundational(Blocking Prerequisites) **Purpose**: 核心基础设施;完成后才能开始任何用户故事 - [ ] T009 [P] 建立后端配置管理 `backend/src/config.ts`(端口、CORS、API Key 读取) - [ ] T010 [P] 配置后端健康路由 `backend/src/api/health.ts`(GET `/api/health`) - [ ] T011 [P] 配置后端路由与中间件结构 `backend/src/api/index.ts` - [ ] T012 [P] 前端路由骨架:`frontend/src/main.tsx` 与 `frontend/src/App.tsx`(`/` Chat、`/history` History) - [ ] T013 [P] 创建前端存储服务骨架 `frontend/src/services/storage.ts`(方法签名按 data-model) - [ ] T014 [P] 创建前端后端调用骨架 `frontend/src/services/api.ts`(`/api/chat/stream` 与 `/api/health`) - [ ] T015 [P] 创建前端 AI 流式服务骨架 `frontend/src/services/ai.ts`(`streamChat(conversationId, messages)`) - [ ] T016 [P] 组件骨架:`frontend/src/components/ChatInput.tsx` - [ ] T017 [P] 组件骨架:`frontend/src/components/MessageList.tsx` - [ ] T018 [P] 组件骨架:`frontend/src/components/StreamingMessage.tsx` - [ ] T019 [P] 组件骨架:`frontend/src/components/HistoryList.tsx` - [ ] T020 配置前端测试环境 `frontend/vitest.config.ts` - [ ] T021 配置后端测试环境 `backend/vitest.config.ts` **Checkpoint**: Foundation ready - user story implementation can now begin in parallel --- ## Phase 3: User Story 1 - 发起 AI 对话并获得流式回答 (Priority: P1) 🎯 MVP **Goal**: 用户在会话页面输入问题并获得 GLM-4.6 的流式回答;支持停止/暂停与错误提示。 **Independent Test**: 仅凭此功能即可演示 MVP(发送 → 流式输出)。 ### User Story 1 测试(强制) ⚠️ - [ ] T022 [P] [US1] 后端契约测试:`backend/tests/contract/chatProxy.stream.contract.test.ts` - [ ] T023 [P] [US1] 前端单元测试:流式解析器 `frontend/tests/unit/streamParser.test.ts` - [ ] T024 [P] [US1] 前端集成测试:流式渲染 `frontend/tests/integration/streamingMessage.test.tsx` ### Implementation for User Story 1 - [ ] T025 [P] [US1] 实现 GLM-4.6 客户端封装 `backend/src/services/glm.ts` - [ ] T026 [US1] 实现后端代理路由 `backend/src/api/chatProxy.ts`(POST `/api/chat/stream` SSE 转发) - [ ] T027 [US1] 实现前端 AI 流式服务 `frontend/src/services/ai.ts`(`ReadableStream` + `AbortController`) - [ ] T028 [P] [US1] 实现输入组件 `frontend/src/components/ChatInput.tsx`(发送/停止/暂停) - [ ] T029 [P] [US1] 实现流式消息组件 `frontend/src/components/StreamingMessage.tsx` - [ ] T030 [US1] 实现消息列表组件 `frontend/src/components/MessageList.tsx` - [ ] T031 [US1] 组装页面 `frontend/src/pages/Chat.tsx`(状态管理与事件流) - [ ] T032 [US1] 错误处理与用户反馈 `frontend/src/pages/Chat.tsx` **Checkpoint**: User Story 1 完成并可独立测试与演示 --- ## Phase 4: User Story 2 - 查看与管理对话历史 (Priority: P2) **Goal**: 用户可查看历史会话列表与详情,并可删除会话(需要确认)。 **Independent Test**: 通过预置数据或完成一次会话后测试列表/删除。 ### User Story 2 测试(强制) ⚠️ - [ ] T033 [P] [US2] 前端单元测试:存储封装 `frontend/tests/unit/storage.test.ts` - [ ] T034 [P] [US2] 前端集成测试:历史列表/删除 `frontend/tests/integration/historyPage.test.tsx` ### Implementation for User Story 2 - [ ] T035 [P] [US2] 完成 IndexedDB 存储实现 `frontend/src/services/storage.ts`(list/create/delete/save) - [ ] T036 [P] [US2] 实现历史列表组件 `frontend/src/components/HistoryList.tsx` - [ ] T037 [US2] 实现历史页面 `frontend/src/pages/History.tsx`(删除确认与实时更新) - [ ] T038 [US2] 级联删除消息 `frontend/src/services/storage.ts`(按 `conversationId`) **Checkpoint**: User Stories 1 AND 2 可独立运行与测试 --- ## Phase 5: User Story 3 - 新建对话 (Priority: P3) **Goal**: 用户可创建新的会话并独立进行提问与流式回答。 **Independent Test**: 不依赖其他故事即可创建新会话并发送首条消息。 ### User Story 3 测试(强制) ⚠️ - [ ] T039 [P] [US3] 前端集成测试:新建会话流程 `frontend/tests/integration/newConversation.test.tsx` ### Implementation for User Story 3 - [ ] T040 [P] [US3] 新建会话入口与按钮 `frontend/src/pages/Chat.tsx` - [ ] T041 [US3] 实现创建会话 `frontend/src/services/storage.ts`(`createConversation(title?)`) - [ ] T042 [US3] 确保会话上下文隔离 `frontend/src/pages/Chat.tsx` **Checkpoint**: 所有用户故事均可独立完成与测试 --- ## Phase N: Polish & Cross-Cutting Concerns **Purpose**: 跨故事改进与优化 - [ ] T043 [P] 后端 CORS 限制来源 `backend/src/server.ts`(安全约束) - [ ] T044 [P] 后端有效负载大小限制 `backend/src/api/chatProxy.ts`(防滥用) - [ ] T045 性能度量钩子:首个流式分块与间隔 `frontend/src/services/ai.ts` - [ ] T046 [P] 文档与快速验证 `specs/001-streaming-ai-chat/quickstart.md` - [ ] T047 [P] 额外单元测试 `frontend/tests/unit/` - [ ] T048 代码清理与可维护性提升(命名、结构) --- ## Dependencies & Execution Order ### Phase Dependencies - Setup(Phase 1): 无依赖,可立即开始 - Foundational(Phase 2): 依赖 Setup 完成,阻塞所有用户故事 - User Stories(Phase 3+): 均依赖 Foundational 完成 - 可并行(若团队人手充足)或按优先级顺序(P1 → P2 → P3) - Polish(Final): 依赖所有目标用户故事完成 ### User Story Dependencies - User Story 1 (P1): Foundational 完成后可开始;不依赖其他故事 - User Story 2 (P2): Foundational 完成后可开始;应独立可测,最多集成 US1 的消息展示 - User Story 3 (P3): Foundational 完成后可开始;应独立可测 ### Within Each User Story - 测试先行且需先 FAIL 再实现 - 模型/存储 → 服务 → 组件/页面 → 集成 - 核心实现完成后再做集成与完善 ### Parallel Opportunities - Setup 与 Foundational 中标记 [P] 的任务均可并行 - Foundational 完成后,US1/US2/US3 可并行推进 - 同一故事中的测试、模型/服务与不同组件均可并行(标记 [P]) --- ## Parallel Example: User Story 1 ```bash # 并行启动 US1 的测试(示例) Task: "后端契约测试" → backend/tests/contract/chatProxy.stream.contract.test.ts Task: "前端单元测试:流式解析器" → frontend/tests/unit/streamParser.test.ts Task: "前端集成测试:流式渲染" → frontend/tests/integration/streamingMessage.test.tsx # 并行实现 US1 的模型/服务/组件(示例) Task: "GLM 客户端封装" → backend/src/services/glm.ts Task: "AI 流式服务" → frontend/src/services/ai.ts Task: "输入组件/流式组件" → frontend/src/components/ChatInput.tsx / StreamingMessage.tsx 

Implementation Strategy

MVP First(User Story 1 Only)

1.完成 Phase 1: Setup

2.完成 Phase 2: Foundational(阻塞项)

3.完成 Phase 3: User Story 1

4.停止并验证:独立运行 US1 测试与演示

5.如准备就绪,部署/演示

Incremental Delivery

1.完成 Setup + Foundational → 基础就绪

2.加入 US1 → 独立测试 → 部署/演示(MVP!)

3.加入 US2 → 独立测试 → 部署/演示

4.加入 US3 → 独立测试 → 部署/演示

Parallel Team Strategy

1.团队并行完成 Setup + Foundational

2.Foundational 完成后:

  • 开发者 A:User Story 1
  • 开发者 B:User Story 2
  • 开发者 C:User Story 3

3.各故事独立完成与集成

**4.5 代码实现 -** ***/speckit.implement*** **目的:** 根据任务列表执行具体的代码实现 **配置建议:** 模型切换到 Claude-4 以获得更好的代码生成能力 **执行命令:** 注意⚠️ : # speckit.implement.md 是通过 # 号选中 speckit.implement.md 文件 

#speckit.implement.md

 ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/1619a35a95c2411ea614ecf9cf4e03f7~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=e%2BF8Y6Z8EB6yzeOZshy%2FHzO4jqY%3D) **TRAE 会自动初始化环境:编辑 .gitignore,创建 vite react 环境。 (需要在终端按回车)** ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/c9ae2e5b83a44ca0a2a496c3907a5f46~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=sQCbyLgPTibk9leeiJcOxZ%2B6n4Y%3D) **TRAE 开始按阶段编程: 第1阶段** ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/4532255c0a8746dc9d0e555e986774a6~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=9a%2Fdieef5bz0w9ofD28Y89a%2Fqbg%3D) **TRAE 开始按阶段编程: 第2阶段 (如遇到思考次数上限,直接按 “继续” 即可)** 后续让TRAE 一直跑,直到创建整个代码。 ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/0d6f66987ec942928456bf2b7e627a08~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=9p661c9Bd3Uy8Qg453j%2FdfMBedE%3D) ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/b235b2fa9ff54157921b4845fa77513f~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=zhf8BTApoMMtATeoEGiOwLyeBmg%3D) **第一版效果呈现** **问题 1** 运行时,没有配置正确的 Glm4.6 KEY 。 ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/1ff2fb1fb66842d084835f6b1b2b61be~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=dP5iTVaYTO9jvlVpeO6dsiYmLs8%3D) 增加正式的 KEY。 ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/f3e0173b305144b8b3a06f7d0d891fce~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=5sjbjBj3xU7D%2Ft1svCFeAB9MlcE%3D) **问题 2** 没有正确处理流式返回消息。用 SOLO Builder 来修复问题。 ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/e4392fdae59340d7aca7bce381f18740~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=Jc7zKtvd4%2BmPN%2Bz9QEwURd3HliY%3D) ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/f37963f509e64f68a167e6b59e292a47~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=UNTFUvN%2FbZvj%2BilIMm1Q3jspUAs%3D) **问题 3** 思考过程中的内容没有显示: ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/50e96f657bf14be499a849a2e042c5cd~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=3gT%2Bt3gLi0tRQk3O%2B61NmBSXoAY%3D) ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/82eeff2c2deb44e19f5a033cc590789b~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=2mpxh74w1sPCGLjTMkvx0t7V3w0%3D) 用 SOLO Builder 和 Builder 解决上述问题 ,最终实现的第一版效果: ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/4a0d475705a6430e9e27b9012ed65e58~tplv-tlddhu82om-image.image?=&rk3s=8031ce6d&x-expires=1761209094&x-signature=%2FcO5%2BIvQ%2Bp5veLMn6kzVGkmQ3P0%3D) **总结与实践建议** 通过 Spec Kit 的五大核心命令,我们从项目宪章的制定,到需求规格的明确、技术规划的细化、任务分解的执行,直至代码实现的自动化生成,完整地构建了一个规范驱动的开发流程。 这个案例展示了 Spec Kit 如何将抽象的想法转化为可执行的 Web 应用原型,帮助开发者高效应对复杂交互场景。 ![picture.image](https://p3-volc-community-sign.byteimg.com/tos-cn-i-tlddhu82om/774eaacdb593479498a34d683183e012~tpl

Read more

详解如何复现LLaMA 4:从零开始利用Python构建

详解如何复现LLaMA 4:从零开始利用Python构建

🧠 向所有学习者致敬! “学习不是装满一桶水,而是点燃一把火。” —— 叶芝 我的博客主页:https://lizheng.blog.ZEEKLOG.net 🌐 欢迎点击加入AI人工智能社区! 🚀 让我们一起努力,共创AI未来! 🚀 LLaMA 4 发布以来已经面临了大量的批评,但LLaMA 4 是继 Mistral 之后的一个新进展,展示了基于 MoE(Mixture-of-Experts,混合专家)模型的优势。 在本博客中,我们从零开始构建 LLaMA 4 的 MoE 架构,以了解它是如何实际构建的。 更多LLM图解内容可以查看 详解如何复现DeepSeek R1:从零开始利用Python构建 详解如何从零用 Python复现类似 GPT-4o 的多模态模型 复现BPE 以下是我们在GPU 上训练的 220 万参数的 LLaMA MoE 在一个微小的英语数据集上训练

Stable Diffusion 3.5部署捷径:预置镜像免调试

Stable Diffusion 3.5部署捷径:预置镜像免调试 你是不是也和我一样,作为一名前端工程师,平时写Vue、React写得飞起,但一碰到Python环境配置就头大?周末心血来潮想玩玩最近爆火的Stable Diffusion 3.5——这个能一键生成高质量图像的AI神器,结果刚打开GitHub项目页面,就被一堆依赖库、CUDA版本、PyTorch兼容性问题劝退了? 别急,我也经历过这种“从兴奋到崩溃”的全过程。装了删、删了再装,折腾一整天连WebUI都没跑起来,显卡风扇转得比我还焦虑……直到我发现了一个开箱即用的解决方案:ZEEKLOG星图平台提供的Stable Diffusion 3.5 预置镜像。 这玩意儿有多香?简单说就是:不用配环境、不用装驱动、不用管CUDA版本,点一下就能启动SD3.5,直接开始画图! 这篇文章就是为你这样的“技术跨界者”量身打造的。我会带你一步步用预置镜像快速部署 Stable Diffusion 3.5,彻底绕过那些让人抓狂的环境配置坑。

2026年各大高校AIGC检测政策汇总(持续更新)

2026年各大高校AIGC检测政策汇总(持续更新)

2026年各大高校AIGC检测政策汇总(持续更新) 2026年毕业季正式来临,AIGC检测已经不再是"可能会查",而是"一定会查"。从去年下半年到现在,全国高校密集出台了一系列针对论文AI生成内容的检测政策。本文将为大家做一个尽可能全面的汇总,方便同学们快速了解自己学校的要求,提前做好准备。 本文持续更新,建议收藏。 2026年高校AIGC检测的整体趋势 在详细列出各高校政策之前,先给大家概括一下今年的整体形势: 三大核心变化 1. 检测范围全覆盖:不再只是抽检,而是全部论文必查AIGC 2. 检测标准趋严:AI率阈值从去年普遍的30%收紧到20%甚至10% 3. 处罚力度加大:从"修改后重新提交"升级到"延期答辩"甚至"取消答辩资格" 主要检测平台分布 * 知网AIGC检测系统:覆盖约60%的985/211高校

AIGC时代大模型幻觉问题深度治理:技术体系、工程实践与未来演进

AIGC时代大模型幻觉问题深度治理:技术体系、工程实践与未来演进

文章目录 * 一、幻觉问题的多维度透视与产业冲击 * 1.1 幻觉现象的本质特征与量化评估 * 1.2 产业级影响案例分析 * 二、幻觉问题的根源性技术解剖 * 2.1 数据污染的复合效应 * 2.1.1 噪声数据类型学分析 * 2.1.2 数据清洗技术实现 * 2.2 模型架构的先天缺陷 * 2.2.1 注意力机制的局限性 * 2.2.2 解码策略的博弈分析 * 2.3 上下文处理的边界效应 * 三、多层次解决方案体系构建 * 3.1 数据治理体系升级 * 3.1.1 动态数据质量监控 * 3.1.2 领域知识图谱构建 * 3.