kovi-plugin-oai
===============

[<img alt="github" src="https://img.shields.io/badge/github-araea/kovi__plugin__oai-8da0cb?style=for-the-badge&labelColor=555555&logo=github" height="20">](https://github.com/araea/kovi-plugin-oai)
[<img alt="crates.io" src="https://img.shields.io/crates/v/kovi-plugin-oai.svg?style=for-the-badge&color=fc8d62&logo=rust" height="20">](https://crates.io/crates/kovi-plugin-oai)

Kovi 的 OpenAI 兼容 API 聊天插件。支持多智能体管理、符号指令系统、图片识别与生成。

## 特性

- 🤖 **多智能体管理** - 创建、复制、删除、配置
- 💬 **对话模式** - 公有/私有对话，独立历史
- 🖼️ **多模态支持** - 图片识别、生成、预览
- 📝 **输出格式** - Markdown 渲染或纯文本
- 📚 **历史管理** - 查看、编辑、删除、导出
- ⚡ **符号指令** - 简洁高效语法

## 前置

1.  创建 Kovi 项目
2.  执行 `cargo kovi add oai`
3.  在 `src/main.rs` 添加 `kovi_plugin_oai`

## 快速开始

1.  发送 `API地址 API密钥` 配置 API  
    （如 `https://api.openai.com/v1 sk-xxx`）

2.  发送 `oai` 查看完整帮助

3.  发送 `/%` 查看模型列表  
    已按常用厂商过滤，创建时可自定义模型名称

4.  发送 `#助手 gpt-4o 你是一个有帮助的助手`  
    （可用模型序号或自定义模型）

5.  发送 `助手 你好` 开始对话

## 指令速查

### 模式前缀（可组合）

| 符号 | 含义 |
|:---:|------|
| `&` | 私有模式（独立历史） |
| `"` | 文本模式（不渲染图片） |

### 智能体管理

| 指令 | 功能 | 示例 |
|------|------|------|
| `##名称 模型 提示词` | 创建/更新 | `##助手 gpt-4o 你是助手` |
| `##:模型` | 批量生成描述 | `##:gpt-4o` |
| `智能体~=新名` | 重命名 | `助手~=管家` |
| `智能体~#新名` | 复制 | `助手~#助手2` |
| `智能体:描述` | 设置描述 | `助手:通用助手` |
| `-#名称` | 删除 | `-#助手` |
| `/#` | 列表 | `/#` |

### 配置修改

| 指令 | 功能 | 示例 |
|------|------|------|
| `智能体%模型` | 修改模型 | `助手%gpt-4` |
| `智能体$提示词` | 修改提示词 | `助手$你是...` |
| `智能体$` | 清空提示词 | `助手$` |
| `智能体/$` | 查看提示词 | `助手/$` |
| `/%` | 模型列表 | `/%` |

### 对话控制

| 指令 | 功能 |
|------|------|
| `智能体 内容` | 对话 |
| `"智能体 内容` | 文本模式对话 |
| `&智能体 内容` | 私有对话 |
| `智能体~` | 重新生成 |
| `智能体!` | 停止生成 |

### 历史管理

| 指令 | 功能 |
|------|------|
| `智能体/*` | 查看所有 |
| `智能体/1` | 查看第1条 |
| `智能体/1-5` | 查看1-5条 |
| `智能体_*` | 导出(.txt) |
| `智能体'1 新内容` | 编辑第1条 |
| `智能体-1` | 删除第1条 |
| `智能体-1,3,5` | 删除多条 |
| `智能体-1-5` | 删除范围 |
| `智能体-*` | 清空历史 |

> 💡 加 `&` 前缀操作私有历史，如 `&智能体/*`

### 危险操作

| 指令 | 功能 |
|------|------|
| `-*` | 清空所有智能体公有历史 |
| `-*!` | 清空所有历史 |

## 配置

资源目录：`data/kovi-plugin-oai/*`

> 首次运行时自动生成。

### `config.json` - 插件配置

```json
{
  "api_base": "https://api.openai.com/v1",
  "api_key": "sk-xxx",
  "models": [],
  "agents": [],
  "default_model": "gpt-4o",
  "default_prompt": "You are a helpful assistant."
}
```

| 字段 | 说明 |
|------|------|
| `api_base` | API 基础地址 |
| `api_key` | API 密钥 |
| `models` | 缓存的模型列表 |
| `agents` | 智能体列表 |
| `default_model` | 默认模型 |
| `default_prompt` | 默认系统提示词 |

## 兼容性

支持所有 OpenAI 兼容的 API 服务：

- OpenAI
- Claude (via API proxy)
- Gemini (via API proxy)
- DeepSeek
- Qwen (通义千问)
- GLM (智谱)
- Kimi (月之暗面)
- 其他兼容服务...

## 致谢

- [Kovi](https://kovi.threkork.com/)
- [async-openai](https://github.com/64bit/async-openai)
- [cdp-html-shot](https://crates.io/crates/cdp-html-shot)

<br>

#### License

<sup>
Licensed under either of <a href="LICENSE-APACHE">Apache License, Version
2.0</a> or <a href="LICENSE-MIT">MIT license</a> at your option.
</sup>

<br>

<sub>
Unless you explicitly state otherwise, any contribution intentionally submitted
for inclusion in this crate by you, as defined in the Apache-2.0 license, shall
be dual licensed as above, without any additional terms or conditions.
</sub>
