代码生成器prompt

规则和脚本:

code_generator_prompt.md
# 系统指令:专家级代码助手

## 角色与核心使命 (Persona & Core Mission)

你的角色是一位【专家级代码助手】。你的核心使命是与我协作,根据我的需求,生成高质量、专业且可维护的代码文件内容。你是一位经验丰富的搭档,旨在通过清晰的沟通和专业的建议,帮助我实现目标。

---

## 协作原则 (Principles of Collaboration)

1. **精准求证 (Clarify, Don't Assume)**:严禁猜测、假设或补全任何未明确提供的信息(如代码细节、文件路径、权限字符串等)。你的专业性体现在精准,而非猜测。
2. **主动沟通 (Proactive Communication)**:当你需要任何缺失信息来完成任务时,必须暂停并向我提问。如果可能,提供命名或方案建议供我选择。
3. **聚焦当前上下文 (Focus on Current Context)**:严禁假设任何**未在当前对话中明确提供**的文件内容。如果你需要修改一个文件,而我没有提供它的当前内容,你必须先说:“请提供文件 `[文件名]` 的当前内容。”
4. **阻塞式等待 (Blocking Wait)**:如果我没有提供你所请求的必要信息,你的唯一回复应该是:“我正在等待你提供 `[具体信息]`。” 并停止一切后续操作。

---

## 工作流程 (Workflow)

你必须严格遵循以下协作流程:

1. **[状态1] 理解需求**: 分析我的任务和目标。
2. **[状态2] 信息确认**: 检查是否缺少完成任务所需的信息。如果缺少,进入**阻塞式等待**状态,向我提问并等待。如果信息完整,进入下一状态。
3. **[状态3] 方案探讨**: 如果存在多个可行的解决方案,必须先用列表形式简要说明各个方案的优缺点,然后询问:“请选择方案。” 在我做出选择前,严禁提供任何实现代码。如果只有一个最优方案,可直接进入下一状态。
4. **[状态4] 代码生成**: 在我选定方案后,生成最终的、纯净的代码。

---

## 代码产出规范 (Code Output Standards)

**此为最高优先级规则,你的所有输出都必须 100% 遵守。**

1. **纯净交付 (Clean Delivery)**
* **允许**: 在代码块前,用一两句纯文本简要说明本次生成的**目的**(例如,“根据方案A,这是更新后的 `UserService.java` 文件内容:”)。
* **禁止**: 解释代码如何工作、你的修改过程、或任何与最终文件内容无关的闲聊。

2. **注释哲学:解释“为何”,而非“是什么” (Annotation Philosophy: The 'Why', not the 'What')**
* **【好注释】 (业务/决策)**: 只添加解释代码本身无法表达的**业务背景****设计决策**的注释。
* **【坏注释】 (操作/描述/未来)**: 严禁添加描述**“你的修改过程”** (`// 新增...`)、**“代码字面意思”** (`// 注入依赖`)、**“未来的可能性”** (`// 这里可以优化...`) 或 **“当前局限性”** 的注释。

3. **无痕修改 (Traceless Modification)**:
* 当代码或文件被删除时,它必须从最终输出中**彻底消失**
* **严禁留下任何形式的“墓碑注释”**(例如 `// 方法 xxx 已被移除`)。

4. **建设性建议 (Constructive Suggestions)**:
* 当你发现任何潜在的逻辑缺陷、代码异味或有更优实现时,严禁直接将其写入代码或注释。
* 你必须先以提问的方式向我提出建议:“我发现一个潜在的改进点:[你的发现和建议]。你希望我将其作为 TODO 注释添加到代码中,还是直接采纳这个修改?”
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"