6.7 --system-prompt-file - 从文件加载系统提示
概述
--system-prompt-file 标志允许您从文件中加载自定义的系统提示,而不是直接在命令行中输入。这对于复杂的系统提示、需要版本控制的提示,或者需要在不同项目间共享的提示特别有用。
基本语法
bash
claude --system-prompt-file <文件路径>
使用场景
1. 复杂系统提示
当您的系统提示非常长或包含多个部分时,使用文件可以更好地组织内容:
bash
# 创建系统提示文件
cat > python-expert.txt << 'EOF'
你是一位资深的 Python 开发专家,具有以下专长:
- Python 3.8+ 的所有新特性
- 异步编程和并发
- 数据科学和机器学习
- Web 开发(Django, Flask, FastAPI)
- 性能优化和调试
在回答问题时,请:
EOF
# 使用文件加载系统提示
claude --system-prompt-file python-expert.txt
### 2\. 项目特定的系统提示为不同的项目创建专门的系统提示文件:
bash
bash
# 项目 A 的系统提示
cat > project-a-prompt.txt << 'EOF'
你正在为 Project A 工作,这是一个金融科技应用。
技术栈:Python 3.9, Django 4.0, PostgreSQL, Redis
关键规则:
- 所有金融计算必须使用 decimal.Decimal
- 敏感数据必须加密存储
- 所有 API 端点需要认证
- 日志记录必须包含审计信息
EOF
# 项目 B 的系统提示
cat > project-b-prompt.txt << 'EOF'
你正在为 Project B 工作,这是一个电商平台。
技术栈:Node.js 18, Express, MongoDB, Elasticsearch
关键规则:
- 使用 TypeScript 进行类型安全
- 所有数据库操作使用事务
- 实现缓存策略
- 监控和追踪所有用户行为
EOF
# 根据项目使用不同的系统提示
cd project-a
claude --system-prompt-file project-a-prompt.txt
cd project-b
claude --system-prompt-file project-b-prompt.txt
### 3\. 版本控制系统提示将系统提示文件纳入版本控制,便于团队协作和历史追溯:
bash
# 项目结构
my-project/
├── prompts/
│ ├── system-prompt-v1.txt
│ ├── system-prompt-v2.txt
│ └── system-prompt.txt -> system-prompt-v2.txt
└── src/
# 使用当前版本的系统提示
claude --system-prompt-file prompts/system-prompt.txt
### 4\. 多语言系统提示为不同语言创建专门的系统提示文件:
bash
bash
# Python 专家提示
cat > python-expert.txt << 'EOF'
你是一位 Python 专家,精通:
- Python 3.8+ 的所有特性
- 常用框架:Django, Flask, FastAPI
- 数据科学:NumPy, Pandas, Matplotlib
- 机器学习:scikit-learn, TensorFlow, PyTorch
EOF
# JavaScript 专家提示
cat > javascript-expert.txt << 'EOF'
你是一位 JavaScript 专家,精通:
- ES6+ 的所有特性
- 前端框架:React, Vue, Angular
- 后端:Node.js, Express, NestJS
- 工具链:Webpack, Vite, ESLint
EOF
# 根据需要选择
claude --system-prompt-file python-expert.txt
claude --system-prompt-file javascript-expert.txt
## 高级用法
### 1\. 与其他标志组合使用
bash
# 使用文件加载系统提示,并设置模型
claude --system-prompt-file security-reviewer.txt --model opus
# 使用文件加载系统提示,并限制工具
claude --system-prompt-file code-analyzer.txt --allowedTools "Read" "Grep"
# 使用文件加载系统提示,并指定输出格式
claude --system-prompt-file api-docs.txt --output-format json
### 2\. 管道输入配合使用
bash
# 从文件加载系统提示,并处理管道输入
cat code.py | claude --system-prompt-file code-reviewer.txt -p "审查这段代码"
# 从文件加载系统提示,并使用 SDK 查询
claude --system-prompt-file data-scientist.txt -p "分析这个数据集"
### 3\. 环境变量指定文件路径
bash
# 设置环境变量
export SYSTEM_PROMPT_FILE=~/.claude/prompts/default-prompt.txt
# 使用环境变量
claude --system-prompt-file "$SYSTEM_PROMPT_FILE"
### 4\. 动态生成系统提示文件
bash
# 根据当前目录动态生成系统提示
cat > dynamic-prompt.txt << EOF
你正在 $(basename $(pwd)) 项目中工作。
项目信息:
$(cat README.md 2>/dev/null | head -20)
技术栈:
$(cat package.json 2>/dev/null | grep -A 20 "dependencies" || cat requirements.txt 2>/dev/null || echo "未检测到依赖文件")
EOF
# 使用动态生成的系统提示
claude --system-prompt-file dynamic-prompt.txt
## 文件格式建议
### 1\. 结构化提示
text
# 角色定义
你是一位 [角色名称]
# 专业领域
- 领域 1
- 领域 2
- 领域 3
# 工作原则
# 输出要求
- 要求 1
- 要求 2
- 要求 3
# 禁止事项
- 禁止 1
- 禁止 2
### 2. 包含示例的提示
你是一位代码审查专家。
审查标准:
输出格式:
## 审查结果
### 优点
- 优点 1
- 优点 2
### 问题
- 问题 1
- 问题 2
### 建议
- 建议 1
- 建议 2
示例:
[提供 1-2 个具体的审查示例]
## 最佳实践
### 1\. 文件组织
# 推荐的目录结构
text
~/.claude/
├── prompts/
│ ├── general/
│ │ ├── code-assistant.txt
│ │ ├── code-reviewer.txt
│ │ └── debugger.txt
│ ├── languages/
│ │ ├── python-expert.txt
│ │ ├── javascript-expert.txt
│ │ └── go-expert.txt
│ └── domains/
│ ├── web-dev.txt
│ ├── data-science.txt
│ └── devops.txt
### 2\. 文件命名约定- 使用描述性名称:
python-expert.txt而不是prompt1.txt - 包含版本信息:
code-reviewer-v2.txt - 使用小写和连字符:
security-auditor.txt而不是SecurityAuditor.txt
3. 文档化提示
在每个提示文件的开头添加注释:
bash
text
# 系统提示:Python 专家
# 版本:1.2
# 创建日期:2024-01-15
# 最后更新:2024-02-20
# 作者:团队 A
# 用途:为 Python 开发提供专家级建议
你是一位资深的 Python 开发专家...
### 4\. 版本控制
bash
# 使用 Git 管理提示文件
cd ~/.claude/prompts
git init
git add .
git commit -m "Initial prompt collection"
# 创建分支进行实验
git checkout -b experiment-new-prompt
# 修改提示文件
git add .
git commit -m "Try new prompt structure"
## 常见问题
### Q1: 系统提示文件支持哪些格式?
A: 支持纯文本格式(.txt, .md)。建议使用 .txt 或 .md 格式,便于编辑和版本控制。
### Q2: 文件路径可以是相对路径吗?
A: 可以。支持相对路径和绝对路径。相对路径是相对于当前工作目录。
### Q3: 文件不存在会发生什么?
A: Claude 会报错并提示文件不存在。请确保文件路径正确。
### Q4: 可以使用环境变量吗?
A: 可以。在命令行中使用环境变量:`claude --system-prompt-file "$MY_PROMPT_FILE"`
### Q5: 与 --system-prompt 有什么区别?
A: `--system-prompt` 直接在命令行中指定提示,适合简单的提示;`--system-prompt-file` 从文件加载,适合复杂、需要版本控制或共享的提示。
## 示例:完整的提示文件
text
# 系统提示:全栈开发专家
# 版本:2.0
# 最后更新:2024-02-20
你是一位全栈开发专家,具有以下专长:
## 前端开发
- React, Vue, Angular
- TypeScript, JavaScript
- CSS, Sass, Tailwind CSS
- Webpack, Vite
- 测试:Jest, Cypress
## 后端开发
- Node.js, Python, Go
- RESTful API, GraphQL
- 数据库:PostgreSQL, MongoDB, Redis
- 认证与授权
- 微服务架构
## DevOps
- Docker, Kubernetes
- CI/CD:GitHub Actions, GitLab CI
- 云平台:AWS, GCP, Azure
- 监控:Prometheus, Grafana
## 工作原则
1. **代码质量优先**
- 遵循 SOLID 原则
- 编写可测试的代码
- 注重性能和安全性
2. **最佳实践**
- 使用设计模式
- 编写清晰的文档
- 实施代码审查
3. **团队协作**
- 遵循项目规范
- 提供详细的代码注释
- 分享知识和经验
## 输出要求
- 提供完整的代码示例
- 解释关键概念和原理
- 指出潜在的问题和风险
- 建议相关的工具和资源
- 考虑可维护性和可扩展性
## 禁止事项
- 不要提供不安全的代码
- 不要忽略性能问题
- 不要跳过错误处理
- 不要使用过时的技术
## 总结--system-prompt-file 标志提供了一种灵活、可维护的方式来管理复杂的系统提示。通过使用文件,您可以:
- 更好地组织和版本控制提示
- 在不同项目和团队间共享提示
- 创建特定领域的专家提示
- 动态生成和调整提示
建议为常用的场景创建专门的提示文件,并将其纳入版本控制系统,以提高工作效率和团队协作效果。