小红书黑客松项目仓库。这个项目把人物传记、自述或聊天材料拆解成时间线节点,再把不同人生阶段的人格体放进同一场 Arena 里讨论同一个问题,最终输出讨论记录、总结、历史回放和分享海报。
当前仓库已经不是单一 Demo,而是一个可联调的多端工作区:
hackhathon/
backend/ # Node.js + TypeScript API / Arena runtime / 导入与海报生成
d/ # React + Vite Web 前端(历史目录名,实际承担 Web 端)
harmony/ # HarmonyOS ArkTS 客户端
shared/ # 共享领域契约与预设人物
deploy/ # 线上入口配置
项目的核心目标是把“一个人的不同人生阶段”产品化成可讨论、可回放、可分享的结构化体验:
- 输入人物材料 支持预设人物,也支持手动材料、微信导出、聊天记录上传。
- 解析时间线
从 biography / 导入材料中提取
3~6个关键节点。 - 生成人格体
每个节点对应一个
PersonaSpec,只允许知道当时已经发生的事实,不允许偷看未来。 - 运行 Arena 让 2 个以上阶段人格围绕同一议题进行聊天或辩论。
- 沉淀结果 输出消息流、总结、历史记录、分享页和海报资源。
- 预设人物:通过后端导入的默认角色库进入系统。
- 自定义人物:前端粘贴 biography,走
timeline/parse -> agents/build两段式链路。 - 文件导入:统一走
POST /api/profile-imports,支持:manualwechatchat
- 支持
chat/debate两种模式。 - 支持同步接口和 SSE 流式接口。
- 支持用户在讨论中插入新消息。
- 支持中断会话并保留阶段性结果。
- 支持历史 run 回放与继续续聊。
- 支持人格融合,生成新的合成人格参与讨论。
- 保存 Arena 结果,提供
runId供回放。 - 生成分享页与公开访问链接。
- 生成信息图 / 海报资源。
- 后端把生成资源通过
/generated/*暴露出来。
backend/提供 API、运行时、导入、持久化、海报生成。d/提供 Web Arena Studio、分享页、信息图页。harmony/提供 HarmonyOS 移动端角色库、创建角色、讨论、纪要与海报页。shared/作为三端共享语义基线,避免类型和字段漂移。
| 目录 | 作用 |
|---|---|
backend/ |
Express + TypeScript 服务,负责人物导入、时间线解析、人格构建、Arena 运行、海报生成、静态资源输出 |
d/ |
React 19 + Vite Web 前端,包含 Arena Studio、分享页、历史回放、海报入口 |
harmony/ |
HarmonyOS ArkTS 应用,包含角色库、导入、Arena、纪要、会议记录等页面 |
shared/ |
共享契约与预设数据,当前核心文件是 contracts.ts 和 presets.ts |
deploy/ |
当前线上入口配置,仓库中包含 zeabur-ingress.yaml |
docker-compose.yml |
本地 PostgreSQL 16 开发环境 |
- Node.js
- TypeScript
- Express 5
- PostgreSQL
- Zod
- Multer
- Claude Agent SDK / Claude Code
- SiliconFlow 兼容模型回退
- React 19
- React Router 7
- Vite
- TypeScript
- ArkTS
- ArkUI
- NetworkKit
- DevEco Studio / HarmonyOS SDK 6.0.2(22)
shared/contracts.ts 定义了三端共用的核心结构:
TimelineNodePersonaSpecPresetProfileArenaMessageArenaSummaryArenaRun
当前产品约束:
- 只讨论已经发生过的人生阶段,不做未来预测。
- 节点人格必须来源于时间线事实,不能完全凭空设定。
- 默认讨论聚焦 2~3 人格的小规模高质量对话。
GET /api/presets
-> GET /api/profiles/:profileId
-> 选择阶段人格
-> POST /api/arena/run 或 /api/arena/stream
-> GET /api/arena/runs/:runId
-> POST /api/arena/poster
POST /api/timeline/parse
-> POST /api/agents/build
-> POST /api/arena/run 或 /api/arena/stream
POST /api/profile-imports
-> 返回完整 bundle(profile + nodes + agents)
-> 直接进入 Arena 或角色详情链路
建议本地准备:
- Node.js 20+
- npm
- Docker / Docker Compose
- DevEco Studio(若需要运行 Harmony 端)
在仓库根目录执行:
docker compose up -d默认数据库连接:
postgresql://postgres:postgres@127.0.0.1:54329/time_personacd backend
cp .env.example .env
npm install
npm run dev默认端口:3030
backend/.env.example 中当前最关键的变量包括:
DATABASE_URLTARGET_MODELREASONING_EFFORTSILICONFLOW_API_KEYPROFILE_IMPORT_MAX_FILE_SIZE_MBPOSTER_IMAGE_API_KEY
cd d
npm install
npm run dev默认开发地址会请求 http://localhost:3030。如需覆盖:
VITE_API_BASE_URL=http://localhost:3030 npm run dev建议直接用 DevEco Studio 打开 harmony/:
- 安装 HarmonyOS SDK
6.0.2(22) - 同步
oh_modules - 通过 Previewer 或真机运行
注意:
- 工程已申请
ohos.permission.INTERNET - 当前命令行构建是否可用取决于本机 SDK 组件是否完整
- 本地签名材料、
.hap产物和调试证书不应提交到仓库
当前后端的主要接口包括:
GET /healthGET /api/presetsGET /api/profiles/:profileIdPOST /api/timeline/parsePOST /api/agents/buildPOST /api/profile-importsPOST /api/agents/mergePOST /api/arena/runPOST /api/arena/streamPOST /api/arena/sessions/:sessionId/messagesPOST /api/arena/sessions/:sessionId/interruptGET /api/arena/historyGET /api/arena/runs/:runIdPOST /api/arena/poster
更完整说明见:
backend/API_DOCUMENTATION.mdbackend/PROFILE_IMPORT_API_DOCUMENTATION.mdharmony/API_DOCUMENTATION.md
已经落地的部分:
- 后端基础 API、SSE Arena、历史记录、分享页数据源
- Web 端 Arena Studio、历史回放、分享页、信息图页
- Harmony 端角色库、创建角色、Arena、纪要、会议记录相关页面
- 人格融合、文件导入、海报生成链路
当前仍需注意的现实问题:
- 长文本导入是慢请求,经过公网网关时可能超时
- Harmony 命令行构建依赖完整 SDK 组件,不完整时需回到 DevEco Studio
harmony/signing/、临时请求体、技能缓存等本地文件不应推送
shared/contracts.tsshared/presets.tsbackend/src/server.tsbackend/src/domain.tsd/src/pages/ArenaStudio.tsxharmony/entry/src/main/ets/service/PersonaApi.ets
如果你要继续开发,建议从 shared/ 读字段,再看 backend/src/server.ts 的接口入口,最后分别进入 d/ 和 harmony/ 对应页面联调。