如何在 Node 22 上启动 career-ops web(alpha)本地 Web 界面并读取现有 pipeline 与报告
2026/9/9 22:28:04 网站建设 项目流程

如何在 Node 22 上启动 career-ops web(alpha)本地 Web 界面并读取现有 pipeline 与报告

【免费下载链接】career-opsOpen-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)项目地址: https://gitcode.com/GitHub_Trending/ca/career-ops

career-ops 的主体是一个本地运行的 AI 求职 CLI,而web/目录下附带了一个alpha 阶段、opt-in的本地 Web 界面:它不是第二套引擎,而是对 CLI 读写同一批文件(data/pipeline.mddata/applications.mdreports/config/)的只读视图加少量回写能力。启动后,你已有的 CV、pipeline 记录和评估报告会原样出现在页面里,不运行它则 CLI 工作流完全不受影响。

本文的任务是:在 Node 22 环境把web/开发服务器跑起来,并确认它正确读取了你现有 checkout 中的 pipeline 与报告。

环境要求

web/package.json 中的engines.node">=22.0.0",web/README.md 的 Quick start 也写明Requires Node 22+——原因是npm testnode --test "tests/**/*.test.mjs"这种 glob 发现测试,Node 22 之前的版本不展开 CLI glob,测试会静默失败;这是比next自身要求更高的下限。先确认本地版本:

node -v # 需要显示 22.x 或更高

依赖方面,web/有自己独立的package-lock.json(仓库根目录和web/各有一份 lockfile,是有意为之),启动前只需在web/目录内安装一次依赖,不需要额外的数据库、服务或账号——整个应用 local-first,数据全部留在你自己的文件里。

启动开发服务器

主路径就三条命令,全部在web/目录内执行:

cd web npm ci npm run dev
  • npm ci按 lockfile 安装依赖,保证与web/package.json声明一致(Next 版本为16.3.3)。
  • npm run dev实际执行next dev,即 Turbopack 开发服务器(见 web/package.json 的scripts.dev)。

启动成功后在浏览器打开http://localhost:3000,这一步就是文档给出的成功判据:页面显示的是你所在的这个 career-ops checkoutweb/的父目录)里的数据——已有的 CV、pipeline、报告原样出现,不需要任何导入或初始化。

它从哪里读取 pipeline 与报告

Web 端定位数据目录的逻辑在 web/src/lib/career-ops.ts 的careerOpsRoot()中,只有两种情况:

  1. 设置了环境变量CAREER_OPS_ROOT(从web/.env.local读取)时,用它指定的目录;
  2. 未设置时,默认取web/父目录,即当前 checkout 根。

基于这个根目录,各页面读取的具体文件是:

  • Pipeline 页:解析data/pipeline.md- [ ] URL | Company | Role [| Location [| Compensation]] [| label: …]行,渲染为可排序、可过滤的表格;状态变更通过核心脚本回写,回写只走POST /api/status这一条路径(委托根目录的set-status.mjs),不做第二套实现;
  • Explore / Today / Analytics:还会读data/scan-history.tsv等派生数据,缺失时对应功能静默降级而不是报错;
  • 报告查看:按data/applications.md表格中 tracker 行的 report 链接定位reports/下对应.md文件,找不到时才回退到按reports/{n}-{slug}-{date}.md文件名匹配。

所以「读取现有 pipeline 与报告」不需要任何额外配置——只要这些文件存在于 checkout 的对应相对路径下,页面就会展示它们。

可选分支:如果你想让 Web 端指向另一份 career-ops 目录(例如用样例数据测试,避免动真实 pipeline),在web/.env.local中写一行:

CAREER_OPS_ROOT=/path/to/checkout

/path/to/checkout替换为你实际的那份 checkout 路径。web/AGENTS.md 也建议测试时把CAREER_OPS_ROOT指到一个 scratch 目录,把真实 pipeline 隔离在外面。改完后重启npm run dev即可生效。

结果验证

  1. 浏览器打开http://localhost:3000,确认 Pipeline 表格中能看到data/pipeline.md里的条目、tracker(data/applications.md)中的申请行,点开某一行能看到reports/中对应的评估报告内容。
  2. 如果页面显示空或数据与预期不符,先确认两件事:web/所在的 checkout 是否正确(默认读父目录);web/.env.local是否设置了CAREER_OPS_ROOT把数据源指到了别处。这是文档指出的唯一两个数据源决定因素。
  3. 目标目录若既没有cv.md也没有任何 pipeline/tracker 数据,首页会进入 first-run 引导分支(CV takeover);已有数据但个别配置缺失(config/profile.ymlmodes/_profile.mdportals.yml)时只会在界面上给出 nudge 提示,不影响 pipeline 与报告的读取。

另外注意:一个文件不存在和文件损坏是两回事——例如portals.yml格式损坏时 Web 端会把它作为用户可见的错误暴露出来,而不是用仓库自带示例覆盖它。

限制与边界

  • alpha 状态:web/README.md 明确标注 “Status: alpha. Expect rough edges”,行为可能随版本变化;问题反馈走项目 Discussion。
  • API 有同源 + loopback 双重守卫/api默认只响应 loopback Host 的同源请求(实现见 web/src/lib/origin-guard.mjs)。两个可选的放宽项CAREER_OPS_WEB_ALLOWED_HOSTS(额外允许的 Host)与CAREER_OPS_ALLOWED_ORIGINS(额外允许的 Origin,例如chrome-extension://本地伴生客户端)默认都未设置,且都写在web/.env.local里——除非你要接入扩展类客户端,否则不需要碰。
  • 永不自动提交:Apply 流程只做草稿和预填,提交按钮永远由人按,没有例外标志。
  • 加法式集成:web 层与核心的打包、CI、发布互相隔离,不启动 Web 端时 CLI 行为不变。

生产构建方面,web/package.json 还提供了npm run buildnext build)与npm run startnext start)两个脚本,日常使用本文的开发服务器路径即可。

【免费下载链接】career-opsOpen-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)项目地址: https://gitcode.com/GitHub_Trending/ca/career-ops

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询