Metadata-Version: 2.4
Name: boss-career-ops
Version: 0.7.0
Summary: BOSS直聘 AI 求职全流程系统 — 搜索、评估、投递、沟通、面试、谈判闭环
Project-URL: Repository, https://github.com/maimaigptlink9/boss-career-ops
Author: boss-career-ops contributors
License-Expression: MIT
License-File: LICENSE
Keywords: boss,career,cli,job-search,recruitment,zhipin
Classifier: Development Status :: 3 - Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Utilities
Requires-Python: >=3.12
Requires-Dist: aiohttp<4.0,>=3.9
Requires-Dist: chromadb<0.6,>=0.5
Requires-Dist: click<9.0,>=8.1
Requires-Dist: cryptography<47.0,>=44.0
Requires-Dist: httpx<0.28,>=0.27
Requires-Dist: langchain-openai<0.3,>=0.2
Requires-Dist: langchain<0.4,>=0.3
Requires-Dist: langgraph<0.3,>=0.2
Requires-Dist: markdown<4.0,>=3.10.2
Requires-Dist: mcp<2.0,>=1.0
Requires-Dist: patchright<2.0,>=1.0
Requires-Dist: portalocker<4.0,>=3.2.0
Requires-Dist: psutil<8.0,>=7.2.2
Requires-Dist: pyyaml<7.0,>=6.0
Requires-Dist: rich<14.0,>=13.0
Requires-Dist: textual<1.0,>=0.50
Provides-Extra: web
Requires-Dist: fastapi<1.0,>=0.115; extra == 'web'
Requires-Dist: uvicorn<1.0,>=0.34; extra == 'web'
Description-Content-Type: text/markdown

# Boss-Career-Ops

BOSS 直聘 AI 求职全流程 CLI 工具。覆盖从职位搜索到拿到 offer 的完整闭环。

**核心原则：AI 评估推荐，人决定行动。系统自动执行高分职位，低分职位需人工确认。**

**AI 编排：AI 任务（评估/润色/摘要/面试准备）由 Agent 直接完成，无需配置外部 LLM API。**

## 功能概览

- **职位搜索** — 关键词 + 城市 + 福利多维筛选，搜索缓存减少 API 调用
- **5 维评估** — 匹配度、薪资、地点、发展、团队自动评分，全行业同义词表，匹配/不匹配原因输出
- **阈值驱动** — batch-greet 内置阈值逻辑，B 级自动打招呼，D 级自动跳过
- **简历定制** — 根据职位 JD 生成 ATS 友好的 MD/PDF 简历，关键词注入
- **批量打招呼** — 高斯随机延迟 + 随机长停顿，最大 10 个，防封号
- **聊天管理** — 消息历史、AI 摘要、标签、导出
- **求职流水线** — 发现→评估→投递→沟通→面试→offer 全程追踪，所有操作结果自动入库
- **面试准备** — 基于职位信息生成面试要点
- **Web 仪表盘** — AI 求职决策仪表盘，5 维评分可视化、Pipeline 看板、AI 助手、零配置可用
- **TUI Dashboard** — 终端可视化求职看板

## 快速开始

### 安装

```bash
# 推荐：uv 全局安装
uv tool install boss-career-ops

# 或 pip
pip install boss-career-ops

# 或从源码安装
uv tool install git+https://github.com/maimaigptlink9/boss-career-ops.git
```

**要求：Python >= 3.12**

### 开发模式

```bash
git clone https://github.com/maimaigptlink9/boss-career-ops.git
cd boss-career-ops
uv sync
uv run bco <cmd>
uv run pytest
```

### 初始化

```bash
# 1. 环境诊断
bco doctor

# 2. 首次使用，初始化配置
bco setup

# 3. 登录 BOSS 直聘（自动检测 Chrome Profile，4 级降级）
bco login

# 4. 确认登录态
bco status
```

### 基本使用

```bash
# 搜索职位
bco search "Golang" --city 广州 --welfare "双休,五险一金"

# 对搜索结果批量评估
bco evaluate --from-search

# 批量打招呼（内置阈值逻辑）
bco batch-greet "Golang" --city 广州

# 生成定制简历
bco resume <job_id> --format pdf

# 查看求职流水线
bco pipeline

# 启动 Web 仪表盘（零配置可用，规则引擎开箱即用）
bco web
```

## 评估引擎

### 5 维评分体系

| 维度 | 权重 | 评估内容 |
|------|------|----------|
| 匹配度 | 30% | 技能、经验、学历与 JD 的匹配程度（全行业同义词表 ~100 组） |
| 薪资 | 25% | 薪资范围与预期的对比，连续评分（非阶梯跳变） |
| 地点 | 15% | 城市偏好、邻近城市支持、远程可能性 |
| 发展 | 15% | 职业成长空间（按岗位类型选关键词：技术/产品/运营/市场/设计/数据/管理） |
| 团队 | 15% | 公司阶段、团队文化（按岗位类型选关键词） |

### 评分改进

- **评分区分度提升**：发展/团队基准分从 3.0 降至 1.5，解决评分集中在 C 级的问题
- **全行业同义词表**：覆盖技术/产品/运营/市场/设计/数据/财务/人力/销售/内容/电商/法务/行政/通用共 ~100 组
- **匹配原因输出**：每个评估结果包含 `match_reasons`（优势）和 `mismatch_reasons`（不足）
- **信息不足标记**：搜索结果缺 description 时标记 `confidence: "preliminary"`，提示查看详情后评分可能变化
- **薪资连续评分**：用连续函数替代阶梯跳变，5K 差距不再导致 1.0 分跳变
- **邻近城市支持**：广州→深圳 3.5 分（而非 2.0），北京→天津同理

### 评分等级与自动动作

| 等级 | 分数 | 含义 | 自动动作 |
|------|------|------|----------|
| A | 4.5-5.0 | 强烈推荐 | 自动投递 |
| B | 3.5-4.4 | 值得投入 | 自动打招呼 |
| C | 2.5-3.4 | 一般 | 需人工确认 |
| D | 1.5-2.4 | 不太匹配 | 需人工确认 |
| F | 0.0-1.4 | 不推荐 | 跳过 |

## 命令参考

### 环境与认证

| 命令 | 说明 |
|------|------|
| `bco doctor` | 环境诊断 |
| `bco setup` | 初始化配置（首次使用） |
| `bco login` | 登录（4 级降级：Bridge Cookie→CDP→QR httpx→patchright），支持 `--profile` 指定 Chrome 配置文件 |
| `bco logout` | 清除本地登录态 |
| `bco status` | 检查登录态 |
| `bco bridge status` | 查看 Bridge Daemon 状态 |
| `bco bridge test` | Bridge 连通性诊断（3 步检查） |
| `bco skill-update` | 检查远程版本并获取最新 skill.md 内容 |

### Agent AI 任务

| 命令 | 说明 |
|------|------|
| `bco agent "帮我找深圳的Agent岗位"` | AI Agent 对话式求职助手（LangGraph 多Agent编排） |
| `bco agent --interactive` | 交互模式，持续对话 |
| `bco agent-evaluate <job_id>` | 输出职位数据供 Agent 评估 |
| `bco agent-evaluate --stage 发现 --limit 10` | 输出待评估职位列表 |
| `bco agent-save evaluate --job-id <id> --score <n> --grade <G> --analysis "..."` | 保存评估结果 |
| `bco agent-save resume --job-id <id> --content "..."` | 保存简历润色结果 |
| `bco agent-save chat-summary --security-id <id> --data '...'` | 保存聊天摘要 |
| `bco agent-save interview-prep --job-id <id> --data '...'` | 保存面试准备 |

### RAG 知识库

| 命令 | 说明 |
|------|------|
| `bco rag-index` | 构建/更新 RAG 知识库索引（从 Pipeline DB 读取 JD） |
| `bco rag-index --reindex` | 全量重建索引 |
| `bco rag-search "AI Agent 开发" --collection jd --top-k 10` | RAG 语义搜索（jd/resume/interview） |

### MCP Server

| 命令 | 说明 |
|------|------|
| `bco mcp-server` | 启动 MCP Server（供 Claude Desktop 等客户端调用） |

### 职位搜索与评估

| 命令 | 说明 |
|------|------|
| `bco search <keyword> --city <city> --welfare <welfare>` | 搜索职位 + 福利筛选 |
| `bco recommend` | 个性化推荐 |
| `bco evaluate [target]` 或 `--from-search` | 5 维评估 |
| `bco detail <security_id>` | 查看职位完整详情（双通道降级） |

### 投递与沟通

| 命令 | 说明 |
|------|------|
| `bco greet <security_id> <job_id>` | 打招呼 |
| `bco batch-greet <keyword> --city <city>` | 批量打招呼（最大 10 个） |
| `bco apply <security_id> <job_id>` | 投递简历 |
| `bco apply <security_id> <job_id> --resume <job_id>` | 投递前先上传简历再投递 |
| `bco resume <job_id> --format <md\|pdf>` | 生成定制简历 |
| `bco resume <job_id> --format pdf --upload` | 生成 PDF 并上传到 BOSS 直聘平台 |

### 聊天管理

| 命令 | 说明 |
|------|------|
| `bco chat --export <csv\|json\|html\|md>` | 聊天管理 + 导出 |
| `bco chatmsg <security_id>` | 聊天消息历史 |
| `bco chat-summary <security_id>` | 聊天摘要 |
| `bco mark <security_id> --tag <tag>` | 联系人标签 |

### 流水线与导出

| 命令 | 说明 |
|------|------|
| `bco pipeline` | 求职流水线追踪（数据来自搜索/评估/投递等操作的自动入库） |
| `bco export <keyword> -o <output> --format <csv\|json\|html\|md>` | 多格式导出 |

### 面试与 Dashboard

| 命令 | 说明 |
|------|------|
| `bco interview <job_id>` | 面试准备 |
| `bco dashboard` | 启动 TUI Dashboard |
| `bco web` | 启动 Web 仪表盘（AI 求职决策仪表盘，零配置可用） |

## 配置

所有配置存储在 `~/.bco/` 目录（可通过 `BCO_HOME` 环境变量自定义）。

### 个人档案 — `~/.bco/config/profile.yml`

```yaml
name: ""
title: ""
experience_years: 0
skills: []
expected_salary:
  min: 0
  max: 0
preferred_cities: []
remote_ok: false
education: ""
career_goals: ""
avoid: ""
```

### 简历 — `~/.bco/cv.md`

Markdown 格式的完整简历，评估引擎和简历生成器都会读取此文件。越详细，评估越准确。

### 自动执行阈值 — `~/.bco/config/thresholds.yml`

```yaml
auto_action:
  auto_greet_threshold: 4.0    # B+ 及以上自动打招呼
  auto_apply_threshold: 4.5    # A 级自动投递
  skip_threshold: 2.0          # D 级及以下直接跳过
  confirm_required: true       # 中间分数段需人工确认

rate_limit:
  request_delay_min: 1.5       # 请求最小延迟（秒）
  request_delay_max: 3.0       # 请求最大延迟（秒）
  batch_greet_max: 10          # 批量打招呼上限
  batch_greet_delay_min: 2.0   # 批量打招呼最小延迟
  batch_greet_delay_max: 5.0   # 批量打招呼最大延迟
  burst_penalty_multiplier: 2.0  # 突发惩罚倍数
  retry_max_attempts: 3        # 最大重试次数
  retry_base_delay: 5.0        # 重试基础延迟
  retry_max_delay: 60.0        # 重试最大延迟
  search_page_delay_min: 3.0   # 搜索翻页最小延迟
  search_page_delay_max: 6.0   # 搜索翻页最大延迟
  search_max_pages: 5          # 搜索最大翻页数

cache:
  default_ttl: 3600            # 默认缓存 TTL（秒）
  search_ttl: 1800             # 搜索缓存 TTL（秒）
```

## AI Agent 集成

本工具专为 AI Agent 设计，AI 任务由 Agent 直接完成，无需配置外部 LLM API。

### 零配置可用

系统采用「规则引擎开箱即用 + AI 无缝升级」策略：

- **不配置 AI** → 规则引擎模式：5 维评分、A/B/C/D/F 等级、推荐语、技能同义词匹配、ATS 关键词注入、Pipeline 看板，覆盖 80% 核心价值
- **配置 AI** → AI 增强模式：AI 评估覆盖规则评分、AI 简历润色、AI 聊天摘要、AI 回复建议、AI 面试准备

AI 配置支持 Web 设置页（30 秒完成）和环境变量两种方式，优先级：环境变量 > ai_config.yml > 规则引擎。

### 工作原理

```
Agent 读取数据（bco agent-evaluate / bco chatmsg）
  → Agent 思考分析（评估/润色/摘要/面试准备）
  → Agent 写入结果（bco agent-save）
  → 后续命令读取 Agent 结果（bco evaluate / bco resume / bco interview）
```

### Agent 工具命令

- `bco agent-evaluate` — 输出职位数据供 Agent 评估分析
- `bco agent-save` — 保存 Agent 的 AI 分析结果到数据库

### Skill 集成

将 [skills/boss-career-ops/skill.md](skills/boss-career-ops/skill.md) 放到对应 Agent 的 skill 目录即可自动理解并调用 `bco` 命令：

**OpenClaw：**

```bash
mkdir -p ~/.openclaw/skills/boss-career-ops && cp skills/boss-career-ops/skill.md ~/.openclaw/skills/boss-career-ops/skill.md
```

**Claude Code：**

在项目目录中打开 Claude Code，`CLAUDE.md` 会自动加载为上下文。

**WorkBuddy：**

```bash
cp skills/boss-career-ops/skill.md ~/.workbuddy/skills/boss-career-ops/skill.md
```

## Web 仪表盘

`bco web` 启动 AI 求职决策仪表盘（FastAPI + Alpine.js），定位是 AI 智能层的可视化，不是 BOSS 网页的复刻。

### 核心页面

| 页面 | 功能 | BOSS 网页可替代 |
|------|------|-----------------|
| 决策看板 | Pipeline 看板 + 5 维评分卡片 + 优劣势分析 + 待办 | ❌ |
| AI 助手 | 回复建议 + 简历定制 + 面试准备 + 技能差距 | ❌ |
| 设置 | AI Key 配置引导 + 个人档案编辑 | ❌ |

### 技术架构

```
浏览器 → FastAPI (web/server.py) → agent/tools.py → PipelineManager / BossAdapter / EvaluationEngine
```

- 后端：FastAPI，所有业务逻辑通过 `agent/tools.py` 调用
- 前端：Alpine.js (CDN) + 原生 JS，暗色主题，无构建工具
- AI 配置：Web 设置页配置 API Key，Provider 信息从 `data/llm_providers.yml` 读取
- 安全：默认绑定 `127.0.0.1`，API Key Fernet 加密存储，写操作需认证

## 安全说明

- Token 使用 Fernet 加密存储（PBKDF2 密钥派生，绑定机器+用户）
- API Key 使用 Fernet 加密存储（Web 设置页保存时加密）
- 请求间隔使用高斯随机延迟 + 5% 概率随机长停顿，模拟人类行为
- 浏览器通道共享节流器，防止降级后请求密度失控
- Cookie 回写机制，捕获服务端 Set-Cookie 更新
- Token 自动刷新（stoken 过期时 CDP 优先刷新）
- 批量操作内置上限（batch-greet 最大 10 个）
- 敏感信息不输出到日志
- CSV 导出防止公式注入，文件导出防止路径遍历
- Web 仪表盘默认绑定 `127.0.0.1`，写操作需 `BCO_WEB_API_KEY` 认证

## 系统升级路线图

> 目标：将现有 CLI 自动化工具升级为真正的 AI Agent 系统，同时满足「求职实用」和「面试证明 Agent 开发能力」两个目标。

### 已完成改造

| 改造 | 状态 | 核心变化 | 详细文档 |
|------|------|----------|----------|
| LangGraph 多Agent编排 | ✅ 已完成 | Agent I/O 数据通道 → StateGraph + Conditional Edge 路由，6 个专业 Agent 节点 | [upgrade-langgraph.md](doc/upgrade-langgraph.md) |
| RAG 知识库 | ✅ 已完成 | 关键词匹配 → ChromaDB 语义向量检索 + MMR 重排 | [upgrade-rag.md](doc/upgrade-rag.md) |
| MCP Server | ✅ 已完成 | CLI 命令行 → MCP 协议（JSON-RPC over stdio），9 Tool + 3 Resource | [upgrade-mcp.md](doc/upgrade-mcp.md) |
| 规则引擎评估改进 | ✅ 已完成 | 评分区分度提升、全行业同义词表、匹配原因输出、薪资连续评分、邻近城市 | [规则引擎评估改进方案.md](doc/规则引擎评估改进方案.md) |
| Web 仪表盘 | ✅ 已完成 | AI 求职决策仪表盘，5 维评分可视化、Pipeline 看板、AI 助手、零配置可用 | [Web前端方案.md](doc/Web前端方案.md) |
| Web 与 CLI 对齐 | ✅ 已完成 | agent/tools.py 增强，Pipeline 阶段推进、搜索入库、简历 PDF 生成修复 | [web-cli-alignment.md](doc/web-cli-alignment.md) |
| 风控对抗增强 | ✅ 已完成 | QR httpx 登录、浏览器通道节流、随机长停顿、Cookie 回写、Token 自动刷新 | [风控对抗实现对比分析.md](doc/风控对抗实现对比分析.md) |

### 进行中改进

| 改造 | 状态 | 核心变化 | 详细文档 |
|------|------|----------|----------|
| Web 功能补全 | 🔄 进行中 | 搜索页面、投递按钮、聊天页面、简历预览、面试准备、数据分析 | [web-completion-plan.md](doc/web-completion-plan.md) |
| 功能广度补全 | 🔄 进行中 | detail 命令、搜索缓存、登出、搜索预设/监控、日报/跟进 | [功能对比分析.md](doc/功能对比分析.md) |

### 新增依赖

`pyproject.toml` 的 dependencies 已新增：`langchain>=0.3`、`langgraph>=0.2`、`langchain-openai>=0.2`、`chromadb>=0.5`、`mcp>=1.0`

### LLM 配置

| 环境变量 | 说明 | 默认值 |
|----------|------|--------|
| `BCO_LLM_PROVIDER` | LLM 提供者（openai/deepseek/local） | deepseek |
| `BCO_LLM_API_KEY` | API Key | — |
| `BCO_LLM_BASE_URL` | API Base URL（兼容 OpenAI 接口） | — |
| `BCO_LLM_MODEL` | 模型名 | deepseek-chat |

也可通过 Web 设置页（`bco web` → 设置 → AI 配置）配置，API Key 加密存储到 `~/.bco/ai_config.yml`。优先级：环境变量 > ai_config.yml > 规则引擎。

### Claude Desktop 集成

```json
{
  "mcpServers": {
    "boss-career-ops": {
      "command": "bco",
      "args": ["mcp-server"]
    }
  }
}
```

---

## 参考项目

本项目融合了以下两个开源项目的核心能力：

- [boss-agent-cli](https://github.com/can4hou6joeng4/boss-agent-cli) — AI Agent 专用的 BOSS 直聘求职 CLI 工具，提供平台操作能力（搜索、打招呼、投递、聊天等）
- [career-ops](https://github.com/santifer/career-ops/tree/main) — AI 驱动的求职评估系统，提供智能评估能力（多维评分、简历定制、面试准备等）

## License

MIT
