@joohw/boss-cli 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +170 -172
- package/dist/browser/agent_operating_indicator.js +51 -51
- package/dist/browser/human_delay.d.ts +2 -0
- package/dist/browser/human_delay.d.ts.map +1 -1
- package/dist/browser/human_delay.js +4 -0
- package/dist/browser/human_delay.js.map +1 -1
- package/dist/cli/cliRouter.d.ts.map +1 -1
- package/dist/cli/cliRouter.js +56 -43
- package/dist/cli/cliRouter.js.map +1 -1
- package/dist/cli/version.d.ts +22 -0
- package/dist/cli/version.d.ts.map +1 -1
- package/dist/cli/version.js +127 -6
- package/dist/cli/version.js.map +1 -1
- package/dist/common/auth.js +49 -49
- package/dist/common/boss_paywall_popup.js +87 -87
- package/dist/common/boss_session_lock.d.ts.map +1 -1
- package/dist/common/boss_session_lock.js +7 -1
- package/dist/common/boss_session_lock.js.map +1 -1
- package/dist/common/boss_session_page.d.ts +2 -2
- package/dist/common/boss_session_page.d.ts.map +1 -1
- package/dist/common/boss_session_page.js +18 -29
- package/dist/common/boss_session_page.js.map +1 -1
- package/dist/common/boss_sidebar_nav.js +25 -26
- package/dist/common/boss_sidebar_nav.js.map +1 -1
- package/dist/common/c_resume_capture.d.ts +1 -0
- package/dist/common/c_resume_capture.d.ts.map +1 -1
- package/dist/common/c_resume_capture.js +69 -32
- package/dist/common/c_resume_capture.js.map +1 -1
- package/dist/ocr/resume_ocr.d.ts.map +1 -1
- package/dist/ocr/resume_ocr.js +4 -1
- package/dist/ocr/resume_ocr.js.map +1 -1
- package/dist/toolset/action.d.ts.map +1 -1
- package/dist/toolset/action.js +11 -7
- package/dist/toolset/action.js.map +1 -1
- package/dist/toolset/chat.d.ts.map +1 -1
- package/dist/toolset/chat.js +246 -230
- package/dist/toolset/chat.js.map +1 -1
- package/dist/toolset/deep-search.d.ts.map +1 -1
- package/dist/toolset/deep-search.js +289 -265
- package/dist/toolset/deep-search.js.map +1 -1
- package/dist/toolset/greet.d.ts.map +1 -1
- package/dist/toolset/greet.js +1 -6
- package/dist/toolset/greet.js.map +1 -1
- package/dist/toolset/jd.d.ts.map +1 -1
- package/dist/toolset/jd.js +132 -136
- package/dist/toolset/jd.js.map +1 -1
- package/dist/toolset/list.d.ts.map +1 -1
- package/dist/toolset/list.js +52 -45
- package/dist/toolset/list.js.map +1 -1
- package/dist/toolset/preview.d.ts.map +1 -1
- package/dist/toolset/preview.js +6 -8
- package/dist/toolset/preview.js.map +1 -1
- package/dist/toolset/recommend.d.ts.map +1 -1
- package/dist/toolset/recommend.js +222 -196
- package/dist/toolset/recommend.js.map +1 -1
- package/dist/toolset/send.d.ts.map +1 -1
- package/dist/toolset/send.js +6 -9
- package/dist/toolset/send.js.map +1 -1
- package/package.json +65 -65
- package/dist/browser/auth.d.ts +0 -33
- package/dist/browser/auth.d.ts.map +0 -1
- package/dist/browser/auth.js +0 -137
- package/dist/browser/auth.js.map +0 -1
- package/dist/browser/c_resume_capture.d.ts +0 -11
- package/dist/browser/c_resume_capture.d.ts.map +0 -1
- package/dist/browser/c_resume_capture.js +0 -76
- package/dist/browser/c_resume_capture.js.map +0 -1
- package/dist/browser/chat.d.ts +0 -7
- package/dist/browser/chat.d.ts.map +0 -1
- package/dist/browser/chat.js +0 -155
- package/dist/browser/chat.js.map +0 -1
- package/dist/browser/withLoggedInPage.d.ts +0 -7
- package/dist/browser/withLoggedInPage.d.ts.map +0 -1
- package/dist/browser/withLoggedInPage.js +0 -19
- package/dist/browser/withLoggedInPage.js.map +0 -1
- package/dist/facebook-cli/index.d.ts +0 -2
- package/dist/facebook-cli/index.d.ts.map +0 -1
- package/dist/facebook-cli/index.js +0 -2
- package/dist/facebook-cli/index.js.map +0 -1
- package/dist/toolset/c_resume_capture.d.ts +0 -11
- package/dist/toolset/c_resume_capture.d.ts.map +0 -1
- package/dist/toolset/c_resume_capture.js +0 -76
- package/dist/toolset/c_resume_capture.js.map +0 -1
- package/dist/toolset/chat_action.d.ts +0 -7
- package/dist/toolset/chat_action.d.ts.map +0 -1
- package/dist/toolset/chat_action.js +0 -355
- package/dist/toolset/chat_action.js.map +0 -1
- package/dist/toolset/list_candidates.d.ts +0 -4
- package/dist/toolset/list_candidates.d.ts.map +0 -1
- package/dist/toolset/list_candidates.js +0 -120
- package/dist/toolset/list_candidates.js.map +0 -1
- package/dist/toolset/list_positions.d.ts +0 -9
- package/dist/toolset/list_positions.d.ts.map +0 -1
- package/dist/toolset/list_positions.js +0 -41
- package/dist/toolset/list_positions.js.map +0 -1
- package/dist/toolset/open_chat.d.ts +0 -3
- package/dist/toolset/open_chat.d.ts.map +0 -1
- package/dist/toolset/open_chat.js +0 -423
- package/dist/toolset/open_chat.js.map +0 -1
- package/dist/toolset/recommend_greet.d.ts +0 -2
- package/dist/toolset/recommend_greet.d.ts.map +0 -1
- package/dist/toolset/recommend_greet.js +0 -27
- package/dist/toolset/recommend_greet.js.map +0 -1
- package/dist/toolset/search.d.ts +0 -24
- package/dist/toolset/search.d.ts.map +0 -1
- package/dist/toolset/search.js +0 -682
- package/dist/toolset/search.js.map +0 -1
- package/dist/toolset/send_message.d.ts +0 -12
- package/dist/toolset/send_message.d.ts.map +0 -1
- package/dist/toolset/send_message.js +0 -214
- package/dist/toolset/send_message.js.map +0 -1
- package/dist/toolset/skill.d.ts +0 -13
- package/dist/toolset/skill.d.ts.map +0 -1
- package/dist/toolset/skill.js +0 -85
- package/dist/toolset/skill.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,172 +1,170 @@
|
|
|
1
|
-
# boss-cli — Boss直聘自动化 CLI | 批量发消息 · 自动打招呼 · AI Agent 招聘工具
|
|
2
|
-
|
|
3
|
-
[](https://www.npmjs.com/package/@joohw/boss-cli)
|
|
4
|
-
[](https://www.npmjs.com/package/@joohw/boss-cli)
|
|
5
|
-
[](./LICENSE)
|
|
6
|
-
[](https://github.com/joohw/boss-cli)
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
boss
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
| Boss
|
|
29
|
-
| Boss
|
|
30
|
-
|
|
|
31
|
-
|
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
>
|
|
49
|
-
>
|
|
50
|
-
>
|
|
51
|
-
>
|
|
52
|
-
>
|
|
53
|
-
>
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
|
68
|
-
|
|
|
69
|
-
| `boss
|
|
70
|
-
| `boss
|
|
71
|
-
| `boss
|
|
72
|
-
| `boss
|
|
73
|
-
| `boss
|
|
74
|
-
| `boss
|
|
75
|
-
| `boss
|
|
76
|
-
| `boss
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
#
|
|
89
|
-
boss
|
|
90
|
-
|
|
91
|
-
#
|
|
92
|
-
boss
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
boss
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
boss
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
设置环境变量 `
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
-
|
|
171
|
-
- GitHub:[joohw/boss-cli](https://github.com/joohw/boss-cli)
|
|
172
|
-
- 问题反馈:[Issues](https://github.com/joohw/boss-cli/issues)
|
|
1
|
+
# boss-cli — Boss直聘自动化 CLI | 批量发消息 · 自动打招呼 · AI Agent 招聘工具
|
|
2
|
+
|
|
3
|
+
[](https://www.npmjs.com/package/@joohw/boss-cli)
|
|
4
|
+
[](https://www.npmjs.com/package/@joohw/boss-cli)
|
|
5
|
+
[](./LICENSE)
|
|
6
|
+
[](https://github.com/joohw/boss-cli)
|
|
7
|
+
|
|
8
|
+
官网主页:[boss-cli.com](https://boss-cli.com)
|
|
9
|
+
|
|
10
|
+
**boss-cli**(`@joohw/boss-cli`)是开源的 **Boss直聘自动化命令行工具**。基于 Puppeteer / CDP 协议驱动本机 Chrome,无需 Selenium,把 Boss直聘 B 端的核心 HR 操作搬进终端:**候选人列表**、**批量发消息**、**自动打招呼**、**在线简历预览**、**深度搜索**、**职位管理**。
|
|
11
|
+
|
|
12
|
+
适合 HR 日常提效,也适合 Claude / GPT / Gemini 等 **AI Agent** 通过子进程调用,搭建全自动化招聘流水线。
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
npm install -g @joohw/boss-cli@latest
|
|
16
|
+
boss login
|
|
17
|
+
boss help
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
> 纯 CLI,不内置对话式 Agent。每条命令输出结构化纯文本,Agent 可直接解析并编排多步流程。
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 为什么选择 boss-cli?
|
|
25
|
+
|
|
26
|
+
| 场景 | 命令 |
|
|
27
|
+
| --- | --- |
|
|
28
|
+
| Boss直聘批量发消息 | `boss send --text "..."` 配合脚本循环 |
|
|
29
|
+
| Boss直聘自动打招呼 | `boss greet <姓名> [--job <岗位>]` |
|
|
30
|
+
| Boss直聘候选人筛选 | `boss list` / `boss list --unread` |
|
|
31
|
+
| Boss直聘脚本自动化 | 本机 Chrome + CDP,Cookie 本地存储 |
|
|
32
|
+
| AI 招聘 Agent | 子进程调用,输出 Agent 友好 |
|
|
33
|
+
| 数据隐私 | 不经过第三方服务器,数据在 `~/.boss-cli/` |
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## 安装
|
|
38
|
+
|
|
39
|
+
**要求**:Node.js ≥ 20,本机已安装 Chrome / Chromium。
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
npm install -g @joohw/boss-cli@latest
|
|
43
|
+
boss help
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
如果你觉得 boss-cli 好用,欢迎给本仓库一个 Star;使用中遇到问题请提交 Issue,新功能或改进也欢迎提交 PR。
|
|
47
|
+
|
|
48
|
+
> **macOS / Linux 权限问题**:系统 Node 默认全局前缀在 `/usr/local`,当前账户无写权限。建议先把全局前缀挪到用户目录(一次性配置):
|
|
49
|
+
>
|
|
50
|
+
> ```bash
|
|
51
|
+
> mkdir -p ~/.npm-global
|
|
52
|
+
> npm config set prefix ~/.npm-global
|
|
53
|
+
> echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.zshrc # bash 用 ~/.bash_profile
|
|
54
|
+
> source ~/.zshrc
|
|
55
|
+
> ```
|
|
56
|
+
>
|
|
57
|
+
> 使用 `fnm` / `nvm` / `volta` 的用户可跳过此步。Windows 用户无需此步。
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## 命令一览
|
|
62
|
+
|
|
63
|
+
| 命令 | 说明 |
|
|
64
|
+
| --- | --- |
|
|
65
|
+
| `boss login` | 打开 Boss直聘登录页(扫码/验证后手动完成) |
|
|
66
|
+
| `boss update` | 通过 npm 安装最新版 boss-cli |
|
|
67
|
+
| `boss list [--unread]` | 读取聊天列表;`--unread` 仅未读 |
|
|
68
|
+
| `boss chat <姓名> [--strict]` | 打开指定候选人会话 |
|
|
69
|
+
| `boss send [--text <内容>]` | 向当前会话发送消息 |
|
|
70
|
+
| `boss action <操作>` | 索要简历 / 不合适 / 备注 / 交换微信等 |
|
|
71
|
+
| `boss recommend [岗位关键字]` | 读取推荐候选人列表 |
|
|
72
|
+
| `boss greet <姓名> [--job <岗位>]` | 对推荐候选人打招呼(有次数限制) |
|
|
73
|
+
| `boss preview <姓名> [--job <岗位>]` | 在线简历预览(每日次数有限) |
|
|
74
|
+
| `boss deep-search [岗位关键字]` | 深度搜索列表 / 触发立即匹配 |
|
|
75
|
+
| `boss positions` | 读取职位列表 |
|
|
76
|
+
| `boss jd <名称>` | 抓取职位 JD 缓存到本地 |
|
|
77
|
+
|
|
78
|
+
完整用法:`boss help`
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## 快速上手
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
# 1. 登录
|
|
86
|
+
boss login
|
|
87
|
+
|
|
88
|
+
# 2. 查看未读候选人
|
|
89
|
+
boss list --unread
|
|
90
|
+
|
|
91
|
+
# 3. 打开会话并发送消息
|
|
92
|
+
boss chat 张三
|
|
93
|
+
boss send --text "您好,请问方便发一下简历吗?"
|
|
94
|
+
|
|
95
|
+
# 4. 推荐页自动打招呼
|
|
96
|
+
boss recommend 前端工程师
|
|
97
|
+
boss greet 张三 --job 前端工程师
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
## 与 AI Agent 集成
|
|
103
|
+
|
|
104
|
+
boss-cli 每条命令输出纯文本,适合 LLM 通过子进程编排:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
1. boss list --unread → 获取未读候选人
|
|
108
|
+
2. boss chat <姓名> → 打开会话
|
|
109
|
+
3. boss action resume → 索要简历
|
|
110
|
+
4. boss send -t "..." → 发送消息
|
|
111
|
+
5. boss recommend → 读取推荐列表
|
|
112
|
+
6. boss greet <姓名> → 批量打招呼
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
详见 [AGENTS.md](./AGENTS.md)。
|
|
116
|
+
|
|
117
|
+
---
|
|
118
|
+
|
|
119
|
+
## 常见问题
|
|
120
|
+
|
|
121
|
+
**boss-cli 是什么?**
|
|
122
|
+
开源 Boss直聘自动化 CLI,用终端命令代替手动操作 Boss直聘网页,支持 AI Agent 编排。
|
|
123
|
+
|
|
124
|
+
**和 Selenium / Playwright 有什么区别?**
|
|
125
|
+
boss-cli 基于 CDP 连接本机 Chrome,复用已有登录态,针对 Boss直聘 B 端页面做了专用封装,开箱即用。
|
|
126
|
+
|
|
127
|
+
**需要额外下载浏览器吗?**
|
|
128
|
+
不需要。使用本机已安装的 Chrome / Chromium,通过 CDP 协议连接。
|
|
129
|
+
|
|
130
|
+
**数据会上传到服务器吗?**
|
|
131
|
+
不会。Cookie 和缓存仅存储在本地 `~/.boss-cli/`,CLI 不经过任何第三方服务器。
|
|
132
|
+
|
|
133
|
+
**如何无头模式运行?**
|
|
134
|
+
设置环境变量 `BOSS_BROWSER_HEADLESS=true`(默认 headful,便于扫码登录)。
|
|
135
|
+
|
|
136
|
+
**如何自定义操作蒙层品牌?**
|
|
137
|
+
设置环境变量 `BOSS_CLI_AGENT_BRAND=你的品牌名`。
|
|
138
|
+
|
|
139
|
+
---
|
|
140
|
+
|
|
141
|
+
## 数据目录
|
|
142
|
+
|
|
143
|
+
| 路径 | 内容 |
|
|
144
|
+
| --- | --- |
|
|
145
|
+
| `~/.boss-cli/.cache/` | Cookie、浏览器用户数据 |
|
|
146
|
+
| `~/.boss-cli/jd/` | `boss jd` 缓存的岗位描述 |
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
## 开发
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
npm run build # 编译到 dist/
|
|
154
|
+
npm run dev # build + 交互模式
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 许可
|
|
160
|
+
|
|
161
|
+
[GPL-3.0](./LICENSE)
|
|
162
|
+
|
|
163
|
+
---
|
|
164
|
+
|
|
165
|
+
## 相关链接
|
|
166
|
+
|
|
167
|
+
- 官网:[boss-cli.com](https://boss-cli.com)
|
|
168
|
+
- npm:[@joohw/boss-cli](https://www.npmjs.com/package/@joohw/boss-cli)
|
|
169
|
+
- GitHub:[joohw/boss-cli](https://github.com/joohw/boss-cli)
|
|
170
|
+
- 问题反馈:[Issues](https://github.com/joohw/boss-cli/issues)
|
|
@@ -24,57 +24,57 @@ export async function showAgentOperatingIndicator(page) {
|
|
|
24
24
|
}
|
|
25
25
|
const styleEl = document.createElement('style');
|
|
26
26
|
styleEl.id = styleId;
|
|
27
|
-
styleEl.textContent = `
|
|
28
|
-
@keyframes boss-cli-breathe {
|
|
29
|
-
0%,
|
|
30
|
-
100% {
|
|
31
|
-
opacity: 0.82;
|
|
32
|
-
filter: brightness(0.96) saturate(0.95);
|
|
33
|
-
}
|
|
34
|
-
50% {
|
|
35
|
-
opacity: 1;
|
|
36
|
-
filter: brightness(1.05) saturate(1.05);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
#${overlay} {
|
|
40
|
-
position: fixed;
|
|
41
|
-
inset: 0;
|
|
42
|
-
width: 100vw;
|
|
43
|
-
height: 100vh;
|
|
44
|
-
height: 100dvh;
|
|
45
|
-
z-index: 2147483647;
|
|
46
|
-
pointer-events: none;
|
|
47
|
-
overflow: hidden;
|
|
48
|
-
box-sizing: border-box;
|
|
49
|
-
background:
|
|
50
|
-
radial-gradient(ellipse 80% 60% at 50% 45%, rgba(255, 255, 255, 0.07) 0%, transparent 55%),
|
|
51
|
-
linear-gradient(
|
|
52
|
-
125deg,
|
|
53
|
-
rgba(255, 89, 94, 0.22) 0%,
|
|
54
|
-
rgba(255, 146, 76, 0.18) 16%,
|
|
55
|
-
rgba(255, 202, 58, 0.16) 32%,
|
|
56
|
-
rgba(197, 224, 99, 0.14) 46%,
|
|
57
|
-
rgba(138, 201, 38, 0.15) 54%,
|
|
58
|
-
rgba(25, 130, 196, 0.2) 70%,
|
|
59
|
-
rgba(106, 76, 147, 0.18) 84%,
|
|
60
|
-
rgba(185, 103, 255, 0.2) 100%
|
|
61
|
-
);
|
|
62
|
-
animation: boss-cli-breathe 2.6s ease-in-out infinite;
|
|
63
|
-
display: flex;
|
|
64
|
-
align-items: center;
|
|
65
|
-
justify-content: center;
|
|
66
|
-
padding: 1rem;
|
|
67
|
-
}
|
|
68
|
-
#${overlay} .boss-cli-agent-label {
|
|
69
|
-
max-width: min(36rem, 92vw);
|
|
70
|
-
font: 600 14px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
71
|
-
color: #ffffff;
|
|
72
|
-
letter-spacing: 0.02em;
|
|
73
|
-
text-align: center;
|
|
74
|
-
text-shadow:
|
|
75
|
-
0 0 12px rgba(0, 0, 0, 0.55),
|
|
76
|
-
0 1px 4px rgba(0, 0, 0, 0.45);
|
|
77
|
-
}
|
|
27
|
+
styleEl.textContent = `
|
|
28
|
+
@keyframes boss-cli-breathe {
|
|
29
|
+
0%,
|
|
30
|
+
100% {
|
|
31
|
+
opacity: 0.82;
|
|
32
|
+
filter: brightness(0.96) saturate(0.95);
|
|
33
|
+
}
|
|
34
|
+
50% {
|
|
35
|
+
opacity: 1;
|
|
36
|
+
filter: brightness(1.05) saturate(1.05);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
#${overlay} {
|
|
40
|
+
position: fixed;
|
|
41
|
+
inset: 0;
|
|
42
|
+
width: 100vw;
|
|
43
|
+
height: 100vh;
|
|
44
|
+
height: 100dvh;
|
|
45
|
+
z-index: 2147483647;
|
|
46
|
+
pointer-events: none;
|
|
47
|
+
overflow: hidden;
|
|
48
|
+
box-sizing: border-box;
|
|
49
|
+
background:
|
|
50
|
+
radial-gradient(ellipse 80% 60% at 50% 45%, rgba(255, 255, 255, 0.07) 0%, transparent 55%),
|
|
51
|
+
linear-gradient(
|
|
52
|
+
125deg,
|
|
53
|
+
rgba(255, 89, 94, 0.22) 0%,
|
|
54
|
+
rgba(255, 146, 76, 0.18) 16%,
|
|
55
|
+
rgba(255, 202, 58, 0.16) 32%,
|
|
56
|
+
rgba(197, 224, 99, 0.14) 46%,
|
|
57
|
+
rgba(138, 201, 38, 0.15) 54%,
|
|
58
|
+
rgba(25, 130, 196, 0.2) 70%,
|
|
59
|
+
rgba(106, 76, 147, 0.18) 84%,
|
|
60
|
+
rgba(185, 103, 255, 0.2) 100%
|
|
61
|
+
);
|
|
62
|
+
animation: boss-cli-breathe 2.6s ease-in-out infinite;
|
|
63
|
+
display: flex;
|
|
64
|
+
align-items: center;
|
|
65
|
+
justify-content: center;
|
|
66
|
+
padding: 1rem;
|
|
67
|
+
}
|
|
68
|
+
#${overlay} .boss-cli-agent-label {
|
|
69
|
+
max-width: min(36rem, 92vw);
|
|
70
|
+
font: 600 14px/1.45 system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
71
|
+
color: #ffffff;
|
|
72
|
+
letter-spacing: 0.02em;
|
|
73
|
+
text-align: center;
|
|
74
|
+
text-shadow:
|
|
75
|
+
0 0 12px rgba(0, 0, 0, 0.55),
|
|
76
|
+
0 1px 4px rgba(0, 0, 0, 0.45);
|
|
77
|
+
}
|
|
78
78
|
`;
|
|
79
79
|
const bar = document.createElement('div');
|
|
80
80
|
bar.id = overlay;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"human_delay.d.ts","sourceRoot":"","sources":["../../src/browser/human_delay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG3C,iCAAiC;AACjC,eAAO,MAAM,mBAAmB;;;CAAoC,CAAC;AAErE,qBAAqB;AACrB,eAAO,MAAM,wBAAwB;;;CAAmC,CAAC;AAEzE,yBAAyB;AACzB,eAAO,MAAM,uBAAuB;;;CAAkC,CAAC;AAEvE,0BAA0B;AAC1B,eAAO,MAAM,4BAA4B;;;CAAmC,CAAC;AAE7E,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB;;;CAAiC,CAAC;AAEnE,qBAAqB;AACrB,eAAO,MAAM,kBAAkB;;;CAAmC,CAAC;AAEnE,mBAAmB;AACnB,eAAO,MAAM,YAAY;;;CAAkC,CAAC;AAE5D,uBAAuB;AACvB,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD,gBAAgB;AAChB,eAAO,MAAM,mBAAmB;;;CAAkC,CAAC;AAEnE,cAAc;AACd,eAAO,MAAM,mBAAmB;;;CAAiC,CAAC;AAElE,oBAAoB;AACpB,eAAO,MAAM,kBAAkB;;;CAAiC,CAAC;AAEjE,0BAA0B;AAC1B,eAAO,MAAM,mBAAmB;;;CAAkC,CAAC;AAEnE,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB;;;CAAoC,CAAC;AAEvE,yBAAyB;AACzB,eAAO,MAAM,2BAA2B;;;CAAmC,CAAC;AAE5E,6BAA6B;AAC7B,eAAO,MAAM,0BAA0B;;;CAAkC,CAAC;AAE1E,4BAA4B;AAC5B,eAAO,MAAM,8BAA8B;;;CAAmC,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAEvD,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,yBAAyB;AACzB,eAAO,MAAM,8BAA8B;;;CAAoC,CAAC;AAEhF;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAYf"}
|
|
1
|
+
{"version":3,"file":"human_delay.d.ts","sourceRoot":"","sources":["../../src/browser/human_delay.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AAG3C,iCAAiC;AACjC,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CAEzD;AAED,iCAAiC;AACjC,eAAO,MAAM,mBAAmB;;;CAAoC,CAAC;AAErE,qBAAqB;AACrB,eAAO,MAAM,wBAAwB;;;CAAmC,CAAC;AAEzE,yBAAyB;AACzB,eAAO,MAAM,uBAAuB;;;CAAkC,CAAC;AAEvE,0BAA0B;AAC1B,eAAO,MAAM,4BAA4B;;;CAAmC,CAAC;AAE7E,+CAA+C;AAC/C,eAAO,MAAM,oBAAoB;;;CAAiC,CAAC;AAEnE,qBAAqB;AACrB,eAAO,MAAM,kBAAkB;;;CAAmC,CAAC;AAEnE,mBAAmB;AACnB,eAAO,MAAM,YAAY;;;CAAkC,CAAC;AAE5D,uBAAuB;AACvB,eAAO,MAAM,2BAA2B,OAAO,CAAC;AAEhD,gBAAgB;AAChB,eAAO,MAAM,mBAAmB;;;CAAkC,CAAC;AAEnE,cAAc;AACd,eAAO,MAAM,mBAAmB;;;CAAiC,CAAC;AAElE,oBAAoB;AACpB,eAAO,MAAM,kBAAkB;;;CAAiC,CAAC;AAEjE,0BAA0B;AAC1B,eAAO,MAAM,mBAAmB;;;CAAkC,CAAC;AAEnE,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB;;;CAAoC,CAAC;AAEvE,yBAAyB;AACzB,eAAO,MAAM,2BAA2B;;;CAAmC,CAAC;AAE5E,6BAA6B;AAC7B,eAAO,MAAM,0BAA0B;;;CAAkC,CAAC;AAE1E,4BAA4B;AAC5B,eAAO,MAAM,8BAA8B;;;CAAmC,CAAC;AAE/E;;;GAGG;AACH,eAAO,MAAM,gCAAgC,QAAS,CAAC;AAEvD,kDAAkD;AAClD,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAE9C,yBAAyB;AACzB,eAAO,MAAM,8BAA8B;;;CAAoC,CAAC;AAEhF;;GAEG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,IAAI,EACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,IAAI,CAAC,CAYf"}
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { randomIntInclusive, sleep } from './timing.js';
|
|
2
|
+
/** macOS 用 Meta,其余平台用 Control */
|
|
3
|
+
export function selectAllModifierKey() {
|
|
4
|
+
return process.platform === 'darwin' ? 'Meta' : 'Control';
|
|
5
|
+
}
|
|
2
6
|
/** 导航到沟通页并 load 后,等待 SPA/接口渲染 */
|
|
3
7
|
export const CHAT_GOTO_SETTLE_MS = { min: 2800, max: 5200 };
|
|
4
8
|
/** 页面执行上下文被销毁后重试前 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"human_delay.js","sourceRoot":"","sources":["../../src/browser/human_delay.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"human_delay.js","sourceRoot":"","sources":["../../src/browser/human_delay.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cliRouter.d.ts","sourceRoot":"","sources":["../../src/cli/cliRouter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cliRouter.d.ts","sourceRoot":"","sources":["../../src/cli/cliRouter.ts"],"names":[],"mappings":"AAsEA,gEAAgE;AAChE,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,OAAO,GAAG,OAAO,CAMxD;AAiLD;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsLpE;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAWjE;AAkDD,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmC1D"}
|
package/dist/cli/cliRouter.js
CHANGED
|
@@ -7,7 +7,7 @@ import { stdin as input, stdout as output } from 'node:process';
|
|
|
7
7
|
import { detachBrowserSession } from '../browser/index.js';
|
|
8
8
|
import { implChatAction, implLogin, implListCandidates, implListUnreadCandidates, implListPositions, implListPositionsWithOptions, implOpenChat, implRecommend, implPreview, implRecommendGreet, implSetBaiduCredentials, implBossSearch, implSendMessage, } from '../toolset/index.js';
|
|
9
9
|
import { printBossInteractiveBanner } from './banner.js';
|
|
10
|
-
import { printVersionInfo } from './version.js';
|
|
10
|
+
import { printPackageUpdateNoticeIfDue, printVersionInfo, runPackageUpdate, } from './version.js';
|
|
11
11
|
class CliError extends Error {
|
|
12
12
|
constructor(message) {
|
|
13
13
|
super(message);
|
|
@@ -100,48 +100,50 @@ function normalizeSubcommand(cmd) {
|
|
|
100
100
|
}
|
|
101
101
|
}
|
|
102
102
|
function printHelp() {
|
|
103
|
-
console.error(`boss-cli — Boss 直聘浏览器自动化(纯 CLI,无 Agent 运行时)
|
|
104
|
-
|
|
105
|
-
用法与说明:
|
|
106
|
-
boss
|
|
107
|
-
进入交互模式;提示符 boss> ,exit / quit 退出;Ctrl+C 正常结束
|
|
108
|
-
boss help
|
|
109
|
-
显示本帮助
|
|
110
|
-
boss version | ver(或 -v / --version)
|
|
111
|
-
显示当前版本并检查 npm 是否有更新
|
|
112
|
-
boss
|
|
113
|
-
|
|
114
|
-
boss
|
|
115
|
-
|
|
116
|
-
boss
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
boss
|
|
130
|
-
|
|
131
|
-
boss
|
|
132
|
-
|
|
133
|
-
boss
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
103
|
+
console.error(`boss-cli — Boss 直聘浏览器自动化(纯 CLI,无 Agent 运行时)
|
|
104
|
+
|
|
105
|
+
用法与说明:
|
|
106
|
+
boss
|
|
107
|
+
进入交互模式;提示符 boss> ,exit / quit 退出;Ctrl+C 正常结束
|
|
108
|
+
boss help
|
|
109
|
+
显示本帮助
|
|
110
|
+
boss version | ver(或 -v / --version)
|
|
111
|
+
显示当前版本并检查 npm 是否有更新
|
|
112
|
+
boss update
|
|
113
|
+
使用 npm 安装最新版 boss-cli
|
|
114
|
+
boss login
|
|
115
|
+
打开登录页(需要用户在浏览器中自行完成登录,这个命令会直接返回)
|
|
116
|
+
boss list [--unread]
|
|
117
|
+
读取「全部」聊天列表候选人;--unread 仅显示未读(角标>0)
|
|
118
|
+
boss chat <姓名> [--strict]
|
|
119
|
+
打开指定联系人会话;默认包含匹配,--strict 为精确匹配
|
|
120
|
+
仅用于已建立联系的候选人(即在 list 里可见的会话对象)
|
|
121
|
+
boss action <操作> [--remark <备注>]
|
|
122
|
+
仅在当前聊天页已打开候选人详情时执行操作,并只返回 action 执行结果
|
|
123
|
+
操作: resume | not-fit | remark | agree-resume | request-attachment-resume | history | wechat
|
|
124
|
+
request-attachment-resume:工具栏「求简历」,确认后向对方发送默认话术索要附件简历(需双方各至少发过一条消息)
|
|
125
|
+
操作为 remark 时必须提供 --remark
|
|
126
|
+
boss send [--text <内容>] [-t <内容>] [--request-resume]
|
|
127
|
+
仅发送文本消息(等价于在当前会话输入框发送后回车)
|
|
128
|
+
--request-resume:发送后延迟片刻自动执行「求简历」操作
|
|
129
|
+
boss positions
|
|
130
|
+
读取当前职位列表(含开放/待开放/已关闭状态)
|
|
131
|
+
boss jd <name>
|
|
132
|
+
抓取指定职位详情并缓存到项目目录同名 .md
|
|
133
|
+
boss recommend [岗位关键字]
|
|
134
|
+
进入推荐页并读取推荐列表;带岗位关键字时先在岗位下拉中模糊匹配并切换
|
|
135
|
+
boss preview <姓名> [--job <岗位关键字>]
|
|
136
|
+
在线简历预览:须当前已在「推荐」(/web/chat/recommend) 或「深度搜索」(/web/chat/aiform) 且列表已加载;不会自动跳转
|
|
137
|
+
注意:平台对在线简历每日可查看次数有限,请按需使用、谨慎查看
|
|
138
|
+
boss greet <姓名> [--job <岗位关键字>]
|
|
139
|
+
在「推荐」页(或当前已在 Boss 聊天侧栏打开的、含候选人列表的页面)对列表中的候选人点击“打招呼”
|
|
140
|
+
可选 --job 先在岗位下拉中模糊匹配并切换(与 recommend / preview 共用同一套选择逻辑)
|
|
141
|
+
须先在对应页加载出候选人列表
|
|
142
|
+
会消耗打招呼次数且单次成本较高,请谨慎使用
|
|
143
|
+
boss deep-search [岗位关键字](别名 deepsearch)
|
|
144
|
+
进入「深度搜索」页并输出当前匹配结果列表;可选岗位关键字仅切换下拉框。不会点击「立即匹配」
|
|
145
|
+
|
|
146
|
+
!!鉴于boss的风控机制存在更新,且本cli的功能在逐步完善中,若遇到部分操作问题,请先检查版本更新
|
|
145
147
|
`);
|
|
146
148
|
}
|
|
147
149
|
/** 解析 `--key value` / `--key=value` / 布尔 `--flag` */
|
|
@@ -239,6 +241,13 @@ export async function executeCommand(argv) {
|
|
|
239
241
|
if (cmd === 'login') {
|
|
240
242
|
return implLogin();
|
|
241
243
|
}
|
|
244
|
+
if (cmd === 'update') {
|
|
245
|
+
const { rest, opts, flags } = parseOpts(tail);
|
|
246
|
+
if (rest.length > 0 || Object.keys(opts).length > 0 || flags.size > 0) {
|
|
247
|
+
die('❌ 用法: update');
|
|
248
|
+
}
|
|
249
|
+
return runPackageUpdate();
|
|
250
|
+
}
|
|
242
251
|
if (cmd === 'list') {
|
|
243
252
|
const { flags } = parseOpts(tail);
|
|
244
253
|
if (flags.has('unread')) {
|
|
@@ -388,6 +397,7 @@ export async function runOneCommand(argv) {
|
|
|
388
397
|
}
|
|
389
398
|
async function runInteractiveLoop() {
|
|
390
399
|
const rl = createInterface({ input, output, terminal: true });
|
|
400
|
+
await printPackageUpdateNoticeIfDue();
|
|
391
401
|
printBossInteractiveBanner();
|
|
392
402
|
try {
|
|
393
403
|
for (;;) {
|
|
@@ -453,6 +463,9 @@ export async function runCli(argv) {
|
|
|
453
463
|
await printVersionInfo();
|
|
454
464
|
return;
|
|
455
465
|
}
|
|
466
|
+
if (normalizeSubcommand(argv[0] ?? '') !== 'update') {
|
|
467
|
+
await printPackageUpdateNoticeIfDue();
|
|
468
|
+
}
|
|
456
469
|
if (argv[0] === 'help' || argv[0] === '--help' || argv[0] === '-h') {
|
|
457
470
|
printHelp();
|
|
458
471
|
return;
|