cold-msg 0.1.0__tar.gz
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.
- cold_msg-0.1.0/PKG-INFO +244 -0
- cold_msg-0.1.0/README.md +215 -0
- cold_msg-0.1.0/cold_msg/__init__.py +7 -0
- cold_msg-0.1.0/cold_msg/cli.py +282 -0
- cold_msg-0.1.0/cold_msg/core/__init__.py +8 -0
- cold_msg-0.1.0/cold_msg/core/config.py +215 -0
- cold_msg-0.1.0/cold_msg/core/generator.py +129 -0
- cold_msg-0.1.0/cold_msg/core/llm.py +78 -0
- cold_msg-0.1.0/cold_msg/core/prompt.py +128 -0
- cold_msg-0.1.0/cold_msg/web/__init__.py +1 -0
- cold_msg-0.1.0/cold_msg/web/app.py +279 -0
- cold_msg-0.1.0/cold_msg/web/templates/config.html +357 -0
- cold_msg-0.1.0/cold_msg/web/templates/index.html +276 -0
- cold_msg-0.1.0/cold_msg/web/templates/jobs.html +518 -0
- cold_msg-0.1.0/cold_msg.egg-info/PKG-INFO +244 -0
- cold_msg-0.1.0/cold_msg.egg-info/SOURCES.txt +20 -0
- cold_msg-0.1.0/cold_msg.egg-info/dependency_links.txt +1 -0
- cold_msg-0.1.0/cold_msg.egg-info/entry_points.txt +2 -0
- cold_msg-0.1.0/cold_msg.egg-info/requires.txt +12 -0
- cold_msg-0.1.0/cold_msg.egg-info/top_level.txt +1 -0
- cold_msg-0.1.0/pyproject.toml +67 -0
- cold_msg-0.1.0/setup.cfg +4 -0
cold_msg-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: cold-msg
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: 招聘冷邮件智能生成工具 - 基于候选人简历文本自动生成 Cold Email
|
|
5
|
+
Author-email: Chandler <275737875@qq.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Keywords: cold-email,recruiting,llm,ai,hr
|
|
8
|
+
Classifier: Development Status :: 3 - Alpha
|
|
9
|
+
Classifier: Intended Audience :: Developers
|
|
10
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
11
|
+
Classifier: Programming Language :: Python :: 3
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Topic :: Communications :: Email
|
|
16
|
+
Requires-Python: >=3.10
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
Requires-Dist: llmdog>=0.1.0
|
|
19
|
+
Requires-Dist: flask>=3.0.0
|
|
20
|
+
Requires-Dist: typer>=0.9.0
|
|
21
|
+
Requires-Dist: rich>=13.0.0
|
|
22
|
+
Requires-Dist: pyyaml>=6.0
|
|
23
|
+
Requires-Dist: python-dotenv>=1.0.0
|
|
24
|
+
Provides-Extra: dev
|
|
25
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
26
|
+
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
27
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
28
|
+
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
29
|
+
|
|
30
|
+
# ColdMsg - 招聘冷邮件智能生成工具
|
|
31
|
+
|
|
32
|
+
基于候选人简历文本,利用 LLM 自动匹配职位并生成专业的招聘 Cold Email。
|
|
33
|
+
|
|
34
|
+
## 功能特性
|
|
35
|
+
|
|
36
|
+
- **智能匹配**:AI 根据候选人技术背景自动匹配最合适的职位
|
|
37
|
+
- **模板可配**:邮件模板各字段均可自定义,支持占位符变量替换
|
|
38
|
+
- **多种使用方式**:Python 库 / CLI 命令行 / Web 界面
|
|
39
|
+
- **职位管理**:支持 YAML/JSON 导入导出,Web 端增删改查
|
|
40
|
+
- **配置灵活**:`.env` + `config.yaml` + 环境变量三层优先级
|
|
41
|
+
|
|
42
|
+
## 安装
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
pip install cold-msg
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
或从源码安装:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
git clone https://github.com/example/cold-msg.git
|
|
52
|
+
cd cold-msg
|
|
53
|
+
pip install -e .
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## 快速开始
|
|
57
|
+
|
|
58
|
+
### 1. 配置环境变量
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
cp .env.example .env
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
编辑 `.env` 文件,填入 LLM 相关配置:
|
|
65
|
+
|
|
66
|
+
```env
|
|
67
|
+
LLM_MODEL=deepseek-v3.1-terminus
|
|
68
|
+
COLDMSG_SENDER_NAME=Michael
|
|
69
|
+
COLDMSG_TEAM_NAME=高端招聘团队
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
### 2. 准备职位列表
|
|
73
|
+
|
|
74
|
+
在项目根目录创建 `config.yaml`:
|
|
75
|
+
|
|
76
|
+
```yaml
|
|
77
|
+
sender_name: Michael
|
|
78
|
+
team_name: 高端招聘团队
|
|
79
|
+
company_desc: 国际知名大型科技公司
|
|
80
|
+
llm_model: deepseek-v3.1-terminus
|
|
81
|
+
|
|
82
|
+
jobs:
|
|
83
|
+
- job_title: 大模型Agent专家
|
|
84
|
+
qualification: Agent,Agentic技术,博士,5年+经验
|
|
85
|
+
location: 北上深等
|
|
86
|
+
- job_title: 编译器实验室专家
|
|
87
|
+
qualification: 编译器技术精通,MLIR,LLVM,GCC,AI编译等
|
|
88
|
+
location: 北上深杭等
|
|
89
|
+
|
|
90
|
+
email_template:
|
|
91
|
+
sender_name: Michael
|
|
92
|
+
team_name: 高端招聘团队
|
|
93
|
+
company_desc: 国际知名大型科技公司
|
|
94
|
+
greeting: "您好{FullName},"
|
|
95
|
+
intro: "我来自{TeamName},很冒昧的给您发邮件。"
|
|
96
|
+
body: "我负责{CompanyDesc}招聘,向您推荐\"{JobTitle}\"的职位。"
|
|
97
|
+
location_line: "职位地点: {Location}"
|
|
98
|
+
closing: "如果您有兴趣具体了解的话,可以留个电话或者微信~"
|
|
99
|
+
sign_off: "祝颂商祺"
|
|
100
|
+
signature: "Michael"
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 使用方式
|
|
104
|
+
|
|
105
|
+
### Python 库
|
|
106
|
+
|
|
107
|
+
```python
|
|
108
|
+
from cold_msg import generate_cold_email
|
|
109
|
+
|
|
110
|
+
result = generate_cold_email(
|
|
111
|
+
resume_text="张三,10年AI研发经验,精通大模型训练、推理优化..."
|
|
112
|
+
)
|
|
113
|
+
|
|
114
|
+
if result.match_job_title:
|
|
115
|
+
print(f"推荐职位: {result.recommend_title}")
|
|
116
|
+
print(result.email_content)
|
|
117
|
+
else:
|
|
118
|
+
print("未匹配到合适职位")
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### CLI 命令行
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# 生成冷邮件
|
|
125
|
+
cold-msg generate "张三,10年AI研发经验,精通大模型训练、推理优化..."
|
|
126
|
+
|
|
127
|
+
# 指定模型和输出文件
|
|
128
|
+
cold-msg generate "简历文本" --model deepseek-v3.1-terminus -o result.json
|
|
129
|
+
|
|
130
|
+
# 输出原始 JSON
|
|
131
|
+
cold-msg generate "简历文本" --raw
|
|
132
|
+
|
|
133
|
+
# 启动 Web 界面
|
|
134
|
+
cold-msg web --port 6060
|
|
135
|
+
|
|
136
|
+
# 查看配置
|
|
137
|
+
cold-msg config show
|
|
138
|
+
|
|
139
|
+
# 管理职位
|
|
140
|
+
cold-msg jobs list
|
|
141
|
+
cold-msg jobs add --title "高级算法工程师" --qual "NLP, LLM, 3年+" --loc "北京"
|
|
142
|
+
cold-msg jobs import --file jobs.yaml
|
|
143
|
+
cold-msg jobs export --file jobs.json
|
|
144
|
+
|
|
145
|
+
# 管理邮件模板
|
|
146
|
+
cold-msg template show
|
|
147
|
+
cold-msg template set greeting "您好{FullName},您好!"
|
|
148
|
+
cold-msg template preview
|
|
149
|
+
cold-msg template reset
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
### Web 界面
|
|
153
|
+
|
|
154
|
+
```bash
|
|
155
|
+
cold-msg web
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
浏览器访问 `http://127.0.0.1:6060`,提供三个页面:
|
|
159
|
+
|
|
160
|
+
| 页面 | 路径 | 功能 |
|
|
161
|
+
|------|------|------|
|
|
162
|
+
| 生成邮件 | `/` | 粘贴简历文本,一键生成冷邮件 |
|
|
163
|
+
| 职位管理 | `/jobs` | 增删改查职位,支持 YAML 导入导出 |
|
|
164
|
+
| 模板配置 | `/config` | 自定义邮件模板各字段,实时预览 |
|
|
165
|
+
|
|
166
|
+
## REST API
|
|
167
|
+
|
|
168
|
+
| 方法 | 路径 | 说明 |
|
|
169
|
+
|------|------|------|
|
|
170
|
+
| POST | `/api/generate` | 生成冷邮件 |
|
|
171
|
+
| GET | `/api/config` | 获取当前配置 |
|
|
172
|
+
| POST | `/api/config` | 保存配置 |
|
|
173
|
+
| GET | `/api/jobs` | 获取职位列表 |
|
|
174
|
+
| POST | `/api/jobs` | 更新职位列表 |
|
|
175
|
+
| POST | `/api/jobs/import-yaml` | YAML 导入职位 |
|
|
176
|
+
| GET | `/api/email-template` | 获取邮件模板 |
|
|
177
|
+
| POST | `/api/email-template` | 更新邮件模板 |
|
|
178
|
+
| POST | `/api/email-template/preview` | 预览模板 |
|
|
179
|
+
|
|
180
|
+
生成邮件请求示例:
|
|
181
|
+
|
|
182
|
+
```bash
|
|
183
|
+
curl -X POST http://127.0.0.1:6060/api/generate \
|
|
184
|
+
-H "Content-Type: application/json" \
|
|
185
|
+
-d '{"resume_text": "张三,10年AI研发经验,精通大模型训练..."}'
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## 邮件模板占位符
|
|
189
|
+
|
|
190
|
+
| 占位符 | 含义 | 替换来源 |
|
|
191
|
+
|--------|------|----------|
|
|
192
|
+
| `{FullName}` | 候选人全名 | AI 从简历自动识别 |
|
|
193
|
+
| `{TeamName}` | 招聘团队名称 | 配置项 `team_name` |
|
|
194
|
+
| `{CompanyDesc}` | 公司描述 | 配置项 `company_desc` |
|
|
195
|
+
| `{JobTitle}` | 推荐职位名称 | AI 根据匹配结果填入 |
|
|
196
|
+
| `{Location}` | 职位工作地点 | AI 根据匹配职位填入 |
|
|
197
|
+
|
|
198
|
+
## 项目结构
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
cold_msg/
|
|
202
|
+
├── __init__.py # 包入口
|
|
203
|
+
├── cli.py # CLI 命令行接口 (typer)
|
|
204
|
+
├── core/
|
|
205
|
+
│ ├── config.py # 配置管理 (dataclass + yaml + dotenv)
|
|
206
|
+
│ ├── prompt.py # Prompt 构建
|
|
207
|
+
│ ├── llm.py # LLM 调用 (llmdog)
|
|
208
|
+
│ └── generator.py # 核心生成器
|
|
209
|
+
└── web/
|
|
210
|
+
├── app.py # Flask Web 应用 + REST API
|
|
211
|
+
└── templates/ # HTML 模板
|
|
212
|
+
├── index.html
|
|
213
|
+
├── config.html
|
|
214
|
+
└── jobs.html
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
## 配置优先级
|
|
218
|
+
|
|
219
|
+
从高到低:
|
|
220
|
+
|
|
221
|
+
1. **环境变量** — `LLM_MODEL`, `COLDMSG_SENDER_NAME` 等
|
|
222
|
+
2. **`.env` 文件** — 项目根目录
|
|
223
|
+
3. **`config.yaml`** — 项目根目录
|
|
224
|
+
4. **内置默认值**
|
|
225
|
+
|
|
226
|
+
## 开发
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# 安装开发依赖
|
|
230
|
+
pip install -e ".[dev]"
|
|
231
|
+
|
|
232
|
+
# 代码检查
|
|
233
|
+
ruff check .
|
|
234
|
+
|
|
235
|
+
# 类型检查
|
|
236
|
+
mypy cold_msg
|
|
237
|
+
|
|
238
|
+
# 运行测试
|
|
239
|
+
pytest
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
## License
|
|
243
|
+
|
|
244
|
+
MIT
|
cold_msg-0.1.0/README.md
ADDED
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
# ColdMsg - 招聘冷邮件智能生成工具
|
|
2
|
+
|
|
3
|
+
基于候选人简历文本,利用 LLM 自动匹配职位并生成专业的招聘 Cold Email。
|
|
4
|
+
|
|
5
|
+
## 功能特性
|
|
6
|
+
|
|
7
|
+
- **智能匹配**:AI 根据候选人技术背景自动匹配最合适的职位
|
|
8
|
+
- **模板可配**:邮件模板各字段均可自定义,支持占位符变量替换
|
|
9
|
+
- **多种使用方式**:Python 库 / CLI 命令行 / Web 界面
|
|
10
|
+
- **职位管理**:支持 YAML/JSON 导入导出,Web 端增删改查
|
|
11
|
+
- **配置灵活**:`.env` + `config.yaml` + 环境变量三层优先级
|
|
12
|
+
|
|
13
|
+
## 安装
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
pip install cold-msg
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
或从源码安装:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
git clone https://github.com/example/cold-msg.git
|
|
23
|
+
cd cold-msg
|
|
24
|
+
pip install -e .
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## 快速开始
|
|
28
|
+
|
|
29
|
+
### 1. 配置环境变量
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
cp .env.example .env
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
编辑 `.env` 文件,填入 LLM 相关配置:
|
|
36
|
+
|
|
37
|
+
```env
|
|
38
|
+
LLM_MODEL=deepseek-v3.1-terminus
|
|
39
|
+
COLDMSG_SENDER_NAME=Michael
|
|
40
|
+
COLDMSG_TEAM_NAME=高端招聘团队
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 2. 准备职位列表
|
|
44
|
+
|
|
45
|
+
在项目根目录创建 `config.yaml`:
|
|
46
|
+
|
|
47
|
+
```yaml
|
|
48
|
+
sender_name: Michael
|
|
49
|
+
team_name: 高端招聘团队
|
|
50
|
+
company_desc: 国际知名大型科技公司
|
|
51
|
+
llm_model: deepseek-v3.1-terminus
|
|
52
|
+
|
|
53
|
+
jobs:
|
|
54
|
+
- job_title: 大模型Agent专家
|
|
55
|
+
qualification: Agent,Agentic技术,博士,5年+经验
|
|
56
|
+
location: 北上深等
|
|
57
|
+
- job_title: 编译器实验室专家
|
|
58
|
+
qualification: 编译器技术精通,MLIR,LLVM,GCC,AI编译等
|
|
59
|
+
location: 北上深杭等
|
|
60
|
+
|
|
61
|
+
email_template:
|
|
62
|
+
sender_name: Michael
|
|
63
|
+
team_name: 高端招聘团队
|
|
64
|
+
company_desc: 国际知名大型科技公司
|
|
65
|
+
greeting: "您好{FullName},"
|
|
66
|
+
intro: "我来自{TeamName},很冒昧的给您发邮件。"
|
|
67
|
+
body: "我负责{CompanyDesc}招聘,向您推荐\"{JobTitle}\"的职位。"
|
|
68
|
+
location_line: "职位地点: {Location}"
|
|
69
|
+
closing: "如果您有兴趣具体了解的话,可以留个电话或者微信~"
|
|
70
|
+
sign_off: "祝颂商祺"
|
|
71
|
+
signature: "Michael"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## 使用方式
|
|
75
|
+
|
|
76
|
+
### Python 库
|
|
77
|
+
|
|
78
|
+
```python
|
|
79
|
+
from cold_msg import generate_cold_email
|
|
80
|
+
|
|
81
|
+
result = generate_cold_email(
|
|
82
|
+
resume_text="张三,10年AI研发经验,精通大模型训练、推理优化..."
|
|
83
|
+
)
|
|
84
|
+
|
|
85
|
+
if result.match_job_title:
|
|
86
|
+
print(f"推荐职位: {result.recommend_title}")
|
|
87
|
+
print(result.email_content)
|
|
88
|
+
else:
|
|
89
|
+
print("未匹配到合适职位")
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### CLI 命令行
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
# 生成冷邮件
|
|
96
|
+
cold-msg generate "张三,10年AI研发经验,精通大模型训练、推理优化..."
|
|
97
|
+
|
|
98
|
+
# 指定模型和输出文件
|
|
99
|
+
cold-msg generate "简历文本" --model deepseek-v3.1-terminus -o result.json
|
|
100
|
+
|
|
101
|
+
# 输出原始 JSON
|
|
102
|
+
cold-msg generate "简历文本" --raw
|
|
103
|
+
|
|
104
|
+
# 启动 Web 界面
|
|
105
|
+
cold-msg web --port 6060
|
|
106
|
+
|
|
107
|
+
# 查看配置
|
|
108
|
+
cold-msg config show
|
|
109
|
+
|
|
110
|
+
# 管理职位
|
|
111
|
+
cold-msg jobs list
|
|
112
|
+
cold-msg jobs add --title "高级算法工程师" --qual "NLP, LLM, 3年+" --loc "北京"
|
|
113
|
+
cold-msg jobs import --file jobs.yaml
|
|
114
|
+
cold-msg jobs export --file jobs.json
|
|
115
|
+
|
|
116
|
+
# 管理邮件模板
|
|
117
|
+
cold-msg template show
|
|
118
|
+
cold-msg template set greeting "您好{FullName},您好!"
|
|
119
|
+
cold-msg template preview
|
|
120
|
+
cold-msg template reset
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Web 界面
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
cold-msg web
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
浏览器访问 `http://127.0.0.1:6060`,提供三个页面:
|
|
130
|
+
|
|
131
|
+
| 页面 | 路径 | 功能 |
|
|
132
|
+
|------|------|------|
|
|
133
|
+
| 生成邮件 | `/` | 粘贴简历文本,一键生成冷邮件 |
|
|
134
|
+
| 职位管理 | `/jobs` | 增删改查职位,支持 YAML 导入导出 |
|
|
135
|
+
| 模板配置 | `/config` | 自定义邮件模板各字段,实时预览 |
|
|
136
|
+
|
|
137
|
+
## REST API
|
|
138
|
+
|
|
139
|
+
| 方法 | 路径 | 说明 |
|
|
140
|
+
|------|------|------|
|
|
141
|
+
| POST | `/api/generate` | 生成冷邮件 |
|
|
142
|
+
| GET | `/api/config` | 获取当前配置 |
|
|
143
|
+
| POST | `/api/config` | 保存配置 |
|
|
144
|
+
| GET | `/api/jobs` | 获取职位列表 |
|
|
145
|
+
| POST | `/api/jobs` | 更新职位列表 |
|
|
146
|
+
| POST | `/api/jobs/import-yaml` | YAML 导入职位 |
|
|
147
|
+
| GET | `/api/email-template` | 获取邮件模板 |
|
|
148
|
+
| POST | `/api/email-template` | 更新邮件模板 |
|
|
149
|
+
| POST | `/api/email-template/preview` | 预览模板 |
|
|
150
|
+
|
|
151
|
+
生成邮件请求示例:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
curl -X POST http://127.0.0.1:6060/api/generate \
|
|
155
|
+
-H "Content-Type: application/json" \
|
|
156
|
+
-d '{"resume_text": "张三,10年AI研发经验,精通大模型训练..."}'
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## 邮件模板占位符
|
|
160
|
+
|
|
161
|
+
| 占位符 | 含义 | 替换来源 |
|
|
162
|
+
|--------|------|----------|
|
|
163
|
+
| `{FullName}` | 候选人全名 | AI 从简历自动识别 |
|
|
164
|
+
| `{TeamName}` | 招聘团队名称 | 配置项 `team_name` |
|
|
165
|
+
| `{CompanyDesc}` | 公司描述 | 配置项 `company_desc` |
|
|
166
|
+
| `{JobTitle}` | 推荐职位名称 | AI 根据匹配结果填入 |
|
|
167
|
+
| `{Location}` | 职位工作地点 | AI 根据匹配职位填入 |
|
|
168
|
+
|
|
169
|
+
## 项目结构
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
cold_msg/
|
|
173
|
+
├── __init__.py # 包入口
|
|
174
|
+
├── cli.py # CLI 命令行接口 (typer)
|
|
175
|
+
├── core/
|
|
176
|
+
│ ├── config.py # 配置管理 (dataclass + yaml + dotenv)
|
|
177
|
+
│ ├── prompt.py # Prompt 构建
|
|
178
|
+
│ ├── llm.py # LLM 调用 (llmdog)
|
|
179
|
+
│ └── generator.py # 核心生成器
|
|
180
|
+
└── web/
|
|
181
|
+
├── app.py # Flask Web 应用 + REST API
|
|
182
|
+
└── templates/ # HTML 模板
|
|
183
|
+
├── index.html
|
|
184
|
+
├── config.html
|
|
185
|
+
└── jobs.html
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## 配置优先级
|
|
189
|
+
|
|
190
|
+
从高到低:
|
|
191
|
+
|
|
192
|
+
1. **环境变量** — `LLM_MODEL`, `COLDMSG_SENDER_NAME` 等
|
|
193
|
+
2. **`.env` 文件** — 项目根目录
|
|
194
|
+
3. **`config.yaml`** — 项目根目录
|
|
195
|
+
4. **内置默认值**
|
|
196
|
+
|
|
197
|
+
## 开发
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# 安装开发依赖
|
|
201
|
+
pip install -e ".[dev]"
|
|
202
|
+
|
|
203
|
+
# 代码检查
|
|
204
|
+
ruff check .
|
|
205
|
+
|
|
206
|
+
# 类型检查
|
|
207
|
+
mypy cold_msg
|
|
208
|
+
|
|
209
|
+
# 运行测试
|
|
210
|
+
pytest
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
## License
|
|
214
|
+
|
|
215
|
+
MIT
|