j-cli 12.9.20

A fast CLI tool for alias management, daily reports, and productivity
---
name: AI 对话
order: 6
---

## AI 对话

| 命令 | 说明 |
|------|------|
| `j chat` / `j ai` | 进入 TUI 对话界面(全屏交互) |
| `j chat 你好` / `j ai 你好` | 快速发送消息并打印回复(oneshot 模式) |
| `j ai --remote` | 启用远程控制模式(手机扫码控制) |
| `j ai --remote --port 8080` | 指定远程控制端口(默认 9390) |
| `j ai -c` | 延续上一个会话(oneshot 模式) |
| `j ai --session <id>` | 指定会话 ID 继续 |

### 远程控制模式

`--remote` 参数启用远程控制功能,可通过手机扫码在网页端控制终端中的 AI 对话:

```bash
j ai --remote              # 默认端口 9390
j ai --remote --port 8080  # 自定义端口
j ai -c --remote           # 延续会话 + 远程控制
```

启动后会显示二维码,手机扫描后即可在浏览器中操作。

> 注意:`--remote` 模式会强制进入 TUI 界面,忽略消息内容参数

### 配置

首次运行 `j chat` 时,若尚未配置模型提供方,会自动进入内置配置界面完成初始配置。已有配置后,也可随时在对话界面中按 **Ctrl+E** 或输入 `/config` 重新编辑。

配置文件路径: `~/.jdata/agent/data/agent_config.json`(也可手动编辑)

```json
{
  "providers": [
    {
      "name": "GPT-4o",
      "api_base": "https://api.openai.com/v1",
      "api_key": "sk-your-api-key",
      "model": "gpt-4o",
      "supports_vision": true
    }
  ],
  "active_index": 0,
  "max_history_messages": 20,
  "max_context_tokens": 100000,
  "theme": "midnight",
  "tools_enabled": true,
  "max_tool_rounds": 10,
  "tool_confirm_timeout": 0,
  "auto_restore_session": false
}
```

> 支持配置多个模型提供方,可在对话中切换

### 配置界面

按 `Ctrl+E` 或输入 `/config` 进入可视化配置界面。当前界面包含 `Model`、`Session`、`Global`、`Tools`、`Skills`、`Hooks`、`Commands`、`Teammates`、`Archive` 九个 Tab,不同 Tab 的按键略有不同。

| 按键 | 功能 |
|------|------|
| `` / `` | 切换 Tab |
| `` / `` / `j` / `k` | 在当前列表中移动 |
| `Enter` | 编辑字段 / 执行当前项动作 |
| `Esc` | 保存配置并返回对话 |

**Model Tab**:
- `Tab` / `Shift+Tab`:切换 Provider
- `a`:新增 Provider
- `d`:删除当前 Provider
- `s`:将当前 Provider 设为活跃模型

**Tools / Skills Tab**:
- `Enter` / `空格`:启用或禁用当前项
- `a`:全部启用
- `d`:全部禁用
- `t`:仅 Tools Tab 可切换总开关

**Session / Archive / Teammates Tab**:
- `Session``Enter` 恢复,`d` 删除,`n` 新建
- `Archive``Enter` 还原,`d` 删除
- `Teammates``Enter` 查看状态,`s` 停止选中 teammate

### 主题风格

支持以下主题(输入 `/theme` 切换或在配置界面中修改):

| 主题 | 说明 |
|------|------|
| `midnight` | Midnight(默认) |
| `dark` | 深色主题 |
| `light` | 浅色主题 |
| `nord` | Nord 配色 |
| `monokai` | Monokai 配色 |
| `anthropic_light` | Anthropic Light |
| `anthropic_dark` | Anthropic Dark |

### 对话界面快捷键

| 按键 | 功能 |
|------|------|
| `Enter` | 发送消息 |
| `Shift+Enter` / `Alt+Enter` | 插入换行符(多行输入) |
| `` / `` | 滚动对话记录(多行输入时移动光标) |
| `PageUp` / `PageDown` | 快速滚动 |
| `` / `` | 移动输入光标 |
| `Home` / `End` | 跳到输入行首/行尾 |
| `Backspace` / `Delete` | 删除字符 |
| `Ctrl+Y` | 复制最后一条 AI 回复 |
| `Ctrl+B` | 进入消息浏览模式 |
| `Ctrl+G` | 打开日志窗口 |
| `Ctrl+M` | 切换鼠标模式(滚动 / 自由选中) |
| `Ctrl+O` | 切换工具详情展开/折叠 |
| `Ctrl+E` | 打开配置界面 |
| `F1` / `?`(输入框为空时) | 显示帮助 |
| `Esc` | 取消当前流式输出 / 退出对话 |
| `Ctrl+C` | 强制退出对话 |

### 斜杠命令(/ 命令)

在输入框中输入 `/` 即可唤起斜杠命令弹窗,支持模糊过滤:

| 命令 | 说明 |
|------|------|
| `/copy` | 复制最后一条 AI 回复 |
| `/log` | 打开日志窗口 |
| `/browse` | 浏览历史消息 |
| `/config` | 打开配置界面 |
| `/model` | 切换模型 |
| `/archive` | 归档当前对话 |
| `/clear` | 新建对话(清空当前会话) |
| `/theme` | 切换主题 |
| `/resume` | 恢复历史会话 |
| `/dump` | 导出真实传给 AI 的 system prompt 和 messages |
| `/dump-processed` | 导出经处理管线后的最终请求数据 |
| `/teammate` | 打开 Teammate 面板 |

### @ 补全系统

在输入框中输入 `@` 唤起补全弹窗,支持多种引用类型:

| 输入 | 补全类型 | 说明 |
|------|----------|------|
| `@` | 混合列表 | 弹出分类入口(skill:、command:、file:)及匹配项 |
| `@skill:` | 技能补全 | 从已安装技能中搜索并补全 |
| `@command:` | 命令补全 | 从内置命令中搜索并补全 |
| `@file:` | 文件补全 | 从当前工作目录搜索文件路径,支持目录导航 |

> 补全弹窗操作:`↑↓` 选择、`Tab`/`Enter` 确认、`Esc` 取消、`Backspace` 回退、`空格` 关闭弹窗

### 消息浏览模式

按 `Ctrl+B` 或输入 `/browse` 进入浏览模式,可选中任意历史消息并复制到剪切板:

| 按键 | 功能 |
|------|------|
| `` / `k` | 选中上一条消息 |
| `` / `j` | 选中下一条消息 |
| `PageUp` | 当前消息内容向上微调滚动 |
| `PageDown` | 当前消息内容向下微调滚动 |
| `Tab` | 切换角色过滤(全部 / AI / 用户) |
| `y` / `Enter` | 复制选中消息到剪切板 |
| 直接输入字符 | 按关键词过滤消息 |
| `Backspace` | 删除过滤字符 |
| `Esc` | 有过滤时先清除过滤;无过滤时返回对话模式 |

### 归档对话功能

对话支持归档和还原,方便保存有价值的对话历史:

**归档对话(/archive)**:
- 输入 `/archive` 后确认,当前对话会被保存到归档
- 默认归档名称格式:`archive-YYYY-MM-DD`
- 如果同名归档已存在,自动添加后缀(如 `archive-2026-02-25(1)`- 归档后当前会话自动清空

**恢复会话(/resume)**:
- 输入 `/resume` 进入会话列表
- 使用 `` / ```j` / `k` 选择历史会话
-`Enter` 恢复选中的会话

### Teammate 系统

Teammate 是持久运行的子 Agent,拥有独立的上下文和消息历史,可通过 `/teammate` 或配置界面(Ctrl+E → Teammates Tab)查看和管理。

支持三种 Agent 执行模式:**Sub-Agent**(单次任务)、**Teammate**(持久协作)、**AgentTeam**(批量创建),详见「工具 & 权限」Tab。

**消息可见性**:

| 消息来源 | 主 Agent LLM 可见 | 主 Agent UI 可见 | 其他 Teammate 可见 |
|----------|-------------------|------------------|--------------------|
| Teammate 的 SendMessage ||||
| Teammate 的文字回复(非 SendMessage) ||||
| Teammate 的工具调用 || ✅(`[调用工具 X]`||
| 主 Agent 的消息 ||| ✅(通过 broadcast) |

- **SendMessage** 是 teammate 之间、teammate→主 Agent 的正式通信工具,消息会广播给所有成员
- Teammate 的文字回复和工具调用仅在主 Agent 的 UI 中显示,不影响主 Agent 的 LLM 上下文
- 主 Agent 的消息通过 broadcast 自动投递给所有 teammate 的 pending 队列

> Agent/AgentTeam 启动的子 Agent 拥有独立的上下文窗口,避免干扰主对话

### 功能特性

- **Markdown 渲染**:AI 回复支持标题、加粗、斜体、行内代码、代码块(语法高亮)、列表、表格、引用块
- **代码高亮**:支持 Rust、Python、JavaScript/TypeScript、Go、Java、Bash/Shell、C/C++、SQL、Ruby 等语言
- **流式渲染**:TUI 会在生成过程中持续刷新回复内容和工具状态
- **对话持久化**:对话自动保存到 `~/.jdata/agent/data/sessions/`,重启后恢复
- **多模型支持**:可配置多个 LLM 提供方(OpenAI、DeepSeek 等),运行时通过 `/model` 切换
- **工具调用**:支持 Function Calling,AI 可执行 shell 命令和读取文件(危险命令需确认)
- **Context Compact**:三层对话压缩机制(rolling window + micro_compact + auto_compact),自动管理上下文窗口
- **多行输入**:支持 `Shift+Enter` / `Alt+Enter` 插入换行符,多行输入时方向键移动光标
- **@ 引用系统**:支持引用技能(`@skill:`)、命令(`@command:`)、文件(`@file:`)到对话中
- **斜杠命令**:输入 `/` 弹出命令面板,快速执行操作