# moss-android-terminal
**Repository Path**: huhu5/moss-android-terminal
## Basic Information
- **Project Name**: moss-android-terminal
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-08-12
- **Last Updated**: 2025-08-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

# 安装
推荐使用文件管理器:[MT管理器](https://mt2.cn/download/)
- QQ交流群:768464439
安卓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)
- [GitHub下载地址](https://github.com/Heigxaon/MOSS_terminal/archive/refs/tags/MOSS.zip)
> 如果收到的是4个`MOSS.tar.gz`压缩包,请先合并
在MT管理器中 **批量选择** 这4个文件,然后选择 **长按 - 工具 - 文件合并**,将合并后的文件命名为`MOSS.tar.gz`
1. 将合并后的`MOSS.tar.gz`文件移动至目录:`/storage/emulated/0/Documents/`(推荐路径),**不需要手动解压**
(如果没有`Documents`文件夹,请手动创建)
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) (可选,实现自动回复功能)
3. 设置权限
- 给Termux授予权限,电池策略设为 **无限制**
- Termux:API设置为 **允许自启动**
- 若使用Termux:Widget,创建桌面快捷方式(可选)
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)
多行输入功能开关:`!ml`,默认关闭状态,回车即发送消息。开启后,`回车=换行`,`双回车=发送`
使用`!help`可查看所有功能指令
所有指令以感叹号`!`开头,拼写必须准确,大小写敏感。使用`!cmd`打开指令列表,支持一键复制使用
部分指令需要附加参数,例如:`!name`用于修改用户名,使用方式为`!name xxx`,中间用一个 **空格** 分隔
如果使用`!name`不带参数,系统会弹出输入框供你填写参数
使用指令`!speech`可开启或关闭语音朗读
使用指令`!cfg`可查看当前的AI参数配置
每次对话的分隔线右侧数字表示本次API请求的:**消耗金额 | APIkey余额 | 输入token数 | 输出token数**
> 详见[DeepSeek开放平台计费规则](https://api-docs.deepseek.com/zh-cn/quick_start/pricing/)
# AI参数设置
支持以下API参数调整
> 包括 **系统提示词、风格、上下文记忆量、最大token、思维离散度等**
#### 系统提示词
指令:`!sys`
设定AI的底层角色,该设定不属于对话内容,不会被遗忘。例如:
> !sys 你是一个真实的QQ群成员,说话要像真人,别用太标准的语法,平均字数不超过30。根据聊天记录10%偶尔@别人,可以主动聊天不限于回答当前用户。不要使用“啊、哈、呢”之类的语气词和状态描述
#### 风格
指令:`!style`
在系统提示词基础上追加个性化风格设定
> 示例:
!style 极度粗俗
!style 字数不超过50
#### 记忆
指令:`!mem`
设定AI记忆的对话条数,如`!mem 2`表示只保留最近2次对话记录,其余将被清除
#### 温度
指令:`!temp`
控制AI输出的随机程度,值越高越随机,值越低越稳定
#### frequency_penalty
指令:`!fp`
与`!temp`类似,但通过控制前n个token的重复性来调整输出多样性,默认设为中间值,**与`!temp`只需设置其一**
#### 最大token数
指令:`!token`
设定AI输出的最大token数量,影响回复长度
如果AI回复中途被截断,可尝试增大该值,例如:`!token 4096`
#### 添加角色
指令:`!add xxx`
添加一个名为`xxx`的角色,之后会弹出输入框供你填写该角色的描述
或直接通过命令`!add xxx yyy`添加角色名和描述
> 示例:
!add MOSS 你是流浪地球里的MOSS,请用MOSS的风格进行对话,不超过50字
#### 添加角色 方法2
若角色描述较长,不方便在终端输入
可在`Document/MOSS`目录下创建文件`prompt_xxx`,其中`xxx`为角色名,例如`prompt_猫娘`
在该文件中写入角色描述并保存即可
#### 载入角色
指令:`!role`
可载入你已添加的角色
或使用`!role xxx`直接指定角色名
> 示例:
!role MOSS
#### 删除角色
指令:`!del`
删除你已添加的角色
或使用`!del xxx`直接指定角色名
> 示例:
!del MOSS
#### 清除记忆
指令:`!res`
清除当前AI的对话历史记录,保留角色和风格设定
#### 初始化
指令:`!!res`
清除所有对话记录及角色设定,恢复到空白AI状态
# 快捷按键
在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`设定回复前缀,默认是 **@MOSS**,只有以该前缀开头的消息才会被回复
你可以修改为其他前缀,例如:`!pre /`,表示以`/`开头的消息触发AI回复
5. 使用`!name auto`进入自动回复模式,然后运行Autox.js中的`消息自动化`脚本
`[音量减]键`用于 **暂停/恢复** 自动回复,不是退出
`[音量加]键`用于 **显示/隐藏** 日志信息
⚠️ 如果需要重新启动自动回复脚本,请先点击悬浮窗中的 **╳按钮** 结束上一个任务,否则会导致重复运行
⚠️ 重新运行脚本前请务必关闭上一个任务(手动结束,清理后台无效)
> **手机息屏自动亮屏回复设置前提:**
- 取消手机锁屏密码,亮屏后直接进入桌面
- 关闭省电模式(否则消息可能延迟)
- 打开QQ的锁屏通知
- Termux和Autox.js设置为允许后台运行
- 关闭手机防误触功能(可选)
#### 隐藏功能
- 使用`!app`可切换到其他应用,如QQ,不限制前后台消息
- QQ前台消息原理:读取当前界面最后一条消息,因此滚动屏幕可能会改变“最后一条”
- 自己的消息不会被处理,除非以`$`开头
> `!speech`在自动回复中控制是否@用户
> `!stream`在自动回复中控制是否回复所有消息(当`!pre`未设置前缀时)
# 固定回复规则
**此功能可用于设置QQ机器人的固定回复规则**
配置文件:`固定回复.json`,编辑时请按照模板进行修改
格式如下:
`"条件": ["回复内容"]`
当消息满足条件时,系统将自动回复指定内容,条件支持多种形式,请参考`固定回复.json`文件中的示例
### 📝 固定回复系统配置指南
编辑 `固定回复.json` 文件时,**必须严格遵守 JSON 格式规范**,保存后立即生效
---
### ⚙️ 基础规则结构
```json
{
"默认阈值": 0.7, // 全局相似度阈值(0~1)
"RECALL": ["recall", "撤回我"], // 撤回消息规则
"MUTE": ["mute", "禁言我"], // 禁言规则
"条件1": ["回复A"],
"条件2": ["回复B", "回复C"]
}
```
---
### 🔍 匹配规则详解
#### 1. 包含关键词(优先级 0)
```json
"...关键词...": ["回复内容"]
```
- **触发条件**:消息中包含关键词
- **示例**:
```json
"...你好...": ["你好呀!", "欢迎~"]
```
#### 2. 开头+结尾匹配(优先级 1)
```json
"开头...结尾": ["回复内容"]
```
- **触发条件**:消息以“开头”开始,以“结尾”结束
- **示例**:
```json
"你是...吗": ["没错我是"]
```
#### 3. 开头或结尾匹配(优先级 2)
```json
"开头...": ["回复内容"], // 以指定开头
"...结尾": ["回复内容"] // 以指定结尾
```
- **示例**:
```json
"帮我...": ["我不帮"],
"...吗": ["不知道"]
```
#### 4. 相似度匹配(优先级 3)
```json
"匹配句子>=0.6": ["回复内容"]
```
- **触发条件**:消息与关键词相似度 ≥ `0.6`
- **灵敏度**:`p`值越小,触发条件越宽松
#### 5. 默认相似度匹配(优先级 4)
```json
"关键词": ["回复内容"]
```
- **触发条件**:消息与关键词相似度 ≥ `默认阈值`(文件顶部定义)
---
### 🎲 高级功能
#### ▶ 多回复随机选择
```json
"规则": ["回复A", "回复B", "回复C"]
```
- 每次回复从列表中随机选择一条
#### ▶ 多条件并联(`|` 分隔)
```json
"条件A | 条件B>=0.5 | 条件C": ["回复"]
```
- 满足任意一个条件即可触发
- **注意**:`|`两侧必须有空格
#### ▶ 多消息分段发送(`&` 分隔)
```json
"规则": ["第一条 & 第二条 & 第三条"]
```
- 每条消息分段发送
- **注意**:`&`两侧必须有空格
#### ▶ 固定回复与AI回复结合
```json
"规则": ["固定内容+"] // 先发固定内容,再追加AI回复
"规则": ["+固定内容"] // 先发AI回复,再追加固定内容
```
---
### 🔧 动态变量替换
在回复中使用占位符自动填充信息:
```json
"规则": ["@{user} 现在是 {time}\n我是{role},你的消息是:{msg}"]
```
| 变量 | 说明 |
|-----------|-----------------------|
| `{user}` | 对方昵称 |
| `{time}` | 当前时间 |
| `{role}` | AI角色名 |
| `{pre}` | 当前回复前缀 |
| `{msg}` | 用户发送的原始消息 |
| `{rnd}` | 生成1~100之间的随机数 |
| `{ai}` | AI实际生成的回复内容 |
---
### ⚡ 特殊指令
#### ▶ 触发系统指令(以`!`开头)
```json
"条件A": ["!recall {msg}"] // 撤回用户消息
"条件B": ["!help"] // 触发帮助指令
```
#### ▶ 执行Python代码(`$...$`包裹)
```json
"$'计算' in text and title=='UEG'$": ["$eva(prompt.split('计算', 1)[-1].strip())$"]
```
- 条件用`$...$`包裹时,系统执行Python表达式判断是否满足条件
- 回复内容用`$...$`包裹时,系统返回Python代码的执行结果
- **可用变量**:
`title`(群名)、`user`(用户名)、`text`(内容)、`_msg`(带前缀的原始内容)
---
### ❗ 格式规范
1. 严格遵循 JSON 格式:
```json
"规则": [
"回复A", // 非最后一行需加逗号
"回复B",
"回复C" // 最后一行不加逗号
], // 非最后一个规则需加逗号
"最后规则": ["回复"] // 文件末尾不加逗号
```
2. 错误示例:
```json
// 错误1:缺少逗号
"规则": [
"A"
"B"
]
// 错误2:多余逗号
"规则": ["A",]
```
---
### 💡 示例文件片段
```json
{
"默认阈值": 0.65,
"RECALL": ["撤回", "收回"],
"...你好...": ["你好!", "嗨~"],
"打开...关闭": ["已开关设备"],
"计算$...$": ["结果:$eval(text)$"],
"帮助>=0.6": ["!help & 已发送帮助文档+"],
"现在几点": ["{user},现在是 {time}"]
}
```
完整示例请参考项目中的`固定回复.json`文件