/Users/xsser/Downloads/claude-agent/
GitHub: tanweai/pua-agent
push: GIT_SSH_COMMAND="ssh -i ~/.ssh/id_rsa2" git push
- 前端: Vite 6 + React 19 + TS + Tailwind (packages/web, :5173)
- 后端: Hono + Agent SDK (packages/server, :3001)
- API: 智谱 GLM via open.bigmodel.cn/api/anthropic
- Agent SDK: @anthropic-ai/claude-agent-sdk@0.2.81
- Auth: bcryptjs + jsonwebtoken (JSON 文件存储)
cd packages/server && npx tsx src/index.ts &
cd packages/web && npx vite --host &- POST /api/auth/register (邀请码+用户名+密码→JWT)
- POST /api/auth/login (用户名+密码→JWT)
- GET /api/auth/me (验证 token)
- Auth 中间件保护 /api/agent/*
- 前端 AuthPage (登录/注册 tab 切换)
- useAuth hook (localStorage token 持久化)
- Sidebar 用户名+登出按钮
- 预设邀请码: PUA2026, AGENT888, TANWEI666, OPENPUA, BETA001
- 数据存储: .data/users.json, .data/invites.json
- 忘记密码流程(邀请码验证→重置密码,因为没有邮箱系统)
- POST /api/auth/reset-password (inviteCode + username + newPassword)
- 前端"忘记密码?"链接→重置密码表单
- 设置页面/面板: 修改密码、修改用户名显示名
- POST /api/auth/change-password (oldPassword + newPassword)
- 用户头像(可选,字母头像即可)
- 主题偏好持久化到用户数据
- API 使用统计(总 cost、总 turns)
- 分享对话功能: 生成分享链接 /share/:id
- POST /api/share/create (conversationId → shareId)
- GET /api/share/:id (公开访问, 无需登录)
- 分享页面: 只读对话展示
- 关于页面(PUA Agent 品牌信息、版本号、官网链接)
- 删除账号功能
- 登录记住我(token 过期时间选择)
- 登录失败次数限制
- 注册时密码强度提示
- Session 管理(显示活跃 session, 可踢出)
- systemPrompt 必须用 string (NOT preset),否则 Claude 身份无法覆盖
- crypto.randomUUID 在 HTTP LAN 不可用 → uuid() fallback
- 图片上传: FileReader.readAsDataURL → POST /api/upload/image → Read 工具
- /pua slash command 在 SDK 中不工作 → systemPrompt 注入
- ESM 环境不能用 require() → 顶部 import
- 名称: PUA Agent, 由北京探微杜渐科技设计
- 官网: https://openpua.ai
- 主色: #e8453c
- Logo: public/pua-logo.svg