Session 结构
│
├── ID: 唯一标识符 (如 "sess_abc123")
├── Title: 会话标题
├── ParentSessionID: 父会话 ID (用于会话链)
├── MessageCount: 消息数量
├── PromptTokens: 消耗的输入 token
├── CompletionTokens: 消耗的输出 token
├── Cost: 预估费用
├── Todos: 待办事项列表
├── CreatedAt: 创建时间
└── UpdatedAt: 最后更新时间
| 类型 | 说明 | 使用场景 |
|---|---|---|
| 主会话 | 根会话 | 独立项目/任务 |
| 标题会话 | 会话变体 | 同一任务的不同方向 |
| 工具会话 | Agent 工具子会话 | 复杂任务的子步骤 |
# 创建新会话
crush> /session new "分析 React 组件结构"
# 创建标题会话
crush> /session branch "尝试另一种实现方式"
# 切换会话
crush> /session switch sess_abc123
# 列出所有会话
crush> /sessions
1. 最小权限原则
└── 默认拒绝所有操作,需要显式授权
2. 渐进式授权
└── 临时 → 持久 → 永久
3. 操作审计
└── 所有操作记录日志
4. 危险操作警告
└── 高风险操作需要额外确认
| 级别 | 说明 | 示例 |
|---|---|---|
| 无 | 未授权 | 新工具首次使用 |
| 临时 | 单次授权 | 临时允许执行 |
| 持久 | 会话内有效 | 当前会话有效 |
| 永久 | 永远有效 | 配置文件保存 |
# ~/.crush/permissions.yaml
persistent_permissions:
bash:
- pattern: "^git.*"
granted: true
- pattern: "^npm.*"
granted: true
read:
- path: "~/projects/**"
granted: true
# 查看已授予的权限
crush> /permissions list
# 撤销权限
crush> /permissions revoke bash
# 清除所有权限
crush> /permissions clear
# 直接执行单次查询
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 详细输出
#!/bin/bash
# 使用 Crush 分析代码
analysis=$(crush run "分析 $1 的架构")
echo "$analysis"
# 批量处理
for file in *.go; do
crush run "为 $file 添加注释"
done
# 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 从入门到精通》系列文章的第二部分完结
还没有人回复