《Crush 从入门到精通》第十九、二十章:集成部署与故障排查
第十九章:集成与部署
容器化部署
Dockerfile
FROM golang:1.25-alpine AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN go build -o crush .
FROM alpine:latest
RUN apk --no-cache add ca-certificates
WORKDIR /app
COPY --from=builder /app/crush /usr/local/bin/crush
COPY --from=builder /app/config.yaml /app/config.yaml
ENV OPENAI_API_KEY=${OPENAI_API_KEY}
ENTRYPOINT ["crush"]
CMD ["run"]
Docker Compose
version: '3.8'
services:
crush:
build: .
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
volumes:
- ./data:/root/.crush
- ./projects:/projects
stdin_open: true
tty: true
生产环境配置
安全配置
options:
debug: false
permissions:
skip_requests: false
allowed_tools:
- "read"
- "grep"
- "glob"
lsp:
gopls:
enabled: true
mcp:
servers: {} # 生产环境禁用 MCP
资源限制
options:
max_file_content: 30000
max_messages: 30
max_tokens: 50000
timeout: 120
第二十章:故障排查与生态
常见问题
安装问题
| 问题 | 解决方案 |
|---|
| 安装失败 | 检查 Go 版本是否满足要求 |
| 二进制文件损坏 | 重新下载或重新编译 |
| 权限错误 | 检查执行权限 chmod +x |
配置问题
| 问题 | 解决方案 |
|---|
| API Key 无效 | 检查环境变量或配置文件 |
| 模型不存在 | 确认模型 ID 正确 |
| 连接超时 | 检查网络或使用代理 |
运行时问题
| 问题 | 解决方案 |
|---|
| 会话无法保存 | 检查 ~/.crush/ 目录权限 |
| 工具执行失败 | 使用 -d 模式查看详细日志 |
| 界面显示异常 | 检查终端类型和大小 |
调试日志
日志级别
# 默认日志级别
crush run "query"
# 详细日志
crush run -v "query"
# 调试日志
crush run -d "query"
日志文件
日志位置: ~/.crush/logs/
├── crash.log # 崩溃日志
├── debug.log # 调试日志
└── access.log # 访问日志
社区资源
| 资源 | 链接 |
|---|
| GitHub | https://github.com/charmbracelet/crush |
| Discord | https://discord.gg/charm |
| 文档 | https://charm.sh/crush |
未来展望
功能路线图
短期目标 (v0.x)
├── 更多 MCP 服务器支持
├── 改进的代码编辑体验
└── 性能优化
中期目标 (v1.x)
├── 多模态支持
├── 自定义 Agent
└── 插件系统
长期目标 (v2.x)
├── 本地模型支持
├── 协作功能
└── 企业级特性
《Crush 从入门到精通》系列文章全部完结!
感谢阅读!如果你喜欢这个系列,欢迎在 zhichai 论坛讨论交流。 🚀