# 发布到 GitHub 时要填的文案(直接复制粘贴) 按顺序用。每一块都是**成品**,选中代码框里的内容 `Ctrl+C` 就行,不用改字。 文中所有链接都已经填好你的用户名 `KERBALMans`,**一个字都不用改,直接复制**。 --- ## 一、仓库简介(Repository description) > 填在 GitHub 新建仓库的 Description 框,或首页右栏 About 的 Description。 > GitHub 限制 350 字符以内,下面这段约 200 字符,安全。 ``` DeepSeek Harness 插件:在侧边栏实时查看阿里云「云工开物」学生专属 300 元代金券余额。零 Token 消耗(本机无头浏览器直连阿里云费用控制台抓取,不走大模型),1–30 分钟自动刷新,深浅色跟随 DSH 原生主题。Windows / macOS / Linux。 ``` **英文版(如果想让外国人也搜到,可以两个都放,用 `·` 隔开):** ``` A DeepSeek Harness plugin that shows your Aliyun student coupon balance live in the sidebar — zero tokens, scraped locally through headless Chromium, auto-refresh 1–30 min, native DSH theme. ``` --- ## 二、Topics(仓库标签) > 首页右栏 About → ⚙️ → Topics,一个一个加。标签只能用英文小写加连字符。 ``` dsh dsh-plugin deepseek-harness deepseek aliyun aliyun-coupon coupon student billing headless-browser chrome-devtools-protocol cdp zero-dependency ``` --- ## 三、README 开头(如果你要重写首页介绍) > 仓库里已经有完整的 `README.md`,一般不用动。这块是给你在别处发帖时用的「精简版」。 ```markdown # dsh-aliyun-coupon > 阿里云「云工开物」学生专属 300 元代金券,在 DeepSeek Harness 侧边栏里实时看。 每次想确认学生券还剩多少钱,都得:开浏览器 → 登录阿里云 → 进控制台 → 找到「优惠券」页 → 翻表格。 一个学期下来要点几十次,纯粹是浪费生命。 这个插件把这件事变成「瞄一眼侧边栏」。 ## 它解决什么 - **不烧 Token。** 余额是本机一个无头 Chromium 直接去阿里云费用控制台抓的,跟大模型一点关系都没有。你点一百次刷新,Token 消耗还是零。 - **是真的实时。** 不是缓存、不是估算。每次点开面板都重新联网读一次;平时按你设的间隔自动读。 - **看不出来是插件。** 侧边栏入口、居中对话框、圆角、字号、颜色,全部复用 DSH 自己的主题变量,深浅色都跟手。不说的话没人会注意到它是外挂的。 - **跨平台。** Windows / macOS / Linux,自动找本机的 Chrome / Edge / Chromium / Brave / Vivaldi。 ## 30 秒装上 1. 在 Releases 里下载 `dsh-aliyun-coupon-1.3.1.tgz` 2. 在 DeepSeek Harness 里「安装 bundle」,target 填这个 tgz 的绝对路径 3. 重启 DSH,侧边栏底部出现「云工开物代金券」 4. 第一次点开,填一次阿里云账号密码(存在本机凭据库,不上传) 5. 完事 ## 它是怎么工作的(一句话版) 插件在你自己电脑上悄悄开一个**看不见的浏览器**,替你打开阿里云控制台、读到那张券的余额,然后把数字交给 DSH 的界面显示。整个过程不经过任何服务器,也不经过大模型。 详细原理见下面「五、原理说明」。 ``` --- ## 四、Release 说明(v1.3.1) > 填在创建 Release 时的「Describe this release」框。 ```markdown ## v1.3.1 — 跨版本兼容 + 发布物料 这个版本主要做两件事:让插件在**现在和未来的 DSH 版本**上都不容易挂掉,以及补齐发布到 GitHub 需要的全部物料。 ### 跨版本兼容 DSH 的插槽名、客户端服务名属于组合层契约,不是永久不变的公开 API。这个版本不再写死单一名字,改成「候选链」: - **侧边栏入口**:`sidebar.footer.action` → `sidebar.footer` → `sidebar.actions` → `sidebar.bottom`,第一个真实存在的声明拿到座位 - **面板挂载**:`shell.overlay` → `shell.overlays` → `root.overlay` - **全都改名了**:2.5 秒后仍没有 overlay 声明,就把同一套组件挂进 `document.body` 里的自有容器,保证面板不会「静默消失」 - **React API**:`useSyncExternalStore` 缺失时退回 `useState` + `useEffect` 订阅垫片(兼容 React 17) - **样式注入**:有宿主 `styles` 内置就用它,没有就插 `