代码生成器prompt

规则和脚本:

code_generator_prompt.md
你是一位世界顶级的软件工程师和代码专家,精通多种编程语言,包括但不限于 Python, JavaScript, TypeScript, Go, Rust, Java, C++, SQL。你的核心任务是作为我的个人代码助手。

请严格遵守以下规则:

1. **代码优先**: 当我要求编写代码时,直接提供完整、可运行、高质量的代码块。
2. **清晰注释**: 在关键代码行或复杂逻辑处添加简洁明了的注释,解释其目的。
3. **解释与思路**: 在代码块之后,用简洁的语言解释你的核心思路、关键函数或算法,并说明为什么选择这种实现方式。
4. **格式规范**: 所有代码都必须使用 Markdown 的代码块格式,并明确标注语言类型(例如 `python ... `)。
5. **保持上下文**: 记住我们之前的对话,以便在我追问或要求修改时,你能理解上下文。
6. **主动提问**: 如果我的问题模糊不清,你会主动提出澄清性问题,而不是猜测我的意图。
7. **考虑多种方案**: 对于复杂问题,如果存在多种解决方案,请列出它们并分析各自的优缺点,然后推荐最佳方案。
generate_context.sh
#!/bin/sh

# ===================================================================================
# "The Clean Cut" - 纯净最终版项目上下文生成脚本
#
# 功能:
# 遍历当前 Git 仓库中所有被跟踪的文本文件,并将它们的内容
# 整合成一个对大语言模型(LLM)友好的单一 Markdown 文件。
#
# 输出:
# 在项目根目录生成一个名为 project_context_for_llm.md 的文件,
# 该文件包含引导提示、项目文件树和所有源代码。
#
# ===================================================================================

# --- 配置区 ---
FINAL_OUTPUT_FILE="project_context_for_llm.md"

# --- 核心函数定义 ---

# 函数:打印文件的完整内容
print_full_file() {
file_path="$1"
temp_output_file="$2"

filename=$(basename -- "$file_path")
extension="${filename##*.}"

if [ "$extension" = "$filename" ] || [ -z "$extension" ]; then
extension="text"
fi

echo "--- FILE: ${file_path} ---" >> "$temp_output_file"
echo "\`\`\`${extension}" >> "$temp_output_file"
cat "${file_path}" >> "$temp_output_file"
echo "" >> "$temp_output_file"
echo "\`\`\`" >> "$temp_output_file"
echo "" >> "$temp_output_file"
}

# 函数:生成项目的元数据(头部信息)
generate_header() {
temp_output_file="$1"

current_dir=$(pwd)
project_name=$(basename "$current_dir")
generation_time=$(date)

echo "# Project Context: $project_name" > "$temp_output_file"
echo "## Generation Time: $generation_time" >> "$temp_output_file"
echo "" >> "$temp_output_file"

if command -v tree > /dev/null 2>&1; then
echo "## Project File Tree" >> "$temp_output_file"
echo '```' >> "$temp_output_file"
tree -aF --matchdirs --ignore-case -I '.git|node_modules|dist|build|target|venv|__pycache__' >> "$temp_output_file"
echo '```' >> "$temp_output_file"
echo "" >> "$temp_output_file"
fi

echo "## Source Code & Files" >> "$temp_output_file"
echo "" >> "$temp_output_file"
}

# --- 主程序入口 ---

TEMP_FILE=$(mktemp)
# 确保脚本退出时,无论成功还是失败,都删除临时文件
trap 'rm -f "$TEMP_FILE"' EXIT

echo "Curating project context for LLM..."

# 步骤 1: 生成头部信息
generate_header "$TEMP_FILE"

# 步骤 2: 遍历文件并处理
# 排除常见的二进制文件、锁文件、依赖目录和构建产物
BINARY_EXTENSIONS='(png|jpg|jpeg|gif|webp|ico|svg|zip|gz|tar|rar|7z|so|a|dll|lib|jar|war|ear|exe|dmg|bin|pdf|doc|docx|xls|xlsx|ppt|pptx|o|class|pyc)'
EXCLUDE_PATTERNS='(^|/)\.git/|node_modules/|dist/|build/|target/|venv/|__pycache__/|(package-lock\.json|pnpm-lock\.yaml|yarn\.lock|\.min\.js|\.min\.css)$|\.'"${BINARY_EXTENSIONS}"'$'

git ls-files | grep -vE "$EXCLUDE_PATTERNS" | while read -r file; do
# 确保文件存在且是一个普通文件
if [ ! -f "$file" ]; then continue; fi

echo " - Processing: $file"
print_full_file "$file" "$TEMP_FILE"
done

# 步骤 3: 组合最终的输出文件
# 为 LLM 准备的引导提示
PROMPT_TEMPLATE='你好,我将为你提供我一个软件项目的完整上下文。这份上下文是一个 Markdown 文件,其中包含了项目的文件结构树以及所有相关源代码文件的内容。

请你仔细阅读并完全理解这份上下文。在后续的对话中,我将基于这些信息向你提问。

当你准备好后,请回答“我已经准备好了,请开始提问。”

--- 以下是项目上下文 ---
'
echo "$PROMPT_TEMPLATE" > "$FINAL_OUTPUT_FILE"
cat "$TEMP_FILE" >> "$FINAL_OUTPUT_FILE"

echo "🎉 Success! Your ready-to-use context is in: $FINAL_OUTPUT_FILE"