Files
prompt-generator/CLAUDE.md
T
wonder 4449059d7d docs: 添加 CLAUDE.md 项目指南文件
为 Claude Code 提供项目架构、常用命令和关键实现细节的说明文档
2026-06-26 15:37:16 +08:00

6.1 KiB
Raw Blame History

CLAUDE.md

This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.

项目概述

Prompt Generator 是一个面向 Coding Agent 的提示词构建与历史复盘工具,帮助开发者通过标签系统和片段模板组装高质量 Prompt。界面语言为中文。

常用命令

本地开发

# 配置环境变量(必须)
cp .env.example .env
# 编辑 .env 填入数据库和 LLM 配置

# 直接运行
go run .

# 构建二进制
go build -o server .

Docker 部署

docker compose up -d

测试

当前项目无测试文件(无 _test.go)。

架构概览

技术栈

  • 前端: 原生 HTML + Tailwind CSS (CDN) + JavaScript,无构建步骤
  • 后端: Go 1.24,标准库 net/http (使用 Go 1.22+ 方法路由 HandleFunc("METHOD /path", ...))
  • 数据库: MySQL 8.0,使用 github.com/go-sql-driver/mysql
  • 会话管理: github.com/gorilla/sessions (Cookie-based)
  • LLM: 兼容 OpenAI Chat Completions API (默认 DeepSeek)

目录结构

main.go                     # 入口,加载配置、初始化数据库、启动 HTTP 服务
frontend/                   # 静态前端
  index.html                # Prompt 构建器(核心页面)
  dashboard.html            # 历史复盘看板
  settings.html             # 设置页(LLM配置、主题)
  static/common.js          # 全局 JS:API 客户端、认证、Toast、主题
  static/common.css         # 全局样式、暗色/亮色主题变量
internal/
  auth/middleware.go         # 会话认证中间件
  config/config.go           # 环境变量加载到 Config 结构体
  db/db.go                   # MySQL 初始化、Schema 自动迁移、种子数据、设置持久化
  handlers/                  # HTTP 处理器
    auth.go                  # 登录/登出/认证检查
    builder.go               # Builder Session CRUD + Prompt 组装逻辑
    claude.go                # Claude Session/Prompt 查询(只读 prompts 表)
    dashboard.go             # 仪表盘项目/会话/Prompt 聚合查询
    settings.go              # LLM 设置读写(持久化到数据库)
    snippets.go              # 片段 CRUD
    suggestions.go           # LLM 智能建议端点
    tags.go                  # 标签和标签选项 CRUD
  llm/client.go              # OpenAI 兼容 LLM 客户端
  models/models.go           # 所有数据模型(Go 结构体 + JSON 标签)

数据库表

应用管理的表(自动迁移创建):

  • tags - 标签定义(system 或 personal 作用域)
  • tag_options - 标签下的选项(标签 + 约束文本)
  • snippets - 可复用片段模板
  • builder_sessions - 保存的 Prompt 构建会话
  • builder_session_tags - 会话与标签选项的多对多关联
  • builder_session_snippets - 会话与片段的多对多关联
  • settings - LLM 配置键值存储

只读表(由外部 Hook 服务写入):

  • prompts - 历史 Claude Code Prompt 记录

API 路由

无需认证:

  • POST /api/auth/login - 密码登录(返回会话 Cookie)
  • POST /api/auth/logout - 销毁会话
  • GET /api/auth/check - 检查认证状态

需要认证(通过 AuthMiddleware 包装):

  • 标签: GET/POST /api/tags, PUT/DELETE /api/tags/{id}, POST /api/tags/{id}/options, PUT/DELETE /api/tag-options/{id}
  • 片段: GET/POST /api/snippets, PUT/DELETE /api/snippets/{id}
  • Builder 会话: GET/POST /api/builder/sessions, GET/PUT/DELETE /api/builder/sessions/{id}
  • Claude 会话: GET /api/claude/sessions, GET /api/claude/sessions/{session_id}/prompts, GET /api/claude/sessions/{session_id}/builder
  • 仪表盘: GET /api/dashboard/projects, GET /api/dashboard/projects/{name}/sessions, GET /api/dashboard/prompts
  • 建议: POST /api/suggestions
  • 设置: GET/PUT /api/settings

前端架构

前端是多页应用(非 SPA),每个页面是独立的 HTML 文件:

  • / -> frontend/index.html(Prompt 构建器)
  • /dashboard -> frontend/dashboard.html(历史复盘)
  • /settings -> frontend/settings.html(设置)

共享资源在 frontend/static/ 目录:

  • common.js 提供 API(带认证处理的 fetch 封装)、Auth(登录弹窗、会话检查、登出)、Toast(通知)、Theme(暗色/亮色主题)、Draft(localStorage 自动保存)、debounce()、renderNavbar() 等全局模块
  • common.css 提供主题 CSS 变量和通用样式

环境变量

变量 说明 默认值
SERVER_PORT 服务端口 8080
SESSION_SECRET 会话密钥 default-secret-change-me
DB_HOST MySQL 地址 127.0.0.1
DB_PORT MySQL 端口 3306
DB_USER 数据库用户 root
DB_PASSWORD 数据库密码 -
DB_NAME 数据库名 prompt_generator
AUTH_PASSWORD 访问密码 admin
LLM_API_BASE_URL LLM API 地址 https://api.deepseek.com/v1
LLM_API_KEY LLM API Key -
LLM_MODEL_NAME 模型名称 deepseek-chat

关键实现细节

  1. 路由机制: 使用 Go 1.22+ 的方法路由语法 mux.HandleFunc("METHOD /path", handler),无需第三方路由库。

  2. 认证流程: 单密码认证(无用户系统),通过 Cookie 会话管理。所有 /api/ 路由(除 auth 外)都通过 AuthMiddleware 保护。

  3. 数据库迁移: 启动时自动执行 db.AutoMigrate() 创建表结构,db.SeedData() 插入初始系统标签和片段数据。

  4. Prompt 组装: 前端将标签选项的约束文本、选中片段、自定义文本拼接成最终 Prompt,后端 builder.go 提供保存/加载功能。

  5. LLM 集成: internal/llm/client.go 实现 OpenAI 兼容的 Chat Completions 调用,用于智能建议功能。设置持久化到数据库的 settings 表。

  6. 端口配置: Dockerfile 暴露端口 8080,docker-compose 映射 8083:8083,.env 设置 SERVER_PORT=8083。本地开发默认 8080。

  7. 部署优化: Dockerfile 使用阿里云 Alpine 镜像和 goproxy.cn Go 代理,适配中国网络环境。