2026年1月

主要是解决了浏览器插件显示:此扩展可能已损坏 - 搞七捻三 - LINUX DO 此贴后面损坏问题

事情是经常用的插件下架了,其他商店也没有,我就想着打包了本地数据重新安装,结果一直有插件损坏问题,刚才解决了。

1:打包插件,浏览器插件都是在《Extensions》这个文件夹,可以搜索路径:C:\Users\ 你的电脑用户名 \AppData\Local\Microsoft\Edge\UserData\Default\Extensions
但太麻烦,我采取的办法是直接搜索这个文件夹,然后找到对应插件

每个插件都有一个 id,找到对应 id 的文件夹

点击扩展页的打包扩展,选择这个 8.0.5 的文件夹,打包后就会有 crx 文件

2:这里注意,用这个 crx 去安装,会出现此文件损坏问题,我的解决办法是,把这个 crx 文件拖到 8.0.5 这个文件夹里面

然后在扩展页点击:加载解压缩的扩展,选择 8.0.5 这个文件夹,就解决损坏问题了


📌 转载信息
转载时间:
2026/1/9 17:44:28

新手小白初次开源 请大佬们手下留情

开源自用的 GrokImgae 项目 配合 grok2api 使用 很爽的

app.JS 里面修改这几个参数

const CONFIG = {

defaultBaseUrl: '逆向程序:端口',


defaultApiUrl: 'https://逆向程序:端口/v1/chat/completions',

defaultModel: 'grok-4.1'

};

在 index.html 里面也要搜一下进行修改 也可以在前端直接填写运行

GROK 支持生图的模型均可使用 采用 base64 编码进行传输


项目地址:
GrokImgae


📌 转载信息
原作者:
xiaohaha
转载时间:
2026/1/9 17:44:12

缘由

之前的 design-style 全部基于 https://designprompts.dev 给出的 prompt,但是终究只有 30 + 种,满足不了需求,往往大家想要的 UI 不在里面,例如我想抄一下 Claude.ai,Spring.com 等等这些网站的 UI 风格,但是我不会写 Prompt,尤其是涉及动画,CSS,字体这些,自己写 Prompt 有点麻烦,截图给 AI 或者直接让 Gemini 写一份往往不能得到满意的结果(大概率没有动画效果或者字体不对,或者 CSS 不标准),尽管 Gemini 的视觉能力和知识面已经足够强了,但是不够稳定,所以有了以下的 Skill,作用就是通过 ChromeDevToolsMCP 提取 CSS 样式自动编写 System Prompt
直接效果展示

spring.com 风格

binance.com 风格

UI 风格可以去 https://mobbin.com/ 找想要的网站即可
使用方式也很简单,现在有个缺点就是容易爆 Context,推荐关闭自动压缩上下文 + 搞个长上下文的 Model,

使用design-system-analyzer 创建www.binance.com风格prompt并且写入文件

自此,你想抄谁就抄谁,当然再次强调,这些只能决定 UI 风格,不代表前端质量,前端不仅仅是 UI 设计,UX 设计才是重中之重

项目地址:GitHub - NakanoSanku/OhMySkills: useful anthropic skills


📌 转载信息
转载时间:
2026/1/9 17:43:57

佬友们周五好,

最近一直在搞 vibe coding,Claude Code 确实好用,但有个硬伤:太慢了

尤其是项目大一点的时候,等它跑完一个指令得半天。我平时习惯同时开工好几个模块,或者几个项目一起跑,一个一个等实在受不了。并且如果某一个 Agent 卡壳了,也不能很好的及时发现。

所以我开发了这个叫 VibeMux 的小工具。逻辑很简单,就是把多个 Claude Code/Codex 实例给管理起来,让你能同时给好几个 AI 下任务,不用干等着。 同时,也能便捷的管理已有的项目。

主要是解决这几个问题:

  • 多开不乱:在一个界面里管理多个会话,不用开一堆终端窗口(最多支持 3*3 个窗口)。
  • 并发开发:这边让它写后端 API,那边让它改前端页面,互不耽误。
  • 项目管理:实现项目的快速管理,可以自动创建目录,如果有新项目也不用纠结在哪开始。
  • 轻量实用:没有臃肿的配置,安装即用。

代码已经开源了,纯粹是为了自己爽写的,大家感兴趣可以试试:

项目地址: GitHub - UgOrange/vibemux: VibeMux – Orchestrate parallel Claude Code agents in a single TUI

演示一下:

实现了个 Claude Code 多开工具 vibemux,效率翻倍1

欢迎提建议,觉得有用给个 star 就行。


📌 转载信息
转载时间:
2026/1/9 17:43:44





Sora2 的角色一致性问题是 AI 视频生成领域的共同挑战。官方的角色引用系统提供了便捷的解决方案,但在追求高质量输出时,分镜图引导方案 展现出明显优势。

本文基于个人实战经验,AI 辅助编写。


📌 转载信息
原作者:
Matuto
转载时间:
2026/1/9 17:42:57

csun 开放注册了,需要北美手机号接码,URL 自找,edu 可使用 GPT Pro、Gemini Pro

论坛有注册链接,不需要 70 刀,靠自己检索能力去找注册 URL,我不提供,上次开放可以直接下号,这次需要验证手机号码了

上次开放注册的邮箱,我现在还可以使用,GPT Pro 爽用


📌 转载信息
转载时间:
2026/1/9 17:42:33

1. 背景

SubBoost 是一个在线 Clash 订阅增强服务。可以将机场订阅或节点转换为优化的 Clash 配置文件,支持自定义代理组、分流规则、DNS 配置等高级功能。

经过两周的测试修复,目前主要功能已经稳定运行。因此将于 1 月 11 日 22:00 分删库,转为长期运行。届时需要重新注册,请备份重要数据。

2. 使用教程

使用教程见 [教程 3.0] 草履虫也能学会的 Clash 配置:UI 界面一键配置精确分流、链式代理

3. 已知问题

3.1 部分机场订阅会导入失败

部分机场采用严格加密或者限制 CN IP 导入,url 链接无法直接导入。请手动复制订阅内容。

3.2 Google 相关分流

Gemini:由于 Gemini 验证机制调整,目前必须将 Gemini 和 Google 分流至同一节点才可正常使用。默认 Gemini 位于 AI服务分流之中,也提供单独的 Gemini 分流组供手动选择。

谷歌学术:由于谷歌学术对 IP 质量要求高于其它 Google 服务,目前默认谷歌学术位于教育资源分流之中,也提供单独的谷歌学术分流组供手动选择。

3.3 机场订阅自动更新

可在我的订阅页面开启自动更新,最低间隔 12 小时,开启后会自动定时拉取机场 url。

期间在客户端更新订阅都会使用上次自动更新的缓存,因此数据不变。所以请不要频繁更新客户端导入的订阅!

客户端订阅卡片的流量和到期日期会将所有机场的数据透传并叠加,叠加逻辑为:流量相加,到期日期取最短

4. 问题反馈

反馈可复现 bug 可获得价值 1500 LDC帕米尔大学 AU 校区资格.


📌 转载信息
原作者:
RyanVan
转载时间:
2026/1/9 17:40:25

Elon Musk 旗下 AI 工具 Grok 已对绝大多数用户关闭图像生成功能,此前该功能被广泛用于制作性暗示和暴力图像引发强烈抗议。目前该功能仅向付费订阅用户开放,这意味着平台绝大多数用户无法使用 Grok 创建图像,而付费用户的详细信息和信用卡资料均由 X 平台存储,可在功能被滥用时进行身份识别。


📌 转载信息
原作者:
crychic
转载时间:
2026/1/9 17:40:09

同事给了个反重力,接入到 cpa,想试试在 new-api 配置 4k 的大香蕉,研究了下,最终配置如下。

{ "generationConfig": { "responseModalities": [ "TEXT", "IMAGE" ], "imageConfig": { "aspectRatio": "1:1", "imageSize": "4K" } } } 

其中 aspectRatio 和 imageSize 自由调整。
在参数覆盖里面配置。效果如下:


类型记得选 Google Gemini
配合模型重定向,成功实现。


📌 转载信息
原作者:
tanran
转载时间:
2026/1/9 17:39:26

转载自 n8n 论坛,原文见 Security Advisory: Security Vulnerability in n8n Versions 1.65-1.120.4 - Community Highlights - n8n Community

中文内容来自 qwen-mt 翻译


Potential impact 潜在影响

Who is affected: 受影响对象:

  • Self-hosted instances running versions 1.65-1.120.4
    运行版本 1.65–1.120.4 的自托管实例
  • If you’re running any 2.x version (including any RC/beta), you already have this security fix
    若您运行的是任意 2.x 版本(包括任何 RC 或测试版),则已内置此项安全修复
  • Cloud instances are being upgraded. You can also start the upgrade from your Cloud dashboard.
    云实例正在逐步升级中,您也可通过云控制台手动启动升级流程。

If this vulnerability were exploited, it could lead to:
若该漏洞被成功利用,可能导致:

  • In certain configurations, privilege escalation within the n8n instance
    在特定配置下,n8n 实例内部发生权限提升
  • Unauthorized access to sensitive information stored in your n8n instance
    未经授权访问您 n8n 实例中存储的敏感信息

Required action 需采取的操作

If you’re running version 1.65-1.120.4: Please update your n8n instance to version 1.121.0 (or later) as soon as possible. This version contains the necessary security fixes.
若您当前运行版本为 1.65–1.120.4:请尽快将 n8n 实例升级至 1.121.0 或更高版本。该版本已包含必要的安全修复补丁。

If you’re running any 2.x version (including any RC/beta): No action needed - you already have this security fix.
若您运行的是任意 2.x 版本(包括任何 RC 或测试版):无需额外操作 —— 您已具备此项安全修复。


📌 转载信息
原作者:
seamee
转载时间:
2026/1/9 17:36:45

基于 V2rayN Steam 下载直连 规则备份
然后看了一下 Steam 商店请求的各种资源域名 做了补充修改
我试了好多次 加载 steam 商店的图片啥的都挺快的 当然还是没有全局快

复制粘贴下面脚本

function main(config, profileName) {
  if (!config || !config.rules) return config;

  let targetProxyName = 'Proxies'; 
  if (config['proxy-groups'] && config['proxy-groups'].length > 0) {
    const firstGroup = config['proxy-groups'].find(g => g.name !== 'DIRECT' && g.name !== 'REJECT');
    if (firstGroup) targetProxyName = firstGroup.name;
  }

  const forceProxyRules = [
    'DOMAIN-SUFFIX,steamstatic.com',
    'DOMAIN-SUFFIX,steamcommunity.com',
    'DOMAIN-SUFFIX,steampowered.com',
    'DOMAIN-SUFFIX,steamserver.net',
    'DOMAIN-SUFFIX,steam-chat.com',
    'DOMAIN-SUFFIX,queniuqe.com',
    'DOMAIN-SUFFIX,s.team',
    'DOMAIN-SUFFIX,steamgames.com',
    'DOMAIN-SUFFIX,steam-api.com',
    'DOMAIN-SUFFIX,linux.do',
    'DOMAIN-SUFFIX,gvt2.com',
    'DOMAIN-SUFFIX,google.com',
    'DOMAIN,challenges.cloudflare.com',
    'DOMAIN,activity.windows.com'
  ].map(rule => `${rule},${targetProxyName}`);

  const forceDirectRules = [
    'DOMAIN,store.ak.valvesoftware.com,DIRECT',
    'DOMAIN-SUFFIX,steamcontent.com,DIRECT',
    'IP-CIDR,45.121.184.0/24,DIRECT,no-resolve',
    'IP-CIDR,103.10.124.0/23,DIRECT,no-resolve',
    'IP-CIDR,103.28.54.0/24,DIRECT,no-resolve',
    'IP-CIDR,146.66.152.0/23,DIRECT,no-resolve',
    'IP-CIDR,153.254.86.0/24,DIRECT,no-resolve',
    'IP-CIDR,155.133.224.0/20,DIRECT,no-resolve',
    'IP-CIDR,162.254.192.0/21,DIRECT,no-resolve',
    'IP-CIDR,185.25.182.0/23,DIRECT,no-resolve',
    'IP-CIDR,190.217.32.0/22,DIRECT,no-resolve',
    'IP-CIDR,192.69.96.0/22,DIRECT,no-resolve',
    'IP-CIDR,208.64.200.0/20,DIRECT,no-resolve'
  ];

  config.rules.unshift(...forceProxyRules, ...forceDirectRules);
  return config;
}


📌 转载信息
原作者:
Coee
转载时间:
2026/1/9 17:36:25

FinePDFs 是一个专案
主要是爬了 2013 至 2025 这几年间的 pdf 文档,经过数据清洗与标记后,归纳成为一个包含 1733 种语言在内的 4.75 亿 pdf 文档数据库。

之所以要做这个是因为团队发现大部分模型训练内容几乎不包含 pdf 档(仅占 0.6% 左右),但其实许多的技术文件以及理论文档都是以 pdf 格式存在,因此他们团队才决定朝这个方向前进。

有兴趣的可以看看以下的技术说明及数据库
主要会对模型训练有帮助


📌 转载信息
原作者:
josenlou
转载时间:
2026/1/9 10:15:26

Grok 也来参与 Vibe coding
xAI 预计发表的 Grok Build 会提供 Cli 工具
预计在晚些时候发布
同时发布的还有 Grok Code 升级版,或许会是 Grok code 2。


📌 转载信息
原作者:
josenlou
转载时间:
2026/1/9 10:15:17

没找到相关的文档,自己瞎折腾的记录吧

添加解锁 DNS

根据 dns 解锁供应商的信息,一般都是类型 UDP, 端口 53

添加规则集

下面已 netflix 为例,在路由规则添加规则集 , 类型选择远程 , 标签按照自己喜好来,URL 填上大佬做的规则,出站选择 direct, 更新按照自己来,点击保存

创建两个规则一个是 geosite, 另一个是 geoip

最后不要忘记点击上面的保存这步老是遇到报错,vps 上输入 s-ui, 根据提示输入数字重启面板,再重复操作一下​

https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geosite/netflix.srs
https://raw.githubusercontent.com/MetaCubeX/meta-rules-dat/sing/geo/geoip/netflix.srs


配置 DNS 规则

在 DNS 页面,添加 DNS 规则,规则集选择上面自己添加的,服务器选择添加的 dns, 策略这里选了 ipv4_only, 点击保存,最后不要忘记点击上面的 保存

by the way

目前这样设置想要只有 vless-0 出站走 dns 解锁,问了 gpt 也是这样,但是好像没有效果,其他出站一样可以解锁,不知道哪个佬友清楚还是设置不对,反正解锁是没问题


📌 转载信息
原作者:
Echoliu
转载时间:
2026/1/9 10:14:58

前两天下载了一个 ps 的便携版,用完后重启电脑出现蓝屏,折腾了各种方法都不管用,还以为得重装系统,最后还是靠 GPT 救回来了

现象

  • 开机出现蓝屏错误:0xC000021A
  • 系统自动修复无效
  • 无法进入安全模式

原因

0xC000021A 通常与 关键系统进程异常 有关(例如 Winlogon / CSRSS),最常见原因是某些第三方软件导致系统文件损坏


处理环境

  • 疑难解答 -> 高级选项 -> 命令提示符 中执行(系统盘离线修复)


修复步骤

1) 修复磁盘与坏扇区

chkdsk C: /f /r

2) 离线修复系统文件(SFC)

sfc /scannow /offbootdir=C:\ /offwindir=C:\Windows

3) 修复组件存储(DISM)

dism /image:C:\ /cleanup-image /restorehealth

4) 执行完上述命令重启即可


📌 转载信息
原作者:
soxio
转载时间:
2026/1/9 10:10:46

在阮一峰周刊进行了投稿,隔天就录入了,这我第二个入选周刊的产品了

这是一款可以自动去除 Gemini(Nano Banana)、豆包、可灵、即梦生成图片的水印的网站,理论上如果想去其他平台的水印只需搜集下对应 logo 然后训练就行。

同事也支持了收到去除,使用 wasm 技术,目前纯本地浏览器处理,不需要登录注册,随用随走

地址:

https://clearcat.lingxiangtools.top/

周刊地址:

https://www.ruanyifeng.com/blog/2026/01/weekly-issue-380.html

有什么问题可以评论反馈


📌 转载信息
原作者:
Ixiaobin
转载时间:
2026/1/9 10:10:31

很多佬友以为开了代理就可以万事大吉的在本地使用某些应用,但现实是一些应用在节点正常的情况下请求失败、偶发 5xx,严重的甚至被封号,除了 IP 的问题 (这个占主要原因),还有一个容易被忽略的地方就是:虽然 HTTP/HTTPS 走了代理,DNS 却出了问题,露出了小鸡脚(尤其在使用 Claude / OpenAI / Codex / Gemini 这类应用时)

声明:为兼顾相关名词解释的专业性和可理解性,部分名词解释由GPT+Gemini给出。


先确认自己 “有没有露出鸡脚”

建议在修改前、修改后各测一次。包括:


开启 TUN 模式

很多客户端 / 服务并不严格遵循系统代理(尤其涉及 UDP/QUIC、系统服务、某些桌面应用、或应用内部自带网络栈的情况)。这会导致你以为 “流量都走了代理”,实际上仍可能存在绕行。而 TUN 的意义是:减少绕过代理栈的机会,在网络层统一接管


Clash 中的 DNS 覆写是个什么东西

DNS 泄露的典型形态是:

访问网站的连接走代理,但域名解析(DNS 查询)仍走本地网关 / ISP。

所以 “防 DNS 泄露” 的核心不是换节点,而是做到两点:

  1. DNS 查询入口被 Clash 接管(系统 / 应用问 DNS 时,问到的是 Clash,关闭系统代理,开启 TUN 模式
  2. Clash 的上游 DNS 不走 system/ISP(否则等于把查询又交回本地,覆写 DNS

下面我们来详细看看 DNS 覆写


DNS 覆写中的一些关键字段解释

为保证专业性和可理解性,部分名词解释由大模型辅助生成

下面以 Clash / Clash Meta 系的常见字段为语义解释(GUI 名称可能略有差异,但逻辑大差不差)。

启用 DNS 开启后 Clash 会提供本地 DNS 服务;不开启通常意味着系统继续使用原来的 DNS(常见就是 ISP),泄露风险直接拉满。

DNS 监听地址 Clash 在哪个地址 / 端口上提供 DNS 服务(常见 :53)。如果端口被占用、监听失败,系统仍可能回退到原 DNS;这类问题很隐蔽,表现为 “我明明配置了,但检测还是 ISP DNS”。

增强模式 最常见的是 fake-ip。它的思路是:Clash 对域名返回一个 “假 IP”,后续连接再由 Clash 接管映射到真实目标。 对防泄露而言,fake-ip 的优势是 纳管强、路径更可控,配合 TUN 往往最稳。代价是:极少数局域网 / 特殊域名可能需要加入 fake-ip-filter 以避免兼容问题。

Fake IP 范围 只是 “假 IP 池” 的网段范围,通常默认值即可(除非与你局域网网段冲突)。

Fake IP 过滤 用于声明哪些域名不要走 fake-ip(例如 .lan.local、部分系统探测域名等)。目的通常是兼容性与减少奇怪的本地网络问题,而不是 “提升安全性”。 推荐用 blacklist 思路:只把确实需要排除的域名放进去即可。

默认域名服务器 用于 “先解析上游 DNS 的 DNS 服务器”。比如你填了 https://dns.google/dns-query,那 Clash 也得先知道 dns.google 的 IP 才能连上它 —— 这一步就靠 default-nameserver。如果这里填 system 或 ISP DNS,就可能在 “第一跳” 就把域名暴露给本地。因此这里最好填可靠的公共 IPv4 DNS(不要 system),例如 1.1.1.1 / 8.8.8.8 这类;你也可以放多个做冗余。

域名服务器 真正负责日常解析的上游 DNS。这里推荐优先使用 加密上游(DoH/DoT),因为它能降低本地网络侧窥探 / 劫持的概率,也更符合 “可控出口” 的目标。可填写 tls://1.1.1.1:853, tls://dns.google:853

回退服务器 当主 nameserver 不可用或不满足条件时用于回退。很多人的 DNS 泄露就出在这里:fallback 指向了 system / ISP,导致 “平时看起来没事,偶发就泄露”。 如果你要用 fallback,最稳的策略是:fallback 也只放加密上游,不要放 system/ISP

代理节点 DNS 用于解析 “代理节点本身的域名”(很多机场节点是域名形式)。如果这里走 system/ISP,你的 “代理节点域名” 可能暴露给本地 DNS(常听到的域名被污染就是因为有用户这里设置的有问题);同时也可能导致连节点慢、切换不稳定。

直连域名服务器 当某些流量被判定为 DIRECT 时,用哪个 DNS 解析。这里本质是隐私与体验的权衡:

  • 用本地 / ISP:可能更 “就近”,但域名可见性更高
  • 用加密公共 DNS:隐私更好,但个别场景可能不如 ISP 就近 如果你的目标是 “尽量不泄露”,建议 direct-nameserver 也使用加密上游,但这样速度可能会变慢

域名服务器策略、回退过滤设置、Hosts 设置等保持默认即可

IPv6 开关(ipv6) 如果你的代理链路 / 节点对 IPv6 支持不完整,IPv6 非常容易成为旁路,出现 “我明明开了代理但检测仍能看到本地信息” 的现象。 不确定就关

prefer-h3 / HTTP3 主要是性能 / 兼容性取舍,在一些网络环境下 QUIC 更容易不稳定。可以先关 *。

respect-rules(遵循路由规则) 让 DNS 的出站策略与规则更一致。对 “防泄露” 来说,它不是第一优先级:更关键的是不要让任何上游指向 system/ISP。上游安全了,respect-rules 的风险面会小很多。


知道了上面这些之后,怎么才能不漏鸡脚呢?

如果你主要目标是:使用 Claude/OpenAI/Codex/Gemini 这类应用时尽量不发生 DNS 泄露,可以按这个顺序做:

  1. 启用 TUN(优先保证流量纳管)
  2. DNS 覆写启用,增强模式选 fake-ip
  3. 禁用 IPv6(避免旁路)
  4. 上游 DNS 全部避免 system/ISP
  • default-nameserver:用可靠公共 IPv4 DNS(不要 system)8.8.8.8, 1.1.1.1
  • nameserver:优先 DoH/DoTtls://1.1.1.1:853, tls://dns.google:853
  • fallback:如需启用,也只放 DoH/DoT(不要 system/ISP)tls://1.1.1.1:853, tls://dns.google:853
  • proxy-server-nameserver /direct-nameserver:尽量与 nameserver 保持一致(减少分叉与意外出口)

最后回到第 1 节:改后再测一次 IP 与 DNS

修改完之后变成了这样,又可以愉快的玩耍了


常见的坑

  • 上游里出现 system / 本地 ISP:把 default-nameserver / fallback / direct-nameserver 留成 223.5.5.5, 119.29.29.29doh.pub / alidns,然后检测必然出现中国 DNS
  • DNS 监听失败(端口占用),以为覆写了,其实系统还在用原 DNS
  • Chrome/Edge/Firefox 可能启用 Secure DNS(DoH),这会让浏览器直接用它自己的上游(可能自动选了国内),绕过系统 / Clash。关闭浏览器的 Secure DNS 或 把浏览器 Secure DNS 指定到你想要的 DNS
  • WebRTC 泄露,可以考虑使用指纹浏览器或者找插件禁用
  • fallback 指向 ISP
  • TUN 未启用
  • IPv6 未禁用


如果想求稳,使用 Claude / OpenAI / Codex / Gemini 等应用时:开 TUN + 开 DNS 覆写(fake-ip)+ 禁 IPv6 + 上游 DNS 不用 system/ISP;改前改后各做一次 DNSLeakTest 验证。

以上,希望大家都能愉快玩耍~


📌 转载信息
原作者:
Barley
转载时间:
2026/1/9 10:10:30

原帖地址

1 月 8 日,Google 宣布,目前全球有 30 亿用户依赖 Gmail 进行沟通和处理事务。为帮助用户应对日益增长的邮件量,Google 正式将 Gmail 带入 "Gemini 时代",将其打造成个人化、主动式的收件箱助手。

AI 概览

与 Google 搜索中的功能类似,AI 概览可将信息直接转化为答案。当用户打开一封有数十条回复的邮件时,Gmail 会自动将整个对话综合成简洁的要点摘要。AI 概览对话摘要功能即日起向所有用户免费开放,而通过自然语言向收件箱提问的功能则仅限 Google AI Pro 和 Ultra 订阅用户使用。

写作辅助工具

从今天起,所有用户都可以使用 “帮我写” 功能来润色邮件或从头起草邮件。此外,“智能回复” 升级为 “建议回复”,能够模仿用户的语气和风格起草回复。而 AI 校对工具可处理用词、简洁性和主动语态等问题,但仅限付费订阅用户使用。

AI 收件箱

全新的 AI 收件箱不再按时间顺序罗列邮件,而是提供个性化简报,突出显示待办事项和重要内容。例如,待付账单或牙医预约提醒会被自动标记并优先显示。该功能目前仅限受邀测试用户体验。

这些改进由 Gemini 3 技术驱动,即日起在美国向 Gmail 用户及 Google AI Pro/Ultra 订阅用户推出,首先支持英语,未来数月将扩展至更多语言和地区。


📌 转载信息
原作者:
HCPTangHY
转载时间:
2026/1/9 10:07:42

前情提要

佬需要扩展我司调度平台(Dolphinscheduler)集群的节点数,故有了下面的脚本

部分脚本经过 AI 生成和自行调试,不能发的话管理可以删除

PS: Dolphinscheduler 是一个很不错的开源分布式调度平台,有大量调度任务的佬可以看看

就是这个了

GitHub - apache/dolphinscheduler: Apache DolphinScheduler is the modern data orchestration platform. Agile to create high performance workflow with low-code

创建用户

总结
# 创建用户并赋予免密sudo权限 sudo useradd user1
echo "user1@123" | sudo passwd --stdin user1
sudo sed -i '$auser1  ALL=(ALL)  NOPASSWD: ALL' /etc/sudoers

设置 host 映射

总结
# 做这个是为了在节点间相互连接时方便 #!/bin/bash # ================= 配置区域 =================
base=10.1.xxx.
HOSTS="${base}1 ${base}2 ${base}3"
USER="user1"
PASS="user1@2023" # 这里最好要统一各个节点的账号密码方便节点间连接 # 待新增的配置块 (使用 Here Document 生成) cat > hosts_to_add.tmp << EOF
10.1.xxx.1 node1
10.1.xxx.2 node2
10.1.xxx.3 node3
.... # 此处省略n个
EOF
# 为了防止重复添加,我们需要定义一个列表来清理这些新节点可能的旧记录 # 提取新文件中的所有主机名用于清理 CLEAN_NEW_NODES_PATTERN="node1|node2|node3|..." # =========================================== # 检查 sshpass if ! command -v sshpass &> /dev/null; then echo "❌ 请先安装 sshpass: yum install sshpass -y" exit 1 fi echo "========================================" echo "开始批量修改 /etc/hosts" echo "========================================" for IP in $HOSTS; do echo ">> 正在处理节点: $IP" # 1. 上传新配置块到远程临时目录 sshpass -p "$PASS" scp -o StrictHostKeyChecking=no hosts_to_add.tmp "$USER@$IP:/tmp/hosts_chunk" if [ $? -ne 0 ]; then echo " ❌ 上传文件失败,跳过该节点" continue fi # 2. 远程执行 Sudo 操作 REMOTE_CMD="
echo '$PASS' | sudo -S -p '' bash -c '
cp /etc/hosts /etc/hosts.bak_\$(date +%Y%m%d_%H%M) && \
sed -i -E \"/$CLEAN_NEW_NODES_PATTERN/d\" /etc/hosts && \
cat /tmp/hosts_chunk >> /etc/hosts && \
rm -f /tmp/hosts_chunk
'
"
sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$USER@$IP" "$REMOTE_CMD" if [ $? -eq 0 ]; then echo " ✅ 修改成功" # 简单验证一下行数变化 sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$USER@$IP" "grep -c 'node1' /etc/hosts" | xargs -I {} echo " 📊 验证: 包含 node1 的行数: {} (应为 1)" else echo " ❌ 修改失败 (可能是 sudo 密码错误或权限不足)" fi echo done # 清理本地临时文件 rm -f hosts_to_add.tmp echo "全部完成。" # 执行完脚本的效果是每个节点的host都包含集群所有节点的IP记录

配置节点间免密连接

总结
#!/bin/bash # 以下是配置ds master服务的脚本,worker api类似 # ================= 配置区域 ================= # 目标节点 IP 列表
base=10.1.xxx.
HOSTS="${base}1 ${base}2 ${base}3"
USER="user1"
PASS="user1@2023" # 本地临时汇总文件
ALL_KEYS_FILE="./all_node_keys.tmp" # 0. 环境检查与清理
> "$ALL_KEYS_FILE" if ! command -v sshpass &> /dev/null; then echo "[Init] 正在安装 sshpass..." if [ -f /etc/redhat-release ]; then sudo yum install sshpass -y
    elif [ -f /etc/debian_version ]; then sudo apt-get install sshpass -y
    else echo "❌ 请先手动安装 sshpass" exit 1
    fi fi echo "========================================" echo "阶段一:生成密钥并收集公钥" echo "========================================" for IP in $HOSTS; do echo ">> [收集] 正在处理节点: $IP" # 1.1 远程生成密钥 (如果不存在)
    sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$USER@$IP" \
        "if [ ! -f ~/.ssh/id_rsa ]; then ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa; fi" # 1.2 读取公钥并追加到本地汇总文件
    sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$USER@$IP" "cat ~/.ssh/id_rsa.pub" >> "$ALL_KEYS_FILE" # 确保追加一个换行符,防止拼接错误 echo "" >> "$ALL_KEYS_FILE" done # 检查是否收集成功 if [ ! -s "$ALL_KEYS_FILE" ]; then echo "❌ 未收集到公钥,请检查网络或密码。" exit 1
fi echo "" echo "========================================" echo "阶段二:安全追加配置 (保留原有密钥)" echo "========================================" for IP in $HOSTS; do echo ">> [追加] 正在同步到节点: $IP" # 2.1 上传汇总文件到远程的 /tmp 目录 (不直接覆盖 authorized_keys)
    sshpass -p "$PASS" scp -o StrictHostKeyChecking=no "$ALL_KEYS_FILE" "$USER@$IP:/tmp/new_keys_bundle" # 2.2 远程执行合并逻辑 # 逻辑说明: # 1. mkdir: 确保目录存在 # 2. touch: 确保文件存在 # 3. sed: 确保文件最后一行有换行符(防止追加到上一行末尾) # 4. cat >>: 追加新密钥 # 5. sort -u: 排序并去重 (关键!防止反复执行导致文件膨胀) # 6. chmod: 修正权限
    REMOTE_CMD="
mkdir -p ~/.ssh && \
touch ~/.ssh/authorized_keys && \
sed -i -e '\$a\\' ~/.ssh/authorized_keys && \
cat /tmp/new_keys_bundle >> ~/.ssh/authorized_keys && \
sort -u ~/.ssh/authorized_keys -o ~/.ssh/authorized_keys && \
sed -i '/^$/d' ~/.ssh/authorized_keys && \
chmod 700 ~/.ssh && \
chmod 600 ~/.ssh/authorized_keys && \
rm -f /tmp/new_keys_bundle
"
sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$USER@$IP" "$REMOTE_CMD" if [ $? -eq 0 ]; then echo " ✅ 成功追加并去重" else echo " ❌ 操作失败" fi done # 3. 清理本地临时文件 rm -f "$ALL_KEYS_FILE" echo "" echo "========================================" echo "全部完成!原有密钥已保留,新节点已互信。" echo "验证方法: ssh $USER@${base}1 'ssh ${base}2 date'" echo "========================================" # 此脚本执行完的效果是所有节点间都可以免密直连(dolphinscheduler不强制要求这个) # 后续再有新加节点直接在HOST中追加,重新执行脚本即可

配置 Dolphinscheduler 的系统服务

总结
#!/bin/bash # 此脚本的作用是把ds-worker进程做成系统服务,以便在进程被杀死或机器重启时自动重启 # ================= 配置区域 =================
base=10.1.xxx.
HOSTS="${base}1 ${base}2 ${base}3"
USER="user1"
PASS="user1@2023" # 临时文件存放路径
LOCAL_SERVICE_FILE="./ds_worker.service" # =========================================== # 检查 sshpass if ! command -v sshpass &> /dev/null; then echo "❌ 请先安装 sshpass" exit 1
fi # 1. 在本地生成标准的 Service 文件 # 注意:使用 'EOF' (带单引号) 防止 $MAINPID 被 Shell 解析成变量 cat > "$LOCAL_SERVICE_FILE" << 'EOF'
[Unit]
Description=DolphinScheduler worker Service
After=network.target

[Service]
Type=forking
User=user1
Environment=JAVA_HOME=/mnt/vos-jddsq55k/software/jdk1.8.0_152
WorkingDirectory=/mnt/vos-jddsq55k/software/dss320
ExecStart=/mnt/vos-jddsq55k/software/dss320/bin/dolphinscheduler-daemon.sh start worker-server
ExecStop=/mnt/vos-jddsq55k/software/dss320/bin/dolphinscheduler-daemon.sh stop worker-server
Restart=always
RestartSec=3

[Install]
WantedBy=multi-user.target
Alias=ds-worker.service
EOF

echo "========================================" echo "批量部署 ds-worker 服务" echo "========================================" for IP in $HOSTS; do echo ">> 正在处理节点: $IP" # 2. 上传文件到远程的 /tmp 目录 (普通用户有权限)
    sshpass -p "$PASS" scp -o StrictHostKeyChecking=no "$LOCAL_SERVICE_FILE" "$USER@$IP:/tmp/ds_worker.service" if [ $? -ne 0 ]; then echo "   ❌ 文件上传失败" continue fi # 3. 远程执行:移动文件到系统目录 + 启动服务 # 逻辑: # - mv: 从临时目录移动到系统目录 (覆盖) # - daemon-reload: 让 systemd 识别新文件 # - enable --now: 设置开机自启并立即启动 # - status: 检查状态
    
    REMOTE_CMD="
echo '$PASS' | sudo -S -p '' bash -c '
mv /tmp/ds_worker.service /usr/lib/systemd/system/ds_worker.service && \
chmod 644 /usr/lib/systemd/system/ds_worker.service && \
systemctl daemon-reload && \
systemctl enable ds_worker && \
systemctl restart ds_worker
' && \
systemctl status ds_worker | grep 'Active:'
"
sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$USER@$IP" "$REMOTE_CMD" if [ $? -eq 0 ]; then echo " ✅ 部署并启动成功" else echo " ❌ 启动失败,请检查路径或权限" fi echo done # 清理本地临时文件 rm -f "$LOCAL_SERVICE_FILE" echo "全部完成。" # 此脚本执行完,所有节点都启动了ds-worker的进程

配置日志清理任务

总结
#!/bin/bash # ================= 配置区域 =================
base=10.1.xxx.
HOSTS="${base}1 ${base}2 ${base}3"
USER="user1"
PASS="user1@2023" # 定义要添加的两条 Crontab 任务 # 注意:这里不需要转义 *,因为后面我们会小心处理字符串
TASK_MASTER="0 0 * * * find /mnt/vos-jddsq55k/software/dss320/master-server/logs -mtime +7 -exec rm -rf {} \;"
TASK_WORKER="0 0 * * * find /mnt/vos-jddsq55k/software/dss320/worker-server/logs -mtime +30 -exec rm -rf {} \;" # =========================================== if ! command -v sshpass &> /dev/null; then echo "❌ 请先安装 sshpass" exit 1
fi echo "========================================" echo "批量添加日志清理 Crontab 任务" echo "========================================" for IP in $HOSTS; do echo ">> 正在处理节点: $IP" # 构造远程执行的脚本块 # 使用 Here Document 传递复杂的逻辑,避免 SSH 引号地狱 # 注意:EOF 必须不带引号,以便本地变量 TASK_MASTER 能被解析 # 但是!find 命令里的 {} 和 \; 需要小心,不要被本地 Shell 解析 # 所以下面 TASK 变量里的 \; 我在上面定义时已经写好了
    
    REMOTE_SCRIPT=$(cat << EOF
# 1. 导出当前 crontab 到临时文件 (如果没有任务则创建一个空文件)
crontab -l > /tmp/cron.tmp 2>/dev/null || touch /tmp/cron.tmp

# 2. 定义标志位,看是否有修改
MODIFIED=0

# 3. 检查并添加 Master 清理任务
# grep -F: 固定字符串匹配,忽略星号的特殊含义
if ! grep -Fq "master-server/logs" /tmp/cron.tmp; then
echo "$TASK_MASTER" >> /tmp/cron.tmp
echo " + 已添加 Master 日志清理任务"
MODIFIED=1
else
echo " = Master 任务已存在,跳过"
fi

# 4. 检查并添加 Worker 清理任务
if ! grep -Fq "worker-server/logs" /tmp/cron.tmp; then
echo "$TASK_WORKER" >> /tmp/cron.tmp
echo " + 已添加 Worker 日志清理任务"
MODIFIED=1
else
echo " = Worker 任务已存在,跳过"
fi

# 5. 如果有修改,则重新加载 Crontab
if [ \$MODIFIED -eq 1 ]; then
crontab /tmp/cron.tmp
echo " ✅ Crontab 更新成功"
else
echo " ok 无需变更"
fi

# 6. 清理临时文件
rm -f /tmp/cron.tmp

# 7. 验证:显示当前的 crontab 内容
echo " 👀 当前 Crontab 预览:"
crontab -l
EOF
) # 执行远程命令 sshpass -p "$PASS" ssh -o StrictHostKeyChecking=no "$USER@$IP" bash -c "'$REMOTE_SCRIPT'" echo done # 此脚本执行后会在每个节点添加crontab任务来清理过期日志

一些其他常用 Linux 命令的总结

查看占用 CPU 最多进程

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +3|head
ps -aux | sort -k3nr | head 5

linux 下获取占用内存资源最多

ps aux|head -1;ps aux|grep -v PID|sort -rn -k +4|head
ps -aux | sort -k4nr | head 5

查看程序运行时间

ps -eo pid,user,command,lstart,etime|grep xxx
ps -p PID -o lstart,etime,command 

查看程序内存溢出记录

grep "Out of memory" /var/log/messages

查看开机自启服务列表

systemctl list-unit-files|grep enable 

释放内存

echo 1 > /proc/sys/vm/drop_caches

按关键字搜索文件

grep -rl "key word" /path

批量替换文本内容

sed -i "s/demomanage.wbsjk.com/devrr.aoyuntech.com/g"  `grep demomanage.wbsjk.com -rl .`

插入内容到文件头

sed -i '1i\export JAVA_HOME=\/usr\/local\/openjdk-8' /etc/profile

Redis 批量删除

redis-cli -h 172.17.48.144 -p 63791 -n 5 keys *BEAU*|xargs redis-cli -p 63791 -h 172.17.48.144 -n 5 del

删除大批量数据

ls|xargs -n 10 rm -rf ls

删除 3 天以前文件

upload_path=/tmp/upload
download_path=/tmp/download
find $upload_path -mtime +3|xargs -d '\n' rm -rf {} \;
find $download_path -mtime +3|xargs -d '\n' rm -rf {} \;

追加文件

cat >> ~/.bashrc << EOF
export JAVA_HOME=/opt/path/java/jdk1.8.0_152
export PATH=$JAVA_HOME/bin:$PATH:.
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.
EOF

觉得有用的佬可以点个赞,打赏一下也是可以的哈哈


📌 转载信息
原作者:
zzzxdm
转载时间:
2026/1/9 10:07:17

1. 已锁单未排产的 su7 车主,可以转单成新一代 su7, 保留原购车的所有权益(包含购置税补贴),并享受新一代 su7 首发的所有权益。优先排产,优先级大于小订用户
2. 小订 1000 ,未锁单可以随时退。锁单成功,享受优先排产,提车时赠送 699 的智能双表盘。
3. 全系标配激光雷达和 4D 毫米波(标准版涨价了,还是车主自己买单)
4. 全新内饰,直播的描述说有坐到车内 BBA 的感觉了。
5. 全系 800V 碳化硅高压平台(其他国产品牌好像都是全系了,这算是跟上友商节奏了)
6. 全系 后轮宽体轮胎
7. 续航有点东西,Pro 版本做到了 902KM
8. 全系电机,电控,底盘升级
。。。还有很多

我之前看中的是 Max ,这样看下来,如果 Pro 标配尾翼,我想买 Pro 版本了。