《提问的智慧》提示词和辅助工具

《提问的智慧》

来自于 github 的 《提问的智慧》

教你如何做一个“值得被帮助的人”。 当你按照这套逻辑提问时,你不仅仅是在索取答案,你也是在为社区贡献一个高质量的技术问答案例。

《提问的智慧》辅助工具

辅助工具,保存成 html 格式直接打开

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>提问的智慧 - 构造器</title>
    <script src="https://cdn.tailwindcss.com"></script>
    <style>
        body {
            font-family: 'Courier New', Courier, monospace;
            background-color: #1e1e1e;
            color: #d4d4d4;
        }
        .input-group label {
            display: block;
            margin-bottom: 0.5rem;
            color: #9cdcfe;
            font-weight: bold;
        }
        .input-field {
            width: 100%;
            padding: 0.5rem;
            background-color: #252526;
            border: 1px solid #3c3c3c;
            color: #d4d4d4;
            margin-bottom: 1rem;
            border-radius: 4px;
        }
        .input-field:focus {
            outline: none;
            border-color: #007acc;
        }
        .btn {
            background-color: #0e639c;
            color: white;
            padding: 0.5rem 1rem;
            border: none;
            cursor: pointer;
            transition: background 0.2s;
        }
        .btn:hover {
            background-color: #1177bb;
        }
        .warning-box {
            background-color: #4d0f0f;
            border-left: 4px solid #f44336;
            padding: 10px;
            margin-bottom: 15px;
            display: none;
        }
        pre {
            background-color: #101010;
            padding: 1rem;
            overflow-x: auto;
            border: 1px solid #333;
        }
    </style>
</head>
<body class="p-6 max-w-4xl mx-auto">

    <header class="mb-8 border-b border-gray-700 pb-4">
        <h1 class="text-3xl font-bold text-green-500 mb-2">> 提问的智慧构造器</h1>
        <p class="text-gray-400">基于 ESR《提问的智慧》。不要做一个伸手党,用正确的方式提问。</p>
    </header>

    <!-- 警告区域 -->
    <div id="stupidQuestionWarning" class="warning-box">
        <h3 class="font-bold text-red-400">⚠ 警告:检测到低效提问特征</h3>
        <p id="warningText" class="text-sm text-gray-300"></p>
    </div>

    <div class="grid grid-cols-1 md:grid-cols-2 gap-8">
      
        <!-- 输入表单 -->
        <div>
            <div class="input-group">
                <label>1. 标题 (Subject)</label>
                <p class="text-xs text-gray-500 mb-2">好标题:对象 + 环境 + 异常描述。坏标题:救命!急!</p>
                <input type="text" id="title" class="input-field" placeholder="例如:Python 3.9 Pandas 读取 CSV 出现 EncodingError" oninput="checkTitle()">
            </div>

            <div class="input-group">
                <label>2. 环境信息 (Environment)</label>
                <textarea id="environment" class="input-field h-24" placeholder="OS版本、语言版本、依赖库版本..."></textarea>
            </div>

            <div class="input-group">
                <label>3. 尝试过的方案 (Research)</label>
                <p class="text-xs text-gray-500 mb-2">STFW 和 RTFM 的结果。告诉黑客你不是来这就伸手的。</p>
                <textarea id="tried" class="input-field h-24" placeholder="我搜了 xxx 关键字,看了文档第 x 章,尝试了 x 方法,但是..."></textarea>
            </div>

            <div class="input-group">
                <label>4. 复现步骤 (Reproduction)</label>
                <textarea id="steps" class="input-field h-24" placeholder="1. ...
2. ...
3. ..."></textarea>
            </div>

            <div class="input-group">
                <label>5. 最小复现代码 (Minimal Code)</label>
                <textarea id="code" class="input-field h-32 font-mono" placeholder="// 请粘贴相关代码片段,去掉无关逻辑"></textarea>
            </div>

            <div class="input-group">
                <label>6. 报错日志 (Logs)</label>
                <p class="text-xs text-gray-500 mb-2">纯文本!不要截图!</p>
                <textarea id="logs" class="input-field h-32 font-mono" placeholder="Traceback (most recent call last)..."></textarea>
            </div>
          
            <button onclick="generateMarkdown()" class="btn w-full font-bold">生成提问单</button>
        </div>

        <!-- 输出区域 -->
        <div class="flex flex-col">
            <div class="bg-[#2d2d2d] p-4 rounded-t border border-[#3c3c3c] flex justify-between items-center">
                <span class="text-yellow-500 font-bold">Preview.md</span>
                <button onclick="copyToClipboard()" class="text-xs bg-[#3c3c3c] hover:bg-[#4c4c4c] px-2 py-1 rounded">复制内容</button>
            </div>
            <pre id="output" class="text-sm flex-grow text-green-400">
// 你的完美提问将出现在这里...
            </pre>
        </div>
    </div>

    <script>
        // 违禁词列表(基于提问的智慧)
        const stupidKeywords = ['救命', '大神', '小白', '急', '在线等', '帮帮我', '跪求'];

        function checkTitle() {
            const title = document.getElementById('title').value;
            const warningBox = document.getElementById('stupidQuestionWarning');
            const warningText = document.getElementById('warningText');
          
            const foundKeywords = stupidKeywords.filter(keyword => title.includes(keyword));

            if (foundKeywords.length > 0) {
                warningBox.style.display = 'block';
                warningText.innerText = `你的标题包含无意义的噪音词:[${foundKeywords.join(', ')}]。请删除它们,直接描述具体的技术问题。`;
            } else if (title.length > 0 && title.length < 10) {
                warningBox.style.display = 'block';
                warningText.innerText = `标题过短。请使用“对象 + 差异”的格式,例如“在 Linux 下安装 X 失败,报错 Y”。`;
            } else {
                warningBox.style.display = 'none';
            }
        }

        function generateMarkdown() {
            const title = document.getElementById('title').value || "[未填写标题]";
            const env = document.getElementById('environment').value || "未提供";
            const tried = document.getElementById('tried').value || "未提供(警告:这可能导致被忽略)";
            const steps = document.getElementById('steps').value || "未提供";
            const code = document.getElementById('code').value || "";
            const logs = document.getElementById('logs').value || "未提供";

            const markdown = `
# ${title}

## 1. 问题背景与环境 (Environment)
${env}

## 2. 尝试过的方案 (Research Effort)
${tried}

## 3. 复现步骤 (Steps to Reproduce)
${steps}

### 最小复现代码:
\`\`\`
${code}
\`\`\`

## 4. 报错日志/实际结果 (Logs)
\`\`\`text
${logs}
\`\`\`

## 5. 预期结果 (Expected Behavior)
(请在此补充预期的正确结果)
            `.trim();

            document.getElementById('output').innerText = markdown;
        }

        function copyToClipboard() {
            const text = document.getElementById('output').innerText;
            if(text.includes("// 你的完美提问")) {
                alert("请先填写左侧表单并点击生成。");
                return;
            }
          
            const textarea = document.createElement('textarea');
            textarea.value = text;
            document.body.appendChild(textarea);
            textarea.select();
            document.execCommand('copy');
            document.body.removeChild(textarea);
            alert("已复制!现在你可以把这个问题发到论坛或 StackOverflow 了。");
        }
    </script>
</body>
</html>

《提问的智慧》提示词

# Role: 提问智慧导师 (The Mentor of Questioning Wisdom)

## Profile

你是一位深受 Eric Steven Raymond 的《提问的智慧》影响的资深黑客与开源维护者。你痛恨“伸手党”、低效沟通和毫无思考的提问,但你乐于帮助那些愿意自助、懂礼貌且逻辑清晰的求助者。你的目标是引导提问者将“垃圾问题”转化为“黑客愿意回答的优质问题”。

## Core Philosophy (基于《提问的智慧》)

1. **提问前即战斗**:必须先 STFW (Search The Fucking Web) 或 RTFM (Read The Fucking Manual)。
2. **标题即门面**:拒绝“跪求”、“救命”、“大神帮帮我”,必须是“目标 + 差异”的描述。
3. **精确描述**:拒绝“我的程序崩了”,需要环境(OS/版本)、复现步骤、错误日志(纯文本而非截图)、尝试过的方案。
4. **症状非猜测**:告诉医生哪里疼(症状),而不是告诉医生你觉得得了什么病(猜测)。
5. **不为懒惰买单**:如果是家庭作业或显而易见能搜到的问题,直接拒绝或指引搜索方向,绝不直接给代码。

## Workflow

当用户向你输入一个问题时,请严格按照以下步骤处理:

### Step 1: 诊断 (Diagnosis)

分析用户的提问是否包含以下要素:

- [ ] **清晰的标题**:是否包含具体对象和异常描述?
- [ ] **环境信息**:OS、语言版本、硬件配置等。
- [ ] **复现步骤**:是否提供了最小可复现代码或步骤?
- [ ] **排错尝试**:提问者是否表明已经做过搜索、查文档或初步调试?
- [ ] **日志/证据**:是否提供了具体的报错信息(文本格式)?

### Step 2: 反馈与修正 (Feedback & Correction)

- **如果问题质量极差**(如:“在吗?”、“程序跑不起来怎么办?”): 请以严厉但建设性的口吻(类似黑客风格)指出问题所在,并要求用户补充具体信息。引用《提问的智慧》中的原则教育用户。不要直接回答技术问题,直到他们学会正确提问。
- **如果问题包含基本信息但格式混乱**: 请帮助用户重写问题,使其专业化。

### Step 3: 输出优化后的提问 (Output)

如果是帮助用户重写,请严格按照以下**标准模板**输出,并提示用户直接复制使用:

**建议的标题**:[对象] 在 [环境] 下出现 [具体异常]

**建议的提问内容**:

**1. 问题背景与环境**

- 操作系统/软件版本:
- 硬件环境(如适用):
- 涉及的库/框架版本:

**2. 尝试过的方案**

- 我已经尝试搜索了关键字 [用户提供的关键字],找到了 [相关链接/结果],但没能解决。
- 我阅读了官方文档关于 [某章节] 的内容。
- 我尝试了以下代码/操作:[简述尝试]

**3. 复现步骤与代码**

- 步骤 1:...
- 步骤 2:...
- 最小复现代码 (Minimal Reproducible Example):

  ‍```
  // 用户的代码片段
  ‍```

**4. 预期 vs 实际结果**

- **预期行为**:...
- **实际报错/异常**(纯文本日志):

  > [错误信息]
  >

**5. 具体疑问**

- 我困惑的点在于...(清楚描述目标而非过程)

## Tone Guidelines

- **专业、客观、不废话**。
- 拒绝滥用表情符号,拒绝过度客套(如“亲”、“麻烦您了”),强调**信息密度**。
- 对于没有做功课的提问,保持“傲慢的慈悲”——即愿意指路,但不愿代劳。

## Initialization

请回复:“我已准备好。请发送你想要咨询的技术问题,我将基于《提问的智慧》帮你优化,以提高获得解答的概率。”
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    11155 引用 • 50664 回帖 • 52 关注

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...