vault backup: 2026-06-09 23:15:17
This commit is contained in:
@@ -1,23 +1,30 @@
|
||||
---
|
||||
tags: [bash, classifier, LLM, 权限, 安全, feature-flag]
|
||||
create time: 2026-06-09 22:30
|
||||
---
|
||||
|
||||
# BASH_CLASSIFIER — Bash 命令分类器
|
||||
|
||||
> Feature Flag: `FEATURE_BASH_CLASSIFIER=1`
|
||||
> 实现状态:bashClassifier.ts 全部 Stub,yoloClassifier.ts 完整实现可参考
|
||||
> 引用数:45
|
||||
|
||||
## 一、功能概述
|
||||
## 概述
|
||||
|
||||
BASH_CLASSIFIER 使用 LLM 对 bash 命令进行意图分类(允许/拒绝/询问),实现自动权限决策。用户不需要逐个审批 bash 命令,分类器根据命令内容和上下文自动判断安全性。
|
||||
|
||||
> [!info]
|
||||
> Feature Flag: `FEATURE_BASH_CLASSIFIER=1`
|
||||
> 实现状态:bashClassifier.ts 全部 Stub,yoloClassifier.ts 完整实现可参考
|
||||
|
||||
## 正文
|
||||
|
||||
### 核心特性
|
||||
|
||||
- **LLM 驱动分类**:使用 Opus 模型评估命令安全性
|
||||
- **两阶段分类**:快速阻止/允许 → 深度思考链
|
||||
- **两阶段分类**:快速阻止/允许 -> 深度思考链
|
||||
- **自动审批**:分类器判定安全的命令自动通过
|
||||
- **UI 集成**:权限对话框显示分类器状态和审核选项
|
||||
|
||||
## 二、实现架构
|
||||
### 实现架构
|
||||
|
||||
### 2.1 模块状态
|
||||
#### 模块状态
|
||||
|
||||
| 模块 | 文件 | 状态 | 说明 |
|
||||
|------|------|------|------|
|
||||
@@ -28,16 +35,16 @@ BASH_CLASSIFIER 使用 LLM 对 bash 命令进行意图分类(允许/拒绝/询
|
||||
| 权限管道 | `src/hooks/toolPermission/handlers/*.ts` | **布线** | 分类器结果路由到决策 |
|
||||
| API beta 标头 | `src/services/api/withRetry.ts` | **布线** | 启用时发送 `bash_classifier` beta |
|
||||
|
||||
### 2.2 参考实现:yoloClassifier.ts
|
||||
#### 参考实现:yoloClassifier.ts
|
||||
|
||||
文件:`src/utils/permissions/yoloClassifier.ts`(1496 行)
|
||||
|
||||
这是已实现的完整分类器,可作为 bashClassifier.ts 的参考:
|
||||
|
||||
```
|
||||
两阶段分类:
|
||||
1. 快速阶段:构建对话记录 → 调用 sideQuery(Opus)→ 快速阻止/允许
|
||||
2. 深度阶段:思考链分析 → 最终决策
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["两阶段分类"] --> B["快速阶段: 构建对话记录 -> 调用 sideQuery Opus -> 快速阻止/允许"]
|
||||
A --> C["深度阶段: 思考链分析 -> 最终决策"]
|
||||
```
|
||||
|
||||
特性:
|
||||
@@ -46,27 +53,21 @@ BASH_CLASSIFIER 使用 LLM 对 bash 命令进行意图分类(允许/拒绝/询
|
||||
- GrowthBook 配置和指标
|
||||
- 错误处理和降级
|
||||
|
||||
### 2.3 分类器在权限管道中的位置
|
||||
#### 分类器在权限管道中的位置
|
||||
|
||||
```
|
||||
bash 命令到达
|
||||
│
|
||||
▼
|
||||
bashPermissions.ts 权限检查
|
||||
│
|
||||
├── 传统规则匹配(字符串级别)
|
||||
│
|
||||
└── [BASH_CLASSIFIER] LLM 分类
|
||||
│
|
||||
├── allow → 自动通过
|
||||
├── deny → 自动拒绝
|
||||
└── ask → 显示权限对话框
|
||||
│
|
||||
├── 分类器自动审批标记
|
||||
└── 审核选项(用户可覆盖)
|
||||
```mermaid
|
||||
flowchart TD
|
||||
A["bash 命令到达"] --> B["bashPermissions.ts 权限检查"]
|
||||
B --> C["传统规则匹配 字符串级别"]
|
||||
B --> D{"BASH_CLASSIFIER LLM 分类"}
|
||||
D -->|"allow"| E["自动通过"]
|
||||
D -->|"deny"| F["自动拒绝"]
|
||||
D -->|"ask"| G["显示权限对话框"]
|
||||
G --> H["分类器自动审批标记"]
|
||||
G --> I["审核选项 用户可覆盖"]
|
||||
```
|
||||
|
||||
## 三、需要补全的内容
|
||||
### 需要补全的内容
|
||||
|
||||
| 函数 | 需要实现 | 说明 |
|
||||
|------|---------|------|
|
||||
@@ -78,14 +79,14 @@ bashPermissions.ts 权限检查
|
||||
| `generateGenericDescription()` | LLM 生成命令描述 | 为权限对话框提供说明 |
|
||||
| `extractPromptDescription()` | 解析规则内容 | 从规则中提取描述 |
|
||||
|
||||
## 四、关键设计决策
|
||||
### 关键设计决策
|
||||
|
||||
1. **ANT-ONLY 标记**:bashClassifier.ts 标注为 "ANT-ONLY",可能是 Anthropic 内部服务端分类器的客户端适配
|
||||
2. **两阶段分类**:快速阶段处理明确情况(减少延迟),深度阶段处理模糊情况
|
||||
3. **分类器结果可审核**:权限 UI 显示分类器决策,用户可覆盖
|
||||
4. **YOLO 分类器参考**:yoloClassifier.ts 提供完整的分类器实现模式,可直接参考
|
||||
|
||||
## 五、使用方式
|
||||
### 使用方式
|
||||
|
||||
```bash
|
||||
# 启用 feature
|
||||
@@ -95,7 +96,7 @@ FEATURE_BASH_CLASSIFIER=1 bun run dev
|
||||
FEATURE_BASH_CLASSIFIER=1 FEATURE_TREE_SITTER_BASH=1 bun run dev
|
||||
```
|
||||
|
||||
## 六、文件索引
|
||||
### 文件索引
|
||||
|
||||
| 文件 | 行数 | 职责 |
|
||||
|------|------|------|
|
||||
@@ -105,3 +106,7 @@ FEATURE_BASH_CLASSIFIER=1 FEATURE_TREE_SITTER_BASH=1 bun run dev
|
||||
| `src/components/permissions/BashPermissionRequest/BashPermissionRequest.tsx` | — | 分类器 UI |
|
||||
| `src/hooks/toolPermission/handlers/interactiveHandler.ts` | — | 交互式权限处理 |
|
||||
| `src/services/api/withRetry.ts` | — | API beta 标头 |
|
||||
|
||||
## 关联笔记
|
||||
|
||||
- [[claude-code-best/docs/features/tree-sitter-bash]]
|
||||
|
||||
Reference in New Issue
Block a user