6.7 --system-prompt-file - 从文件加载系统提示

6 分钟阅读

概述#

--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
# 项目 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
# 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. 文档化提示#

在每个提示文件的开头添加注释:

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 标志提供了一种灵活、可维护的方式来管理复杂的系统提示。通过使用文件,您可以:

  • 更好地组织和版本控制提示
  • 在不同项目和团队间共享提示
  • 创建特定领域的专家提示
  • 动态生成和调整提示

建议为常用的场景创建专门的提示文件,并将其纳入版本控制系统,以提高工作效率和团队协作效果。

标记本节教程为已读

记录您的学习进度,方便后续查看。