diff --git a/README.md b/README.md index 43a7f07f..2e84f4ee 100644 --- a/README.md +++ b/README.md @@ -1,42 +1,126 @@ # 光湖系统 · 模块代码总仓库 -## 🌀 铸渊聊天室(点这里直接和铸渊说话) - -> **GitHub Pages 聊天入口(PR 合并并开启 Pages 后可用):** -> **👉 https://qinfendebingshuo.github.io/guanghulab/** -> -> 打开页面 → 输入 `我是冰朔` → 铸渊自动唤醒并回答你的问题 -> -> 需要深度对话(代码审查/架构讨论)→ 在仓库页面点右上角 ✨ Copilot 图标 → 选 **Agent** 模式 → 输入 `我是冰朔` - --- -## 仓库链接与访问方式 +## 🚀 怎么用铸渊聊天室? -**仓库地址:** https://github.com/qinfendebingshuo/guanghulab +**一句话:点下面这个链接就能打开,直接聊天。** -### 如何访问与克隆 +### 👉 [点这里打开铸渊聊天室](https://qinfendebingshuo.github.io/guanghulab/) -```bash -# HTTPS(推荐,无需配置 SSH Key) -git clone https://github.com/qinfendebingshuo/guanghulab.git - -# SSH(需先在 GitHub 账号中添加 SSH 公钥) -git clone git@github.com:qinfendebingshuo/guanghulab.git +``` +https://qinfendebingshuo.github.io/guanghulab/ ``` -### 首次使用步骤 -1. 打开仓库链接:https://github.com/qinfendebingshuo/guanghulab -2. 点击右上角 **Fork** 按钮,将仓库 fork 到自己账号(推荐); - 或直接联系仓库管理员(qinfendebingshuo)申请 **Collaborator** 写入权限。 -3. 克隆到本地,进入自己负责的模块文件夹,按上传规范提交代码并发起 Pull Request。 - -> **注意:** 仓库目前为私有(Private)状态,访问前请确认已被添加为 Collaborator,否则无法看到仓库内容。 -> 如未收到邀请,请联系管理员。 +> 把这个链接发给任何人,他们打开就能用,不需要安装任何东西。 --- -## 仓库结构 +## 🎯 不同角色怎么用 + +### ❄️ 冰朔(你) + +1. **打开链接** → https://qinfendebingshuo.github.io/guanghulab/ +2. **选身份** → 下拉菜单选「❄️ 冰朔(语言架构师·创始人)」 +3. **填 API 密钥** → 输入你的云雾/OpenAI/DeepSeek API Key +4. **点「开始对话」** → 铸渊自动唤醒,汇报大脑状态 +5. 说「**我是冰朔**」即可触发完整唤醒序列 + +--- + +### 🦁 肥猫(光湖团队总控 · DEV-002) + +1. **打开链接** → https://qinfendebingshuo.github.io/guanghulab/ +2. **选身份** → 下拉菜单选「🦁 肥猫(光湖团队总控·DEV-002)」 +3. **填 API 密钥** → 输入自己的 API Key(或点「演示模式」也能看进度面板) +4. **点「开始对话」** → 铸渊自动打开**总控指挥台**,显示全员进度 +5. 点顶部 **🦁 按钮** → 查看所有开发者详细状态、谁在阻塞、服务器信息 +6. 直接聊天提问,例如: + - 「查看所有开发者当前进度」 + - 「谁现在遇到阻塞?」 + - 「下一步推进计划是什么?」 + +--- + +### 🍊 桔子(光湖主控 · DEV-010) + +1. **打开链接** → https://qinfendebingshuo.github.io/guanghulab/ +2. **选身份** → 下拉菜单选「🍊 桔子(光湖主控·DEV-010)」 +3. **填 API 密钥** → 输入自己的 API Key +4. **点「开始对话」** → 铸渊显示你当前模块进度,并开放指挥台 + +--- + +### 👩‍💻 其他开发者(页页 / 燕樊 / 小草莓 / 花尔 等) + +1. **打开链接** → https://qinfendebingshuo.github.io/guanghulab/ +2. **选身份** → 下拉菜单选自己的名字 +3. **填 API 密钥** → 填自己的 Key(没有的话点「演示模式」) +4. **点「开始对话」** → 铸渊显示你的当前任务状态,可以问问题 + +--- + +## 🔑 API 密钥从哪里来? + +| 提供商 | 申请地址 | 备注 | +|--------|---------|------| +| **云雾 API** | 团队统一分配 | 推荐,团队共用 | +| DeepSeek | https://platform.deepseek.com | 便宜好用 | +| 智谱 GLM | https://open.bigmodel.cn | 有免费额度 | +| Kimi | https://platform.moonshot.cn | 长文本好 | +| OpenAI | https://platform.openai.com | 最强但价格较高 | + +> 💡 **没有 API Key?** 点「演示模式」也能查看团队进度面板(🦁 指挥台),只是不能真实 AI 对话。 + +--- + +## 📱 怎么分享给别人? + +**最简单:直接把链接发过去!** + +``` +铸渊聊天室入口 👇 +https://qinfendebingshuo.github.io/guanghulab/ + +打开后选择你的身份,填入 API Key 就能和铸渊说话了。 +``` + +**想离线用?** 在聊天室右上角点 **⬇️ 下载** → 下载一个 HTML 文件 → 发给对方 → 双击打开就能用(不需要网络,只需要 API Key)。 + +--- + +## 💬 常见问题 + +**Q: 打开是空白页面怎么办?** +A: 等待 GitHub Pages 部署完成(通常 1-2 分钟),刷新页面。 + +**Q: API Key 安全吗?会不会被偷?** +A: 放心,Key 只存在你自己浏览器的 localStorage 里,不会上传到任何服务器。 + +**Q: 以前的对话记录怎么找?** +A: 目前对话记录在浏览器里,刷新后需要重新开始。大脑记忆文件在 `.github/brain/` 里永久保存。 + +**Q: 铸渊的大脑会记住我说的话吗?** +A: 每次对话内的上下文会记住,跨对话的重要信息需要说「记住这个」,铸渊会建议更新到 `.github/brain/` 文件里。 + +--- + +## 🌀 铸渊聊天室功能一览 + +| 功能 | 说明 | +|------|------| +| 💬 对话模式 | 默认,聊技术问题、聊进度、聊架构 | +| 🔨 构建模式 | 自动检测,聊到代码/接口时切换,给出完整可执行代码 | +| 📋 审查模式 | 自动检测,聊到"检查/审查"时切换,审查代码质量 | +| 🧠 大脑模式 | 说"记住这个"时切换,整理重要信息到大脑文件 | +| 🦁 指挥台 | 总控/主控专属,查看全员进度、阻塞、服务器信息 | +| 📊 大脑状态 | 查看 HLI 接口覆盖率、近期事件 | +| ⬇️ 下载 | 下载单文件版,可离线使用 | + +--- + +## 📋 仓库结构与模块分工 + 每个模块一个文件夹,开发者将代码上传到对应文件夹中。 | 文件夹 | 模块 | 负责人 | @@ -61,3 +145,4 @@ git clone git@github.com:qinfendebingshuo/guanghulab.git ## 自动检查 每次 push 会自动检查模块结构是否符合规范,不通过会标红提醒。 + diff --git a/docs/index.html b/docs/index.html index 4aa23f76..c6768fae 100644 --- a/docs/index.html +++ b/docs/index.html @@ -150,6 +150,22 @@ footer{padding:12px 18px 16px;background:var(--s1);border-top:1px solid var(--bo .pnd{background:rgba(251,191,36,.15);color:var(--warn)} .mode-indicator{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:20px;font-size:12px;font-weight:500;margin-bottom:8px} +/* ─── HELP PANEL ─── */ +.help-section{margin-bottom:18px} +.help-section h3{font-size:13px;font-weight:600;color:var(--text);margin-bottom:8px;display:flex;align-items:center;gap:6px} +.help-steps{list-style:none;padding:0} +.help-steps li{font-size:12px;color:var(--dim);line-height:1.7;padding:4px 0 4px 22px;position:relative;border-bottom:1px solid rgba(30,50,81,.3)} +.help-steps li::before{content:attr(data-n);position:absolute;left:0;top:4px;width:16px;height:16px;border-radius:50%;background:var(--accent);color:#fff;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;line-height:16px;text-align:center} +.help-steps li strong{color:var(--text)} +.help-url{background:var(--s2);border:1px solid var(--accent);border-radius:var(--rs);padding:10px 14px;font-size:12px;color:var(--accent);word-break:break-all;margin:8px 0;cursor:pointer;transition:background .2s} +.help-url:hover{background:rgba(79,142,247,.1)} +.copy-url-btn{display:block;width:100%;padding:8px;background:var(--accent);color:#fff;border:none;border-radius:var(--rs);font-size:13px;cursor:pointer;margin-top:6px;font-family:inherit;transition:opacity .2s} +.copy-url-btn:hover{opacity:.85} +.help-tip{background:rgba(52,211,153,.08);border:1px solid rgba(52,211,153,.3);border-radius:var(--rs);padding:8px 12px;font-size:12px;color:var(--ok);margin:8px 0} +.role-guide{background:var(--s2);border:1px solid var(--border);border-radius:10px;padding:12px;margin-bottom:8px} +.role-guide-title{font-size:13px;font-weight:600;margin-bottom:6px} +.role-guide p{font-size:12px;color:var(--dim);line-height:1.7;margin:0} + /* ─── ROLE BADGES ─── */ .role-badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:12px;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em} .rb-founder{background:rgba(16,185,129,.15);color:#10b981;border:1px solid rgba(16,185,129,.3)} @@ -279,6 +295,7 @@ footer{padding:12px 18px 16px;background:var(--s1);border-top:1px solid var(--bo
+ @@ -391,6 +408,99 @@ footer{padding:12px 18px 16px;background:var(--s1);border-top:1px solid var(--bo

正在加载大脑数据…

+ +
+

❓ 使用帮助

+
+ +
+
+ 🔗 https://qinfendebingshuo.github.io/guanghulab/ +
+ +
💡 把上面的链接发给肥猫、桔子或任何开发者,他们打开就能用,不需要安装任何东西。
+
+ +
+

🚀 怎么开始用

+
    +
  1. 打开链接 https://qinfendebingshuo.github.io/guanghulab/
  2. +
  3. 下拉菜单选择你是谁(冰朔 / 肥猫 / 桔子 / 开发者名字)
  4. +
  5. 填入你的 API Key(没有的话点「演示模式」)
  6. +
  7. 点「开始对话」,铸渊会针对你的身份打招呼
  8. +
  9. 直接用聊天的方式问铸渊任何问题
  10. +
+
+ +
+

🔑 从哪里获取 API Key?

+
+
推荐用云雾 API(团队共用)
+

找冰朔或肥猫获取团队 Key。填入后选「自定义」提供商,或直接用 DeepSeek。

+
+
+
没有 Key?用演示模式
+

点「演示模式」也能查看团队进度面板(🦁 指挥台),只是 AI 回答功能受限。

+
+
+ +
+

🦁 肥猫 / 🍊 桔子 专属功能

+
    +
  1. 选身份为「肥猫」或「桔子」后,顶部出现 🦁 按钮
  2. +
  3. 点 🦁 按钮打开指挥台,查看所有开发者当前状态
  4. +
  5. 可以在聊天里问:「查看所有开发者进度」「谁遇到阻塞?」「推进计划」
  6. +
  7. 铸渊会把全员进度数据注入 AI 回复,给出完整分析
  8. +
+
+ +
+

📱 怎么离线用 / 发给别人离线用

+
    +
  1. 右上角点 ⬇️ 下载,下载一个 HTML 文件
  2. +
  3. 把这个文件发给对方(微信传文件、QQ、钉钉都行)
  4. +
  5. 对方双击这个文件,用浏览器打开
  6. +
  7. 填入 API Key,选好身份,就能用了(无需网络,只需 API Key)
  8. +
+
+ +
+

💬 聊天模式说明

+
+
💬 对话模式(默认)
+

普通聊天,问什么答什么

+
+
+
🔨 构建模式
+

说到「写代码/接口/部署」时自动切换,给出完整可执行代码

+
+
+
📋 审查模式
+

说到「检查/审查/有问题吗」时自动切换,专注找代码问题

+
+
+
🧠 大脑模式
+

说「记住这个/写到大脑」时切换,整理信息到大脑文件

+
+
+ +
+

❓ 常见问题

+
+ Q: 打开是空白页?
+ 等 1-2 分钟刷新,GitHub Pages 部署需要点时间。

+ Q: API Key 会泄露吗?
+ 不会,Key 只存在你自己浏览器里,不会传到服务器。

+ Q: 切换电脑后 Key 还在吗?
+ 不在,需要重新填。建议下载离线版,Key 填一次就行。

+ Q: 铸渊忘记以前说的话了?
+ 刷新后对话会清空,但大脑文件永久保存在仓库 .github/brain/ 里。 +
+
+ +
+
+

🦁 指挥台 · 全员进度

@@ -1042,6 +1152,13 @@ function openPanel(id){ if(id==='sp2') initSettingsPanel(); if(id==='bp') renderBrainPanel(); if(id==='tp') renderTeamPanel(); + if(id==='hp'){ + // Populate URL from constant + const el=document.getElementById('chatUrlDisplay'); + if(el) el.textContent='🔗 '+CHAT_URL; + const li=document.getElementById('helpUrlStep'); + if(li) li.innerHTML='打开链接 '+CHAT_URL+''; + } document.getElementById(id).classList.add('open'); document.getElementById('pov').classList.add('on'); } @@ -1050,6 +1167,34 @@ function closeP(){ document.getElementById('pov').classList.remove('on'); } +// ═══════════════════════════════════════════════════════ +// COPY URL (share link) +// ═══════════════════════════════════════════════════════ +const CHAT_URL = 'https://' + REPO.split('/')[0] + '.github.io/' + REPO.split('/')[1] + '/'; + +function showCopyFeedback(success){ + const btn=document.querySelector('.copy-url-btn'); + if(!btn) return; + const orig=btn.textContent; + btn.textContent = success ? '✅ 已复制!' : '⚠️ 复制失败,请手动复制'; + setTimeout(()=>{btn.textContent=orig;},2000); +} + +function copyUrl(){ + navigator.clipboard.writeText(CHAT_URL).then(()=>{ + showCopyFeedback(true); + }).catch(()=>{ + // fallback for non-secure context + const ta=document.createElement('textarea'); + ta.value=CHAT_URL; ta.style.position='fixed'; ta.style.opacity='0'; + document.body.appendChild(ta); ta.focus(); ta.select(); + let ok=false; + try{ok=document.execCommand('copy');}catch(_){} + document.body.removeChild(ta); + showCopyFeedback(ok); + }); +} + // ═══════════════════════════════════════════════════════ // DOWNLOAD (desktop app) // API keys are stored in localStorage only, never embedded in the DOM,