diff --git a/README.md b/README.md index eea40705b25fb7019d004eadbf64009eb4e9d1e8..8ec5e348a474805c0daa1878520a233e6bb18bda 100644 --- a/README.md +++ b/README.md @@ -1,218 +1,196 @@ -![预览](1.jpeg) -
-
-# 安装 -文件管理器使用:[MT管理器](https://mt2.cn/download/) -- QQ群:768464439 -UEG -安卓QQ群下载的文件路径:`/storage/emulated/0/Android/data/com.tencent.mobileqq/Tencent/QQfile_recv/` -- [蓝奏云下载](https://ycww.lanzn.com/b00wmittna) 密码:`550W` - -- [Gitee下载](https://gitee.com/heigxaon/moss-android-terminal/archive/refs/tags/MOSS.zip) +![预览](1.jpeg) -- [GitHub下载](https://github.com/Heigxaon/MOSS_terminal/archive/refs/tags/MOSS.zip) +# 安装 +推荐使用文件管理器:[MT管理器](https://mt2.cn/download/) -> 如果有4个`MOSS.tar.gz`包,需要合并 -在MT管理器 **批量选中** 这4个文件, **长按 - 工具 - 文件合并** ,将合并后的文件改名为`MOSS.tar.gz` -1. 将`MOSS.tar.gz`文件移动到`/storage/emulated/0/Documents/`里, **无需解压** -(如果`/storage/emulated/0/`里没有`Documents`文件夹,需要手动创建) +- QQ交流群:768464439 +UEG +安卓QQ群中接收到的文件默认存储路径:`/storage/emulated/0/Android/data/com.tencent.mobileqq/Tencent/QQfile_recv/` -2. 所需软件 - **[Termux](https://github.com/termux/termux-app/releases)** (必需) - **[Termux:API](https://github.com/termux/termux-api/releases)** (必需) -[Termux:Widget](https://github.com/termux/termux-widget/releases) (可选,用于创建桌面小部件) -[Autox.js](https://github.com/aiselp/AutoX/releases) (可选,用于消息自动回复) +- [蓝奏云下载地址](https://ycww.lanzn.com/b00wmittna) 密码:`550W` -3. 开启Termux的所有权限,电池策略设为 **无限制** -开启Termux:API的 **自启动** 权限 -创建Termux:Widget的桌面小部件(若需要) +- [Gitee下载地址](https://gitee.com/heigxaon/moss-android-terminal/archive/refs/tags/MOSS.zip) -4. 用 **Termux** 执行: -`yes | termux-setup-storage && ln -sfn /sdcard/Documents ~/storage/documents && echo -n "▷ 回车继续" && read -n 1 && cd ~/storage/documents && tar -zxvf MOSS.tar.gz -C . && bash MOSS/setup.sh || exit` -若出现弹窗,请同意 **授予管理所有文件的权限** -
-
-# 基础用法 -内置 **DeepSeek、硅基流动、火山引擎、月之暗面** 四大平台,内置一个APIkey可直接进行对话 -若自己有APIkey,可使用指令`!api`进行设置 -`!model`可以切换其它Deepseek模型, -> `!mod`可以切换其它AI模型,包括但不限于DeepSeek(需配置硅基流动APIkey) +- [GitHub下载地址](https://github.com/Heigxaon/MOSS_terminal/archive/refs/tags/MOSS.zip) -
+> 如果收到的是4个`MOSS.tar.gz`压缩包,请先合并 +在MT管理器中 **批量选择** 这4个文件,然后选择 **长按 - 工具 - 文件合并**,将合并后的文件命名为`MOSS.tar.gz` -多行输入开关:`!ml`,默认关闭,无法换行,回车直接发送。开启后`回车=换行`,`双回车=发送` -使用`!help`列出所有功能指令 -指令多以感叹号`!`开头,严格规范拼写、大小写,使用`!cmd`可以打开指令列表,一键使用 -部分指令需要指定参数,如:`!name`的功能是 **修改用户名** ,`!name xxx`即可改名为xxx,指令和参数之间用一个 **空格** 分隔 -如果单独使用`!name`不指定参数,则会弹出对话框可供参数输入 +1. 将合并后的`MOSS.tar.gz`文件移动至目录:`/storage/emulated/0/Documents/`(推荐路径),**不需要手动解压** +(如果没有`Documents`文件夹,请手动创建) -使用指令`!speech`可以开/关语音朗读 +2. 安装所需软件 +- **[Termux](https://github.com/termux/termux-app/releases)** (必装) +- **[Termux:API](https://github.com/termux/termux-api/releases)** (必装) +- [Termux:Widget](https://github.com/termux/termux-widget/releases) (可选,用于创建桌面快捷方式) +- [Autox.js](https://github.com/aiselp/AutoX/releases) (可选,实现自动回复功能) -使用`!cfg`可查看你的参数设定状态 +3. 设置权限 +- 给Termux授予权限,电池策略设为 **无限制** +- Termux:API设置为 **允许自启动** +- 若使用Termux:Widget,创建桌面快捷方式(可选) -每次对话的分割线右端的数字分别是本次API对话请求的 **耗费 | APIkey余额 | 输入token数 | 输出token数** -> API耗费和token数成正比,token数=词数 -上下文记忆累积越多 → 分析字数越多 → 分析词数越多 → 消耗token越高 → 耗费越高 +4. 在Termux中运行以下命令: +```bash +yes | termux-setup-storage && ln -sfn /sdcard/Documents ~/storage/documents && echo -n "▷ 回车继续" && read -n 1 && cd ~/storage/documents && tar -zxvf MOSS.tar.gz -C . && bash MOSS/setup.sh || exit +``` +如果出现权限提示,请同意 **授予Termux管理所有文件的权限** -
+

+# 基础用法 +项目内置 **DeepSeek、硅基流动、火山引擎、月之暗面** 等AI平台,已预设一个APIkey,可直接使用对话功能 +如果你有自己的APIkey,可使用指令`!api`进行设置 +使用`!model`可以切换其它DeepSeek模型 +> 使用`!mod`可切换其它AI模型(需要配置硅基流动APIkey) -具体计费规则请查看:[DeepSeek开放平台](https://api-docs.deepseek.com/zh-cn/quick_start/pricing/) +多行输入功能开关:`!ml`,默认关闭状态,回车即发送消息。开启后,`回车=换行`,`双回车=发送` +使用`!help`可查看所有功能指令 +所有指令以感叹号`!`开头,拼写必须准确,大小写敏感。使用`!cmd`打开指令列表,支持一键复制使用 +部分指令需要附加参数,例如:`!name`用于修改用户名,使用方式为`!name xxx`,中间用一个 **空格** 分隔 +如果使用`!name`不带参数,系统会弹出输入框供你填写参数 - **语音输入** -发送一个冒号`:`,会弹出语音识别框,然后你可开始讲话 -部分指令支持语音或文字触发,比如说出: -> 设置语速、修改风格、打电话给...、拍照、... +使用指令`!speech`可开启或关闭语音朗读 -
+使用指令`!cfg`可查看当前的AI参数配置 -退出请使用指令`!q`,或按下面的 **EXIT** 键之后回车退出,或直接清掉后台,普通返回无法退出 -输入指令`!rst`可以重新启动 -
-
-# AI设置 - **支持API参数设置** -> 包括 **系统提示词、风格、上下文记忆量、最大token、思维离散度...** +每次对话的分隔线右侧数字表示本次API请求的:**消耗金额 | APIkey余额 | 输入token数 | 输出token数** +> 详见[DeepSeek开放平台计费规则](https://api-docs.deepseek.com/zh-cn/quick_start/pricing/) -
+

+# AI参数设置 +支持以下API参数调整 +> 包括 **系统提示词、风格、上下文记忆量、最大token、思维离散度等** #### 系统提示词 -指令 :`!sys` -相当于把角色设定写入AI底层,属于硬设定,不属于对话,无法遗忘,不同于手动发送对话来设定角色模拟 -> !sys 你是一个真实的QQ群成员,说话要像真人,别用太标准的语法,平均字数不超过30。根据聊天记录10%偶尔@别人,可以主动聊天不限于回答当前用户。不要'啊、哈、呢'之类的语气词和状态描述。 - -
+指令:`!sys` +设定AI的底层角色,该设定不属于对话内容,不会被遗忘。例如: +> !sys 你是一个真实的QQ群成员,说话要像真人,别用太标准的语法,平均字数不超过30。根据聊天记录10%偶尔@别人,可以主动聊天不限于回答当前用户。不要使用“啊、哈、呢”之类的语气词和状态描述 #### 风格 指令:`!style` -相当于在系统提示词的基础上加一条小备注 -> !style 极度粗俗 +在系统提示词基础上追加个性化风格设定 +> 示例: +!style 极度粗俗 !style 字数不超过50 -
- #### 记忆 指令:`!mem` -可设置上下文记忆消息条数,`!mem 2`只记得最近2次对话记录,其它的会丢失 +设定AI记忆的对话条数,如`!mem 2`表示只保留最近2次对话记录,其余将被清除 #### 温度 指令:`!temp` -温度采样,可设置模型的输出严谨度,更高的值会使输出更随机,更低的值会使其更加集中和确定 +控制AI输出的随机程度,值越高越随机,值越低越稳定 #### frequency_penalty 指令:`!fp` -作为调节采样温度'!temp'的替代方案,模型会考虑前n概率的token的结果,降低模型重复相同内容的可能性。默认为中间值,与`!temp`只需设置其中一个 +与`!temp`类似,但通过控制前n个token的重复性来调整输出多样性,默认设为中间值,**与`!temp`只需设置其一** #### 最大token数 指令:`!token` -可设置最大token数,影响输出长度 -如果AI回复内容中途截断,可加大token数,如: `!token 4096` +设定AI输出的最大token数量,影响回复长度 +如果AI回复中途被截断,可尝试增大该值,例如:`!token 4096` #### 添加角色 指令:`!add xxx` -可添加一个名为 **xxx** 的角色,然后会弹出输入框,你可填写其系统提示词(角色说明) -或`!add xxx yyy`直接填写 **角色名** 和 **角色说明** ,无需输入框 -> !add MOSS 你是流浪地球里的MOSS,请用MOSS的风格进行对话,不超过50字。 - -
+添加一个名为`xxx`的角色,之后会弹出输入框供你填写该角色的描述 +或直接通过命令`!add xxx yyy`添加角色名和描述 +> 示例: +!add MOSS 你是流浪地球里的MOSS,请用MOSS的风格进行对话,不超过50字 #### 添加角色 方法2 -如果角色说明太长,不方便手动指令添加 -在`Document/MOSS`目录创建`prompt_xxx`文件,`prompt_`是固定的,`xxx`是你的角色名,如`prompt_猫娘` -然后用文本编辑器打开,写入它的角色扮演说明保存即可 +若角色描述较长,不方便在终端输入 +可在`Document/MOSS`目录下创建文件`prompt_xxx`,其中`xxx`为角色名,例如`prompt_猫娘` +在该文件中写入角色描述并保存即可 #### 载入角色 指令:`!role` -可直接载入你添加过的角色,不用每次使用`!sys`来进行设定 -或`!role xxx`直接填写 **角色名** -> !role MOSS - -
+可载入你已添加的角色 +或使用`!role xxx`直接指定角色名 +> 示例: +!role MOSS #### 删除角色 指令:`!del` -可删除你添加过的角色 -或`!del xxx`直接填写 **角色名** 进行删除 -> !del MOSS - -
+删除你已添加的角色 +或使用`!del xxx`直接指定角色名 +> 示例: +!del MOSS #### 清除记忆 指令:`!res` -可以清除AI的上下文对话记忆,仅清除对话记录不清除角色和风格设定 +清除当前AI的对话历史记录,保留角色和风格设定 #### 初始化 指令:`!!res` -清除对话记忆和角色设定,恢复到原始空白AI -
-
+清除所有对话记录及角色设定,恢复到空白AI状态 + +

# 快捷按键 -在 **Termux** 界面,音量键功能是`Ctrl`和`Alt`, **下拉通知栏或切换应用之后才能用按键控制音量** -以下的 **`↑`** 符号表示 **上滑** 操作 - -`音量加`+`q` **显示/收起** 快捷键面板 -`音量加`+`v` **显示/收起** 音量条 -`MOSS` 启动MOSS -`EXIT` 退出 -`EXIT`↑ 强制终止程序 -`≡` 打开左侧任务栏 -`≡`↑ 粘贴 -`⌫` 删除 -`⌫`↑ 删除整行 -`●` 回车 -`●`↑ **禁用/激活** 键盘 -`◀ ▶` 移动光标 -`◀ ▶`↑ 移动光标到 **行首/行末** -`▲ ▼` 翻找历史输入 -`< >`↑ 切换 **上一个/下一个** 终端窗口 -`NEW` 新建终端窗口 -`NEW`↑ 重命名终端窗口 -
-
+在Termux界面中,音量键用于模拟`Ctrl`和`Alt`键 +> **注意:在切换应用或下拉通知栏后,才能使用音量键操作** + +以下为快捷键说明: + +- `音量加`+`q`:显示/收起快捷键面板 +- `音量加`+`v`:显示/收起音量条 +- `MOSS`:启动MOSS +- `EXIT`:退出程序 +- `EXIT`↑(上滑):强制终止程序 +- `≡`:打开左侧任务栏 +- `≡`↑(上滑):粘贴内容 +- `⌫`:删除一个字符 +- `⌫`↑(上滑):删除整行内容 +- `●`:发送消息 +- `●`↑(上滑):禁用/启用键盘 +- `◀ ▶`:左右移动光标 +- `◀ ▶`↑(上滑):将光标移动至行首/行末 +- `▲ ▼`:上下翻找历史输入 +- `< >`↑(上滑):切换至上一个/下一个终端窗口 +- `NEW`:新建终端窗口 +- `NEW`↑(上滑):重命名当前终端窗口 + +

# 接入QQ机器人 -1. 下载 [Autox.js](https://github.com/aiselp/AutoX/releases) -2. 打开Autox.js应用,左上角,开启权限:**无障碍服务** 、**通知读取权限**、**前台服务**、**悬浮窗**、**后台弹出界面**、**允许通知** -3. 开启你要接入的应用的消息 **通知权限** (比如QQ,一定确保它的后台消息内容能在通知栏显示) -4. 使用指令`!pre`修改AI回复的前缀内容,默认是 **@MOSS** ,只有以 **@MOSS** 开头的消息才会被回复,你可以改成自己的,比如使用`!pre /`,就会回复以`/`开头的消息 -5. 使用`!name auto`即可切换为自动回复模式,然后用Autox.js运行`消息自动化`脚本 - -`[音量减]键`只是 **暂停/恢复** ,并不是关闭/重启 -`[音量加]键`是 **显示/隐藏** 日志,默认关闭 -⚠️如果要重新启动"消息自动化", **先点击悬浮按钮里的 **╳** 来结束上一个** ,否则会导致两个 **叠加运行** -⚠️ **_重新启动脚本之前先手动关掉之前的(清理后台没用)_** - - **手机息屏状态下也可以自动亮屏回复** -> 前提: -取消手机锁,亮屏上滑能够直接进入 -关闭省电模式(否则消息接收可能延迟) -打开QQ的锁屏通知、电池策略设为后台无限制 -在Autox.js打开'前台服务'开关 -关闭防误触(可选,否则手机在口袋的情况无法操作) -(关于后台、锁屏通知的都打开,包括Autox.js、QQ、Termux,不被电池优化) - - **隐藏用法** -> 使用`!app`可切换其它应用,如果是QQ则不限前台和后台消息 -QQ获取前台消息原理是:捕获当前界面的最后一条消息,所以滚动屏幕会让"最后一条"发生变化 -会忽略屏幕右侧自己的消息,除非以`$`开头(自己的消息以`$`开头仍然可以被处理) -其它应用仅限后台消息,所以不要让聊天应用显示在前台(因为会导致消息不进通知栏从而无法接收) -`!speech`的原始功能是语音开关,`!stream`的原始功能是流式输出开关,它们在自动回复模式下还有其他功能: -`!speech`设为关闭可以让回复不@对方,否则AI回复会@对方 -当`!pre`前缀为空的时候会回复所有消息,此时把`!stream`设为关闭就只回复`固定回复.json`里的规则 - -
-
- +1. 安装 [Autox.js](https://github.com/aiselp/AutoX/releases) +2. 打开Autox.js,开启以下权限:**无障碍服务**、**通知读取权限**、**前台服务**、**悬浮窗**、**后台弹出界面**、**允许通知** +3. 确保QQ等应用在锁屏状态下的消息能显示在通知栏中 +4. 使用指令`!pre`设定回复前缀,默认是 **@MOSS**,只有以该前缀开头的消息才会被回复 +你可以修改为其他前缀,例如:`!pre /`,表示以`/`开头的消息触发AI回复 +5. 使用`!name auto`进入自动回复模式,然后运行Autox.js中的`消息自动化`脚本 + +`[音量减]键`用于 **暂停/恢复** 自动回复,不是退出 +`[音量加]键`用于 **显示/隐藏** 日志信息 +⚠️ 如果需要重新启动自动回复脚本,请先点击悬浮窗中的 **╳按钮** 结束上一个任务,否则会导致重复运行 +⚠️ 重新运行脚本前请务必关闭上一个任务(手动结束,清理后台无效) + +> **手机息屏自动亮屏回复设置前提:** +- 取消手机锁屏密码,亮屏后直接进入桌面 +- 关闭省电模式(否则消息可能延迟) +- 打开QQ的锁屏通知 +- Termux和Autox.js设置为允许后台运行 +- 关闭手机防误触功能(可选) + +#### 隐藏功能 +- 使用`!app`可切换到其他应用,如QQ,不限制前后台消息 +- QQ前台消息原理:读取当前界面最后一条消息,因此滚动屏幕可能会改变“最后一条” +- 自己的消息不会被处理,除非以`$`开头 + +> `!speech`在自动回复中控制是否@用户 +> `!stream`在自动回复中控制是否回复所有消息(当`!pre`未设置前缀时) + +

# 固定回复规则 - **此功能可用于设置QQ机器人的固定回复** -配置文件是`固定回复.json`,参照其中的模板进行编辑 +**此功能可用于设置QQ机器人的固定回复规则** +配置文件:`固定回复.json`,编辑时请按照模板进行修改 -格式是: +格式如下: `"条件": ["回复内容"]` -当消息满足你设的 **条件** ,则回复你设的 **固定内容** ,条件的灵活性极强,具体见`固定回复.json` +当消息满足条件时,系统将自动回复指定内容,条件支持多种形式,请参考`固定回复.json`文件中的示例 ### 📝 固定回复系统配置指南 -编辑 `固定回复.json` 文件时,**必须严格遵守 JSON 格式规范**,保存后立即生效。 +编辑 `固定回复.json` 文件时,**必须严格遵守 JSON 格式规范**,保存后立即生效 --- @@ -220,8 +198,8 @@ QQ获取前台消息原理是:捕获当前界面的最后一条消息,所以 ```json { "默认阈值": 0.7, // 全局相似度阈值(0~1) - "RECALL": ["recall", "撤回我"], // 固定规则:消息含这些词时撤回 - "MUTE": ["mute", "禁言我"], // 固定规则:消息含这些词时禁言 + "RECALL": ["recall", "撤回我"], // 撤回消息规则 + "MUTE": ["mute", "禁言我"], // 禁言规则 "条件1": ["回复A"], "条件2": ["回复B", "回复C"] } @@ -234,26 +212,26 @@ QQ获取前台消息原理是:捕获当前界面的最后一条消息,所以 ```json "...关键词...": ["回复内容"] ``` -- **触发条件**:消息任意位置包含 `关键词` +- **触发条件**:消息中包含关键词 - **示例**: ```json "...你好...": ["你好呀!", "欢迎~"] ``` -#### 2. 开头 + 结尾匹配(优先级 1) +#### 2. 开头+结尾匹配(优先级 1) ```json "开头...结尾": ["回复内容"] ``` -- **触发条件**:消息以 `开头` 起始,以 `结尾` 结束 +- **触发条件**:消息以“开头”开始,以“结尾”结束 - **示例**: ```json "你是...吗": ["没错我是"] ``` -#### 3. 开头/结尾匹配(优先级 2) +#### 3. 开头或结尾匹配(优先级 2) ```json -"开头...": ["回复内容"], // 以指定词开头 -"...结尾": ["回复内容"] // 以指定词结尾 +"开头...": ["回复内容"], // 以指定开头 +"...结尾": ["回复内容"] // 以指定结尾 ``` - **示例**: ```json @@ -265,14 +243,14 @@ QQ获取前台消息原理是:捕获当前界面的最后一条消息,所以 ```json "匹配句子>=0.6": ["回复内容"] ``` -- **触发条件**:消息与 `关键词` 相似度 ≥ `0.6` -- **灵敏度**:`p` 值越小,匹配越宽松(`p=0.3` 比 `p=0.8` 更易触发) +- **触发条件**:消息与关键词相似度 ≥ `0.6` +- **灵敏度**:`p`值越小,触发条件越宽松 #### 5. 默认相似度匹配(优先级 4) ```json "关键词": ["回复内容"] ``` -- **触发条件**:消息与 `关键词` 相似度 ≥ `默认阈值`(文件顶部设置) +- **触发条件**:消息与关键词相似度 ≥ `默认阈值`(文件顶部定义) --- @@ -281,32 +259,32 @@ QQ获取前台消息原理是:捕获当前界面的最后一条消息,所以 ```json "规则": ["回复A", "回复B", "回复C"] ``` -- 随机发送列表中的任一回复 +- 每次回复从列表中随机选择一条 #### ▶ 多条件并联(`|` 分隔) ```json "条件A | 条件B>=0.5 | 条件C": ["回复"] ``` -- 满足任意条件即触发 -- **注意**:`|` 两侧需加空格 +- 满足任意一个条件即可触发 +- **注意**:`|`两侧必须有空格 #### ▶ 多消息分段发送(`&` 分隔) ```json "规则": ["第一条 & 第二条 & 第三条"] ``` -- 分段发送多条消息 -- **注意**:`&` 两侧需加空格 +- 每条消息分段发送 +- **注意**:`&`两侧必须有空格 -#### ▶ 混合固定回复与 AI 回复 +#### ▶ 固定回复与AI回复结合 ```json -"规则": ["固定内容+"], // 先发固定内容,再追加 AI 回复 -"规则": ["+固定内容"] // 先发 AI 回复,再追加固定内容 +"规则": ["固定内容+"] // 先发固定内容,再追加AI回复 +"规则": ["+固定内容"] // 先发AI回复,再追加固定内容 ``` --- -### 🔧 动态变量替换 -在回复中使用占位符自动填充: +### 🔧 动态变量替换 +在回复中使用占位符自动填充信息: ```json "规则": ["@{user} 现在是 {time}\n我是{role},你的消息是:{msg}"] ``` @@ -315,41 +293,40 @@ QQ获取前台消息原理是:捕获当前界面的最后一条消息,所以 | `{user}` | 对方昵称 | | `{time}` | 当前时间 | | `{role}` | AI角色名 | -| `{pre}` | 对话前缀 | +| `{pre}` | 当前回复前缀 | | `{msg}` | 用户发送的原始消息 | -| `{rnd}` | 1~100 的随机数 | -| `{ai}` | 实际 AI 生成的回复 | +| `{rnd}` | 生成1~100之间的随机数 | +| `{ai}` | AI实际生成的回复内容 | --- -### ⚡ 特殊指令 -#### ▶ 触发指令(`!` 开头) +### ⚡ 特殊指令 +#### ▶ 触发系统指令(以`!`开头) ```json -"条件A": ["!recall {msg}"] // 撤回用户消息 -"条件B": ["!help"] +"条件A": ["!recall {msg}"] // 撤回用户消息 +"条件B": ["!help"] // 触发帮助指令 ``` -- `!`开头的回复内容会被当成指令执行 -#### ▶ 代码执行(`$...$` 包裹) +#### ▶ 执行Python代码(`$...$`包裹) ```json -"$'计算' in text and title=='UEG'$": ["$eva(prompt.split('计算', 1)[-1].strip())$"] // 执行代码并返回结果 +"$'计算' in text and title=='UEG'$": ["$eva(prompt.split('计算', 1)[-1].strip())$"] ``` -- 条件用`$...$`包裹则执行Python条件判断语句,此规则为 **最高优先级** -- 回复内容用`$...$`包裹则回复Python代码的返回结果 -- **已知变量**: - `title`(群名)、`user`(用户名)、`text`(内容)、`_msg`(带前缀的原始内容) +- 条件用`$...$`包裹时,系统执行Python表达式判断是否满足条件 +- 回复内容用`$...$`包裹时,系统返回Python代码的执行结果 +- **可用变量**: + `title`(群名)、`user`(用户名)、`text`(内容)、`_msg`(带前缀的原始内容) --- -### ❗ 格式规范要求 -1. **严格遵循 JSON 语法**: +### ❗ 格式规范 +1. 严格遵循 JSON 格式: ```json "规则": [ - "回复A", // 非最后一行需逗号 + "回复A", // 非最后一行需加逗号 "回复B", - "回复C" // 最后一行无逗号 - ], // 非最后一条规则需逗号 - "最后规则": ["回复"] // 文件末尾无逗号 + "回复C" // 最后一行不加逗号 + ], // 非最后一个规则需加逗号 + "最后规则": ["回复"] // 文件末尾不加逗号 ``` 2. 错误示例: ```json @@ -364,7 +341,7 @@ QQ获取前台消息原理是:捕获当前界面的最后一条消息,所以 --- -### 💡 示例文件片段 +### 💡 示例文件片段 ```json { "默认阈值": 0.65, @@ -376,5 +353,4 @@ QQ获取前台消息原理是:捕获当前界面的最后一条消息,所以 "现在几点": ["{user},现在是 {time}"] } ``` -- 所有示例见 `固定回复.json` 文件 - +完整示例请参考项目中的`固定回复.json`文件 \ No newline at end of file