tabby-ai-assistant 1.0.12 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +113 -55
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/src/services/core/config-provider.service.ts +4 -12
- package/src/services/providers/anthropic-provider.service.ts +0 -172
- package/src/services/providers/base-provider.service.ts +225 -14
- package/src/services/providers/glm-provider.service.ts +0 -195
- package/src/services/providers/minimax-provider.service.ts +0 -198
- package/src/services/providers/ollama-provider.service.ts +0 -160
- package/src/services/providers/openai-compatible.service.ts +1 -143
- package/src/services/providers/openai-provider.service.ts +1 -143
- package/src/services/providers/vllm-provider.service.ts +0 -160
- package/src/types/provider.types.ts +206 -75
- package/src/index.ts.backup +0 -165
- package/src/services/chat/chat-history.service.ts.backup +0 -239
- package/webpack.config.js.backup +0 -57
package/README.md
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
# Tabby AI Assistant Plugin
|
|
2
2
|
|
|
3
|
-
一个强大的Tabby终端AI助手插件,支持多AI
|
|
3
|
+
一个强大的Tabby终端AI助手插件,支持多AI提供商,提供智能命令生成、解释和安全验证功能。
|
|
4
4
|
|
|
5
5
|
## 🌟 特性
|
|
6
6
|
|
|
7
7
|
### 核心功能
|
|
8
|
-
- **多AI提供商支持** - 支持OpenAI、Anthropic、Minimax、GLM
|
|
8
|
+
- **多AI提供商支持** - 支持OpenAI、Anthropic、Minimax、GLM、Ollama、vLLM等
|
|
9
9
|
- **智能命令生成** - 自然语言转终端命令,准确率高
|
|
10
10
|
- **命令解释** - 详细解释命令含义和用法
|
|
11
11
|
- **错误修复** - 自动分析错误并提供修复建议
|
|
12
|
-
- **终端感知** -
|
|
12
|
+
- **终端感知** - 实时感知终端状态
|
|
13
13
|
|
|
14
14
|
### 安全特性
|
|
15
15
|
- **多级风险评估** - 自动识别危险命令(低/中/高/极风险)
|
|
16
|
-
- **用户同意管理** - 30
|
|
16
|
+
- **用户同意管理** - 30天同意持久化
|
|
17
17
|
- **密码保护** - 高风险命令需要密码验证
|
|
18
18
|
- **安全模式** - 自动阻止极危险操作
|
|
19
19
|
|
|
@@ -25,27 +25,22 @@
|
|
|
25
25
|
|
|
26
26
|
## 🚀 支持的AI提供商
|
|
27
27
|
|
|
28
|
-
###
|
|
29
|
-
- **API端点**: `https://api.minimaxi.com/anthropic`
|
|
30
|
-
- **兼容性**: 完全兼容Anthropic Claude API
|
|
31
|
-
- **特点**: 专为代码和Agent工作流优化
|
|
32
|
-
- **模型**: MiniMax-M2, MiniMax-M2-Stable
|
|
28
|
+
### 云服务提供商
|
|
33
29
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
|
|
30
|
+
| 提供商 | 默认端点 | 默认模型 | 特点 |
|
|
31
|
+
|--------|---------|---------|------|
|
|
32
|
+
| **OpenAI** | `https://api.openai.com/v1` | GPT-4 | 功能全面,性能稳定 |
|
|
33
|
+
| **Anthropic** | `https://api.anthropic.com` | Claude-3-Sonnet | 安全性高,推理能力强 |
|
|
34
|
+
| **Minimax** | `https://api.minimaxi.com/anthropic` | MiniMax-M2 | 专为代码优化 |
|
|
35
|
+
| **GLM** | `https://open.bigmodel.cn/api/anthropic` | GLM-4.6 | 中文优化 |
|
|
39
36
|
|
|
40
|
-
###
|
|
41
|
-
- **API端点**: `https://api.openai.com/v1/`
|
|
42
|
-
- **模型**: GPT-4, GPT-3.5 Turbo
|
|
43
|
-
- **特点**: 功能全面,性能稳定
|
|
37
|
+
### 本地/自托管提供商
|
|
44
38
|
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
-
|
|
39
|
+
| 提供商 | 默认端点 | 默认模型 | 特点 |
|
|
40
|
+
|--------|---------|---------|------|
|
|
41
|
+
| **Ollama** | `http://localhost:11434/v1` | llama3.1 | 本地运行,无需API密钥 |
|
|
42
|
+
| **vLLM** | `http://localhost:8000/v1` | Llama-3.1-8B | 高性能推理框架 |
|
|
43
|
+
| **OpenAI Compatible** | `http://localhost:11434/v1` | gpt-3.5-turbo | 兼容LocalAI等 |
|
|
49
44
|
|
|
50
45
|
## 📦 安装
|
|
51
46
|
|
|
@@ -67,7 +62,7 @@ npm run build
|
|
|
67
62
|
### 1. 设置API密钥
|
|
68
63
|
1. 打开Tabby设置 → AI助手
|
|
69
64
|
2. 选择AI提供商
|
|
70
|
-
3. 输入API
|
|
65
|
+
3. 输入API密钥(本地服务如Ollama无需密钥)
|
|
71
66
|
4. 选择模型
|
|
72
67
|
5. 保存设置
|
|
73
68
|
|
|
@@ -121,15 +116,23 @@ npm run build
|
|
|
121
116
|
3. **密码验证**: 极高风险命令需要密码
|
|
122
117
|
4. **同意持久化**: 记住用户的选择(30天)
|
|
123
118
|
|
|
124
|
-
## 🏗️
|
|
119
|
+
## 🏗️ 项目架构
|
|
120
|
+
|
|
121
|
+
### 技术栈
|
|
122
|
+
- **Angular 15** - UI框架
|
|
123
|
+
- **TypeScript** - 类型安全
|
|
124
|
+
- **Webpack 5** - 模块打包
|
|
125
|
+
- **RxJS** - 响应式编程
|
|
126
|
+
|
|
127
|
+
### 项目结构
|
|
125
128
|
|
|
126
129
|
```
|
|
127
130
|
tabby-ai-assistant/
|
|
128
131
|
├── src/
|
|
129
132
|
│ ├── index.ts # Angular主模块
|
|
130
133
|
│ ├── types/ # 类型定义
|
|
131
|
-
│ │ ├── ai.types.ts # AI
|
|
132
|
-
│ │ ├── provider.types.ts # 提供商类型
|
|
134
|
+
│ │ ├── ai.types.ts # AI相关类型(ChatRequest, ChatResponse等)
|
|
135
|
+
│ │ ├── provider.types.ts # 提供商类型 + PROVIDER_DEFAULTS
|
|
133
136
|
│ │ ├── security.types.ts # 安全类型
|
|
134
137
|
│ │ └── terminal.types.ts # 终端类型
|
|
135
138
|
│ ├── services/ # 服务层
|
|
@@ -137,23 +140,51 @@ tabby-ai-assistant/
|
|
|
137
140
|
│ │ │ ├── ai-assistant.service.ts
|
|
138
141
|
│ │ │ ├── ai-provider-manager.service.ts
|
|
139
142
|
│ │ │ ├── config-provider.service.ts
|
|
140
|
-
│ │ │
|
|
141
|
-
│ │
|
|
142
|
-
│ │
|
|
143
|
+
│ │ │ ├── logger.service.ts
|
|
144
|
+
│ │ │ └── toast.service.ts # Toast通知服务
|
|
145
|
+
│ │ ├── providers/ # AI提供商实现
|
|
146
|
+
│ │ │ ├── base-provider.service.ts # 基础类(含通用方法)
|
|
147
|
+
│ │ │ ├── anthropic-provider.service.ts
|
|
148
|
+
│ │ │ ├── glm-provider.service.ts
|
|
143
149
|
│ │ │ ├── minimax-provider.service.ts
|
|
144
|
-
│ │ │
|
|
150
|
+
│ │ │ ├── ollama-provider.service.ts
|
|
151
|
+
│ │ │ ├── openai-compatible.service.ts
|
|
152
|
+
│ │ │ ├── openai-provider.service.ts
|
|
153
|
+
│ │ │ └── vllm-provider.service.ts
|
|
145
154
|
│ │ ├── security/ # 安全服务
|
|
146
155
|
│ │ │ └── risk-assessment.service.ts
|
|
147
156
|
│ │ └── terminal/ # 终端服务
|
|
148
157
|
│ │ └── terminal-context.service.ts
|
|
149
158
|
│ ├── components/ # UI组件
|
|
150
|
-
│ ├──
|
|
151
|
-
│
|
|
159
|
+
│ │ ├── ai-sidebar.component.ts
|
|
160
|
+
│ │ ├── chat/ # 聊天组件
|
|
161
|
+
│ │ └── settings/ # 设置组件
|
|
162
|
+
│ └── styles/ # 样式文件
|
|
163
|
+
│ └── ai-assistant.scss
|
|
152
164
|
├── webpack.config.js # Webpack配置
|
|
153
165
|
├── tsconfig.json # TypeScript配置
|
|
154
166
|
└── package.json # 依赖配置
|
|
155
167
|
```
|
|
156
168
|
|
|
169
|
+
### 设计模式
|
|
170
|
+
|
|
171
|
+
#### 1. 提供商模式 (Provider Pattern)
|
|
172
|
+
```
|
|
173
|
+
IBaseAiProvider (接口)
|
|
174
|
+
↑
|
|
175
|
+
└── BaseAiProvider (抽象类,包含通用方法)
|
|
176
|
+
↑
|
|
177
|
+
├── OpenAiProviderService
|
|
178
|
+
├── AnthropicProviderService
|
|
179
|
+
├── MinimaxProviderService
|
|
180
|
+
└── ...
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
#### 2. 配置统一化
|
|
184
|
+
- 所有提供商默认配置存储在 `PROVIDER_DEFAULTS`
|
|
185
|
+
- 使用 `ProviderConfigUtils` 工具函数处理配置
|
|
186
|
+
- 配置自动从统一默认值填充
|
|
187
|
+
|
|
157
188
|
## 🔧 开发
|
|
158
189
|
|
|
159
190
|
### 构建
|
|
@@ -163,38 +194,66 @@ npm run watch # 开发模式(自动重编译)
|
|
|
163
194
|
npm run clean # 清理构建文件
|
|
164
195
|
```
|
|
165
196
|
|
|
166
|
-
###
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
197
|
+
### 添加新提供商
|
|
198
|
+
1. 在 `provider.types.ts` 的 `PROVIDER_DEFAULTS` 添加默认值
|
|
199
|
+
2. 创建提供商服务类,继承 `BaseAiProvider`
|
|
200
|
+
3. 实现必要的抽象方法
|
|
201
|
+
4. 在 `ai-provider-manager.service.ts` 注册提供商
|
|
202
|
+
|
|
203
|
+
### 重构记录
|
|
204
|
+
- **v1.0.12**: 代码去重、类型优化、配置统一化
|
|
205
|
+
- 移除7个提供商中约800行重复代码
|
|
206
|
+
- `BaseAiProvider` 从抽象类改为接口 + 抽象类实现
|
|
207
|
+
- 新增统一配置系统 `PROVIDER_DEFAULTS`
|
|
170
208
|
|
|
171
209
|
## 📝 API文档
|
|
172
210
|
|
|
173
|
-
###
|
|
211
|
+
### IBaseAiProvider 接口
|
|
174
212
|
```typescript
|
|
175
|
-
interface
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
213
|
+
interface IBaseAiProvider {
|
|
214
|
+
// 标识
|
|
215
|
+
readonly name: string;
|
|
216
|
+
readonly displayName: string;
|
|
217
|
+
readonly capabilities: ProviderCapability[];
|
|
218
|
+
readonly authConfig: AuthConfig;
|
|
219
|
+
|
|
220
|
+
// 配置与状态
|
|
221
|
+
configure(config: ProviderConfig): void;
|
|
222
|
+
getConfig(): ProviderConfig | null;
|
|
223
|
+
isConfigured(): boolean;
|
|
224
|
+
isEnabled(): boolean;
|
|
225
|
+
|
|
226
|
+
// 核心功能
|
|
180
227
|
chat(request: ChatRequest): Promise<ChatResponse>;
|
|
228
|
+
chatStream(request: ChatRequest): Observable<any>;
|
|
181
229
|
generateCommand(request: CommandRequest): Promise<CommandResponse>;
|
|
182
230
|
explainCommand(request: ExplainRequest): Promise<ExplainResponse>;
|
|
183
231
|
analyzeResult(request: AnalysisRequest): Promise<AnalysisResponse>;
|
|
232
|
+
|
|
233
|
+
// 健康与验证
|
|
234
|
+
healthCheck(): Promise<HealthStatus>;
|
|
235
|
+
validateConfig(): ValidationResult;
|
|
236
|
+
|
|
237
|
+
// 信息查询
|
|
238
|
+
getInfo(): ProviderInfo;
|
|
239
|
+
supportsCapability(capability: ProviderCapability): boolean;
|
|
184
240
|
}
|
|
185
241
|
```
|
|
186
242
|
|
|
187
|
-
###
|
|
243
|
+
### ProviderConfigUtils
|
|
188
244
|
```typescript
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
245
|
+
namespace ProviderConfigUtils {
|
|
246
|
+
// 使用默认值填充配置
|
|
247
|
+
function fillDefaults(config: Partial<ProviderConfig>, providerName: string): ProviderConfig;
|
|
248
|
+
|
|
249
|
+
// 检查配置是否完整
|
|
250
|
+
function isConfigComplete(config: ProviderConfig): boolean;
|
|
251
|
+
|
|
252
|
+
// 克隆配置(可选择脱敏)
|
|
253
|
+
function cloneConfig(config: ProviderConfig, maskApiKey?: boolean): ProviderConfig;
|
|
254
|
+
|
|
255
|
+
// 获取已知提供商列表
|
|
256
|
+
function getKnownProviders(): string[];
|
|
198
257
|
}
|
|
199
258
|
```
|
|
200
259
|
|
|
@@ -216,10 +275,9 @@ interface TerminalContext {
|
|
|
216
275
|
## 🙏 致谢
|
|
217
276
|
|
|
218
277
|
- [Tabby](https://tabby.sh/) - 强大的终端模拟器
|
|
219
|
-
- [
|
|
278
|
+
- [Anthropic](https://anthropic.com/) - Claude AI
|
|
220
279
|
- [Minimax](https://minimaxi.com/) - AI服务
|
|
221
|
-
- [
|
|
222
|
-
|
|
280
|
+
- [智谱AI](https://open.bigmodel.cn/) - GLM
|
|
223
281
|
|
|
224
282
|
---
|
|
225
283
|
|