replyme 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.
replyme-0.1.0/PKG-INFO ADDED
@@ -0,0 +1,722 @@
1
+ Metadata-Version: 2.4
2
+ Name: replyme
3
+ Version: 0.1.0
4
+ Summary: 有礼貌地生成一系列不重样的跟进消息,坚持不懈直到对方回复
5
+ Author-email: Chandler <2757378759@qq.com>
6
+ License-Expression: MIT
7
+ Requires-Python: >=3.9
8
+ Requires-Dist: llmdog>=0.0.3
9
+ Requires-Dist: rich>=13.0.0
10
+ Requires-Dist: typer>=0.9.0
11
+ Provides-Extra: dev
12
+ Requires-Dist: pytest>=7.0; extra == 'dev'
13
+ Description-Content-Type: text/markdown
14
+
15
+ # replyme - 有礼貌的跟进消息生成器
16
+
17
+ > 有礼貌地生成一系列不重样的跟进消息,坚持不懈直到对方回复。
18
+
19
+ ![Python](https://img.shields.io/badge/Python-3.9+-blue.svg)
20
+ ![License](https://img.shields.io/badge/License-MIT-green.svg)
21
+
22
+ ---
23
+
24
+ ## 目录
25
+
26
+ 1. [项目简介](#1-项目简介)
27
+ 2. [安装配置](#2-安装配置)
28
+ 3. [快速开始](#3-快速开始)
29
+ 4. [使用示例](#4-使用示例)
30
+ 5. [CLI命令详解](#5-cli命令详解)
31
+ 6. [Python API](#6-python-api)
32
+ 7. [配置文件](#7-配置文件)
33
+ 8. [项目架构](#8-项目架构)
34
+ 9. [常见问题](#9-常见问题)
35
+ 10. [免责声明](#10-免责声明)
36
+
37
+ ---
38
+
39
+ ## 1. 项目简介
40
+
41
+ ### 1.1 这是什么?
42
+
43
+ replyme 是一个 Python 命令行工具,利用 AI 大语言模型自动生成有礼貌、不重样的跟进消息。
44
+
45
+ ### 1.2 解决什么问题?
46
+
47
+ 当你给对方发送消息或邮件后,对方迟迟不回复,你需要继续跟进时:
48
+
49
+ - ✅ 每条消息不能重复,要换角度切入
50
+ - ✅ 语气要有礼貌,不能显得咄咄逼人
51
+ - ✅ 要坚持不懈,直到对方回复为止
52
+ - ✅ 需要理解你之前发了什么、目的是什么
53
+
54
+ ### 1.3 核心功能
55
+
56
+ | 功能 | 说明 |
57
+ |------|------|
58
+ | 双场景支持 | 邮件(Email) / 即时通讯(IM) |
59
+ | 多种风格 | formal/friendly/persistent/angry/poor/casual/polite |
60
+ | 智能去重 | 生成的消息绝不重复 |
61
+ | 上下文理解 | 理解你的原始诉求,生成恰当内容 |
62
+ | 日志记录 | 每次生成自动保存历史记录 |
63
+
64
+ ---
65
+
66
+ ## 2. 安装配置
67
+
68
+ ### 2.1 系统要求
69
+
70
+ - Python 3.9 或更高版本
71
+ - macOS / Linux / Windows
72
+
73
+ ### 2.2 安装步骤
74
+
75
+ ```bash
76
+ # 1. 克隆或下载项目
77
+ cd replyme
78
+
79
+ # 2. 创建虚拟环境(推荐)
80
+ python -m venv .venv
81
+ source .venv/bin/activate # macOS/Linux
82
+ # 或 .venv\Scripts\activate # Windows
83
+
84
+ # 3. 安装项目
85
+ pip install -e .
86
+ ```
87
+
88
+ ### 2.3 依赖说明
89
+
90
+ replyme 依赖以下 Python 包:
91
+
92
+ | 依赖 | 版本 | 用途 |
93
+ |------|------|------|
94
+ | typer | ≥0.9.0 | 命令行界面框架 |
95
+ | llmdog | ≥0.0.3 | LLM 大模型调用 |
96
+ | rich | ≥13.0.0 | 终端美化输出 |
97
+
98
+ ### 2.4 API 密钥配置
99
+
100
+ replyme 通过 llmdog 调用大模型,需要配置 API 密钥:
101
+
102
+ ```bash
103
+ # 设置环境变量
104
+ export LLM_API_KEY="your-api-key-here"
105
+
106
+ # 或在 ~/.bashrc / ~/.zshrc 中永久保存
107
+ echo 'export LLM_API_KEY="your-api-key-here"' >> ~/.bashrc
108
+ source ~/.bashrc
109
+ ```
110
+
111
+ **支持的模型服务商:**
112
+
113
+ - OpenAI (GPT-4, GPT-3.5)
114
+ - Claude (Anthropic)
115
+ - 通义千问
116
+ - 智谱 GLM
117
+ - 任意 OpenAI 兼容 API
118
+
119
+ 详细配置请参考 [llmdog 文档](https://pypi.org/project/llmdog/)。
120
+
121
+ ### 2.5 初始化配置
122
+
123
+ ```bash
124
+ replyme init
125
+ ```
126
+
127
+ 首次运行会创建 `replyme/` 配置目录:
128
+
129
+ ```
130
+ replyme/
131
+ ├── config.json # 运行时配置
132
+ ├── prompts.json # 自定义提示词
133
+ └── logs/ # 生成日志
134
+ ```
135
+
136
+ ---
137
+
138
+ ## 3. 快速开始
139
+
140
+ ### 3.1 最简单的用法
141
+
142
+ ```bash
143
+ replyme send "请问项目进展如何?"
144
+ ```
145
+
146
+ ### 3.2 带文件输入的用法
147
+
148
+ ```bash
149
+ # 读取之前的邮件内容
150
+ replyme send --input previous_email.txt --scene email --style formal
151
+
152
+ # 读取聊天记录
153
+ replyme send --input chat_history.json --scene im --style casual
154
+ ```
155
+
156
+ ### 3.3 Python API 用法
157
+
158
+ ```python
159
+ from replyme import generate_series
160
+
161
+ # 生成5条跟进消息
162
+ messages = generate_series(
163
+ topic="请确认合同",
164
+ scene="im",
165
+ style="polite",
166
+ count=5
167
+ )
168
+
169
+ for msg in messages:
170
+ print(msg)
171
+ ```
172
+
173
+ ---
174
+
175
+ ## 4. 使用示例
176
+
177
+ ### 4.1 Email 场景
178
+
179
+ #### 正式商务风格 (formal)
180
+
181
+ ```bash
182
+ replyme send --input email.txt --scene email --style formal --count 3
183
+ ```
184
+
185
+ 生成特点:
186
+ - 语气正式、专业、礼貌
187
+ - 体现商务礼仪
188
+ - 字数 80-200 字
189
+
190
+ #### 友好亲切风格 (friendly)
191
+
192
+ ```bash
193
+ replyme send --input email.txt --scene email --style friendly --count 3
194
+ ```
195
+
196
+ 生成特点:
197
+ - 语气友好、亲切、自然
198
+ - 像同事之间沟通
199
+ - 字数 80-200 字
200
+
201
+ #### 坚持不懈风格 (persistent)
202
+
203
+ ```bash
204
+ replyme send --input email.txt --scene email --style persistent --count 5
205
+ ```
206
+
207
+ 生成特点:
208
+ - 礼貌但坚定
209
+ - 说明影响和风险
210
+ - 字数 80-200 字
211
+
212
+ #### 愤怒警告风格 (angry)
213
+
214
+ ```bash
215
+ replyme send --input email.txt --scene email --style angry --count 3
216
+ ```
217
+
218
+ 生成特点:
219
+ - 表达强烈不满但保持基本礼貌
220
+ - 质问拖延原因、暗示后果
221
+ - 不能人身攻击或使用粗俗语言
222
+
223
+ #### 可怜求助风格 (poor)
224
+
225
+ ```bash
226
+ replyme send --input email.txt --scene email --style poor --count 3
227
+ ```
228
+
229
+ 生成特点:
230
+ - 真诚示弱博取同情
231
+ - 说明自己的困境
232
+ - 不要卑微到失去尊严
233
+
234
+ ### 4.2 IM 即时通讯场景
235
+
236
+ #### 轻松随意风格 (casual)
237
+
238
+ ```bash
239
+ replyme send "周末有空一起吃饭吗?" --scene im --style casual --count 5
240
+ ```
241
+
242
+ 生成特点:
243
+ - 语气轻松随意,像发微信
244
+ - 字数 30-80 字
245
+
246
+ #### 礼貌得体风格 (polite)
247
+
248
+ ```bash
249
+ replyme send "请问设计稿什么时候能出?" --scene im --style polite --count 5
250
+ ```
251
+
252
+ 生成特点:
253
+ - 礼貌温和,得体但不失亲切
254
+ - 字数 40-100 字
255
+
256
+ #### 坚持不懈风格 (persistent)
257
+
258
+ ```bash
259
+ replyme send "请回复合同确认" --scene im --style persistent --count 10
260
+ ```
261
+
262
+ 生成特点:
263
+ - 礼貌但明确
264
+ - 请求具体时间、直接提问
265
+ - 字数 40-100 字
266
+
267
+ #### 愤怒警告风格 (angry)
268
+
269
+ ```bash
270
+ replyme send "你已读不回是什么意思?" --scene im --style angry --count 3
271
+ ```
272
+
273
+ 生成特点:
274
+ - 表达强烈不满但保持基本礼貌
275
+ - 字数 40-100 字
276
+
277
+ #### 可怜求助风格 (poor)
278
+
279
+ ```bash
280
+ replyme send "帮帮忙吧" --scene im --style poor --count 3
281
+ ```
282
+
283
+ 生成特点:
284
+ - 真诚示弱博取同情
285
+ - 字数 40-100 字
286
+
287
+ ---
288
+
289
+ ## 5. CLI命令详解
290
+
291
+ ### 5.1 命令列表
292
+
293
+ | 命令 | 说明 |
294
+ |------|------|
295
+ | `replyme init` | 初始化配置目录 |
296
+ | `replyme send` | 生成跟进消息 |
297
+
298
+ ### 5.2 init 命令
299
+
300
+ ```bash
301
+ replyme init
302
+ ```
303
+
304
+ 功能:创建 `replyme/` 配置目录和默认配置文件。
305
+
306
+ ### 5.3 send 命令
307
+
308
+ ```bash
309
+ replyme send [TOPIC] [OPTIONS]
310
+ ```
311
+
312
+ #### 参数说明
313
+
314
+ | 参数 | 缩写 | 类型 | 默认值 | 说明 |
315
+ |------|------|------|--------|------|
316
+ | `TOPIC` | — | 字符串 | 空 | 想要跟进的主题或问题,与 `--input` 二选一 |
317
+
318
+ #### 选项说明
319
+
320
+ | 选项 | 缩写 | 类型 | 默认值 | 说明 |
321
+ |------|------|------|--------|------|
322
+ | `--input` | `-i` | 路径 | 空 | 输入文件路径(支持 txt/json/md),可指定多个 |
323
+ | `--scene` | `-s` | 字符串 | `im` | 场景:email(邮件) 或 im(即时通讯) |
324
+ | `--style` | `-t` | 字符串 | polite/casual | 风格选项 |
325
+ | `--count` | `-n` | 整数 | 5 | 生成消息数量 (1-20) |
326
+ | `--model` | `-m` | 字符串 | 空 | 指定 LLM 模型名称 |
327
+ | `--interval` | `--wait` | 整数 | 0 | 每条消息之间的间隔秒数 |
328
+ | `--output` | `-o` | 路径 | 空 | 日志输出目录 |
329
+
330
+ #### 风格选项对照
331
+
332
+ **Email 场景 (`--scene email`)**
333
+
334
+ | 风格 | 说明 |
335
+ |------|------|
336
+ | `formal` | 正式商务(默认) |
337
+ | `friendly` | 友好亲切 |
338
+ | `persistent` | 坚持不懈 |
339
+ | `angry` | 愤怒警告 |
340
+ | `poor` | 可怜求助 |
341
+
342
+ **IM 场景 (`--scene im`)**
343
+
344
+ | 风格 | 说明 |
345
+ |------|------|
346
+ | `casual` | 轻松随意 |
347
+ | `polite` | 礼貌得体(默认) |
348
+ | `persistent` | 坚持不懈 |
349
+ | `angry` | 愤怒警告 |
350
+ | `poor` | 可怜求助 |
351
+
352
+ #### 使用示例
353
+
354
+ ```bash
355
+ # 纯主题模式(IM,礼貌得体)
356
+ replyme send "请问项目进展如何?" --count 5
357
+
358
+ # 邮件场景 + 文件输入(正式商务)
359
+ replyme send --input previous_email.txt --scene email --style formal --count 3
360
+
361
+ # IM场景 + JSON聊天记录(轻松随意)
362
+ replyme send --input chat_record.json --scene im --style casual --count 3
363
+
364
+ # 多文件输入
365
+ replyme send --input email1.txt --input email2.md --scene email --style friendly
366
+
367
+ # 坚持不懈 + 间隔30秒
368
+ replyme send "请回复合同确认" --scene im --style persistent --count 10 --interval 30
369
+
370
+ # 指定模型
371
+ replyme send "项目进展" --model qwen3-72b-instruct --count 3
372
+
373
+ # 指定输出目录
374
+ replyme send "测试" --output ./logs
375
+ ```
376
+
377
+ ---
378
+
379
+ ## 6. Python API
380
+
381
+ ### 6.1 核心函数
382
+
383
+ #### generate_one()
384
+
385
+ 生成一条跟进消息:
386
+
387
+ ```python
388
+ from replyme import generate_one
389
+
390
+ msg = generate_one(
391
+ topic="请问项目进展如何?",
392
+ scene="im",
393
+ style="polite",
394
+ model=None, # 可指定模型
395
+ )
396
+
397
+ print(msg)
398
+ ```
399
+
400
+ #### generate_series()
401
+
402
+ 生成一系列跟进消息:
403
+
404
+ ```python
405
+ from replyme import generate_series
406
+
407
+ messages = generate_series(
408
+ topic="请确认合同",
409
+ count=5,
410
+ scene="im",
411
+ style="polite",
412
+ )
413
+
414
+ for i, msg in enumerate(messages, 1):
415
+ print(f"第{i}条: {msg}")
416
+ ```
417
+
418
+ ### 6.2 完整参数说明
419
+
420
+ ```python
421
+ generate_series(
422
+ topic=None, # 主题(与 original_content 二选一)
423
+ count=5, # 生成数量 (1-20)
424
+ original_content=None, # 原始内容(邮件/聊天记录)
425
+ scene="im", # 场景:email / im
426
+ style="polite", # 风格
427
+ model=None, # 指定模型
428
+ system_prompt=None, # 自定义系统提示词
429
+ on_generated=None, # 回调函数
430
+ )
431
+ ```
432
+
433
+ ### 6.3 回调函数示例
434
+
435
+ ```python
436
+ def on_msg(index, message):
437
+ print(f"生成第 {index + 1} 条消息:")
438
+ print(message)
439
+ print("-" * 50)
440
+
441
+ messages = generate_series(
442
+ topic="请确认合同",
443
+ count=5,
444
+ on_generated=on_msg,
445
+ )
446
+ ```
447
+
448
+ ### 6.4 基于文件内容的示例
449
+
450
+ ```python
451
+ from replyme import generate_series
452
+
453
+ # 邮件场景 - 基于之前发送的邮件
454
+ messages = generate_series(
455
+ topic="项目进展跟进",
456
+ original_content="张总您好,关于智慧园区项目...",
457
+ scene="email",
458
+ style="formal",
459
+ count=3,
460
+ )
461
+
462
+ # IM场景 - 基于聊天记录
463
+ messages = generate_series(
464
+ original_content="我: 周末有空一起吃饭吗?\n我: 发现一家新开的日料店",
465
+ scene="im",
466
+ style="casual",
467
+ count=3,
468
+ )
469
+ ```
470
+
471
+ ---
472
+
473
+ ## 7. 配置文件
474
+
475
+ ### 7.1 配置目录结构
476
+
477
+ ```
478
+ replyme/
479
+ ├── config.json # 运行时默认配置
480
+ ├── prompts.json # 自定义系统提示词
481
+ └── logs/ # 生成日志
482
+ └── xxx_follow_up.json
483
+ ```
484
+
485
+ ### 7.2 config.json
486
+
487
+ 默认配置文件:
488
+
489
+ ```json
490
+ {
491
+ "scene": "im",
492
+ "style": "polite",
493
+ "model": null,
494
+ "count": 5,
495
+ "interval": 0
496
+ }
497
+ ```
498
+
499
+ | 字段 | 类型 | 说明 |
500
+ |------|------|------|
501
+ | `scene` | 字符串 | 默认场景:email / im |
502
+ | `style` | 字符串 | 默认风格 |
503
+ | `model` | 字符串/null | 默认模型 |
504
+ | `count` | 整数 | 默认生成数量 |
505
+ | `interval` | 整数 | 默认间隔秒数 |
506
+
507
+ ### 7.3 prompts.json
508
+
509
+ 提示词配置文件,支持自定义各场景/风格的系统提示词:
510
+
511
+ ```json
512
+ {
513
+ "email": {
514
+ "formal": "你是一个跟进邮件撰写助手。...",
515
+ "friendly": "...",
516
+ "persistent": "...",
517
+ "angry": "...",
518
+ "poor": "..."
519
+ },
520
+ "im": {
521
+ "casual": "...",
522
+ "polite": "...",
523
+ "persistent": "...",
524
+ "angry": "...",
525
+ "poor": "..."
526
+ }
527
+ }
528
+ ```
529
+
530
+ ### 7.4 自定义提示词
531
+
532
+ 如果你想完全自定义生成风格,可以修改 `prompts.json` 中的提示词模板。
533
+
534
+ **提示词结构要求:**
535
+
536
+ 1. **角色定义 + 场景描述** - 说明你是谁,要做什么
537
+ 2. **工作流程** - 先理解 → 再生成
538
+ 3. **绝对规则** - 输出格式约束
539
+
540
+ **示例:自定义友好风格提示词**
541
+
542
+ ```json
543
+ {
544
+ "email": {
545
+ "friendly": "你是一个跟进邮件撰写助手。\n\n场景:我之前给对方发过邮件,但对方一直没有回复。我需要继续发跟进邮件,友好地推动对方回复。\n\n你的工作流程:\n1. 先理解我之前发了什么邮件、核心诉求是什么\n2. 基于这个理解,写一封新的跟进邮件,换一个角度或切入点来推动回复\n\n绝对规则(必须遵守):\n- 只输出一封邮件的正文纯文本,不要输出其他任何内容\n- 绝对不要输出多封邮件供选择,只输出一封\n- 不要加任何说明、解释、注释、编号、选项、分析过程\n- 不要使用markdown格式\n- 语气友好、亲切、自然\n- 字数控制在80-200字\n- 新邮件必须与之前发过的所有邮件明显不同"
546
+ }
547
+ }
548
+ ```
549
+
550
+ ### 7.5 日志文件
551
+
552
+ 每次生成消息后,会自动保存日志到 `replyme/logs/` 目录:
553
+
554
+ ```json
555
+ {
556
+ "stem": "test_email",
557
+ "scene": "email",
558
+ "style": "formal",
559
+ "topic": "项目进展跟进",
560
+ "timestamp": "2026-06-02T14:22:31.040664",
561
+ "original_content": "张总您好,关于我们正在推进的智慧园区项目...",
562
+ "generated_messages": [
563
+ {"index": 1, "content": "张总您好,此前就智慧园区项目..."},
564
+ {"index": 2, "content": "张总您好,再次跟进一下..."}
565
+ ]
566
+ }
567
+ ```
568
+
569
+ ---
570
+
571
+ ## 8. 项目架构
572
+
573
+ ### 8.1 目录结构
574
+
575
+ ```
576
+ replyme/
577
+ ├── pyproject.toml # 项目配置
578
+ ├── src/replyme/
579
+ │ ├── __init__.py # 公共 API 导出
580
+ │ ├── core.py # 核心生成逻辑
581
+ │ ├── config.py # 配置管理 + 内置提示词
582
+ │ ├── cli.py # Typer CLI(init / send)
583
+ │ ├── reader.py # 文件读取(txt/json/md)
584
+ │ └── logger.py # JSON 日志保存
585
+ └── replyme/ # 运行时配置(自动创建)
586
+ ```
587
+
588
+ ### 8.2 模块说明
589
+
590
+ | 模块 | 文件 | 职责 |
591
+ |------|------|------|
592
+ | CLI | `cli.py` | 命令行入口,参数解析,输出美化 |
593
+ | 配置 | `config.py` | 配置读写,提示词管理,风格定义 |
594
+ | 核心 | `core.py` | 构建用户提示,调用 LLM,消息去重 |
595
+ | 读取 | `reader.py` | 读取 txt/json/md 文件 |
596
+ | 日志 | `logger.py` | 保存生成历史到 JSON |
597
+
598
+ ### 8.3 数据流
599
+
600
+ ```
601
+ 用户输入 (topic / --input files)
602
+
603
+
604
+ cli.py: send()
605
+ ├── reader.py: read_files() → original_content
606
+ ├── config.py: load_config() → ReplymeConfig
607
+ ├── config.py: get_system_prompt() → system_prompt
608
+
609
+
610
+ core.py: generate_series()
611
+ │ 循环 N 次:
612
+ │ generate_one()
613
+ │ ├── 构建 user_content
614
+ │ ├── llmdog.chat() 调用 LLM
615
+ │ └── 返回一条新消息
616
+
617
+
618
+ logger.py: save_follow_up_log()
619
+ └── 保存 {stem}_follow_up.json
620
+ ```
621
+
622
+ ### 8.4 提示词加载优先级
623
+
624
+ 1. 本地文件 `replyme/prompts.json`(用户自定义)
625
+ 2. 内置 `_BUILTIN_PROMPTS`(代码中定义)
626
+
627
+ ### 8.5 配置加载优先级
628
+
629
+ 1. 命令行参数(最高)
630
+ 2. 本地配置文件 `replyme/config.json`
631
+ 3. 内置默认值(最低)
632
+
633
+ ---
634
+
635
+ ## 9. 常见问题
636
+
637
+ ### Q1: 安装失败,提示缺少依赖?
638
+
639
+ ```bash
640
+ pip install --upgrade pip
641
+ pip install -e .
642
+ ```
643
+
644
+ ### Q2: 提示 "LLM_API_KEY" 未设置?
645
+
646
+ ```bash
647
+ export LLM_API_KEY="your-api-key-here"
648
+ ```
649
+
650
+ ### Q3: 生成的消息太长/太短?
651
+
652
+ 可以在 `prompts.json` 中自定义提示词,调整字数约束。
653
+
654
+ ### Q4: 如何更改默认场景/风格?
655
+
656
+ 编辑 `replyme/config.json`:
657
+
658
+ ```json
659
+ {
660
+ "scene": "email",
661
+ "style": "formal"
662
+ }
663
+ ```
664
+
665
+ ### Q5: 支持哪些输入文件格式?
666
+
667
+ | 格式 | 扩展名 | 说明 |
668
+ |------|--------|------|
669
+ | 纯文本 | .txt | 直接读取 |
670
+ | JSON | .json | 支持字符串、列表、字典 |
671
+ | Markdown | .md | 自动去除格式标记 |
672
+
673
+ ### Q6: 如何查看历史生成记录?
674
+
675
+ 日志保存在 `replyme/logs/` 目录,每个主题一个 JSON 文件。
676
+
677
+ ### Q7: 如何重置配置?
678
+
679
+ ```bash
680
+ rm -rf replyme
681
+ replyme init
682
+ ```
683
+
684
+ ### Q8: 模型调用失败?
685
+
686
+ 1. 检查 API 密钥是否正确
687
+ 2. 检查网络连接
688
+ 3. 确认模型名称是否正确
689
+
690
+ ---
691
+
692
+ ## 10. 免责声明
693
+
694
+ ### 10.1 AI 生成内容
695
+
696
+ replyme 生成的跟进消息由人工智能模型自动生成,不代表开发者的观点或立场。
697
+
698
+ ### 10.2 责任归属
699
+
700
+ 1. **用户责任**:用户对生成内容的使用承担全部责任
701
+ 2. **审查义务**:使用前请仔细审查生成内容,确保适当且准确
702
+ 3. **风险承担**:因使用 AI 生成内容导致的任何后果,由用户自行承担
703
+
704
+ ### 10.3 使用限制
705
+
706
+ - 请勿将生成内容用于骚扰、欺诈或其他违法用途
707
+ - 请勿生成歧视性、仇恨性或攻击性内容
708
+ - 请遵守当地法律法规和相关平台的使用条款
709
+
710
+ ### 10.4 免责声明
711
+
712
+ 本软件按"原样"提供,不提供任何明示或暗示的保证。开发者不对软件的功能、准确性、可靠性或适用性做出任何承诺。
713
+
714
+ 在适用法律允许的最大范围内,开发者不对因使用本软件而产生的任何直接、间接、偶然、特殊、惩罚性或后果性损害承担责任。
715
+
716
+ ---
717
+
718
+ ## 许可证
719
+
720
+ MIT License
721
+
722
+