# 怎么把新 SDK 接进现有的 100+ 个页面

> 现有项目页都是"复制 prompt → 跳 Qwen Chat"模式。新 SDK 让它们直接"点一下就跑"。
> 这份文档说明<strong>如何最小改动</strong>，把任何现有项目页升级。

---

## 一、最小改动模式（5 行 HTML，零 JS）

只要在页面 `<head>` 或 `<body>` 末尾加：

```html
<script src="../kindling-iteration-2/kindling-ai-sdk.js"
        data-endpoint="https://ai.kindling-edu.com"></script>
```

然后用一个新组件 `<div class="ai-runner">` 替换原来的"复制 + 跳转" UI：

```html
<div class="ai-runner"
     data-system="你是一个 70 岁北京爷爷..."
     data-stage="middle"
     data-suggested="糖醋排骨怎么做？">
</div>
```

SDK 自动渲染成完整的"输入框 + ▶ 按钮 + 流式输出框"。孩子<strong>什么都不用配</strong>。

---

## 二、新 `<div class="ai-runner">` 组件实现

放在 `kindling-ai-sdk.js` 同一目录：

```js
// ai-runner-component.js
(function() {
  function init(host) {
    const system = host.dataset.system || '你是友好的助手。';
    const stage = host.dataset.stage || 'middle';
    const suggested = host.dataset.suggested || '';
    host.innerHTML = `
      <div style="border:2.5px solid #1F2230; border-radius:16px; padding:1.5rem; background:#FFFCF0; box-shadow:4px 4px 0 #1F2230;">
        <div style="font-size:.78rem; font-weight:800; color:#DC5C44; letter-spacing:.16em; text-transform:uppercase; margin-bottom:.5rem;">🤖 AI 试跑器</div>
        <textarea class="ar-q" placeholder="问点什么..." style="width:100%; min-height:60px; padding:.7rem; border:2px solid #1F2230; border-radius:8px; font-size:.96rem;">${suggested}</textarea>
        <div style="display:flex; gap:10px; align-items:center; margin-top:.7rem; flex-wrap:wrap;">
          <button class="ar-run" style="padding:.6rem 1.2rem; background:#DC5C44; color:white; border:2px solid #1F2230; border-radius:999px; font-weight:700; cursor:pointer;">▶ 运行</button>
          <details style="margin:0;">
            <summary style="font-size:.82rem; color:#4D5266; cursor:pointer;">⚙ 看 / 改 prompt</summary>
            <textarea class="ar-system" style="width:100%; min-height:120px; margin-top:.4rem; padding:.6rem; border:2px solid #1F2230; border-radius:8px; font-family:monospace; font-size:.85rem;">${system}</textarea>
          </details>
        </div>
        <div class="ar-out" style="margin-top:1rem; padding:1rem; background:#FAF4DF; border:2px dashed #888; border-radius:8px; min-height:80px; line-height:1.85; white-space:pre-wrap;"></div>
      </div>
    `;
    const run = host.querySelector('.ar-run');
    const out = host.querySelector('.ar-out');
    run.addEventListener('click', async () => {
      const u = host.querySelector('.ar-q').value.trim();
      const s = host.querySelector('.ar-system').value.trim();
      if (!u) return;
      run.disabled = true; run.textContent = '...';
      out.textContent = '';
      try {
        await window.kindlingAI.chat({
          system: s, user: u, stage, stream: true,
          onToken: (t) => out.textContent += t,
        });
      } catch (e) {
        out.innerHTML = '<span style="color:#B43D2C;">出错：'+e.message+'</span>';
      }
      run.disabled = false; run.textContent = '▶ 运行';
    });
  }
  function activate() {
    document.querySelectorAll('.ai-runner:not([data-init])').forEach(h => {
      h.dataset.init = '1';
      init(h);
    });
  }
  if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', activate);
  else activate();
})();
```

---

## 三、retrofit 中阶项目 03 的"复制 + 跳转"

### 之前的代码（kindling-middle-level/projects/code-01-real-page.html）

整段步骤 2 的代码是教孩子写一个"复制 + 跳 Qwen"的网页。**孩子做完后体验是：**
1. 在 VS Code 里写代码
2. 浏览器双击 .html
3. 点按钮 → 复制 + 跳走
4. 在 Qwen Chat 粘贴

### 升级后的代码（最小改动）

把那段代码示例改成"用 kindlingAI.chat 直接调"。代码量更短，体验更直接：

```html
<script src="https://kindling-edu.com/kindling-ai-sdk.js"></script>
<script>
const SYSTEM_PROMPT = `你是一个 70 岁北京爷爷...（同前）`;

document.getElementById('ask').addEventListener('click', async () => {
  const q = document.getElementById('question').value.trim();
  if (!q) { alert('先写问题！'); return; }
  const out = document.getElementById('output');
  out.textContent = '';
  await kindlingAI.chat({
    system: SYSTEM_PROMPT, user: q, stream: true,
    onToken: t => out.textContent += t,
  });
});
</script>
```

5 行代码。孩子做完，**自己电脑上的网页 = 真能问 AI 的网页**。

---

## 四、3 步迁移现有 100+ 页面

### 步骤 1：在共享 head 加脚本

在 `shared.css` 同级建一个 `shared-head.html`，让所有页面通过 SSI 或简单的 build 脚本统一注入：

```html
<script defer src="/kindling-ai-sdk.js" data-endpoint="https://ai.kindling-edu.com"></script>
<script defer src="/ai-runner-component.js"></script>
```

### 步骤 2：替换"复制 + 跳转" UI

写一个 Python 脚本扫描所有 HTML，找：
```html
<button>...复制 prompt...</button>
... <a href="https://chat.qwen.ai" target="_blank">...
```

把这块替换成：
```html
<div class="ai-runner" data-system="..." data-suggested="..."></div>
```

### 步骤 3：renotify 学院页

学院落地页加一个"💎 现在可以直接在网页里跑 AI"的小贴纸，让孩子知道有这个新能力。

---

## 五、上线 checklist

- [ ] Worker 部署到 Cloudflare（见 `worker/README.md`）
- [ ] 设好 GROQ_API_KEY、OPENROUTER_API_KEY、HF_TOKEN
- [ ] 配自己的域名（如 `ai.kindling-edu.com`）
- [ ] 把 `data-endpoint="..."` 改成正式域名
- [ ] 在主入口加一段"💎 这套课程现在可以在网页里直接跑 AI"的更新通告
- [ ] 在第一周关注 OpenRouter / Groq dashboard，看 token 消耗 + 错误率
- [ ] 写好 status page（可以用 Better Uptime 免费层）

---

## 六、之后的迭代方向

接好基础 chat 之后，可以继续：

1. **每个项目自带"现成 prompt 模板库"** —— 孩子点一下就用，不用每次重写
2. **保存孩子的 prompt 历史** —— localStorage + 一键导出
3. **班级模式** —— 老师给孩子一个班级码，孩子的所有产出汇总在老师面板
4. **"我做的"作品页** —— 孩子可以发布自己做出来的东西到 showcase
5. **多模态混搭** —— 孩子用语音问 + AI 生图回答 + 孩子再用语音改指令

但这些都依赖第一步：**worker 部署上线**。先把基础打好。
