gh-gongjin/dsh-plugin-gh-trending ↗★ 0
dsh-plugin-gh-trending
在侧边栏监控GitHub日、周、月热榜的变化流水 适合需要追踪GitHub热门项目动态,且要求全程只读、无外部打扰的用户。
安裝
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:gh-gongjin/dsh-plugin-gh-trending說明文件
閱讀完整 README ↗dsh-plugin-gh-trending
DSH(deepseek HARNESS)的 GitHub 热榜监控插件:在侧边栏「插件」下方增加一个入口,盯三件事 —— 日榜 / 周榜 / 月榜各自怎么变、哪些仓库同时在多张榜上、本机第一次见到的仓库。变化只记录在本插件面板里,不推任何外部通知。
对 github.com 全程只读 GET(每轮三发 = 三张榜各一发;只有传输类失败——连不上/超时——才对那一榜补发,单榜含补发最多 3 发,成功即停):不带 key、不带 cookie、不 POST、不下载 zip、不 clone。
需要代理时走插件自己的 CONNECT 隧道(lib/services/net.js):它不改本机任何代理设置,也不起监听端口,只在需要时向代理发起一条 CONNECT github.com:443,之后仍是标准 TLS + HTTPS GET。
它是什么
- 三张榜独立闸门:日 / 周 / 月各一份状态,坏在哪一榜就只冻结哪一榜,绝不连冒横幅。
- 变化流水:
board_enter / board_exit / board_move / first_on_board / renamed / rising_cross / cooling_cross / source_error / source_recover / baseline(枚举与中文标签只在宿主侧lib/domain.js,界面只查表)。位次挪动日/周 ≥3、月 ≥2 才记board_move。 - 跨榜同现:同时出现在 ≥2 张榜 = 持续升温,只剩 1 张 = 热度回落。三张榜在同一次检查里拿到,这块分析零额外请求。
- 改名识别:靠条目里的
record_id认出同一个仓库换了owner/name⇒ 记renamed而不是「掉榜 + 新进」两笔假账。 - 仓库详情按需取:点榜面条目的仓库名才弹出一张详情对话框,并在这一下点击去
api.github.com要元数据 + README,把 GitHub 自己给的字段拼成一张结构化段表(sections[]四段:项目是什么 / 热度与元数据 / 仓库自己怎么介绍它 / 中文摘要,★ 第十一轮起替代旧的那一整句narrative;段序、段名、哪句摆在哪一段、哪句算小字全在宿主拼死,客户端只按kind摆),并探测仓库自己写的中文 README(★readmeSource五档:zh_default默认 README 本身就是中文 /zh_file仓库另写了一份中文 README(★ 第十五轮起这一档有两条路:根目录列表里命中README-zh_CN.md那类,或默认篇首屏那行语言切换里写着的相对路径命中(真机docs/i18n/README.zh-CN.md那一类,根目录压根没有)—— 两条路共用同一发正文请求,编排仍是 4 发封顶) /zh_section默认篇是外文但整篇里嵌着一段中文小节(第十一轮新增,吃已经在手的那份正文,零额外请求)/en_default只有英文篇 /none没 README)。 描述那一句若命中内置离线词表,会在「项目是什么」那一段里多一个块「中文描述(内置离线预译 · ,不是现译)」,原文紧跟着另起一块照给;没命中而现译开关开着时,换成「中文描述( · )」(免费接口/百度/腾讯/阿里/模型现译五选一,库里旧行还可能有历史档名官方接口,§8.4),原文照样另起一块(译文不替换仓库自己写的那句)。 - 描述列中文(内置离线预译表,
lib/desc-zh.js):榜面与详情里的仓库描述,命中表里的就给一句人工预译的中文,没命中就只显示原文。三条口径: 离线(这份文件是死数据,零import、零fetch、零模型调用,dz-6从源码钉住);带来源与时间戳(卡头与悬停都念「内置离线预译 · 2026-10-06」,界面不自己编日期); 原文改过就不译(命中判据是「仓库主键 + 原文与表里记的那一句逐字相同」,仓库把描述改了 ⇒ 静默退回原文显示,绝不拿旧译文指鹿为马)。 表由脚本生成、不是手抄(tmp/gen-desc-zh.mjs:src那一列由解析器从真榜面逐字取出,中文那一列是人工写好再合并进去的),当前 73 条;★ 覆盖面会随时间衰减 —— 表只认整理那天在榜上的那些仓库,掉榜/新上榜的描述就是原文。 ★ 第二十二轮(10-08)起,榜面那一列不再只靠这张表:内置表没命中的那几行由每轮检查后的补译批次接上(现译那一路、同一张trans表、同一把逐字复用判据)⇒ 一列里从此可能两种来源并存, 所以落款跟着每一行走(悬停给「原文 + 这一行自己的来源 + 注」),卡头那句「描述中译为…」换成宿主按这一张榜算好的条数(内置预译 N 条 · 现译 M 条)。B 那三条口径一个字没动,表命中的行照旧不重发。 - 现译引擎五档(D,2026-10-06 第九轮加三档、同日第十轮扩成五档,
lib/services/web-translate.js+lib/services/llm.js):内置表没命中的那一句描述(以及 README 英文节选的摘要),交给你在设置页选的那一档现译:免费接口= Google 网页版翻译(免注册免密钥,★ 不是官方授权接口,且这台机器直连不通、必须经代理)/百度= 百度翻译开放平台通用文本翻译(AppID + 密钥,签名 MD5,境内直连可达)/腾讯= 腾讯云机器翻译 TextTranslate(Version 2018-03-21、地域广州;SecretId + SecretKey,签名 HmacSHA1 v1,直连可达)/阿里= 阿里云机器翻译通用版 TranslateGeneral(Version 2018-10-12;AccessKeyId + AccessKeySecret,签名 RPC V2 的 HMAC-SHA1,直连可达)/宿主模型= 第八轮那一路(lib/services/llm.js,花宿主的模型额度)。默认落免费接口(用户裁定「两条都做,设置页选」+「与宿主模型并存,二选一」+「分段器并排五档」)。★ 三家云要不要花钱、有多少免费额度以官网计费页为准(这一轮没能复核到可引用的数字,所以界面上不念数字,只把注册入口摆出来)。五条口径五档共用:只在点开详情那一刻、只译当前这一条(榜面永远零现译,一轮三发榜面照旧)★ 第二十二轮(10-08,用户回「按C来」)改判这一条:现译发生在两处 —— 点开详情那一刻译当前这一条(原样)+ 每轮检查之后给榜面上内置表没命中的那几行补一批(用户三条裁定:「检查轮次后补」/「每轮 12 发 · 并发 2」/「复用「描述现译」这一档」⇒ 设置页不新增开关)。 ★ 改判的是什么时候发,不是发多少:读路径恒零发(打开面板 / 重开面板 / SSE 首帧一发都不派 ⇒ 界面永不"因为翻译而转圈"),配额严格按检查节拍花(出厂 60 分钟一轮,手动「重新取一次」也算一轮,一轮最多 12 发、同时在途 2 发、同一行失败 30 分钟内不再试);榜面那三发 GitHub 请求照旧(补译不打 github.com)。形状见docs/design-spec.md§8.7; B 优先(表命中的行压根不派活,两个来源不会在同一屏打架); 三道源侧闸门(★ 第十一轮加两道、第十九轮补第三道,都排在派活之前:仓库自己写的描述就是中文 ⇒ 不派描述那一发;README 已经有中文 ⇒ 不派摘要那一发 —— ★ 第十八轮把这一句点名到三档:zh_default默认篇整篇是中文 /zh_file仓库另写的那份中文篇(根目录名或默认篇里的语言切换行指到的)/zh_section整篇里嵌一段达标中文小节,只有默认篇是英文(en_default)才译;none由"没有节选"挡。★ 第十九轮(用户改判「这两种也算有中文」)补第三道readmeZhOnScreen(节选):即便档名是en_default,只要要派出去的那段节选里 CJK ≥ 8(中英混排篇,真机thedotmack/claude-mem9 字)或出现「中文」两字(中文篇在子目录没抓到、只剩那行语言切换字样)⇒ 摘要那一发也不派,self段名跟着补那半句实话(「(节选里已有中文)」/「(这行写着有中文版)」)。★ 判节选不判档名:README_ZH_MIN_CJK = 20那条一字未动(它管的是「默认 README 本身就是中文」这句档名敢不敢说,降到 8 会把只有一行切换标签的英文篇改名成中文);「日本語」不算中文、国名「中国」不算声明、英文Chinese不认(挡了就是删了用户在用的那一屏)。三道都在源上挡,不是译完了再挑译文。★ 第十五轮的第三道闸门不在这里,在那一路服务自己声明的★ 第十七轮(10-07)这一条被用户改判:那一发放回来了,五档都派两发(原话「我前面是有摘要现译的,你在哪一次改坏了,给我放出来」);kinds()里:免费 / 百度 / 腾讯 / 阿里只有翻译能力,「整理成一段简体中文摘要」那一路只派给宿主模型⇒ 那四档连enabled('readme')都问不到,设置页那一行开关也跟着不摆kinds()那道口与三道源侧闸门都还在,只是翻译四档现在也报readme。保留的只有措辞:那四档给的是节选的节译,段名与设置页那句说明跟着档位走,只有宿主模型那档叫「摘要」); 落库复用(按「仓库主键 + 原文逐字相同」判,仓库改了描述就重译,绝不拿旧译文指鹿为马。★ 第十一轮把「换了引擎,旧译文照样复用」这一条钉成裁定:现行行为就是要的行为 ⇒ 零代码改动,只补判据与文档,落款署的是那一行当初的来源,不冒充新引擎);两档开关各开各的(描述出厂开、摘要出厂关,都关掉时那一屏与 C/D 之前逐字相同。★ 第十五轮:那两行不再是写死的两行 —— 摆几行由当前那一路自己声明的kinds()决定,载荷从descOn/readmeOn/switchLabels三格换成一张switchRows[]。★ 第十七轮(10-07)改判后那份机制一字未动,动的是服务那份声明:翻译四档现在也报readme⇒ 五档都摆两行)。 ★ 选路只有一处(pickTranslator):没选中的那四路连"你开着吗"都不问,五路服务互相不知道对方在 ⇒ 不会变成一次点击发五发。 ★ 落款跟着那一行自己的引擎:换了引擎不作废旧译文,也不拿新引擎的名字盖它 —— 库里那行署它当初的来源(trans表行内engine字段)。 ★ 额度分两本账:宿主模型那一发不打任何 HTTP(走宿主连接);另外四发在插件的出网账里(同一份net.js、同一档 15s 超时),但不吃 GitHub 那 60 次/小时(另四个域名)。 ★ 密钥的边界(第十轮把这一格从"只有百度一家"扩成三家 × 六格):密钥本体只参与摘要那一步,出网 URL 里只有各家的标识符 + 一次性数 + 签名 (appid/salt/sign、SecretId/Nonce/Signature、AccessKeyId/SignatureNonce/Signature);密钥不进 URL、不出网、不回显、不进日志, 界面上只看得到「库里已存(留空不改动)」那一句。★ 标识符能进查询串是翻译域的例外,GitHub 那一域默认零凭据(★ 第二十一轮改判那句"仍然零凭据":出厂ghToken空 ⇒ 与旧版一样一发凭据头都不带;填了才带一条Authorization: Bearer,只进请求头、绝不进 URL,且这一把密钥与那三把走同一套回显闸门PREF_SECRET_KEYS;cookie那三类头全域仍禁,全程仍只读 GET)。 失败的话各说各的:模型那八档(开关没开 / 宿主没给模型 / 没设默认模型 / 超时 / 答错 + 回执原话 / 读不出中文 / 太长 / 没存下来)+ HTTP 那四路九档(多出的三档是no_credential、http、bad_json—— 网页接口改了形状必须点得名,不许混进"没中文"),一律原文照给。 - 语言过滤:可配一档语言(
prefs.language,页面 slug 的小写形式),保存时就地 GET 一张周榜验 ``,站点不认这个 slug 就拒收并说明原因。空 = 全站榜。 - 出网方式:
跟随系统(先环境变量HTTPS_PROXY/ALL_PROXY/HTTP_PROXY,再 Windows 注册表的系统代理)/自定义地址(只认设置页那一行,形如127.0.0.1:7897,只支持 http 代理的 CONNECT 隧道)/直连。默认跟随系统—— 这台机器上直连 github.com 会超时,而注册表里就写着127.0.0.1:7897。 - 设置:检查频率(1 / 3 / 12 / 24 小时)、榜单条数(5
25,默认 15)、事件保留条数(502000,默认 300)、详情缓存(★ 第十二轮:6 / 12 / 24 / 72 小时四档分段器,出厂 24 小时,改档下一发详情就按新档判新鲜;失败档那 5 分钟不进设置页)、语言过滤、出网方式、现译引擎(并排五档分段器,出厂「免费接口」;选中「百度 / 腾讯 / 阿里」任何一家时才多出一行那一家的两格(标识符 + 密钥,密钥框是password)带「保存」/「清除」,并另起一行给出那家的注册地址(要注册才用得着,链接新开标签页、不带走面板))、现译开关行(★ 第十五轮改口径:摆几行由当前那一路服务的kinds()决定,不是客户端写死两行;★ 第十七轮(10-07)用户改判放回:翻译四档的kinds()现在也报readme⇒ 五档都摆两行(描述现译出厂开、摘要现译出厂关),那一行行名不变、"这一段是什么"跟着档位走 —— 翻译四档那句说明念「这一段是节译不是摘要」,只有宿主模型那档念「另给一段中文摘要」(domain.switchRowLabel);每行{key,kind,row,label,on}五格、客户端只念key/row/label/on,点一下即存。真机那两屏tmp/shots/68-r15-set-keyless.png/69-r15-set-host-llm.png是第十五轮那一版的读数(免费档只有一行开关),第十七轮放回后还没重拍 ⇒ 挂在 §9.3 那条走查清单上,要重启宿主才看得见新那两行)、GitHub 令牌那一行 + 「创建令牌」那一行(★ 第二十一轮新增,用户裁定「设置页加一个 GitHub token,配额抬到 5000/h」:它不在现译那一叠分段器里,是 GitHub 那一域的凭据、与翻译无关 ⇒ 单独两行,全部读snap.github:框是password+autoComplete:'new-password'、maxLength与字段名来自那张派生表、密钥格value恒空(存过只把 placeholder 换成「库里已存(留空不改动)」)、库里存过才摆「清除」(点了只发{ghToken:''}这一格)、「保存」只在草稿 ≠ 库里那份时可用;下面那一行给github.com/settings/tokens那条网址(target=_blank rel=noreferrer,★ 与三家云同一条律:那句额度话不替 GitHub 承诺数字)。⚠️ 这两行还没在真机上看过,与第十七、十九、二十轮那几屏挂在同一条走查清单上),外加一张只读的「运行环境」表(最近那一发的传输路径 + 宿主能力位)。
它不是什么
- 不是 GitHub 官方工具,与 github.com 无隶属关系;榜单是趋势页页面自己排的名次。
不做 AI 解读(零—— 2026-10-06 第八轮由用户拍板改判为「默认零调用 + 句柄只许一个使用者」:现译只在点开详情那一下、只在开关开着的那一档发生。 ★ 同日第九轮再改一次:现译默认不再走模型 —— 出厂档换成免密钥的翻译接口,宿主模型降为设置页分段器里的一档(上面「现译引擎五档」那条;★ 第十轮那一档旁边又多了两家云,从三档变五档)。两次改判都没动这条铁律的另一半: ★ 第二十二轮(10-08)改判的是那一次的"什么时候发"(「只在点开详情那一下」→「详情那一刻 + 每轮检查后给榜面补一批」),这条铁律的另一半照旧一个字没松:句柄仍只许ctx.llm)lib/services/llm.js一个使用者(新落点lib/board-zh.js只吃装配层给的getTranslator(),认不到句柄),开关关着 / 引擎没就绪 ⇒ 两处都零发。 不发通知、不写会话日志、不动宿主定时器之外的任何东西照旧成立;要通知请用宿主自己的机制,本插件不代作决定。 真机口径(2026-10-05 第六轮为「描述译中文」跑过一次临时宿主 LLM 探针,跑完即撤、现已撤净):这台宿主的10-06 01:16 那一轮把它翻案了:思考能关,走ctx.llm关不掉思考 —— 官方那两个关思考的字段被静默吞掉、reasoningEffort看不出起作用,20 来字的译文照烧 209~318outputTokens⇒ 真要做现译只能默认关闭 + 从调用次数省。reasoningEffort:'off'—— 同模型同题两发对照:outputTokens260 → 12、耗时 1.9s → 0.9s、思考字符 1342 → 0(归零才算关掉,耗时和观感都不算判据); 顶层那两个官方关思考字段照旧传了不生效,因为适配器只认reasoningEffort这一个入口。★ 这句"还没有排期"也一并作废:10-06 同日第八轮就做了, 发的每一发固定reasoningEffort:'off'(LLM_REASONING_EFFORT单点在 domain)。 五发读数与两发对照、判据全在docs/design-spec.md§9.4 / §9.4.1。
一个必须先说清的口径
数据源是 https://github.com/trending?since=daily|weekly|monthly 的页面 HTML,属于非官方接口:对方改版即失效。
(为什么不选 Search API:要 key,而且"趋势榜"是站点自己算的一张榜,API 复现不了你在 github.com 上看到的那个名次。为什么不选第三方镜像:多一层可用性风险,数据也不可追溯。)
第二个数据源只在点详情时才出现:https://api.github.com/repos/{owner}/{name}(+ /readme、必要时 /contents/)。它是官方 REST,字段稳定,但额度默认是匿名那一档:60 次/小时/IP(实测历轮每一发都回 x-ratelimit-limit: 60。★ 第二十一轮(10-07)改判那半句"硬的":设置页可以填一个 GitHub 令牌 ⇒ 详情那四发各带一条 Authorization: Bearer ,只进请求头(不进 URL、不回显、不进日志、不进快照,空白格等于没填、照旧匿名发),
官方文档口径带令牌是 5000 次/小时(★ 本机没有 GitHub 账号也没有令牌 ⇒ 那一形状是合成的,零真回包)⇒ 屏上那句「匿名配额 / 已认证配额 剩 N / 上限」的上限与那两个字的标签都由 GitHub 自己回的那一格决定:填了却被拒(撤销、拼错)就照旧念「匿名配额」,代理把那一格吞了就退回保守的 60 —— 宁可梦见 60,不可梦见 5000。★ 发数一发没多(一次点击仍 ≤4 发),而 github.com/trending 榜面那三发永远匿名(gh.js 连这一格的键名都不许认得)。
所以一次点击最多 4 发(元数据 1 + README 1 + 只在默认篇不是中文时补 根目录列表 1 + 中文文件 1;★ 第十五轮第二路没加这个数 —— 那一发中文文件正文照发,只是路径改从已经在手的默认 README 那行语言切换里抽,零额外请求,命中才发),成功档缓存按设置页那一档(★ 第十二轮:6 / 12 / 24 / 72 小时,出厂 24 小时,改档下一发就按新档判新鲜——TTL 是调用时现取现算、不在装配时锁死)、失败档 5 分钟(不进设置页),同人连点两下在途去重,界面还如实显示「这一小时还剩几次」。★ 第十一轮的 zh_section 那一档不在这个数里加东西:默认篇是外文时,先在已经在手的那份整篇 README 里找中文小节(零额外请求,那条路实测 3 发封顶),找到了就不再往现译那一路派活;「仓库自己写的描述本身就是中文」(descSelfZh)同理;★ 第十九轮的第三道闸门同样不在这个数里加东西 —— 它吃的是要派出去的那段节选(/readme 那一发已经回来的字),既不许多打一发去猜路径,也不新增载荷键或存储字段 ⇒ 三闸门省的都是翻译那本账,GitHub 这本账一克没动。详情读的是仓库自己写的话(description 两路中文都没有时那句原样标「原文,未翻译」—— 开关关着、那一档发不出去、或接口答错了都落在这档),命中内置离线词表时多一句人工预译的中文(带来源与时间戳,原文照给,见上面「描述列中文」那条与 docs/design-spec.md §8.2),现译命中时同理(落款是「 · 」,原文同样照给,§8.3 / §8.4)。
★ 第二十二轮(10-08)起这本账有两处:详情那一路仍是「一次点击最多两发 = 描述 + 摘要」,榜面那一路新增「一轮检查后最多 12 发、同时在途 2 发、只补描述那一档」(用户裁定的额度闸门)。
★ 读路径恒零发 —— 打开面板、重开面板、SSE 首帧都只读库不算活 ⇒ "面板开合"这个动作一发都不花钱,配额严格按检查节拍花(出厂 60 分钟一轮,手动「重新取一次」也算一轮)。
闸门的闭嘴形状各有名字、各有判据:那一路没接(no_engine)/本地库不在(no_store)/开关关着(off)/引擎没就绪(unavailable)/账本读不出来(read_failed ⇒ 整轮作废,不是当新行重烧 12 发)/屏上全命中(nothing)。
★ 10-06 之后这里多出第二个出网账:现译开关开着且内置表没命中时,那一句会交给设置页选中的那一档(一次点击最多两发 = 描述 + 摘要;★ 第十五轮曾把翻译四档砍成只剩描述那一发,第十七轮(10-07)用户改判放回 ⇒ 五档又都吃满这个上限,那道能力声明 kinds() 与源侧闸门都还在(★ 第十九轮又补一道,见上面那条))。五档里只有 宿主模型 那一发不打 HTTP(走宿主自己的模型连接与额度);
免费接口 / 百度 / 腾讯 / 阿里 那四发是插件自己经同一份 net.js 出的网(代理仲裁与 15s 超时都不另建一套),打的却是另四个域名(translate.googleapis.com / fanyi-api.baidu.com / tmt.tencentcloudapi.com / mt.aliyuncs.com,白名单由 TRANSLATE_ENDPOINTS 派生成 TRANSLATE_HOSTS,判据不手抄清单)
⇒ GitHub 那一域的配额五档都不占(★ 第二十一轮之前那句写的是「那 60 次/小时」;现在那一域是"匿名 60 那一档,填了令牌则是按账号那一档",但翻译那四发一格都不占这件事没变),运行环境 与页脚那句配额说的还是 GitHub 那一头,跟翻译成没成是两条独立的线(别在文案里混成"配额用完了所以没译出")。判据与口径见 §8.3 / §8.4。
★ 全程只读 GET 这条铁律一个字没松:腾讯云与阿里云那两路接进来用的是它们官方签名里能走 GET 的那一档(腾讯 v1 签名把参数放查询串、阿里 RPC V2 是查询串签名),
所以改判的是"翻译域的查询参数里允许出现厂商标识符"那一格,不是 method。★ 后半那句「也不是 GitHub 那一域的零凭据」第二十一轮就地改判(原句留着当历史):现在写的是「默认零凭据 —— 库里 ghToken 空着(出厂态)时那一域一发凭据头都没有,与旧版逐字节一致;填了才带一条 Authorization,只进请求头、绝不进 URL,且只给 api.github.com 的详情那一路」;cookie / client_secret / access_token 三类头全域仍然一律禁(判据 hc-7 按域收窄成三道硬界,逐条证伪见 §9.2 第二十一轮)。
探针实测的三件事决定了解析器的形状(完整读数见 docs/design-spec.md §9.1):
- 每个数值 span 前内嵌约 700 字符的
⇒ 锚点必须**跨取文本**,定长窗口会静默取空。 - 未登录页每行都带
/login?return_to=…的 star 按钮 ⇒ 仓库名必须从念没念语言名)只能守在宿主侧。
因此:
| 情况 | 面板表现 |
|---|---|
| 某一榜本轮抓不到 / 解析失败 | 该榜卡就地写「故障 · (显示 前的上次成功数据)· 已连续 N 轮」,行数据冻结在最后一次成功轮,其他两榜照常 |
| 连不上 / 超时(传输类) | 先补发(同榜最多 3 发),仍不通则卡上多一条来源提示,按最近那一发的实际路线说:经代理 http://127.0.0.1:7897 未通 / 直连未通 / 配置坏到根本没出网(三种情况绝不并成一句「网络不通」);同时写明「下次自动检查 X 后」 |
| 代理地址填错 / 解析不出来 | 记为配置错误(不补发、不静默回落直连),榜面冻结在最后一次成功轮,运行环境 · 传输路径 一行红点写明原因 |
| 语言 slug 站点不认 | 记为配置错误(不是源故障),但仍然冻结该榜并写清原因;保存时直接 400 拒收 |
| 语言合法但这一档今天没榜 | 合法空榜:ok=true + 「这一档今天没有上榜仓库」,不冒红点 |
| 条件请求拿到 304 | 只推「最近取回」时间,榜面数据时间不动(304 只证明整页字节没变,"今日新增"是累计值) |
| 点详情时 api.github.com 给 404 / 限额用尽 / 传输失败 / 配置坏 | 四种各给一句话(REPO_ERROR_LABELS + 接口原话),榜面照常;失败行 5 分钟内复读同一仓库不再出网,免得把坏名字刷爆额度 |
| 详情命中缓存(设置页那一档,出厂 24 小时) | 载荷标 cached:true + cacheAgeMs,这一发请求都不发;重取走 ?refresh=1(绕过 TTL,但仍吃服务端限额) |
| 三榜连坏 | 节拍按 2^N 翻倍退避,指数封顶 4 轮、绝对封顶 4 小时;任何一榜成功即归零。(2026-10-05 真机改造前:启动抖动连坏三轮,未封顶的指数退避把下一轮推到 24 小时,面板一整天空着。改造后同一场景实测 backoffExp:1 → effectiveMs 顶到 4 小时,第三轮自愈) |
宿主没有 ctx.storageDomain / 存储域 open 失败 | 榜面照看,能力位与状态卡如实写「变化史留不下来」。绝不谎报存储在位 |
安装
⚠️ 当前状态:页签化 + 传输补发 + 插件内代理隧道 + 仓库详情(数据源与详情对话框)+ 描述列内置离线预译 + 模型现译(C)+ 现译引擎五档(D,第九轮三档、第十轮扩到五档并接上腾讯 / 阿里云)+ 自带中文探测与结构化段表(A,第十一轮)+ 详情屏撤废话与详情缓存时长可配置(第十二轮)+ 名次徽章分档(第十四轮)+ 节选与判据窗口分家 / 句子边界收口 / 摘要能力跟着那一路 / 语言切换行找中文 README(第十五轮,★ 其中「摘要能力跟着那一路」已被第十七轮用户改判放回)+ 回执带上厂商请求号 / 同屏一条失败句只念一次(第十六轮)+ 摘要现译放回来(第十七轮)+ README 有中文就不派摘要(第十八轮,闸门本就在)+ 屏上那段节选里已有中文也不派摘要(第十九轮,★ 同一轮"库里那条旧译文行删"那一件没做成** —— 删掉后被在跑的宿主写回,要等宿主关掉重删)+ 多份中文篇并存时挑简体那一份(第二十轮)+ 设置页 GitHub 令牌那一行 / 详情配额那句跟着 GitHub 自己回的那一格(第二十一轮,★ 这轮动的是文首那条铁律的"不带 key":改判为默认零凭据 + 填了只进请求头)+ 榜面描述列接上现译(第二十二轮,★ 这一列从此是「内置预译 + 每轮检查后补的现译」两种来源并存),这几件已过 415 项用例(★ 第十三轮把基线从 356 推到 357(差的那一条是事故补的回归判据)、第十四轮推到 358、第十五轮推到 368、第十六轮推到 371、第十七轮推到 372、第十九轮推到 376、第二十轮推到 378、第二十一轮推到 391、第二十二轮推到 415)(★ 口径更正:跑测器 test/_helpers.mjs 数的是用例(check)条数,不是 assert 条数,旧文档写"项断言"是把这两件事混成一件了;10-07 10:0x 本机复跑:SKIP_LOCAL=1 下 354 过 / 0 挂 / 2 跳,那两条跳的是要真出网的口径(hc-17 与 wt-27);不带 SKIP_LOCAL 那一份是 355 过 / 1 挂 / 0 跳,挂的是 wt-27 免费接口真出网那一发回 HTTP 429;那是外部限流的读数,离线 354 不受影响,细节与归因见下面「测试」那节与 docs/design-spec.md §9.2)(★ 第十三轮(10-07,修完第十二轮那格 requiredInt 之后):基线推到 357 项、SKIP_LOCAL=1 下 355 过 / 0 挂 / 2 跳,逐套差值只在 store 39→40;
而第十二轮落地当天界面上是三榜全红「故障 · 存储不可用」——离线那一份满绿测不到那一发(假设施 open() 不跑 schema),见下面第十三轮那条与 §9.3 那条病历)
(★ 第十四轮(10-07,名次徽章分档:前三名金/银/铜、第 4 名起中性,色值与兄弟插件 modelwatch 对表):基线推到 358 项、SKIP_LOCAL=1 下 356 过 / 0 挂 / 2 跳,逐套差值只在 client 53→54;
这一件只动浏览器半边** client.js(宿主半边 / 载荷 / schema 一字未动),界面上要等宿主重新加载那份 client 源(重载面板,不行就重启 dsh desktop);无头量了逐档计算样式与徽标 rect(tmp/probe-rank.mjs),但活宿主那一屏仍未截图)
(★ 第十五轮(10-07,四件合并:节选与判据窗口分家 / 句子边界收口 / 摘要能力跟着那一路 / 语言切换行找中文 README):基线推到 368 项、SKIP_LOCAL=1 下 366 过 / 0 挂 / 2 跳(直跑 368 / 0 / 0),差值在 repo +7 / api +1 / llm +1 / web-translate +1,另两套(client / host-compat)条数不变、内容改判;这一件过真机(图 68~70 + 第二路真回包 + 配额 55→51 那一屏四发),逐条读数见下面第十二件那条与 §9.3 第十五轮;★ 第十四轮欠的那张活宿主名次徽章屏仍未截 ⇒ 还挂在那条清单上)
(★ 第十六轮(10-07,两件旧账收尾:vendorErr 把厂商请求号排在回执最前 / 详情同屏一条失败句只念一次):基线推到 371 项、SKIP_LOCAL=1 下 369 过 / 0 挂 / 2 跳(直跑 371 / 0 / 0),差值 repo 63→64、client 54→55、web-translate 28→29;证伪电池 tmp/r16-falsify.mjs 11 条 / 未抓到红 0 条;★ 这一轮没有真机截图,也不是"过了真机" —— 那两屏各要一个现场:请求号那一屏要一次真的厂商失败(要么用你库里的真凭据发坏签名,要么等你自己撞上),去重那一屏要 host_llm 档两路同时挂(本机模型是就绪的,我不动它)。逐条读数与边界见下面第十三件那条)
(★ 第十七轮(10-07,用户改判第十五轮③「摘要现译放回来」):基线推到 372 项、SKIP_LOCAL=1 下 370 过 / 0 挂 / 2 跳(直跑 371 过 / 1 挂 / 0 跳,挂的仍是 wt-27 免费档真出网那发回 HTTP 429 —— 与本轮改动无关的外部限流),差值 api 56→57(新那条钉的是"说明句跟着档位走"),repo / client / host-compat / web-translate 条数不变、内容改判;证伪电池 tmp/r17-falsify.mjs 12 条 / 未抓到红 0 条,末行 [还原 ok],读数 tmp/r17-falsify-out.txt。★ 这一轮没有真机截图:那一屏要重启 dsh desktop 宿主才看得到(改的是宿主半边 lib/**,link: 挂载下浏览器半边重载不算),两屏(设置页两行开关 + 详情弹框「中文节译」那一段)挂在 §9.3 那条走查清单上,等你重启后截给我)
(★ 第十八轮(10-07,你那条「README 有中文就不许译」):行为一字未改(那道闸 readmeSource === 'en_default' 自第十一轮就在,本轮把 zh_default / zh_file / zh_section 三档各自钉上能承重的现场 —— 旧形状摆在只开描述档的桩下等于没钉,被电池判出一条假绿);基线仍 372 项、SKIP_LOCAL=1 下 370 过 / 0 挂 / 2 跳(逐套与上一份同数,api 那条就地改判);电池 tmp/r18-falsify.mjs 7 条 / 未抓到红 0 条;真库存对账 tmp/probe-readme-zh-rows.txt 抓到一条旧行残留(alibaba/open-code-review 库里有一条 12: