Skip to content

Commit 2764598

Browse files
author
Developer
committed
Merge branch 'fix/chat-ui-fixes' into main
2 parents e4417cb + 7387ebb commit 2764598

19 files changed

Lines changed: 292 additions & 76 deletions

File tree

app/src/main/assets/docs/app-settings-guide.md

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,13 @@
44

55
## 目录与子文档索引
66
当用户询问特定模块时,请使用 `readFile` 进一步读取对应的子文档:
7-
1. **基础概念与工作区**:见本文档第 1、2 节。
7+
1. **基础概念与工作区**:见本文档第 1、2、3 节。
88
2. **AI 提供商与模型配置 (Providers)**:请读取 `/root/.aicode/docs/providers-and-models.md`
99
3. **MCP 服务器与扩展工具 (MCP)**:请读取 `/root/.aicode/docs/mcp-and-skills.md`
1010
4. **远程服务器与云端工作区 (Remote Servers)**:请读取 `/root/.aicode/docs/remote-servers.md`
1111
5. **日志查看、私有目录挂载与后台保活**:请读取 `/root/.aicode/docs/logs-and-private-dir.md`
12+
6. **容器镜像 (Container)**:请读取 `/root/.aicode/docs/container-image.md`
13+
7. **备份与还原 (Backup)**:请读取 `/root/.aicode/docs/backup-and-restore.md`
1214

1315
---
1416

@@ -27,17 +29,34 @@
2729

2830
---
2931

30-
## 3. 外观主题
31-
在“设置”首页可以通过 **外观主题** 下拉框切换 App 明暗外观。
32+
## 3. 设置首页菜单项
33+
“设置”首页以卡片列表呈现各二级入口,自上而下依次为:
34+
* **AI 提供商**:显示已添加数量与当前启用提供商;进入「AI 提供商」二级页管理(详见 providers-and-models.md)。
35+
* **识图模型**:显示“跟随当前聊天模型”或专用提供商·模型;进入「识图模型」二级页。
36+
* **MCP 服务器**:显示已配置数量与已连接数;进入「MCP 服务器」二级页(详见 mcp-and-skills.md)。
37+
* **容器镜像**:显示当前镜像 profile 名(默认“内置 Alpine”);进入「容器镜像」二级页(详见 container-image.md)。
38+
* **日志等级**:显示当前等级名;进入「日志等级」二级页选择等级。
39+
* **日志查看**:查看最近日志,支持 MCP 名称过滤;进入「日志查看」二级页。
40+
* **工具授权**:显示已保存授权规则条数;进入「工具授权」二级页。
41+
* **远程工作区**:管理 SFTP / FTP 工作区同步;进入「远程工作区」二级页(详见 remote-servers.md)。
42+
* **外观主题**:首页内联下拉框,自动/深色/浅色。
43+
* **后台运行保活**:首页内联开关,开启后显示前台通知避免后台被杀。
44+
* **备份与还原**:加密导出/导入配置、聊天历史与凭据;进入「备份与还原」二级页(详见 backup-and-restore.md)。
45+
* **关于**:版本检查 · GitHub · 许可证;进入「关于」二级页。
46+
47+
---
48+
49+
## 4. 外观主题
50+
“设置”首页「外观主题」行内联下拉框切换 App 明暗外观:
3251
* **自动**:跟随系统当前的明暗主题。
3352
* **深色**:固定使用深色主题。
3453
* **浅色**:固定使用浅色主题。
3554
* 该设置会被保存,重启 App 后仍然生效。
3655

3756
---
3857

39-
## 4. 关于 (About)
40-
“设置”首页最底部有一项 **关于** 入口(图标为信息圆圈)。这是一个纯展示型页面,无任何持久化设置,点击进入后展示下列信息:
58+
## 5. 关于 (About)
59+
“设置”首页「关于」入口(图标为信息圆圈)。这是一个纯展示型页面,无任何持久化设置,点击进入后展示下列信息:
4160
* **应用信息**:顶部卡片左侧显示 App 图标,右上为应用名 `AiCode`,右下为一句简介。
4261
* **版本(点击检查更新)**:单独一行卡片,显示当前版本号 `v<versionName>`(通过系统 PackageManager 读取,即对外发布版本,与 git tag `v<versionName>` 一致)。点击该行会自动通过 GitHub API `https://api.github.com/repos/jieapi/aicode/releases/latest` 查询最新 Release 的 tag,与当前版本号比对:
4362
* 相等 → 弹窗提示「已经是最新版本」。
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
# 备份与还原 (Backup)
2+
3+
进入「设置」->「备份与还原」,加密导出/导入应用配置、聊天历史与凭据。
4+
5+
## 1. 导出备份
6+
* **选择导出数据**:勾选要导出的数据范围,包括 AI 提供商、Git 凭据、远程连接与挂载、聊天历史、MCP 服务器、授权规则、应用设置。
7+
* **设置导出口令**:留空则输出明文 tar.gz;填写则用口令加密(AES-GCM)。
8+
* 导出格式为 tar.gz 压缩包,含 API Key 等凭据,通过系统文件选择器保存到指定位置。
9+
10+
## 2. 导入备份
11+
* 从备份文件还原数据,合并方式导入,不清除现有数据。
12+
* 需输入对应口令;备份未加密则留空。
13+
* 导入完成后展示已还原数据汇总(提供商、Git 凭据、远程连接、远程挂载、聊天会话、聊天消息、待办项、MCP 服务器、全局授权规则等数量)。
14+
15+
## 3. 注意事项
16+
* 口令丢失则加密备份无法恢复。
17+
* 导入后应用内仍按现状明文存储。
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# 容器镜像 (Container)
2+
3+
进入「设置」->「容器镜像」,管理 AI 运行所在的 Linux 容器镜像。列表单选切换当前生效的 profile。
4+
5+
## 1. 内置镜像
6+
默认提供内置 Alpine 镜像,shell 路径自动选择(bash/sh),无需配置。
7+
8+
## 2. 自定义镜像
9+
点击「导入自定义镜像 (tar.gz)」新建自定义 profile:
10+
* **名称**:镜像配置别名。
11+
* **shell 路径**:如 `/bin/sh``/bin/bash`
12+
* **额外绑定**:空格分隔,如 `/sdcard:/mnt`
13+
* **额外 proot 参数**:空格分隔。
14+
* **镜像文件**:选择 tar.gz / tgz / tar.xz / txz 格式的 rootfs 镜像文件。
15+
16+
自定义镜像只保证能起 shell 执行命令,不 provision、不接管镜像源——所需工具由用户自行在容器内安装。
17+
18+
## 3. 编辑与删除
19+
自定义镜像可编辑上述字段、可删除(删除会一并清理其 rootfs 目录,内置 Alpine 不受影响)。

app/src/main/assets/docs/logs-and-private-dir.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,6 @@ App 自动将日志落盘到外部存储,同时也提供应用内查看入口
1717
* **显示限制**:为避免大日志卡顿,应用内日志查看默认显示当前文件在筛选条件下的最后一部分日志;完整文件仍可在上述目录中查看。
1818

1919
## 3. 系统配置补充
20-
* **日志等级 (Log Level)**:控制系统打印日志的详细程度,枚举值为 `Verbose`, `Debug`, `Info`, `Warn`, `Error`。遇到 Bug 时建议调成 `Debug`;日常使用保持 `Info`
21-
* **工具授权 (Permissions)**写文件、执行命令等高危授权管理,可随时在列表中点击撤销“永远允许”的授权
20+
* **日志等级 (Log Level)**:控制系统打印日志的详细程度,枚举值为 `Verbose`, `Debug`, `Info`, `Warn`, `Error`, `None``None` 用作阈值时关闭一切输出)。遇到 Bug 时建议调成 `Debug`;日常使用保持 `Info`。设置页分为「日志等级」二级页与「日志查看」二级页
21+
* **工具授权 (Permissions)**二级页列出当前项目与全局已保存的授权规则,可逐条删除;项目规则可「提升为全局」。系统已预设内置安全白名单,对少量完全无害、只读、不派生子进程的命令(如 ls、pwd、cat、grep、ps、top、git status 等)免弹窗放行;用户在对话中选「始终允许」会生成精准匹配的记忆规则(如 `rm temp.log``git pull`
2222
* **后台运行保活 (Keepalive)**:开启后 Android 系统通知栏会显示常驻服务,防止 AI 在执行超长任务(如编译)切后台时被系统杀掉。
Lines changed: 29 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,34 @@
11
# MCP 服务器与扩展能力设置
22

3-
点击菜单进入“设置” -> “Mcp”,这里管理 Model Context Protocol (MCP) 服务器配置,允许外挂本地或远程的扩展能力(如查数据库、搜网页、浏览器控制等)。
3+
进入“设置” -> “MCP 服务器”,管理 Model Context Protocol (MCP) 服务器配置,外挂本地或远程扩展能力(如查数据库、搜网页、浏览器控制等)。
44

5-
## 1. 远程 HTTP 类型
6-
适用于通过网络提供服务的扩展配置:
7-
* **Name (名称)**:别名标识
8-
* **URL (接口链接)**:远程服务端的 Streamable HTTP 链接
9-
* **Headers (请求头)**:可选填入认证 Token 等静态头部键值对
5+
## 1. 服务器列表页
6+
* 列出所有已配置的 server 卡片,左侧图标区分 stdio(终端图标)/ HTTP(服务器图标),右下角状态圆点(已连接/连接中/连接失败/已禁用)。
7+
* 每张卡片显示:名称、状态 Pill、类型 Pill(`内置``HTTP`)、信息 Pill(已连接时显示「工具: N」,否则显示启动命令或 URL)
8+
* **左滑卡片**露出「删除」按钮可移除该 server;点击卡片进入编辑
9+
* 右上角「重新连接」按钮一键重连所有 server,「+」按钮添加新 server
1010

11-
## 2. 本地 stdio 类型
12-
适用于在容器内通过本地命令行进程启动的服务:
13-
* **Name (名称)**:别名标识。
14-
* **Command (执行命令)**:执行引擎或命令,例如 `node``npx``python` 等。
15-
* **Args (命令参数)**:参数列表,例如 `/path/server.js` 或具体启动参数。
16-
* **Env (环境变量)**:传递给该进程的键值对环境变量。
11+
## 2. 编辑器:基础设置 Tab
12+
顶部「是否启用」开关控制该 server 是否参与连接。其余字段按传输类型切换(`远程 HTTP` / `本地 stdio`):
1713

18-
*提示:对于复杂的 MCP 配置,AI 也可以在会话中通过 `manageMcp` 工具为用户自动添加或管理。*
14+
### 远程 HTTP 类型
15+
* **名称**:别名标识(如 `fetch``github`)。
16+
* **服务器地址**:远程服务端的 Streamable HTTP 链接(如 `https://api.example.com/sse`)。
17+
* **自定义请求头**:键值对列表,可添加多条,用于填入认证 Token 等静态头部。
18+
19+
### 本地 stdio 类型
20+
* **名称**:别名标识。
21+
* **启动命令**:执行引擎或命令,例如 `npx``node``python`
22+
* **命令参数**:参数列表,每项一个卡片(如 `-y``@modelcontextprotocol/server-xxx`)。
23+
* **环境变量**:键值对列表,传递给该进程的环境变量(如 `API_KEY`)。
24+
25+
## 3. 编辑器:工具 Tab
26+
连接成功后可查看该 server 暴露的工具列表,每个工具一张卡片:
27+
* **工具开关**:右上角 Switch 可禁用单个工具(写入 `disabledTools`),禁用后该工具不再注入模型。
28+
* **描述与参数**:显示工具描述及其入参键名 pill。
29+
* **需要审批**:底部 Switch 开启后,该工具每次调用前需用户确认(写入 `requireApprovalTools`)。
30+
* 未连接或未检测到工具时,点击右上角「刷新」按钮重新拉取工具列表。
31+
32+
## 4. 其他入口
33+
* 编辑器右上角日志按钮可跳转到「日志查看」并按该 server 名称过滤。
34+
* 对于复杂的 MCP 配置,AI 也可在会话中通过 `manageMcp` 工具自动添加或管理。
Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,29 @@
11
# AI 提供商 (Providers) 与模型配置指南
22

3-
点击菜单进入“设置” -> “Providers”,可以添加或修改大模型 API 配置,包含以下具体字段:
3+
进入“设置” -> “AI 提供商”,可添加或修改大模型 API 配置。提供商编辑页分两个 Tab:**配置****模型**
44

5-
## 1. 配置字段说明
6-
* **名称 (Name)**:文本框。给提供商取个别名(如“我的中转 API”)。
7-
* **类型 (Type)**选项框。一般为 `openai``anthropic`。决定发包协议。第三方中转站基本都选 `openai`
5+
## 1. 配置 Tab 字段
6+
* **名称**:文本框。给提供商取个别名(如“我的中转 API”)。留空保存时自动填“新提供商”
7+
* **类型**FilterChip 三选一:`OpenAI` / `Anthropic` / `Gemini`。决定发包协议。第三方中转站基本都选 `OpenAI`
88
* **API Key**:文本框。填入秘钥(如 `sk-xxx`)。
9-
* **Base URL (接口地址)**:文本框。填 API 根域名(如 `https://api.openai.com`。不要带尾部的 `/v1` 或具体的 path。
10-
* **API Path (接口路径)**:文本框。紧跟 Base URL 后的请求路径,默认是 `/chat/completions`
11-
* **Use Response API**:开关。非标准解析模式,默认**关闭**
9+
* **Base URL**:文本框。填 API 根域名,placeholder 随类型变化(OpenAI→`https://api.openai.com/`,Anthropic→`https://api.anthropic.com/`,Gemini→`https://generativelanguage.googleapis.com/`)。留空时按类型回填默认值。不要带尾部的 `/v1` 或具体的 path。
10+
* **API 地址**:文本框。紧跟 Base URL 后的请求路径,默认 `/chat/completions`
11+
* **Response API (新版)**:开关,仅当类型为 `OpenAI` 时显示。默认**关闭**
1212

13-
## 2. 模型管理
14-
* **模型 (Models)**:可以点击拉取按钮去同步提供商提供的模型列表,也可以手动输入(如 `gpt-4o`, `claude-3-5-sonnet`)后点击添加。
15-
* **默认模型 (Default Model)**:下拉框。选择该提供商默认选用的出战模型。
13+
## 2. 模型 Tab
14+
* **拉取模型**:点击“拉取模型”按钮,向提供商同步可用模型列表;结果按品牌分组、可折叠,支持名称搜索筛选,每个模型旁标注元数据标签(`Chat` / `Image`(支持图片) / `Tools`(支持工具调用) / `Input <上下文>` / `Output <最大输出>`)。
15+
* **手动添加模型**:点击右上角 + 或“添加模型”,输入模型名(如 `gpt-4o`)即可加入。重复添加会被拦截提示。
16+
* **测试**:每个已添加模型行有“测试”按钮,对该模型发起一次连通性请求,行下方显示成功/失败结果。
17+
* **删除**:模型行右侧 × 可移除该模型。
18+
* **生效模型**:实际出战模型取 `selectedModel`,为空时回退到 `defaultModel`(即 `effectiveModel`)。提供商列表页可切换启用/停用某个提供商。
1619

1720
## 3. 识图专用模型
18-
进入「设置」->「识图模型」,可为识图(`viewImage` 工具)单独指定一个**兜底模型**
21+
进入「设置」->「识图模型」,可为识图(`viewImage` 工具)单独指定一个**兜底模型**。列表按提供商分组,仅列出已启用且已添加模型的提供商
1922

20-
* **跟随当前聊天模型**(默认):识图始终用当前选中的聊天模型。当该模型本身支持图片输入时,直接用其原生视觉能力识别图片;若不支持图片输入,则识图不可用并报错。
23+
* **跟随当前聊天模型**(默认,列表首项):识图始终用当前选中的聊天模型。当该模型本身支持图片输入时,直接用其原生视觉能力识别图片;若不支持图片输入,则识图不可用并报错。
2124
* **指定专用模型**:选择某个提供商下、支持图片输入的模型。当当前聊天模型不支持图片输入时,识图那一轮会**临时切换**到该专用模型发送请求,发送完成后自动恢复回聊天模型继续对话。
2225

2326
要点:
24-
* 识图**优先**用当前聊天模型的原生能力;专用模型仅作"当前模型不支持图片"时的兜底,不会在当前模型已支持图片时被使用。
25-
* 列表中每个模型旁标注是否「支持图片输入」依据模型元数据 `supportsVision`,便于挑选;即便选了不支持图片的模型也会保存,但实际识图发送时会被工作流校验并报错。
27+
* 识图**优先**用当前聊天模型的原生能力;专用模型仅作当前模型不支持图片时的兜底,不会在当前模型已支持图片时被使用。
28+
* 列表中每个模型旁标注是否「支持图片输入」/「不支持图片输入(不推荐用于识图)」(依据模型元数据 `supportsVision`);即便选了不支持图片的模型也会保存,但实际识图发送时会被工作流校验并报错。
2629
* 若当前聊天模型不支持图片、且专用模型未配置或同样不支持图片,`viewImage` 将返回 `MODEL_VISION_UNSUPPORTED`,提示去设置中指定识图模型。

0 commit comments

Comments
 (0)