# 《Crush 从入门到精通》第八、九、十章:会话管理、权限安全与非交互模式
## 第八章:会话管理
### 会话概念与结构
```
Session 结构
│
├── ID: 唯一标识符 (如 "sess_abc123")
├── Title: 会话标题
├── ParentSessionID: 父会话 ID (用于会话链)
├── MessageCount: 消息数量
├── PromptTokens: 消耗的输入 token
├── CompletionTokens: 消耗的输出 token
├── Cost: 预估费用
├── Todos: 待办事项列表
├── CreatedAt: 创建时间
└── UpdatedAt: 最后更新时间
```
### 会话类型
| 类型 | 说明 | 使用场景 |
|------|------|---------|
| 主会话 | 根会话 | 独立项目/任务 |
| 标题会话 | 会话变体 | 同一任务的不同方向 |
| 工具会话 | Agent 工具子会话 | 复杂任务的子步骤 |
---
### 多会话管理
```bash
# 创建新会话
crush> /session new "分析 React 组件结构"
# 创建标题会话
crush> /session branch "尝试另一种实现方式"
# 切换会话
crush> /session switch sess_abc123
# 列出所有会话
crush> /sessions
```
---
## 第九章:权限与安全
### 权限系统设计原则
```
1. 最小权限原则
└── 默认拒绝所有操作,需要显式授权
2. 渐进式授权
└── 临时 → 持久 → 永久
3. 操作审计
└── 所有操作记录日志
4. 危险操作警告
└── 高风险操作需要额外确认
```
### 权限级别
| 级别 | 说明 | 示例 |
|------|------|------|
| 无 | 未授权 | 新工具首次使用 |
| 临时 | 单次授权 | 临时允许执行 |
| 持久 | 会话内有效 | 当前会话有效 |
| 永久 | 永远有效 | 配置文件保存 |
---
### 持久化权限
```yaml
# ~/.crush/permissions.yaml
persistent_permissions:
bash:
- pattern: "^git.*"
granted: true
- pattern: "^npm.*"
granted: true
read:
- path: "~/projects/**"
granted: true
```
### 命令管理
```bash
# 查看已授予的权限
crush> /permissions list
# 撤销权限
crush> /permissions revoke bash
# 清除所有权限
crush> /permissions clear
```
---
## 第十章:非交互模式
### 命令行模式
```bash
# 直接执行单次查询
crush run "解释 Go 的 context 包"
# 指定模型
crush run --model gpt-4o-mini "你好"
# 非交互输出
crush run "列出当前目录文件"
```
### 参数说明
```
Usage: crush run [flags] [prompt]
Flags:
-m, --model string 指定使用的模型
-t, --temperature float 采样温度 (default 0.7)
-o, --output string 输出文件
-v, --verbose 详细输出
```
---
### 与脚本集成
```bash
#!/bin/bash
# 使用 Crush 分析代码
analysis=$(crush run "分析 $1 的架构")
echo "$analysis"
# 批量处理
for file in *.go; do
crush run "为 $file 添加注释"
done
```
---
### CI/CD 集成
```yaml
# GitHub Actions
name: Code Review with Crush
on: [pull_request]
jobs:
crush-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Install Crush
run: brew install charmbracelet/tap/crush
- name: Run Crush Analysis
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
crush run "审查 PR 中的代码问题"
```
---
*本文是《Crush 从入门到精通》系列文章的第二部分完结*
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!