Trace2Offer 是一个面向求职场景的工作台:用极简看板统一维护职位/公司线索,再配一个专门服务求职流程的 Agent,帮你盯进度、看数据、做筛选、补策略。
核心思路:别让求职信息散落在聊天记录、浏览器收藏夹和一堆待办里,统一收口在工作台内。
- 管理求职线索:
lead支持增删改查、状态流转、优先级、下一步动作、提醒方式、JD 链接和备注。 - 管理候选池:发现到的岗位先落到
candidate,确认值得推进后再转成正式lead。 - 看统计盘:总量、漏斗、趋势、阶段停留时长都能直接看。
- 跑发现规则:支持通过 RSS/Atom 抓岗位,先筛进候选池,再人工决策。
- 跟 Agent 聊:围绕当前线索、用户画像和历史会话给建议,支持会话、记忆、用户偏好和工具调用。
- 导出日程:提供 interview 日历导出接口,支持
ICS/CalDAV读取。 - 本地落盘:不依赖数据库,所有数据都保存在本地文件。
- 基于
Next.js 16、React 19、TypeScript、Tailwind CSS v4 - 主要页面只有两个:
看板:候选池、表格管理、时间线、统计仪表盘Agent:会话、设置、用户画像、简历导入
- 基于
Go 1.25+Gin - 提供 REST API,负责:
leads / candidates / discovery rules / timelinesstats / reminders / calendaragent chat / sessions / settings / user profile
- 一个超轻量、可扩展的 Go Agent runtime
- 已内置的核心模块:
sessionmemorytool registryOpenAI Responses providerAGENTS.md / HEARTBEAT.md / IDENTITY.md / USER.md
项目默认把运行数据放在 backend/data 下,典型文件包括:
leads.jsoncandidates.jsondiscovery_rules.jsonlead_timelines.jsonsessions/*.jsonagent_memory.jsonuser_profile.json
暂时基于本地单机事实源,不引入数据库。想迁移、备份、做 demo 数据都很直接。
.
├── backend/ # Go 服务、Agent runtime、本地存储
│ ├── agent/ # session / memory / tools / provider / prompts
│ ├── cmd/server/ # 后端入口
│ └── internal/ # API、业务服务、文件存储
├── web/ # Next.js 前端
├── docs/ # 设计文档、说明、README 截图
└── Makefile # 一键启动前后端
Go 1.25+Node.js 22+pnpm 10+
cd web
pnpm installGo 依赖会在首次运行时自动拉取;也可手动拉取:
cd backend
go mod downloadcp backend/.env.example backend/.env至少要补上:
OPENAI_API_KEY=your_openai_api_key
# 可选: responses | chat_completions
T2O_OPENAI_API_FORMAT=responses
# 可选自定义(默认会随 T2O_OPENAI_API_FORMAT 自动切换)
# responses: https://api.openai.com/v1/responses
# chat_completions: https://api.openai.com/v1/chat/completions
T2O_OPENAI_BASE_URL=说明:
- 后端启动时会校验
OPENAI_API_KEY,必填。 T2O_OPENAI_API_FORMAT默认responses,可切到chat_completions。Interview Prep的 Query 规划同样复用T2O_OPENAI_API_FORMAT与T2O_OPENAI_BASE_URL。- 默认数据目录是
backend/data。 - 默认后端端口是
8080,前端默认跑在3000。
如果你要使用 Interview Prep 的本地 embedding(推荐):
- 按你的机器环境启动 Hugging Face TEI(会自动下载模型):
macOS (Apple Silicon: M1/M2/M3):
- 推荐直接用
Homebrew安装本地 TEI 二进制。 - 不推荐优先走官方预构建 Docker 镜像,因为 ARM64 机器经常会遇到 manifest 不匹配;而且即使用 Docker,在 Apple Silicon 上也只是 CPU 跑,收益一般。
brew install text-embeddings-inference
text-embeddings-router \
--model-id intfloat/multilingual-e5-small \
--port 8081macOS (Intel):
- 也建议优先用
Homebrew,启动方式和 Apple Silicon 一样。
Linux x86_64:
- 最省事的是直接用官方 CPU Docker 镜像。
docker run --rm -p 8081:80 ghcr.io/huggingface/text-embeddings-inference:cpu-1.9 \
--model-id intfloat/multilingual-e5-smallLinux ARM64 或 macOS Apple Silicon 但你坚持要 Docker:
- 官方预构建镜像不一定提供可直接运行的 ARM64 manifest,这时要自己构建镜像。
git clone https://github.com/huggingface/text-embeddings-inference.git
cd text-embeddings-inference
docker build . -f Dockerfile --platform=linux/arm64 -t tei-arm64
docker run --rm -p 8081:80 tei-arm64 --model-id intfloat/multilingual-e5-small- 在
backend/.env增加:
T2O_PREP_HF_BASE_URL=http://127.0.0.1:8081/embed
T2O_PREP_HF_MODEL=intfloat/multilingual-e5-small说明:
- 配了
T2O_PREP_HF_BASE_URL就走本地 TEI,不依赖T2O_PREP_HF_API_KEY。 - 不配
T2O_PREP_HF_BASE_URL时会走 Hugging Face Inference API,这时必须配置T2O_PREP_HF_API_KEY。 - 对
macOS Apple Silicon,当前最推荐的路径就是Homebrew + text-embeddings-router,别上来就拿 Docker 硬怼。
首次切换 embedding 模型后,记得重建索引:
curl -X POST http://127.0.0.1:8080/api/prep/index/rebuild \
-H 'Content-Type: application/json' \
-d '{"scope":"*"}'在仓库根目录执行:
make dev这个命令会同时启动:
- Go 后端:
http://127.0.0.1:8080 - Next.js 前端:
http://127.0.0.1:3000
打开前端后:
- 在
看板页面维护线索、候选池和统计盘 - 在
Agent页面配置模型、补用户画像、发起对话
make devcd backend
make run
make test
make smokecd web
pnpm dev
pnpm build
pnpm lint
pnpm e2e- 发现规则快速上手:docs/discovery-rules-quickstart.md
- Discovery onboarding 设计稿:docs/superpowers/specs/2026-03-23-discovery-onboarding-design.md
- Discovery onboarding 计划:docs/superpowers/plans/2026-03-23-discovery-onboarding.md
- 目前是本地优先、单用户形态,不是多租户 SaaS。
- 模型 provider 目前只接了
OpenAI Responses。 - 数据靠本地文件持久化,适合个人使用、原型验证和快速迭代。


