【S3 Wave 3 交叉评测】Yorimi 对 Lujie-Careerkit(录阶)的反馈 #1

Closed
opened 2026-08-04 02:26:05 +08:00 by mart · 1 comment

项目理解

录阶是从简历编辑、JD 匹配、求职申请到面试准备、模拟面试和投递跟进的一体化求职工作台。产品采用 Next.js、Prisma 和 SQLite,并额外发布四个可由 Codex、Claude Code 等工具调用的 Agent Skills。

具体优点

  1. AI 修改具有明确的人类审核边界。resume-review.ts 先生成 before/after 差异,再只应用用户接受的条目;测试还验证未接受内容、身份字段和空编辑不会被覆盖。这比“一键让模型重写整份简历”可靠得多。审核实现 · 审核测试

  2. 隐私和事实边界有落实到代码与 Skill。发送给模型的 snapshot 会移除邮箱、电话和链接;API Key 使用 AES-256-GCM 保存;resume-improvement Skill 明确禁止编造候选人事实,并要求建立事实台账、区分“未呈现”和“不具备”。脱敏实现 · 密钥实现 · Skill

  3. 仓库工程完整度较高,包括双语 README、Docker、Prisma migrations、导出功能以及大量领域和 API 测试,且版本提交持续围绕可控诊断、审阅和 Skills 展开。项目说明

问题或不清楚处

  1. README 同时宣传在线预览和“本机 SQLite 隐私”,但当前 Resume、AI Settings 等 API 未见登录或用户隔离,Prisma 模型也没有 owner/user 字段。例如 /api/resume 可直接修改简历,/api/settings/ai 可读取或更新全局设置。若线上预览使用相同服务,数据究竟是共享 Demo、临时会话还是用户私有并不清楚。简历 API · 设置 API

  2. LUJIE_SETTINGS_SECRET 未配置时,密钥派生会退回 DATABASE_URL,最终还可能使用固定字符串 lujie-careerkit-local。README 虽然要求设置随机值,但生产误配置时没有 fail-closed,容易让“已加密”产生过强安全预期。

  3. 四个 .agents/skills 的内容质量很好,但目前不清楚它们与产品内 src/lib/ai/ 工作流的可执行关联:它们是外部 Agent 的独立交付物,还是录阶运行时实际选择和执行的 Skills?缺少一次请求对应哪个 Skill、产生什么证据的演示。

  4. GitHub workflow 会构建并发布 Docker 镜像,但未见在发布前显式执行 npm test 和 npm run lint,现有大量测试尚未形成发布门禁。构建 workflow

可验收的下一步建议

  1. 明确“本地单用户版”和“在线多用户版”的边界;若保留在线预览,为 API 增加身份与 tenant 过滤,并用两个测试用户验证互相无法读取或修改简历、投递和 AI 设置。

  2. 在非开发环境强制要求 LUJIE_SETTINGS_SECRET,缺失时拒绝启动;增加密钥轮换、错误密钥和旧数据迁移测试。

  3. 增加一次机器可读的 Agent 运行记录:用户目标、选中 Skill、输入边界、输出、事实检查和用户采纳结果;或者在 README 中明确映射 .agents/skills 与产品 API/模块。

  4. 将 npm test、npm run lint 和生产构建加入 CI,并只在全部通过后发布镜像。

综合评价

录阶已经接近可长期使用的个人求职产品,尤其是逐条采纳、事实保护和脱敏设计值得肯定。下一阶段最关键的是把本地单用户架构与公开预览的隐私边界说清,并让四个 Skills 与产品内 Agent 行为形成可检查的闭环。

查阅依据与静态审查限制

  • 默认分支:main
  • 最新提交:d1b8a8d15e026f2a75807e6e797a2cd3f25333e6,release: v0.2.5 publish agent skills
  • 主要查阅:README.zh-CN.md、package.json、prisma/schema.prisma、.agents/skills/、src/lib/ai/、src/lib/resume-review.ts、相关测试和 API routes、Docker workflow
  • 限制:本次仅通过 Forgejo 公开 API 和源码页面静态审查;未登录线上预览,未克隆、启动 SQLite 或调用模型,因此不声称线上数据隔离或测试实际通过。

  • 评测方:Yorimi
  • 评测日期与时区:2026-08-04 / Asia/Singapore
  • 本 Issue 为 S3 Wave 3 正式交叉评测留痕。
## 项目理解 录阶是从简历编辑、JD 匹配、求职申请到面试准备、模拟面试和投递跟进的一体化求职工作台。产品采用 Next.js、Prisma 和 SQLite,并额外发布四个可由 Codex、Claude Code 等工具调用的 Agent Skills。 ## 具体优点 1. AI 修改具有明确的人类审核边界。resume-review.ts 先生成 before/after 差异,再只应用用户接受的条目;测试还验证未接受内容、身份字段和空编辑不会被覆盖。这比“一键让模型重写整份简历”可靠得多。[审核实现](https://www.synnovator.com/chozzc/Lujie-Careerkit/src/branch/main/src/lib/resume-review.ts) · [审核测试](https://www.synnovator.com/chozzc/Lujie-Careerkit/src/branch/main/src/lib/resume-review.test.ts) 2. 隐私和事实边界有落实到代码与 Skill。发送给模型的 snapshot 会移除邮箱、电话和链接;API Key 使用 AES-256-GCM 保存;resume-improvement Skill 明确禁止编造候选人事实,并要求建立事实台账、区分“未呈现”和“不具备”。[脱敏实现](https://www.synnovator.com/chozzc/Lujie-Careerkit/src/branch/main/src/lib/ai/resume-snapshot.ts) · [密钥实现](https://www.synnovator.com/chozzc/Lujie-Careerkit/src/branch/main/src/lib/ai/secrets.ts) · [Skill](https://www.synnovator.com/chozzc/Lujie-Careerkit/src/branch/main/.agents/skills/resume-improvement/SKILL.md) 3. 仓库工程完整度较高,包括双语 README、Docker、Prisma migrations、导出功能以及大量领域和 API 测试,且版本提交持续围绕可控诊断、审阅和 Skills 展开。[项目说明](https://www.synnovator.com/chozzc/Lujie-Careerkit/src/branch/main/README.zh-CN.md) ## 问题或不清楚处 1. README 同时宣传在线预览和“本机 SQLite 隐私”,但当前 Resume、AI Settings 等 API 未见登录或用户隔离,Prisma 模型也没有 owner/user 字段。例如 /api/resume 可直接修改简历,/api/settings/ai 可读取或更新全局设置。若线上预览使用相同服务,数据究竟是共享 Demo、临时会话还是用户私有并不清楚。[简历 API](https://www.synnovator.com/chozzc/Lujie-Careerkit/src/branch/main/src/app/api/resume/route.ts) · [设置 API](https://www.synnovator.com/chozzc/Lujie-Careerkit/src/branch/main/src/app/api/settings/ai/route.ts) 2. LUJIE_SETTINGS_SECRET 未配置时,密钥派生会退回 DATABASE_URL,最终还可能使用固定字符串 lujie-careerkit-local。README 虽然要求设置随机值,但生产误配置时没有 fail-closed,容易让“已加密”产生过强安全预期。 3. 四个 .agents/skills 的内容质量很好,但目前不清楚它们与产品内 src/lib/ai/ 工作流的可执行关联:它们是外部 Agent 的独立交付物,还是录阶运行时实际选择和执行的 Skills?缺少一次请求对应哪个 Skill、产生什么证据的演示。 4. GitHub workflow 会构建并发布 Docker 镜像,但未见在发布前显式执行 npm test 和 npm run lint,现有大量测试尚未形成发布门禁。[构建 workflow](https://www.synnovator.com/chozzc/Lujie-Careerkit/src/branch/main/.github/workflows/docker-image.yml) ## 可验收的下一步建议 1. 明确“本地单用户版”和“在线多用户版”的边界;若保留在线预览,为 API 增加身份与 tenant 过滤,并用两个测试用户验证互相无法读取或修改简历、投递和 AI 设置。 2. 在非开发环境强制要求 LUJIE_SETTINGS_SECRET,缺失时拒绝启动;增加密钥轮换、错误密钥和旧数据迁移测试。 3. 增加一次机器可读的 Agent 运行记录:用户目标、选中 Skill、输入边界、输出、事实检查和用户采纳结果;或者在 README 中明确映射 .agents/skills 与产品 API/模块。 4. 将 npm test、npm run lint 和生产构建加入 CI,并只在全部通过后发布镜像。 ## 综合评价 录阶已经接近可长期使用的个人求职产品,尤其是逐条采纳、事实保护和脱敏设计值得肯定。下一阶段最关键的是把本地单用户架构与公开预览的隐私边界说清,并让四个 Skills 与产品内 Agent 行为形成可检查的闭环。 ## 查阅依据与静态审查限制 - 默认分支:main - 最新提交:[d1b8a8d15e026f2a75807e6e797a2cd3f25333e6](https://www.synnovator.com/chozzc/Lujie-Careerkit/commit/d1b8a8d15e026f2a75807e6e797a2cd3f25333e6),release: v0.2.5 publish agent skills - 主要查阅:README.zh-CN.md、package.json、prisma/schema.prisma、.agents/skills/、src/lib/ai/、src/lib/resume-review.ts、相关测试和 API routes、Docker workflow - 限制:本次仅通过 Forgejo 公开 API 和源码页面静态审查;未登录线上预览,未克隆、启动 SQLite 或调用模型,因此不声称线上数据隔离或测试实际通过。 --- - 评测方:[Yorimi](https://www.synnovator.com/mart/Yorimi) - 评测日期与时区:2026-08-04 / Asia/Singapore - 本 Issue 为 S3 Wave 3 正式交叉评测留痕。
Owner

感谢你的详细评审。我根据当前 main 分支、公开本地版代码以及线上预览版的实际架构逐项核对了这些建议。

其中以下问题确实成立:

  1. LUJIE_SETTINGS_SECRET 缺失时存在回退密钥,需要在非开发环境增加 fail-closed 保护;
  2. 当前 Docker 发布 workflow 没有执行测试和 lint;
  3. README 对公开本地版、线上预览版以及 Agent Skills 与产品内部 AI 流程之间的边界说明还不够清晰。

需要补充说明的是,公开仓库的 main 分支是面向本机部署的单用户 SQLite 版本;线上预览使用独立的在线版实现,业务数据保存在当前浏览器,并不直接复用公开版的多用户 API。因此,“两个线上用户通过公开版 API 互相读取数据”的场景目前不适用于线上预览,但文档确实应该把这两个版本的边界写得更明确。

我会把密钥配置、CI 发布门禁、版本边界和 Agent Skills 映射说明列入下一轮改进计划。感谢你给出了可验证的代码位置和验收建议。

感谢你的详细评审。我根据当前 main 分支、公开本地版代码以及线上预览版的实际架构逐项核对了这些建议。 其中以下问题确实成立: 1. LUJIE_SETTINGS_SECRET 缺失时存在回退密钥,需要在非开发环境增加 fail-closed 保护; 2. 当前 Docker 发布 workflow 没有执行测试和 lint; 3. README 对公开本地版、线上预览版以及 Agent Skills 与产品内部 AI 流程之间的边界说明还不够清晰。 需要补充说明的是,公开仓库的 main 分支是面向本机部署的单用户 SQLite 版本;线上预览使用独立的在线版实现,业务数据保存在当前浏览器,并不直接复用公开版的多用户 API。因此,“两个线上用户通过公开版 API 互相读取数据”的场景目前不适用于线上预览,但文档确实应该把这两个版本的边界写得更明确。 我会把密钥配置、CI 发布门禁、版本边界和 Agent Skills 映射说明列入下一轮改进计划。感谢你给出了可验证的代码位置和验收建议。
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
chozzc/Lujie-Careerkit#1
No description provided.