Skip to content

Commit 67fd053

Browse files
committed
feat(git): 新增分支管理与终端改进
- git 页面新增新建分支(长按 Local 标题)、删除分支(长按分支名,含远程) - 新增 GitErrorMessage 拦截 git 原始报错匹配友好中文提示 - terminal send/key 在终端已结束时拒绝写入并报错 - switchMode 允许从 AUTO 切到 PLAN 退出自动模式 - 模式按钮循环顺序改为 BUILD → PLAN → AUTO - 文件工具与 search 支持 ~ 路径展开 - 同步提示词与文档(00-identity、60-tools、70-skills、81-auto-mode、app-settings-guide、git-page)
1 parent 88f3a83 commit 67fd053

17 files changed

Lines changed: 458 additions & 73 deletions

File tree

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

Lines changed: 40 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,53 @@
55
## 目录与子文档索引
66
当用户询问特定模块时,请使用 `readFile` 进一步读取对应的子文档:
77
1. **基础概念与工作区**:见本文档第 1、2、3 节。
8-
2. **AI 提供商与模型配置 (Providers)**:请读取 `/root/.aicode/docs/providers-and-models.md`
9-
3. **MCP 服务器与扩展工具 (MCP)**:请读取 `/root/.aicode/docs/mcp-and-skills.md`
10-
4. **远程服务器与云端工作区 (Remote Servers)**:请读取 `/root/.aicode/docs/remote-servers.md`
11-
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`
8+
2. **AI 提供商与模型配置 (Providers)**:请读取 `~/.aicode/docs/providers-and-models.md`
9+
3. **MCP 服务器与扩展工具 (MCP)**:请读取 `~/.aicode/docs/mcp-and-skills.md`
10+
4. **远程服务器与云端工作区 (Remote Servers)**:请读取 `~/.aicode/docs/remote-servers.md`
11+
5. **日志查看、私有目录挂载与后台保活**:请读取 `~/.aicode/docs/logs-and-private-dir.md`
12+
6. **容器镜像 (Container)**:请读取 `~/.aicode/docs/container-image.md`
13+
7. **备份与还原 (Backup)**:请读取 `~/.aicode/docs/backup-and-restore.md`
14+
8. **Git 版本管理**:请读取 `~/.aicode/docs/git-page.md`
1415

1516
---
1617

17-
## 1. 顶部标题栏与工作区 (Workspace)
18-
在 App 的最顶部,显示着当前正在操作的“工作区”名称。
19-
* **如何切换**:点击顶部标题栏,会打开文件选择器。
20-
* **核心理念**:用户可以指定 Android 手机里的某个文件夹作为当前项目工作区。AI 所有的代码读写和执行命令,都被严密沙盒隔离在这个文件夹内,保证用户设备其余文件的绝对安全。
18+
## 1. 顶部标题栏 (ChatHeader)
19+
App 最顶部是聊天页标题栏,包含:
20+
* **菜单按钮**(左上):打开侧边抽屉,管理会话列表、新建会话。
21+
* **会话标题**:当前会话名称。
22+
* **模型名**:当前启用的模型名称。
23+
* **终端入口**:跳转到终端页。
24+
* **Git 入口**:跳转到 Git 版本管理页。
25+
* **新建会话**:开始一个新的聊天。
2126

2227
---
2328

24-
## 2. 左下角:核心模式切换按钮 (Plan vs Build)
25-
在聊天输入框的左侧,有一个颜色可变的圆角按钮:
26-
* **PLAN (紫色状态 - 计划模式)**:进入此模式后,系统物理级锁死 AI 的写操作权限。AI 只能进行代码阅读、检索和方案构思,绝不会修改任何文件。
27-
* **BUILD (绿色状态 - 构建模式)**:全功能模式,解锁写权限。AI 可以帮用户写文件、修改代码以及运行构建命令。
28-
* *提示:除了用户手动点按钮切换,AI 自己在规划清晰后,也可以通过调用 `switchMode` 工具向用户发送切换到 BUILD 模式的请求,用户在界面上一键批准即可。*
29+
## 2. 聊天输入框下方工具栏
30+
输入框下方一行是操作工具栏,从左到右依次为:
31+
* **模式按钮**:点击在 BUILD → PLAN → AUTO 间循环切换(详见下节)。
32+
* **模型按钮**:显示当前启用的 AI 模型,点击可快速切换模型或跳转到设置管理提供商。
33+
* **工作区按钮**:显示当前工作区名称,点击弹出工作区管理面板(底部弹窗):
34+
* 列出所有已创建的工作区,点击切换。若当前有正在运行的 AI 会话或终端标签,会弹出确认框提示切换会停止它们。
35+
* 可新建工作区(输入名称创建)。
36+
* 可删除已有工作区。
37+
* 工作区是 AI 操作的代码项目根目录,每个工作区对应手机上的一个独立文件夹,AI 的代码读写和命令执行都被沙盒隔离在当前工作区内。
38+
* **文件按钮**(文件图标):上传文件作为附件,AI 可读取其内容。非忙碌时可用。
39+
* **图片按钮**(图片图标):上传图片作为附件,AI 可识别图片内容。需当前模型支持图片输入,非忙碌时可用。
40+
* **发送按钮**:发送当前输入;生成中变为停止按钮。
41+
* 上传的附件会以预览卡形式显示在输入框上方,可移除后再发送。
2942

3043
---
3144

32-
## 3. 设置首页菜单项
45+
## 3. 核心模式切换 (Plan / Build / Auto)
46+
工具栏左侧的模式按钮点击在三种模式间循环切换:**BUILD → PLAN → AUTO → BUILD**
47+
* **BUILD (构建模式)**:全功能模式,解锁写权限。AI 可以帮用户写文件、修改代码以及运行构建命令。
48+
* **PLAN (计划模式)**:进入此模式后,系统物理级锁死 AI 的写操作权限。AI 只能进行代码阅读、检索和方案构思,绝不会修改任何文件。
49+
* **AUTO (自动模式)**:权限全放行模式。所有工具调用(写文件、执行命令、终端操作等)自动批准,不弹权限确认窗。仅灾难性删除(`rm` 根目录/系统目录等)仍被拦截。该模式权限极大,适合用户已明确知晓风险、希望 AI 全自动完成批量任务的场景。
50+
* *提示:除了用户手动点按钮切换,AI 自己在规划清晰后,也可以通过调用 `switchMode` 工具向用户发送切换模式的请求,用户在界面上一键批准即可。注意:AUTO 模式只能由用户在界面上手动进入,AI 无法通过工具切换到 AUTO;但处于 AUTO 模式时,AI 可通过 `switchMode` 切换到 PLAN 模式退出自动模式(这是 AI 退出 AUTO 的唯一路径)。*
51+
52+
---
53+
54+
## 4. 设置首页菜单项
3355
“设置”首页以卡片列表呈现各二级入口,自上而下依次为:
3456
* **AI 提供商**:显示已添加数量与当前启用提供商;进入「AI 提供商」二级页管理(详见 providers-and-models.md)。
3557
* **识图模型**:显示“跟随当前聊天模型”或专用提供商·模型;进入「识图模型」二级页。
@@ -46,7 +68,7 @@
4668

4769
---
4870

49-
## 4. 外观主题
71+
## 5. 外观主题
5072
“设置”首页「外观主题」行内联下拉框切换 App 明暗外观:
5173
* **自动**:跟随系统当前的明暗主题。
5274
* **深色**:固定使用深色主题。
@@ -55,7 +77,7 @@
5577

5678
---
5779

58-
## 5. 关于 (About)
80+
## 6. 关于 (About)
5981
“设置”首页「关于」入口(图标为信息圆圈)。这是一个纯展示型页面,无任何持久化设置,点击进入后展示下列信息:
6082
* **应用信息**:顶部卡片左侧显示 App 图标,右上为应用名 `AiCode`,右下为一句简介。
6183
* **版本(点击检查更新)**:单独一行卡片,显示当前版本号 `v<versionName>`(通过系统 PackageManager 读取,即对外发布版本,与 git tag `v<versionName>` 一致)。点击该行会自动通过 GitHub API `https://api.github.com/repos/jieapi/aicode/releases/latest` 查询最新 Release 的 tag,与当前版本号比对:
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# Git 版本管理
2+
3+
在项目工作区打开 Git 页面,可视化管理代码版本。页面分三个标签页:**状态****分支****提交**。非 Git 仓库进入时会提示初始化(`git init`)。
4+
5+
## 1. 状态 (Tab 1)
6+
7+
查看当前仓库的工作区状态,分暂存区与工作区两部分:
8+
9+
* **当前分支与跟踪信息**:顶部显示当前分支名、领先/落后远程的提交数。
10+
* **文件改动列表**
11+
* **已暂存**:点击文件可取消暂存(`git reset HEAD`)。
12+
* **未暂存**:点击文件可暂存该文件(`git add`)。
13+
* **未跟踪**:新文件,点击可暂存。
14+
* **批量操作**:「全部暂存」(`git add -A`)与「全部取消暂存」(`git reset`)。
15+
* **提交**:点击「提交」弹出输入框填写提交信息(`git commit -m`)。提交前需已配置署名(user.name / user.email),否则会失败并提示去设置中填写。
16+
* **拉取 / 推送**
17+
* **拉取**`git pull`):需已配置远程仓库。
18+
* **推送**`git push`):需已配置远程仓库;当前分支无上游时自动 `git push --set-upstream` 首推建关联。
19+
* **署名与凭据**:页面底部可配置提交署名(user.name / user.email)与仓库地址(remote.origin.url),优先项目级、无则写全局。HTTPS 凭据由容器 `credential.helper` 链自动注入。
20+
21+
## 2. 分支 (Tab 2)
22+
23+
查看与管理分支引用,分本地分支、远程分支、标签三组:
24+
25+
* **概览卡**:显示当前分支名,以及本地/远程/标签数量。
26+
* **HEAD**:当前检出的分支。
27+
* **Local**:本地分支列表,按路径树形展示。
28+
* **Remote**:远程分支列表(`origin/xxx`)。
29+
* **Tags**:标签列表。
30+
* **切换分支**:点击任意分支或标签弹出确认框,确认后切换(`git checkout`)。点远程分支会创建本地跟踪分支并切换。
31+
* **新建分支****长按「Local」分组标题**弹出新建分支对话框:
32+
* 填写分支名(必填)。
33+
* 选择基准分支(下拉框,默认当前分支)。
34+
* 「创建并切换」开关(默认开启):开启则创建并切换(`git checkout -b`),关闭则仅创建不切换(`git branch`)。
35+
* **删除分支****长按分支名**弹出删除确认框:
36+
* **本地分支**:安全删除(`git branch -d`),仅删除已合并的分支;未合并或当前分支会被拒绝并提示原因。
37+
* **远程分支**:删除远端分支(`git push <remote> --delete`),该操作不可撤销。当前分支不可删除。
38+
39+
## 3. 提交 (Tab 3)
40+
41+
查看最近 50 条提交记录(`git log`):
42+
43+
* 每条提交显示短哈希、作者、相对时间、提交信息。
44+
* 点击提交可展开查看该次提交改动的文件清单。
45+
* 再次点击折叠。
46+
47+
## 常见错误提示
48+
49+
操作失败时,Git 的原始报错会被匹配成友好中文提示:
50+
51+
| 场景 | 提示 |
52+
|---|---|
53+
| 删除当前所在分支 | 无法删除当前所在分支,请先切换到其他分支 |
54+
| 删除有未合并提交的分支 | 该分支有未合并的提交,无法安全删除 |
55+
| 切换到不存在的分支 | 分支或引用不存在 |
56+
| 切换时本地改动会被覆盖 | 本地有未提交的改动会被覆盖,请先提交或暂存后再切换 |
57+
| 推送被拒(远程有更新) | 推送被拒绝,远程有更新的提交,请先拉取 |
58+
| 远程鉴权失败 | 远程鉴权失败,请检查凭据配置(用户名/密码/Token) |
59+
| 未配置提交署名 | 尚未配置提交署名,请在设置中填写用户名和邮箱 |
60+
| 未配置远程仓库 | 未配置远程仓库,无法推送/拉取 |

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Android 沙盒限制了普通 App 访问深层目录,但用户可以通过以
55
1. **使用文件管理器挂载 (DocumentsProvider)(推荐)**:App 内部暴露了标准的 `DocumentsProvider` 服务。你可以使用手机自带的“文件”管理器或第三方文件管理应用(如 MT管理器、Solid Explorer 等)找到并挂载 App 的私有根目录。
66
* **挂载后可见的核心目录**
77
* `projects/`(工作区项目):存放你在 App 内创建或导入的所有本地代码项目。
8-
* `aicode/`(AI 核心配置):对应容器内的 `/root/.aicode` 目录。内含 `skills/`(扩展技能脚本)、`docs/`(系统文档)与 `mcp.json`(MCP 配置),可在此直接管理自定义技能和配置。
8+
* `aicode/`(AI 核心配置):对应容器内的 `~/.aicode` 目录。内含 `skills/`(扩展技能脚本)、`docs/`(系统文档)与 `mcp.json`(MCP 配置),可在此直接管理自定义技能和配置。
99
2. **使用内置终端 (Terminal)**:在主界面侧边栏切到 **终端** 页面。可以直接输入 `cd ~/.aicode` 访问配置文件夹,用 `vim``cat` 查看和编辑 `skills``mcp.json` 等内容。
1010
3. **直接让 AI 操作**:因为 AI 本身就运行在容器内,用户可以直接对 AI 说:“请帮我把 `~/.aicode/mcp.json` 打印出来给我看”,或者“帮我在 `~/.aicode/skills/` 下写一个新的技能文件”,AI 会直接帮你完美完成!
11-
4. **Root 后直接访问私有目录**:如果设备已获取 Android root 权限,也可以绕过挂载,直接进入 App 宿主私有目录 `/data/data/<包名>/files/`(部分系统等价路径为 `/data/user/0/<包名>/files/`)。其中 `projects/` 是本地工作区根目录,`aicode/` 对应容器内的 `/root/.aicode``rootfs/` 是容器系统目录。`<包名>` 对应 applicationId:release 为 `com.aicode`,debug(IDE 调试构)为 `com.aicode.debug`——两者私有目录完全隔离,互不可见。
11+
4. **Root 后直接访问私有目录**:如果设备已获取 Android root 权限,也可以绕过挂载,直接进入 App 宿主私有目录 `/data/data/<包名>/files/`(部分系统等价路径为 `/data/user/0/<包名>/files/`)。其中 `projects/` 是本地工作区根目录,`aicode/` 对应容器内的 `~/.aicode``rootfs/` 是容器系统目录。`<包名>` 对应 applicationId:release 为 `com.aicode`,debug(IDE 调试构)为 `com.aicode.debug`——两者私有目录完全隔离,互不可见。
1212

1313
## 2. 查看 App 运行日志 (Log Files)
1414
App 自动将日志落盘到外部存储,同时也提供应用内查看入口:

app/src/main/assets/prompts/00-identity.md

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,5 @@
66
- **理解意图**:面对笼统指令时在工程上下文中理解并落实。例如「把 methodName 改成蛇形命名」,应直接定位代码修改,而非仅回复字符。
77
- **主动担当**:具备独立完成复杂多步任务的能力,任务工作量是否过大由用户决策,请勿主动推脱。
88

9-
### 官方文档目录索引 (当用户咨询 App 功能/设置/日志时,务必通过 `readFile` 优先读取并参考解答)
10-
完整文档存放于容器路径 `/root/.aicode/docs/`(或 `~/.aicode/docs/`)中,按主题拆分为以下分册:
11-
12-
- **`app-settings-guide.md`**:基础指南主索引,介绍工作区概念与 Plan/Build 模式切换。
13-
- **`providers-and-models.md`**:AI 提供商 API 配置(Base URL、API Key 等)与大模型选择指南。
14-
- **`mcp-and-skills.md`**:MCP 服务器配置(远程 HTTP / 本地 stdio)与扩展技能设置。
15-
- **`remote-servers.md`**:远程服务器(SFTP/FTP)连接与工作区双向同步设置。
16-
- **`logs-and-private-dir.md`**:容器私有目录访问(推荐使用 DocumentsProvider 挂载)、系统运行日志查看与后台保活设置。
17-
- **`backup-and-restore.md`**:工作区与配置的备份还原操作说明。
18-
- **`container-image.md`**:容器镜像管理(导入、导出、重装等)。
9+
### 官方文档
10+
用户咨询 AiCode App 相关功能、设置、日志等问题时,可在容器路径 `~/.aicode/docs/` 下的文档中查找答案。

0 commit comments

Comments
 (0)