本文以当前 package.json、WXT 配置和 GitHub Actions 工作流为准。
- Windows 建议使用 PowerShell 7。
- 包管理器与运行时使用 Bun。
- 浏览器目标为 Chrome MV3、Edge MV3 和 Firefox MV2。
git clone https://github.com/HTExplicit/boss-helper.git
Set-Location boss-helper
bun installbun install 会执行 wxt prepare,生成 WXT 类型和构建辅助文件。
# Chrome
bun run dev
# Edge
bun run dev:edge
# Firefox
bun run dev:firefoxWXT 会启动目标浏览器开发环境。需要使用既有浏览器配置或手动加载扩展时,可先构建再从 .output/<browser>-<manifest> 加载。
当前仓库没有名为 test 的 package script,测试命令是 Bun 自带的:
bun test
bun run check
bun run fmt:check
bun run lint
git diff --check| 命令 | 目的 |
|---|---|
bun test |
运行 tests/*.test.mjs 回归测试 |
bun run check |
运行 vue-tsc --noEmit 类型检查 |
bun run fmt:check |
检查源码和 Markdown 格式 |
bun run lint |
运行带类型信息的 Oxlint |
git diff --check |
检查空白错误和冲突标记 |
优先运行与改动直接相关的测试;准备合并或发布时运行全部质量门和三个浏览器构建。已有工具警告必须与本次新增错误区分记录,不能把“命令退出成功”替代为“无警告”。
# 三浏览器并行构建
bun run build
# 单独构建
bun run build:chrome
bun run build:edge
bun run build:firefox
# 三浏览器 ZIP
bun run zip默认输出:
| 目标 | 解压目录 |
|---|---|
| Chrome | .output/chrome-mv3 |
| Edge | .output/edge-mv3 |
| Firefox | .output/firefox-mv2 |
ZIP 由 WXT 写入 .output。.output、.wxt、dist、node_modules 和本地产物不提交到 Git。
- 先从用户输入到最终筛选、请求或存储结果建立稳定复现。
- 为缺陷增加失败测试,再修复单一原因。
- 不为修复一个筛选项重写无关任务或界面。
- 页面运行行为与旧文档冲突时,以可复现的当前运行行为为准,并同步文档。
- 不改变已有存储 Key;历史拼写错误的 Key 也是兼容接口。
- 只有平台明确投递成功后才增加成功统计并写去重记录。
- 新的 BOSS 主动请求必须接入共享请求闸门,不能自行并发或无条件重试。
- 终止错误必须保持终止语义,不能在通用异常处理中降级成单岗位跳过。
当前测试文件与关注点:
| 文件 | 关注点 |
|---|---|
tests/filter-keywords.test.mjs |
岗位名和工作内容关键词、空值与特殊字符 |
tests/config-state.test.mjs |
配置合并、替换和重置时的响应式引用 |
tests/boss-request-context.test.mjs |
BOSS 请求头、详情接口和无点击详情获取 |
tests/risk-control.test.mjs |
请求串行、最小间隔、风险锁定和投递上限 |
tests/delivery-stop.test.mjs |
终止错误、停止状态、成功统计和未知结果不重试 |
tests/mount-lifecycle.test.mjs |
支持路由、重复挂载和生命周期清理 |
tests/content-message-event.test.mjs |
content 消息监听和清理 |
tests/statistics-percentage.test.mjs |
统计零分母 |
静态测试和构建不能替代已登录页面验收,但验收必须区分只读与写操作。
- 加载未打包 Chrome 构建并打开职位推荐或搜索页。
- 确认只挂载一个 BossHelper 界面,页面不会因扩展反复刷新。
- 编辑岗位名和工作内容规则,保存后刷新,确认配置恢复。
- 检查岗位列表来源、分页状态和帮助文案。
- 不点击“开始”,不打开投递确认,不发送招呼语。
岗位详情筛选位于投递工作流内部。若要在真实页面验证详情接口,必须使用专门的调试入口或受控测试账号;不能把点击完整“开始”流程描述为只读验收。
只有在用户明确允许真实投递时执行:
- 使用专门测试条件把候选岗位限制到最小集合。
- 关闭自定义和 AI 招呼语,设置较低的每日上限。
- 记录任务前的当日成功数和去重数据。
- 执行一次并确认平台响应、成功统计和去重写入一致。
- 出现验证码、403/429、频繁、环境异常或未知结果时立即结束,不刷新后自动续跑。
账号处于限制状态时不执行真人请求验收,并在 PR 或发布报告中明确记录未完成项。
- 分支默认使用
codex/<topic>。 - PR 应包含:复现、根因、最小修复、测试、三浏览器构建结果、真人验收状态和未覆盖边界。
- 合并前检查
git status,确保没有提交构建产物或来源不明文件。 - Bugfix-only PR 不夹带界面重设计、存储重构或新产品功能。
- 每次完成可安装并推送的交付,至少递增
package.json的 patch 版本;不要让连续交付共用同一个版本号。 package.json、扩展 manifest、Git 标签、ZIP 文件名和 GitHub Release 版本必须完全一致。.github/workflows/main.yml支持手动触发构建,也会在推送版本标签时执行bun run zip。- 手动触发只上传包含 Chrome、Edge、Firefox ZIP 和
SHA256SUMS.txt的 workflow artifact,不创建 Release。 - 标签构建会先校验标签与
package.json版本一致,再创建对应的正式版本 Release;sources ZIP 不对外发布。 - 发布前必须等待本地及 CI 构建完成,并核对 manifest、产物清单和 SHA-256;不能只因命令已经启动就宣告发布成功。
- 已推送的版本标签不可移动。标签发布后若需要修改源码,必须递增到下一 patch 版本。