npm package: @moetanorg/moecli
Description: MoeCli - a provider-agnostic coding CLI with OpenAI, Anthropic, Bedrock, Gemini, browser tools, and sub-agents.
Latest version: 0.1.1

# MoeCli

> 一个以粉色风格为主、支持多 Provider 的本地编码 CLI。

[English README](./README.md)

MoeCli 这个名字就很直接。

之所以叫做 **MoeCli**，当然是因为喵喵很可爱 `awa`。

它是一个运行在终端里的多 Provider 编码助手，尽量保留了现代 coding agent 工作流里好用的那部分能力：流式对话、本地工具、浏览器集成、搜索、任务规划、子 Agent，以及长会话自动压缩。

如果你喜欢 Codex / Claude Code 这一类本地 CLI 的使用方式，但又不想被单一厂商绑定，MoeCli 就是为这种场景设计的。

## 特性简介

- 粉色主题终端界面，支持流式输出和工具活动展示
- 原生支持多 Provider，不锁定单一模型厂商
- 内置搜索接口，默认可接入公益搜索接口，也支持自行配置
- 支持聊天模式和任务模式，交互逻辑和主流 coding CLI 接近
- 内置本地文件、Shell、浏览器、搜索、子 Agent 工具
- 长会话会自动压缩上下文，避免聊久了直接因为上下文过大而中断
- 支持本地 Provider Profile 与密钥存储
- 支持从 Provider 拉取模型列表，拉不到时也可以手动输入模型 ID

## 支持的 AI 接口

| Provider | 状态 | 说明 |
| --- | --- | --- |
| OpenAI Responses | 已支持 | 原生 Responses API |
| OpenAI Compatible | 已支持 | 优先尝试 Responses，失败自动回退 Chat |
| Anthropic | 已支持 | Messages API |
| Amazon Bedrock | 已支持 | Converse / ConverseStream 风格接入 |
| Google Gemini | 已支持 | Gemini API 接入 |

## 安装

### 全局安装

```bash
npm i -g @moetanorg/moecli
```

### 启动

```bash
moecli
```

### 运行要求

- Node.js 22+

## 快速开始

### 1. 启动 MoeCli

```bash
moecli
```

### 2. 添加 Provider 配置

在 CLI 里输入：

```text
/providers
```

你可以配置：

- Profile 名称
- Provider 类型
- Base URL / Region / Extra Headers
- API Key
- 默认模型

如果模型列表拉取失败，MoeCli 会允许你手动输入模型 ID。

### 3. 开始聊天

```text
帮我解释一下这个仓库结构
```

### 4. 切换到任务模式

```text
/mode task
```

或者直接使用：

```text
Shift+Tab
```

## 交互模式

MoeCli 的交互模式和大众常见的 coding CLI 基本一致，主要分成两种：

### Chat & Edit

适合：

- 普通对话
- 代码问答
- 直接改代码
- 快速排错

### Task

适合：

- 先规划再执行的任务
- 较大的实现工作
- 需要审批的任务流
- 多步骤编码任务

Task 模式的设计目标是：

1. 先探索
2. 必要时向用户提问
3. 提交任务计划
4. 等待批准
5. 批准后执行

## 搜索接口

MoeCli 内置了搜索能力，默认可以接入网上的公益搜索接口，也支持用户通过配置面板自行替换成自己的搜索服务。

你可以在这里配置：

```text
/config
```

通常可以配置这些内容：

- 搜索接口地址
- 认证 Header 名称
- 认证 Header 前缀
- API Key
- 默认 site / filetype / sort / time range

## 内置工具

MoeCli 使用的是本地工具层，而不是依赖厂商特有的云端能力。

### 核心工具

- `read_file`
- `list_files`
- `write_file`
- `shell`
- `web_search`

### 浏览器工具

- `browser_status`
- `browser_open`
- `browser_snapshot`
- `browser_screenshot`

### 任务流工具

- `request_user_input`
- `task_submit_plan`

### 子 Agent 工具

- `agent_spawn`
- `agent_send`
- `agent_wait`
- `agent_abort`

## 常用命令

| 命令 | 说明 |
| --- | --- |
| `/help` | 查看帮助 |
| `/providers` | 新增、编辑、切换或删除 Provider Profile |
| `/model` | 切换当前模型 |
| `/mode` | 在 `chat-edit` 与 `task` 之间切换 |
| `/status` | 查看当前会话、Provider、模型和压缩状态 |
| `/config` | 配置浏览器、搜索与默认 Agent 模式 |
| `/browser` | 查看本地浏览器集成状态 |
| `/clear` | 开启一个全新的会话 |
| `/exit` | 退出 MoeCli |

## 上下文自动压缩

长对话会自动处理，不需要用户手动介入。

MoeCli 会同时保留：

- 本地完整运行历史
- 发给模型的压缩后活跃上下文
- 用于长任务持续记忆的 session memory 文件

当上下文过大时，MoeCli 会自动压缩旧内容并继续，而不是直接失败。

## 本地存储

默认情况下，MoeCli 会把数据写到：

```text
~/.moecli
```

其中包含：

- settings
- secrets
- cache
- session memory
- agent 状态

你也可以用下面的环境变量改目录：

```bash
MOECLI_HOME=/custom/path
```

## 开发

### 安装依赖

```bash
npm install
```

### 开发模式启动

```bash
npm run dev
```

### 构建

```bash
npm run build
```

### 测试

```bash
npm test
```

## 包信息

发布包名：

```text
@moetanorg/moecli
```

命令行入口：

```text
moecli
```

## 目标

MoeCli 希望成为一个真正适合本地开发工作流的编码 CLI：

- 多 Provider
- 工具丰富
- 任务导向
- 终端原生
- 适合长时间工程对话

如果你喜欢终端型 coding agent，但希望对 Provider 和本地工作流拥有更高控制权，MoeCli 就是为你准备的。