CNB.Cool 综合增强工具(油猴 / Tampermonkey 用户脚本),为 CNB.Cool 平台提供多项实用功能。
ScriptCat:https://scriptcat.org/zh-CN/script-show-page/6307

cnb.cool/{数字}?url=xxx 格式的短链接localStorage 持久化,刷新不丢失/u/xxx/stars)新增「收藏夹」Tab+ 按钮输入或选择已有标签.mt-1.text-sm.font-normal.text-sec.line-clamp-2)的内容,连标题一起交给 AI 挑分类已处理/总数),单条失败不影响其它仓库;整批 90s 超时保护加载收藏列表… 20/41),再开始打标签——不用手动滚。确实加载不动时才会在 toast 末尾补 (列表只加载了 20/41)errmsg(不再把整段 JSON 塞进去),例如 AI 打标签失败:HTTP 401:CSRF 校验失败,该任务将不会运行。;多个仓库失败时写 (另 N 个也失败)csrftoken 优先从站点自己的写请求里偷(挂 fetch / XMLHttpRequest 监听),抓不到时依次查 meta / cookie / 本地存储 / 内联脚本 / window 全局,仍没有就拉一次当前页 HTML 壳再抠;遇到 401 / 403 会丢掉旧值重新找一次再重试。确实拿不到时提示「先在页面里做一次写操作(例如切换一次标签 / 勾一下收藏)再点」cnb_ai_basecnb.cool/mine/git/raw/ 格式文件下载/IIIStudio),自动推断组织 Logo 作为图标[导入][导出],和快捷导航设置弹窗底部的 [导出备份][导入备份],共用同一套备份逻辑(收藏标签 + 快捷导航 + NPC 指令设置一起导出 / 还原),成功失败都有 toast 提示GM_setValue 本地持久化[导出备份] 数据备份 / 还原 [导入备份],任何页面都能打开,不再占用收藏页页眉@NPC 自动提及开关)收藏标签 N 条 / 快捷导航 N 个 / 指令模板 N 条 / NPC N 个 / 角色提示词 N 条),不会再「点了没反应」npc 字段时,当前 NPC 指令设置保持不动CNB/CNB.jsonbuildLogUrlrepo-cnb-trigger:rw 权限POST https://api.cnb.cool{api_path}/-/workspace/startNPC 相关功能(指令模板 / NPC 列表 / 快捷指令条)参考第三方扩展 CNBuff(MIT)的实现思路,在本脚本内按油猴风格重做:无选项页,改为页面内弹窗 +
GM_setValue本地持久化。
/-/issues/new)的描述编辑器上方插入一行指令条NPC 标签本身,不占用指令模板列表,也不受其增删影响):NPC,不自动补;状态本地持久化(默认关闭)@NPC,发送评论自动在草稿开头补上 @当前NPC(单独占一行,换行后再接正文):输入 你好,发送的就是第一行 @CodeBuddy、第二行 你好;边输入边补(输入 / 粘贴 / 输入法都覆盖),输入法合成期间完全不改写草稿(拼音打中文不会串字、不会打成 @CodeBuddy w),若草稿开头已有你 @ 的人或别的 NPC 则不会覆盖@NPC 只在草稿开头补一次、且单独占一行——开头已经有你 @ 的人或别的 NPC 就不再插,所以连点多次不会叠出一串 @NPC(兼容 React 受控输入框,不会被重渲染覆盖)NPC 不参与拖动)CodeBuddy,自定义 NPC 写 仓库路径(角色名)),支持添加 / 设为默认 / 移除 / 恢复默认,上限 25 个GM_setValue 本地持久化参考第三方扩展 CNBuff(MIT)的
conversation-activity-filter实现思路,在本脚本内按油猴风格重做。
在 issue / PR 会话页侧栏「私密」开关的正下方,插入两个开关(共用页面原生 TDesign t-switch 外观,直接克隆「私密」开关节点,样式与原生一致):
.comment)全部保留;活动项里只保留最后一条 NPC 提及行(npc-mentioned),其余活动(私有切换 / 标签 / 状态变更等)全部隐藏(脚本给保留的那条打标记,收尾项 .end 照常保留)npc-mentioned 活动行里的「✓ 计数」和「token 用量链接」会被克隆到下方那条评论的楼层号右边(#1 之后),活动行看不见了信息也不会丢;被保留下来的最后一条 NPC 提及行本身可见,不再重复搬运。关闭只看评论 / 离开会话页时清理克隆,原件始终保留在活动行里GM_setValue 本地持久化,默认关闭,刷新 / 重进页面不丢失.issue-pull-activity.comment(正文 / 普通评论 / 机器人(NPC)评论共用同一套 class),不依赖作者主页链接——机器人评论的作者名不是 /u/ 链接,按作者链接找会整条漏掉.issue-pull-comment-header-container)定位,容器类名变化时退化为跟在时间元素后面#0、第一条评论 = #1,依次类推在评论 ⋯ 菜单点「引用」后,站点会把被引用内容以 markdown 引用块(> …)写进评论框
脚本等它写入完成,自动把这一段包成折叠块:
<details>
<summary>折叠引用</summary>
> 被引用的内容…
</details>
只处理「点击引用菜单后新插入的那一段」——用前后缀对比算出插入片段,再只把片段里的引用行(> 开头)那一段包起来
站点在引用块后面追加的行(引用 NPC 时的 @CodeBuddy 之类)留在折叠块外面,回复通知不受影响;手动输入的普通文本不会被改写
<summary> 文案在脚本里改 QUOTE_SUMMARY 一处即可
fetch,浏览器自动携带 CNBSESSION 等 cookie,不需要额外填密钥POST /{分组}/{仓库}/-/ai/chat/completions(SSE 流式),模型 deepseek-v4.1-flashcsrftoken 请求头先偷站点自己的写请求(脚本挂一次 fetch / XMLHttpRequest 监听),抓不到再依次查 meta / cookie / 本地存储 / 内联脚本 / window 全局、最后拉一次当前页 HTML 壳;401 / 403 时会清掉旧值重找一次并重试@提及(如 @CodeBuddy)单独摘出来不参与改写,润色完再拼回,不会被润色掉@提及 / 网址 / 文件路径 / 代码 / 专有名词 / 数字,保持原意与语言、不新增任务,做到目标明确、步骤清晰(必要时拆成「访问 → 提取 → 整理」)、范围完整、输出格式明确,语气简洁直接,原指令已足够清楚时只做最小改动@提及 / URL / 代码块 / 命令,输出可直接复制发送兄弟脚本 CNBIssue(IIIStudio)也运行在 cnb.cool 上,两边都注入 DOM / CSS,曾出现过真实冲突:
| 冲突点 | 现象 | 处理 |
|---|---|---|
都用了 .cnb-toast 类名 |
CNBIssue 的样式带 !important,把 .cnb-toast 强制成隐藏态(opacity:0 !important; transform:translateX(120%) !important,只在自己的 --show 修饰类下才显示)。结果本脚本的提示条被永久按死,看着像「点了没反应」 |
本脚本提示条改名 cnb-enh-toast(含 -ok / -err / -out),两边互不影响;本脚本清提示时也不会再误删对方的 |
| 类名前缀撞车风险 | 对方用 .cnb-dock / .cnb-issue-* / .cnb-selection-* / .cnb-clipwin* |
本脚本类名集中在 .cnb-fav-* / .cnb-npc-* / .cnb-qa-* / .cnb-tag-* / .cnb-grid* / .cnb-orphaned-* / .cnb-floor-* / .cnb-sidebar-* 等,已核对无重叠 |
如果你还遇到其它「本脚本某功能没反应」,多半也是同类同名冲突,按上面的方式改类名即可。
script.user.js 全部内容粘贴并保存| GM API | 用途 |
|---|---|
GM_getValue / GM_setValue |
存储收藏标签、快捷导航、NPC 指令模板 / NPC 列表 / 自动提及开关、布局偏好等本地数据 |
GM_setClipboard |
一键复制链接到剪贴板 |
GM_xmlhttpRequest |
跨域请求 CNB API(工作区模式启动接口) |
另外,AI 润色使用同源 fetch 调用站点自身的 AI 接口(不跨域、不需要额外权限),因此会沿用你当前在 cnb.cool 的登录态。
cnb.cool/* 域名下的页面/u/xxx/stars)激活/-/issues/数字、/-/pulls/数字)与创建页(/-/issues/new、/-/pulls/new)激活