# 《Crush 从入门到精通》第十九、二十章:集成部署与故障排查
## 第十九章:集成与部署
### 容器化部署
#### Dockerfile
```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
```yaml
version: '3.8'
services:
crush:
build: .
environment:
- OPENAI_API_KEY=${OPENAI_API_KEY}
volumes:
- ./data:/root/.crush
- ./projects:/projects
stdin_open: true
tty: true
```
---
## 生产环境配置
### 安全配置
```yaml
options:
debug: false
permissions:
skip_requests: false
allowed_tools:
- "read"
- "grep"
- "glob"
lsp:
gopls:
enabled: true
mcp:
servers: {} # 生产环境禁用 MCP
```
### 资源限制
```yaml
options:
max_file_content: 30000
max_messages: 30
max_tokens: 50000
timeout: 120
```
---
## 第二十章:故障排查与生态
### 常见问题
#### 安装问题
| 问题 | 解决方案 |
|------|---------|
| 安装失败 | 检查 Go 版本是否满足要求 |
| 二进制文件损坏 | 重新下载或重新编译 |
| 权限错误 | 检查执行权限 `chmod +x` |
#### 配置问题
| 问题 | 解决方案 |
|------|---------|
| API Key 无效 | 检查环境变量或配置文件 |
| 模型不存在 | 确认模型 ID 正确 |
| 连接超时 | 检查网络或使用代理 |
#### 运行时问题
| 问题 | 解决方案 |
|------|---------|
| 会话无法保存 | 检查 ~/.crush/ 目录权限 |
| 工具执行失败 | 使用 `-d` 模式查看详细日志 |
| 界面显示异常 | 检查终端类型和大小 |
---
## 调试日志
### 日志级别
```bash
# 默认日志级别
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 论坛讨论交流。 🚀
登录后可参与表态
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!