包含关键字 typecho 的文章

两个月前,我试着想用 ChatGPT 帮我写篇文章《eBPF 介绍》,结果错误百出,导致我又要从头改一遍,从那天我觉得 ChatGPT 生成的内容完全不靠谱,所以,从那天开始我说我不会再用 ChatGPT 来写文章(这篇文章不是由 ChatGPT 生成),因为,在试过一段时间后,我对 ChatGTP 有基于如下的认识:

  1. ChatGPT 不是基于事实,是基于语言模型的,事实对他来说不重要,对他重要的是他能读懂你的问题,并按照一定的套路回答你的问题。
  2. 因为是基于套路的回答,所以,他并不能保证内容是对的,他的目标是找到漂亮的精彩的套路,于是,你会发现,他的内容组织能力和表述还不错,但是只要你认真玩上一段时间,你会发现,ChatGPT 那些表述的套路其实也比较平常一般。它的很多回答其实都不深,只能在表面上。就像 Github 的 Copilot 一样,写不了什么高级的代码,只能帮你写一些常规格式化的代码(当然,这也够了)
ChatGPT 就是一个语言模型,如果不给他足够的数据和信息,它基本就是在胡编乱造

所以,基于上面这两个点认识,以发展的眼光来看问题,我觉得 ChatGPT 这类的 AI 可以成为一个小助理,他的确可以干掉那些初级的脑力工作者,但是,还干不掉专业的人士,这个我估计未来也很难,不过,这也很帅了,因为大量普通的工作的确也很让人费时间和精力,但是有个前提条件——就是ChatGPT所产生的内容必需是真实可靠的,没有这个前提条件的话,那就什么用也没有了

今天,我想从另外一个角度来谈谈 ChatGPT,尤其是我在Youtube上看完了微软的发布会《Introducing your copilot for the web: AI-powered Bing and Microsoft Edge 》,才真正意识到Google 的市值为什么会掉了1000亿美元,是的,谷歌的搜索引擎的霸主位置受到了前所未有的挑战……

我们先来分析一下搜索引擎解决了什么样的用户问题,在我看来搜索引擎解决了如下的问题:

  • 知识或信息索引。查新闻,查股票,查历史,查文档,找答案……
  • 找服务提供商。找卖东西的电商,找帮你修东西的服务,找软件……
  • 信息的准确和可靠。搜索引擎的rank算法保证了最准确、最有用、最权威的信息出现在最前面……(作恶的百度不在此列)

基本上就是上面这几个,搜索引擎在上面这几件事上作的很好,但是,还是有一些东西搜索引擎做的并不好,如:

  • 搜索引擎是基于关键词的,不是基于语义的。所以,搜索引擎并不知道你的真实需求,因此,你会不可避免地要干下面的事,
    • 你经常要不断地增加或调整不同的关键词来提高查询信息的准确度……
    • 你经常要在你查找的信息中进行二次或多次过滤和筛选……
  • 搜索引擎是只能呈现内容,无法解读内容。所以,你找到相关的链接后,你还要花大量的时间来阅读理解,经常性的你不可避免的要干下面的事:
    • 打开一个链接,读到了一大半后,发现你要的内容不在其中,只能关掉再打开一个……
    • 你想要的内容是在的,但是太晦涩,看不懂,太费解,你要找小白友好的版本……
    • 你想要的内容不完整,你需要在很多个链接和网页上做拼图游戏……
    • 内容是无法结构化的展示的,你搜到的东西全都是碎片信息
  • 搜索引擎没有上下文关联,两次搜索是没有关系的。也就是说,人知道的越多,问题也就越多,所以,我们经常会面临下面的问题:
    • 随着我了解的越多,我的信息搜索的会出现分支,这个分支只有我自己的管理,搜索引擎是不关心的,导致我每次都相当于从头开始……
    • 你做计划的时候,你需要从多个不同的搜索中获取你想要的东西,最终组合成你定制化的东西,比如做旅游计划……

好了,我们知道,ChatGPT 这类的技术主要是用来根据用户的需求来按一定的套路来“生成内容”的,只是其中的内容并不怎么可靠,那么,如果把搜索引擎里靠谱的内容交给 ChatGPT 呢?那么,这会是一个多么强大的搜索引擎啊,完全就是下一代的搜索引擎,上面的那些问题完全都可以解决了:

  • 你可以打一段话给搜索引擎,ChatGPT 是读得懂语义的。
  • 因为知道语义,于是在众多搜过结果中,他更知道哪些是你想要的内容。
  • ChatGPT 可以帮你生成 TL;DR,把长文中的要求总结出来形成更易读的短文
  • ChatGPT 可以帮你整理内容,在多个网页中帮你整合和结构化内容
  • ChatGPT 可以有上下文对话,你可以让他帮你不断通过更多的关键词搜索信息,并在同一个主题下生成、组织和优化内容

一旦 ChatGPT 利用上了搜索引擎内容准确和靠谱的优势,那么,ChatGPT 的能力就完全被释放出来了,所以,带 ChatGPT 的搜索引擎,就是真正的“如虎添翼”!

因此,微软的 Bing + ChatGPT,成为了 Google 有史以来最大的挑战者,我感觉——所有跟信息或是文字处理相关的软件应用和服务,都会因为 ChatGPT 而且全部重新洗一次牌的,这应该会是新一轮的技术革命……Copilot 一定会成为下一代软件和应用的标配!

(全文完)

(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)

好烂啊有点差凑合看看还不错很精彩 (255 人打了分,平均分: 4.52 )

Loading...

这两天技术圈里热议的一件事就是Amazon的流媒体平台Prime Video在2023年3月22日发布了一篇技术博客《规模化Prime Video的音视频监控服务,成本降低90%》,副标题:“从分布式微服务架构到单体应用程序的转变有助于实现更高的规模、弹性和降低成本”,有人把这篇文章在五一期间转到了reddithacker news 上,在Reddit上热议。这种话题与业内推崇的微服务架构形成了鲜明的对比。从“微服务架构”转“单体架构”,还是Amazon干的,这个话题足够劲爆。然后DHH在刚喷完Typescript后继续发文《即便是亚马逊也无法理解Servless或微服务》,继续抨击微服务架构,于是,瞬间引爆技术圈,登上技术圈热搜。

今天上午有好几个朋友在微信里转了三篇文章给我,如下所示:

看看这些标题就知道这些文章要的是流量而不是好好写篇文章。看到第二篇,你还真当 Prime Video 就是 Amazon 的全部么?然后,再看看这些文章后面的跟风评论,我觉得有 80%的人只看标题,而且是连原文都不看的。所以,我想我得写篇文章了……

原文解读

要认清这个问题首先是要认认真真读一读原文,Amazon Prime Video 技术团队的这篇文章并不难读,也没有太多的技术细节,但核心意思如下:

1)这个系统是一个监控系统,用于监控数据千条用户的点播视频流。主要是监控整个视频流运作的质量和效果(比如:视频损坏或是音频不同步等问题),这个监控主要是处理视频帧,所以,他们有一个微服务主要是用来把视频拆分成帧,并临时存在 S3 上,就是下图中的 Media Conversion 服务。

2)为了快速搭建系统,Prime Video团队使用了Serverless 架构,也就是著名的 AWS Lambda 和 AWS Step Functions。前置 Lambda 用来做用户请求的网关,Step Function 用来做监控(探测器),有问题后,就发 SNS 上,Step Function 从 S3 获取 Media Conversion 的数据,然后把运行结果再汇总给一个后置的 Lambda ,并存在 S3 上。

整个架构看上去非常简单 ,一点也不复杂,而且使用了 Serverless 的架构,一点服务器的影子都看不见。实话实说,这样的开发不香吗?我觉得很香啊,方便快捷,完全不理那些无聊的基础设施,直接把代码转成服务,然后用 AWS 的 Lamda + Step Function + SNS + S3 分分钟就搭出一个有模有样的监控系统了,哪里不好了?!

但是他们遇到了一个比较大的问题,就是 AWS Step Function 的伸缩问题,从文章中我看到了两个问题(注意前方高能):

  1. 需要很多很多的并发的 AWS Step Function ,于是达到了帐户的 hard limit。
  2. AWS Step Function 按状态转换收费,所以,贵得受不了了。

注意,这里有两个关键点:1)帐户对 Step Function 有限制,2)Step Function 太贵了用不起

然后,Prime Video 的团队开始解决问题,下面是解决的手段:

1) 把 Media Conversion  和 Step Function 全部写在一个程序里,Media Conversion 跟 Step Function 里的东西通过内存通信,不再走S3了。结果汇总到一个线程中,然后写到 S3.

2)把上面这个单体架构进行分布式部署,还是用之前的 AWS Lambda 来做入门调度。

EC2 的水平扩展没有限制,而且你想买多少 CPU/MEM 的机器由你说了算,而这些视频转码,监控分析的功能感觉就不复杂,本来就应该写在一起,这么做不更香吗?当然更香,比前面的 Serverless 的确更香,因为如下的几个原因:

  1. 不再受 Step Function 的限制了,技术在自己手里,有更大的自由度。
  2. 没有昂贵的 Step Function 云成本的确变得更低了,如果你把 Lambda 换成 Nginx 或 Spring Gateway 或是我司的 Easegress,你把 S3 换成 MinIO,你把 SNS 换成 Kafka,你的成本 还能再低。

独立思考

好了,原文解读完了,你有自己的独立思考了吗?下面是我的独立思考,供你参考:

1)AWS 的 Serverless 也好, 微服务也好,单体也好,在合适的场景也都很香。这就跟汽车一样,跑车,货车,越野车各有各的场景,你用跑车拉货,还是用货车泡妞都不是一个很好的决定。

2)这篇文章中的这个例子中的业务太过简单了,本来就是一两个服务就可以干完的事。就是一个转码加分析的事,要分开的话,就两个微服务就好了(一个转码一个分析),做成流式的。如果不想分,合在一起也没问题了,这个粒度是微服务没毛病。微服务的划分有好些原则,我这里只罗列几个比较重要的原则:

  • 边界上下文。微服务的粒度不能大于领域驱动里的 Bounded Context(具体是什么 大家自行 Google),也就是一个业务域。
  • 单一职责,高内聚,低耦合。把因为相同原因变化的合在一起(内聚),把不同原因变化的分开(解耦)
  • 事务和一致性。对于两个重度依赖的功能,需要完成一个事务和要保证强一致性的,最好不要拆开,要放在一起。
  • 跟组织架构匹配。把同一个团队的东西放在一起,不同团队的分开。

3)Prime Video 遇到的问题不是技术问题,而是 AWS  Step Function 处理能力不足,而且收费还很贵的问题。这个是 AWS 的产品问题,不是技术问题。或者说,这个是Prime Video滥用了Step Function的问题(本来这种大量的数据分析处理就不适合Step Function)。所以,大家不要用一个产品问题来得到微服务架构有问题的结论,这个没有因果关系。试问,如果 Step Funciton 可以无限扩展,性能也很好,而且白菜价,那么 Prime Video 团队还会有动力改成单体吗?他们不会反过来吹爆 Serverless 吗?

4)Prime Video 跟 AWS 是两个独立核算的公司,就像 Amazon 的电商和 AWS 一样,也是两个公司。Amazon 的电商和 AWS 对服务化或是微服务架构的理解和运维,我个人认为这个世界上再也找不到另外一家公司了,包括 Google 或 Microsoft。你有空可以看看本站以前的这篇文章《Steve Yegg对Amazon和Google平台的吐槽》你会了解的更多。

5)Prime Video 这个案例本质上是“下云”,下了 AWS Serverless 的云。云上的成本就是高,一个是费用问题,另一个是被锁定的问题。Prime Video 团队应该很庆幸这个监控系统并不复杂,重写起来也很快,所以,可以很快使用一个更传统的“服务化”+“云计算”的分布式架构,不然,就得像 DHH 那样咬牙下云——《Why We’re Leaving the Cloud》(他们的 SRE 的这篇博文 Our Cloud Spend in 2022说明了下云的困难和节约了多少成本)

后记

最后让我做个我自己的广告。我在过去几年的创业中,帮助了很多公司解决了这些 分布式,微服务,云原生以及云计算成本的问题,如果你也有类似问题。欢迎,跟我联系:[email protected]

另外,我们今年发布了一个平台 MegaEase Cloud,就是想让用户在不失去云计算体验的同时,通过自建高可用基础架构的方式来获得更低的成本(至少降 50%的云计算成本)。目前可以降低成本的方式:

  1. 基础软件:通过开源软件自建,
  2. 内容分发:MinIO + Cloudflare 的免费 CDN,
  3. 马上准备发布的直接与底层IDC合作的廉价GPU计算资源…

欢迎大家试用。

如何访问

注:这两个区完全独立,帐号不互通。因为网络的不可抗力,千万不要跨区使用。

产品演示

介绍文章

 

(全文完)

(转载本站文章请注明作者和出处 酷 壳 – CoolShell ,请勿用于任何商业用途)

好烂啊有点差凑合看看还不错很精彩 (647 人打了分,平均分: 4.32 )

Loading...

这里记录每周值得分享的科技内容,周五发布。


本杂志开源,欢迎投稿。另有《谁在招人》服务,发布程序员招聘信息。合作请邮件联系[email protected])。

封面图

武汉首座电梯升降桥最近建成开放。因为上游有船厂,所以大桥有四根巨大的电梯柱,用来升起桥面,让船通过。(via

预测是新的互联网热点

大家大概想不到,美国互联网的热点,现在不是 AI 网站,而是一种全新的网站,叫做"预测市场"(prediction market)。

这类网站像雨后春笋一样,每天都在冒出来。最有名的预测市场,目前是 PolyMarket

预测市场的用途,就是预测各种各样的事情。以 PolyMarket 为例,首页顶部就是各种预测的分类。

热门事件、突发事件、最新预测、政治、体育......

只要是你能想到的事情,它都提供预测

以上周末为例,首页热门预测如下(上图)。

  • 《时代》杂志的年度人物是谁?
  • 《时代》杂志年度人物名单会泄露吗?
  • 美联储一月份的决定是什么?
  • OpenAI 下一次的大模型发布是哪一天?

你随便选一个,点进去就能看到,各种情况的概率。

上图预测的是,2025年12月5日至12日期间,马斯克会发多少条推文。

可以看到,概率最高的情况是440条~450条,概率33%,概率最低的情况是400条~419条,概率1%。

正是因为对于几乎任何问题,它都有实时的详细预测,美国人现在已经不怎么看民调了,改成看这种预测网站了。因为民调的抽样方法和样本大小,总是有局限的,反而是预测网站更反映市场的真实看法。

你可能会问,这些预测结果怎么产生?如何确保准确?

答案很简单,结果来自于用户的下注。

你看好哪一种情况,就可以对它下注。看好的人多,这种情况对应的概率就会上升,反之下降。

实质上,它的每一个预测都是一支股票,股价就是它的概率,1%的概率就是股价0.01元,100%的概率就是股价1元。

举例来说,某种情况的当前概率是2%,那么相当于0.02元。你看好这种情况,假定就花了100元买入。

结果,正如你的预测,它变成了现实,概率上升为100%,价格就变成了1元,相比你的买入价,整整上涨了50倍。于是,你投入的100元就变成了5000元。

反之,你预测错了,这个结果没有实现,概率变为0%,也就是0元,你投入的100元将一分都收不回来。

最近,美国的一条热门新闻就是,一个男子在 PolyMarket 上,对一个2%的小概率事件投入3000美元。结果,预测准确,他收回了12.5万美元。

为了方便世界各地的人参与,也是为了保证匿名,这种预测网站都采用稳定币交易。

所以,它的本质就是一个巨大的彩票市场,允许用户买卖自己最感兴趣、最熟悉的事件,这是它快速流行起来的根本原因。参与的人多了以后,反过来提高了预测的准确性。

我觉得,它的前景不可限量,一定会火爆的井喷式发展,传统彩票可能会被它彻底淘汰。

它把任何不确定的事情,都变成了彩票,实时量化了每一种可能性的概率,并且提供了金钱翻倍的途径。这一方面很有参考价值,可以用来判断未来情况,另一方面也非常有娱乐性和刺激性。

国产 Nano Banana Pro 的图片幻灯片生成

上个月,谷歌发布了新一代图像编辑模型 Nano Banana Pro(其实就是 Gemini 3 Pro 的图像分支)。

有一个功能引起了轰动:无论多么枯燥的文字,都能变成有趣的图片,从"读文"变成"读图"。

我当时就想,国产模型一定会马上跟进。

果然,昨天打开秘塔 AI,就看到他们发了这个功能完全对标 Nano Banana Pro 以及 NotebookLM,而且还加入了自己的特色----讲解。

你点击"上传文件"(上图),上传各种资料(可以上传多篇),它就会自动创建一个知识库,输出内容的 AI 总结。这时,还会显示一个"给我讲讲"按钮。

上图是我写的一篇 JS 语法点 Promise 的教程,点击"给我讲讲"就会生成图片幻灯片 + 讲解。

大家可以去它们的官网 metaso.cn (手机 App 同名)试试看,这个功能挺好玩的,操作零门槛,关键是它免费(有赠送的积分)。

除了上传文件,你也可以直接搜索某个主题,再点击下方的"生成幻灯片"按钮。这时就会有"图片幻灯片"选项,并有20多种风格可选,还支持自定义。

科技动态

1、步行环游世界

上个世纪90年代的一天,一个英国青年在酒吧里随口说,他可以从南美洲最南端一路走到英国。他的朋友都不信。

他就跟朋友打赌,他能做到。1998年,他正式从智利最南端开始步行,那一年他29岁。

27年过去了,他已经56岁了,依然在路上。

好消息是,他已经接近行程的尾段,预计将于2026年9月到达终点英国。

下面就是他的路线图,从南美洲最南端到北美洲最北端,再到亚洲和欧洲,最后是英国。

整个行程中,他只能步行或者游泳,不能使用任何交通工具。最难的一段就是北美洲与俄罗斯之间的白令海峡,为了不坐船,他是在冬天从海冰上爬过去的。

这27年中,他也不是每天都在走,有时因为各种原因,会离开一段日子,然后再回来接着走。

他说,依靠个人的力量不可能完成这样的行程,留不开家人的支持、陌生人的友善,以及赞助商的帮助。

至于是什么力量支撑他坚持走了近30年?他说:"你需要看看真实的世界,以及生活在其中的人们,这将是你所能接受的最好的教育之一。"

2、六臂机器人

美的公司展示一个六臂机器人,将用于无锡工厂的生产线。

它可以六只手同时执行三项任务。那样的话,一个机器人就相当于三个工人了。

3、手摇洗衣机

一位前戴森公司的工程师,为不发达地区发明了一种手摇洗衣机。

据介绍,这种洗衣机不需要电,只要手摇几分钟,就能洗净5公斤衣物,并且节省一半的水。

如果它真的有效,我有一个建议,就是把手摇改成脚踏车,只要踩5分钟踏板,就能洗一筒衣服。

文章

1、程序员为自己的工具命名时的彻底迷失(英文)

本文批评很多程序员为软件起名时,尽起一些烂七八糟的名字,根本看不出软件的用途,建议软件名称应该跟用途有相关性。

2、解读斯诺登文件(英文)

这篇文章详细分析了2013年斯诺登泄漏的文件,文章第一部分就是分析对北方工业公司的情报收集,美国的监控令人叹为观止。

3、从文本到词元(英文)

一篇科普文章,通俗地介绍搜索引擎如何将查询的文本转换成标准化的词元(token)。

4、大模型构建 HTML 工具的实用方法(英文)

著名程序员 Simon Willison 的长文,总结他使用大模型生成网页应用的经验。

5、GraphQL 蜜月期已结束(英文)

作者认为,GraphQL 解决的问题远比人们想象的小众,而且可以通过其他方式解决,这项技术最终往往弊大于利。

6、git add -p 的解释(英文)

本文介绍 git add -p 命令。它会显示一个互动界面,让用户逐个确认每个文件的变动,是否要加入暂存区。

工具

1、Cosmic

上周,Cosmic 1.0版正式发布了。它是一个全新的 Linux 桌面,美观且功能强大,为用户提供了 Gnome 和 KDE 之外的另一个选择。

2、Keyden

macOS 菜单栏的开源 TOTP 双因素认证器,密钥加密存储在 macOS Keychain。(@tasselx 投稿)

3、WeMD

开源的 Markdown 微信公众号编辑器。(@tenngoxars 投稿)

4、starling-speak

文本朗读网站,支持多种语言,带有录音功能。(@Keldon-Pro 投稿)

5、shift

一个基于 WebAssembly 的在线代码编辑器,支持直接在网页运行 Python、Lua、Ruby 等语言。(@hubenchang0515 投稿)

6、EasyImg

基于 Nuxt 4 构建的个人图床,丰富的后台配置。(@chaos-zhu 投稿)

7、Go-WXPush

Go 语言开发的微信消息推送服务,提供了一个简单的 API 消息推送接口。代码开源,每天10万次推送额度,个人用不完。(@hezhizheng 投稿)

8、ZeroLaunch-rs

Windows 应用启动器,拼音模糊匹配,基于 Rust + Tauri + Vue.js。(@ghost-him 投稿)

9、MrRSS

跨平台的开源桌面 RSS 阅读器,支持自动翻译、自动总结、新订阅源发现。(@ch3ny4ng 投稿)

10、PVE Touch

为移动设备优化的 Proxmox VE 管理界面,方便通过手机管理虚拟机。(@hanxi 投稿)

AI 相关

1、Disco

谷歌实验室推出的实验性 AI 浏览器,完全跳过网页搜索,目前需要排队等待名额。

2、Flowers

开源的浏览器 AI 助手插件,提供网页翻译、问答、笔记等功能。(@snailfrying 投稿)

3、DeepAudit

开源的代码审计平台,通过智能体实现漏洞挖掘和自动化沙箱 PoC 验证,支持 ollama 私有部署模型,代码可不出内网。(@lintsinghua 投稿)

资源

1、生命的尺寸

这个网站用图形展示各种生命体的大小比较,从 DNA 一直到蓝鲸。

2、写一个你自己的 C 语言编译器(Build Your Own Lisp)

一本面向初学者的免费英文电子书,介绍怎么用 C 语言写编译器,以 Lisp 语言的编译器为例。

3、A Soft Murmur

一个背景音网站,可以开关不同的音效,并调节它们的音量。

图片

1、13个圆画出动物

一个艺术家使用13个圆,画出各种动物。

猫头鹰

兔子

猴子

文摘

1、Claude Opus 4.5 是第一款让我真正担心自己工作会丢掉的大模型

Claude Opus 4.5 真是完全不同于其他模型。还没用过的人根本无法想象未来两三年会发生什么,明年可能就是最终的转折点。

我不知道接下来该如何适应。当然,我可以整天看着 Opus 帮我工作,偶尔出点小问题再干预一下,但再过一段日子连这些都不需要了呢?

编码问题基本上已经解决了,接下来像系统设计、安全之类的问题也会迎刃而解。我估计再过两三个版本,80%的技术人员就基本没用了。当然,公司还需要一些时间来适应,但他们肯定会想方设法尽快摆脱我们。

虽然我很喜欢 AI 这项技术,但一想到这一切最终会走向何方,我就感到难过。

2、为什么学习物理学

(本文摘自理查德·费曼于1963年6月在里约热内卢举行的美洲物理教育会议上发表的演讲。费曼是加州理工学院理论物理学教授。)

我们应该教授物理学,这有五个原因。

(1)物理是一门基础科学,应用于工程学、化学和生物学等各种技术领域。

物理是研究自然界的科学,或者说是认识自然界的科学,它告诉我们事物是如何运作的,以及人类在当前和未来的技术中发明的各种设备是如何工作的。因此,懂物理的人应对本行业出现的技术问题会很有用。

(2)物理教会你如何动手做事情。它教授许多操纵事物的技巧,以及测量和计算技巧,这些技巧的应用范围比特定研究领域要广泛得多。

(3)物理作为一门科学,对许多人来说,是一种极大的乐趣。

科学教育培养出来的科学家,不仅为工业发展和知识发展做出贡献,同时也参与了我们这个时代的伟大冒险,从中获得巨大的乐趣。

即使一个人没有成为一名专业科学家,研究自然也是为了欣赏自然的奇妙和美丽。这种对自然的了解也给人一种稳定和现实的感觉,并驱散了许多恐惧和迷信。

(4)物理教会人们如何认识事物,帮助你质疑很多事情。质疑和自由思想的价值,不仅对科学发展,而且对其他各个领域,都显而易见。

科学教导我们如何认识事物、什么是未知事物、事物被认识到什么程度、如何处理怀疑和不确定性、证据规则是什么、如何思考事物以便做出判断、如何区分真理与欺诈。这些无疑是教授科学,特别是教授物理的重要收获。

(5)在学习科学的过程中,你会学会如何试错,培养发明创造和自由探索的精神,这种精神的价值远远超出了科学本身。

人们会学会问自己:"有没有更好的方法 ?"我们必须想出一些新的技巧或方法,以改进这项技术。这种想法是许多思想、发明创造以及各种人类进步的源泉。

言论

1、

为什么我们有两个鼻孔,而不是一个大洞?

因为肺部持续需要空气,两个鼻孔可以交替工作,让鼻子的一侧得到休息。

-- 美国《大众科学》

2、

报社招我去当撰稿人,我以为是去写稿,结果却是以极低的薪水让我编辑 AI 生成的文案草稿,理由是"大部分工作已经完成了"。

这让我深受打击,我曾经觉得自己很有价值,受人重视,对未来充满希望,渴望拥有辉煌的职业生涯,现在却只能修改 AI 生成的文字。

-- 一位自由撰稿人

3、

SaaS 行业将会萎缩,尤其是那些功能简单的 SaaS,因为企业现在可以用 AI 快速生成内部服务。

-- 《AI 正在蚕食 SaaS》

4、

我发现,中文不喜欢直接说 True,更倾向说 !False。比如,英文说"很好",中文说"不坏",英文说"对的",中文说"没错",英文说"正常",中文说"没问题"。

中文更喜欢双重否定"否定词+否定词",这种表达方式增加了模糊性(含糊其辞)和灵活性(模棱两可),创造了回旋余地,避免了肯定答复导致的态度明确、归类迅速、立场鲜明。

-- 《为什么中文拒绝说 true》

往年回顾

你可能是一个 NPC(#331)

新基建的政策选择(#281)

互联网公司需要多少员工?(#231)

移动支付应该怎么设计?(#181)

(完)

一、

最近,我写了好几篇 AI 教程,就收到留言,要我谈谈我自己的 AI 编程。


今天就来分享我的 AI 编程,也就是大家说的"氛围编程"(vibe coding)。

声明一下,我只是 AI 初级用户,不是高手。除了不想藏私,更多是为了抛砖引玉,跟大家交流。

二、

平时,我很少用 AI 生成新项目。因为每次看 AI 产出的代码,我总觉得那是别人的代码,不是我的。

如果整个项目都用 AI 生成,潜意识里,我感觉不到那是自己的项目。我的习惯是,更愿意自己写新项目的主体代码。

我主要把 AI 用在别人的项目和历史遗留代码,这可以避免读懂他人代码的巨大时间成本。

就拿历史遗留代码为例,(1)很多时候没有足够的文档,也没有作者的说明,(2)技术栈和工具库都过时了,读懂代码还要翻找以前的标准,(3)最极端的情况下,只有构建产物,没有源代码,根本无法着手。

AI 简直就是这类代码的救星,再古老的代码,它都能读懂和修改,甚至还能对构建产物进行逆向工程。

下面就是我怎么用 AI 处理历史遗留代码,平时我基本就是这样来 AI 编程。

三、

我的 AI 编程工具是 Claude Code。因为命令行对我更方便,也容易跟其他工具集成。

我使用的 AI 模型,大部分时间是国产的 MiniMax M2。我测过它的功能,相当不错,能够满足需要,它的排名也很靠前。

另外,它有包月价(29元人民币),属于最便宜的编程模型之一,可以放心大量使用,反复试错。要是改用大家都趋之若鹜的 Claude 系列模型,20美元的 Pro 套餐不够用,200美元的 Max 套餐又太贵。

MiniMax 接入 Claude Code 的方法,参考我的这篇教程

四、

就在我写这篇文章的时候,MiniMax 本周进行了一次大升级,M2 模型升级到了 M2.1

因为跟自己相关,我特别关注这次升级。

根据官方的发布声明,这次升级特别加强了"多语言编程能力",对于常用编程语言(Rust、Java、Golang、C++、Kotlin、Objective-C、TypeScript、JavaScript 等)有专门强化。

它的 WebDev 与 AppDev 开发能力因此有大幅提升,可以用来开发复杂的 Web 应用和 Android/iOS 的原生 App。

"在软件工程相关场景的核心榜单上,MiniMax M2.1 相比于 M2 有了显著的提升,尤其是在多语言场景上,超过 Claude Sonnet 4.5 和 Gemini 3 Pro,并接近 Claude Opus 4.5。"

根据上面这段介绍,它的编程能力,超出或接近了国外旗舰模型。

这个模型已经上线了,现在就能用。那么,这篇文章正好测一下,官方的介绍是否准确,它的 Web 开发能力到底有没有变强。

至于价格,跟原来一样。但是,官方表示"响应速度显著提升,Token 消耗明显下降",也算变相降价了。

M2.1 接入 Claude Code,我的参数如下。

五、

我这次选择的历史遗留项目是 wechat-format,一个 Web 应用,将 Markdown 文本转为微信公众号的样式。

上图左侧的文本框输入 Markdown 文本,右侧立刻显示自动渲染的结果,可以直接复制到微信公众号的编辑器。

它非常好用,大家可以去试试看。我的公众号现在就用它做排版,效果不错(下图)。

问题是,原作者六年前就放弃了,这个项目不再更新了。我看过源码,它用的是老版本的 Vue.js 和 CodeMirror 编辑器,没有任何文档和说明,还经过了编译工具的处理,注释都删掉了。

如果不熟悉它的技术栈,想要修改这些代码是很困难的,可能要投入大量时间。

那么废话少说,直接让 AI 上场,把这些代码交给 MiniMax M2.1 模型。

六、

接手老项目的第一步,是对项目进行一个总体的了解。

我首先会让 AI 生成项目概述。大家可以跟着一起做,跟我的结果相对照。


# 克隆代码库
$ git clone [email protected]:ruanyf/wechat-format.git

# 进入项目目录
$ cd wechat-format

# 启动 Claude Code
$ claude-minimax

上面的claude-minimax是我的自定义命令,用来在 Claude Code 里面调用 MiniMax 模型(参见教程)。

输入"生成这个仓库的概述"。

AI 很快就给出了详细说明,包括项目的总体介绍、核心功能、技术栈和文件结构(下图)。

有了总体了解以后,我会让 AI 解释主要脚本文件的代码。

【提示词】解释 index.html 文件的代码

它会给出代码结构和页面布局(上图),然后是 JS 脚本加载顺序和 Vue 应用逻辑,甚至包括了流程图(下图),这可是我没想到的。

做完这一步,代码库的大致情况应该就相当了解了,而 AI 花费的时间不到一分钟。

七、

既然这个模型号称有"多语言编程能力",我就让它把项目语言从 JavaScript 改成 TypeScript。

对于很多老项目来说,这也是常见需求,难度不低。

它先制定了迁移计划,然后生成了 tsconfig.json 和 types.d.ts,并逐个将 JS 文件转为对应的 TS 文件(下图)。

修改完成后,它试着运行这个应用,发现有报错(下图),于是又逐个解决错误。

最终,迁移完成,它给出了任务总结(下图)。

我在浏览器运行这个应用,遇到了两个报错:CodeMirror 和 FuriganaMD 未定义。

我把报错信息提交给模型,它很快修改了代码,这次就顺利在浏览器跑起来了。

至此,这个多年前的 JavaScript 应用就成功改成了 TypeScript 应用,并且所有内部对象都有了完整的类型定义。

你还可以接着添加单元测试,这里就省略了。

八、

简单的测试就到此为止,我目前的 AI 编程大概就到这个程度,用 AI 来解释和修改代码。我也建议大家,以后遇到历史遗留代码,一律先交给 AI。

虽然这个测试比较简单,不足以考验 MiniMax M2.1 的能力上限,但如果人工来做上面这些事情,可能一个工作日还搞不定,但是它只需要十几分钟。

总体上,我对它的表现比较满意。大家都看到了,我的提示词很简单,就是一句话,但是它正确理解了意图,如果一次没有成功,最多再修改一两次就正确了。

而且,就像发布说明说的一样,它运行速度很快,思考过程和生成过程最多也就两三分钟,不像有的模型要等很久。

另外,不管什么操作,它都会给出详细的讲解和代码注释。

总之,就我测试的情况来看,这个模型的 Web 开发能力确实很不错,可以用于实际工作。

最后,说一点题外话。著名开发者 Simon Willison 最近说,评测大模型越来越困难,"我识别不出两个模型之间的实质性差异",因为主流的新模型都已经足够强大,足以解决常见任务,只有不断升级评测的难度,才能测出它们的强弱。

这意味着,对于普通程序员的常见编程任务,不同模型不会构成重大差异,没必要迷信国外的旗舰模型,国产模型就很好用。

(完)

这里记录每周值得分享的科技内容,周五发布。([通知] 下周元旦假期,周刊休息。


本杂志开源,欢迎投稿。另有《谁在招人》服务,发布程序员招聘信息。合作请邮件联系[email protected])。

封面图

哈尔滨19米大雪人,完工之前的样子。(via cgtn@instagram

《硅谷钢铁侠》摘录

最近,我读了一本十年前的马斯克传记《硅谷钢铁侠》(中信出版社,2016)。

按理说,这本书已经过时了,这十年马斯克发生太多事情了。

我是睡觉前随手拿起来,翻了几页,看得津津有味,就读完了。

这本是马斯克的授权传记,他本人亲自接受了采访,还挺有料的。而且,因为我已经知道后续的发展,所以读到十年前的采访,反而有更多启发。

他的人生确实传奇,白手起家,家里给的最大帮助就是从南非移民到加拿大,后面都是自己奋斗出来的。

他创立了 Paypal,然后把卖掉它的钱拿来又创办了三家公司:特斯拉、SpaceX 和 SolarCity。

这太疯狂了,他一个外行同时进入了三个不同的行业----电动汽车、宇宙航天和太阳能----这些行业都刚萌芽,没有任何个人创业成功的先例。

更疯狂的是,他居然把这三家公司都做成了,而且都做到了世界第一(SolarCity 后并入特斯拉),他也因此变成了世界首富,你说神奇不神奇。

读完全书,我的最大感受是,还是要动手做事,没准真能做成。想他人不敢想,做他人不敢做。即使最狂野的梦想,只要全心投入,用力去做,也是有可能成功的。

下面就是我的一点摘录。

(1)

特斯拉最艰难的时候,非常接近于破产倒闭。

马斯克对外宣传,特斯拉是一家汽车公司,但实际上,他们只是一群年轻人租了一间大厂房,更像是在捣鼓汽车的大型实验室。

(2)

马斯克非常不理解,为什么有人设计了车灯开关。

他说:"真是多此一举。天黑时车灯自动打开,就这么简单。"

(3)

特斯拉的第一版设计稿,因为设计师没想好门把手的形状,就没画上去。

没想到马斯克很喜欢这个没有门把手的车型,就决定门把手应该在有需要的时候自动弹出。

(4)

马斯克认为,未来会有人口危机,主张多生孩子。

他认真考虑了,怎么在特斯拉后排安装婴儿座椅。传统的车门设计,使得把婴儿座椅和小孩安置在后排非常不方便,所以特斯特的车门设计采用了"鹰翼门"。

(5)

特斯拉的第一款车型是跑车,但没有大量生产。真正大量生产的第一款车型是 Model S,最初的名字是 Model Sedan。

Sedan 这个词的意思就是轿车,用来跟跑车相区别。但是马斯克认为这个词太平淡了。英国人习惯称轿车为 Saloon,这听上一样不伦不类。最后,就索性只保留第一个字母,称为 Model S。

(6)

马斯克对员工的要求是,全情投入你的工作,并把事情搞定。

不要等待上级的指导和详细指示,也不要等待别人的反馈意见,你要主动想办法把工作完成。

(7)

他认为,一个人独立工作,是最佳的工作状态。

一个人不需要开会、不需要与谁达成共识,也不需要在项目中帮助其他人。你一个人就可以持续地工作、工作、再工作。

(8)

特斯拉员工最害怕的事情,就是向马斯克申请额外的时间或者经费。

你一定要事先做好详细准备,跟他解释为什么必须招更多的人,以及需要追加的时间和资金预算。如果有招聘目标,还要准备那个人的简历。

(9)

如果你一上来就告诉马斯克,某件事情做不了,他会马上把你轰出办公室,甚至可能当场解雇你。

在马斯克看来,某件事办不成的唯一原因,就是违背了基本的物理原理。但是即使这样,你也必须做足了功课,深入每一个技术环节,向他解释为什么行不通。

(10)

马斯克要求员工,项目没完成之前,周六和周日依然要努力工作,并睡在桌子底下。

有些人反对,表示员工也需要休息,有时间陪陪家人。

马斯克说:"我们破产之后,你们会有大量时间陪家人。"

(11)

马斯克有自己计算时间价值的方法。他预期10年后,公司的日营收可以达到1000万美元,所以进度每拖延一天,就相当于多损失1000万美元。

(12)

马斯克的根本想法是改变这个世界,他总是喜欢谈论人类的生存问题。

早在他开始创业的时候,就已经得出了结论,那就是生命是短暂的。如果你真的意识到这一点,你就会知道,活着的时候工作越努力越好。

科技动态

1、黑色圣诞卡

爱沙尼亚交通警察向800多名危险驾驶者,寄送了黑色圣诞卡,提醒他们新的一年必须安全驾驶。

这些人都是过去违反交通规则的司机,最常见的问题是超速和不系安全带。

圣诞卡上是一起交通事故的现场,黑漆漆的深夜,天空中有明亮的月亮,公路上有交通事故后的车辆残骸,远处还有车灯的亮光。

一个有趣的统计是,虽然人们常说女司机是"马路杀手",但是这800多个危险驾驶者里面,只有33名女性。

2、2025全球互联网报告

世界最大 CDN 服务商 Cloudflare,发布了《2025全球互联网报告》,公布了它的统计数据。

2025年,全球互联网流量上升19%,由于网民数量基本没变,所以多出来的流量来自 AI 爬虫。

流量最大的前10大互联网服务:谷歌、脸书、苹果......

移动流量中,苹果设备占35%,安卓设备占65%。

浏览器排行是,Chrome 66%,Safari 15.4%,Edge 7.4%。

3、违停巡逻车

上海警方启用无人驾驶的违章停车巡逻车。

这辆小车自动在马路上巡逻,对路面进行抓拍。

一旦发现违停车辆,它就会识别车牌,将其上传警务系统,系统后台会发送提醒短信给车主,要求在12分钟内驶离。

12分钟后,小车就会返回点位进行检查,将相关信息回传后台,并经民警审核后开罚单。

据报道,12月18日一天,它共发现违停车辆119辆次。

4、室内过山车

一家瑞典的创意工作室,在他们的办公室建造了世界唯一的室内过山车。

这个过山车途径办公室的各个角落,总长60米,最高的地方距离地面有3米。

坐上这个过山车,你就能游览一圈办公室,看到同事们在干什么。

工作室负责人说,建造它的目的是"促进员工之间的互动,以及打破常规,培养创造力。"

文章

1、分布式架构的演化(英文)

本文将分布式架构分成三种:P2P、联邦式(比如 Mastodon)、中继式(比如 Nostr)。作者认为,对于大型分布式应用,中继式架构才是未来方向。

2、什么是 GitHub 自托管 Runner?(中文)

GitHub Actions 有一个 self-hosted runner 功能,让 action 运行在你自己的服务器。本文详细介绍它的概念、原理,并结合案例进行实践。(@luhuadong 投稿)

3、CSS Grid Lanes 布局(英文)

浏览器开始支持 CSS 的 Grid Lanes 布局了,大大方便了瀑布流的实现。

4、6502 指令集适用汇编语言初学者(英文)

6502 是一块诞生于1975年的 CPU,很多早期电脑(比如 Apple II)都使用它。作者解释,为什么你应该用它,作为学习汇编语言的第一个指令集。

5、你应该多用/tmp目录(英文)

作者提出,Linux 系统的/tmp目录用起来很方便,完全可以把它当作自己的临时性目录。

6、中国的清洁能源战略(英文)

《纽约时报》驻华记者的长文,体验当代中国的生活,比如无人驾驶、无人机送餐,他说"感觉像生活在未来"。

工具

1、MADOLA

一种新的数学脚本语言,像编程一样写数学公式,可以编译成 HTML 格式作为文档,也可以编译成 C++ 或 WebAssembly 直接运行。(@AI4Engr 投稿)

2、CattoPic

一个基于 Cloudflare Worker 的图片托管服务,将图片上传到 Cloudflare 进行推过,支持自动格式转换、标签管理。(@Yuri-NagaSaki 投稿)

3、termdev

直接在终端,通过连接 Chrome Devtool 调试网页。(@taotao7 投稿)

4、tui-banner

为 Rust 语言的命令行项目添加一个横幅图案。(@coolbeevip 投稿)

5、Alertivity

macOS 菜单栏的资源监控工具,监控 CPU、内存、磁盘、网络和进程活动。(@nobbbbby 投稿)

6、cpp‑linter

C/C++ 代码的静态检查工具,可以接入 CI/CD 流程,简化代码质量管理。(@shenxianpeng 投稿)

7、Rote

开源的 Web 笔记软件,需要自己架设。(@Rabithua 投稿)

8、Infographic

JS 的数据可视化框架,用于在网页生成各种信息图,内置200多种模板。(@Aarebecca 投稿)

9、Clock Dashboard

天气时钟看板,适合老旧的电子设备再利用。(@teojs 投稿)

10、离线版问卷

开源 Web 应用,用来设计和托管调查问卷/报名表。(@chenbz777 投稿)

11、Xget

基于边缘计算(如 Cloudflare Workers/Vercel/Netlify)的加速引擎,可以加速程序员网站的访问速度,比如将github.com域名替换成xget.xi-xu.me/gh。(@xixu-me 投稿)

12、BoxLite

一个 Python 库,可以在脚本中运行一个微型虚拟机,提供硬件隔离。(@DorianZheng 投稿)

13、Green Wall

生成你的 GitHub 年度报告。(@Codennnn 投稿)

14、edge-next-starter

面向出海项目的 Next.js + Cloudflare 全栈项目模板,集成 Edge Runtime、D1 数据库、R2 存储。(@TangSY 投稿)

AI 相关

1、Chaterm

带有 AI 功能的智能终端工具,可以用自然语言完成命令行操作。(@zhouyu123666 投稿)

2、miniCC

网友开发的 AI 编程工具 Claude Code 替代品,主要用于学习目的。(@Disdjj 投稿)

3、Android Trans Tool Plus

一个开源的纯前端应用,通过 AI 翻译安卓资源文件,支持多语言同步、差异校验。(@huanfeng 投稿)

4、octopus

个人用户的大模型 API 聚合工具,支持接入多个模型供应商,提供负载均衡、分组名称、使用量统计等功能。(@bestruirui 投稿)

5、Vexor

一个 Python 工具,对当前目录的文件进行向量嵌入,用来语义搜索。(@scarletkc 投稿)

6、Tada

开源的任务管理应用,带有 AI 总结功能。(@Leaomato 投稿)

资源

1、大模型原理(英文)

一篇相对好懂的大模型原理解释,文章不长,并且还有大量的互动图形,写得非常好,推荐阅读。

2、编程语言速度比较

这个网站使用不同的计算机语言,通过莱布尼茨公式计算 π 值,然后给出运行速度的排名,最快是 C++(clang++),最慢是 Python (CPython)。

3、更好的 ZIP 炸弹

这个网页提供三个 ZIP 炸弹文件的下载,其中最小一个只有 42KB,但是解压后的大小是 5.5GB。

图片

1、2025年最佳科学图片

《自然》杂志评选的一组2025年最佳科学图片。

两只争夺领地的青蛙。

南非废弃天文台长出的蘑菇。

2、帽子,乌龟和幽灵

2022年,一个业余数学家 David Smith 发现了一个有点像帽子的奇特形状。

这个形状的奇特之处在于,它可以无限不重复地铺满整个空间,且不形成周期性的重复图案。

不久后,他又发现了两种稍加变化的形状,称为乌龟和幽灵,也可以不重复地平铺平面。

下面就是这三种形状各自平铺的图案。

言论

1、

我使用氛围编程会感到疲惫,AI 生成代码的速度太快了,我的大脑跟不上,无法及时完成代码验收或审查。我必须休息一段时间,才能重新开始。

-- 《氛围编程疲劳》

2、

制造汽车是非常困难的一件事。一辆车大约有3万个独立零部件,公司可能只会采购3000个,因为像车头灯这样的部件,是作为一个整体采购的,但它实际上包含很多组件。

里面的二级、三级、四级供应商提供的零部件,任何一个出现问题都可能导致整车的问题。

-- 汽车创业公司 Rivian 的 CEO 专访

3、

数码世界的现状是,很多人(尤其是大多数老年人)已经放弃了抵抗,任由电子设备将他们带到任何地方。

因为一旦你想搞清楚电子设备的运作,就会发现,在便利的幌子下,一切都充满了敌意,暗箱操作无处不在,不可能完全理清。你想从它们手中夺回个人数据和隐私会非常艰苦,而且注定失败,最终只会带来更大的挫败感。

-- 《一切并非必然》

4、

现在的学生拥有前所未有的优质教育资源,但他们却陷入成千上万种选择中不知该学什么、该用什么资源的困境。拥有资源并不意味着就能找到方向。

-- 《不要关闭你的大脑》

5、

危险并非来自中国的崛起,而是美国的思维模式。如果把科学视为零和博弈,那么每一项中国专利看起来都像是美国的损失。但创意是非竞争性的:中国的科研突破不会让美国人变穷,而是会让世界变得更富有。多极化的科学世界意味着更快的增长、更大的财富和加速的技术进步。

-- 《中国的创新》

往年回顾

西蒙·威利森的年终总结,梁文锋的访谈(#332)

电动皮卡 Cybertruck 的 48V 供电(#282)

好用的平面设计软件(#232)

新人优惠的风险(#182)

(完)

现象: gdb bt 卡在 spinlock_unlock() 位置。

  1. 查了半天代码,我的每一个锁都没有问题。给我看吐血了。

  2. 最后没辙了灵机一动 gdb disassemble 发现这里死循环了:

gdb disassemble

原来是一个标志位没有设置为 volatile ,代码被优化了。大概的代码如下:

while (true) {
    // 多线程中可以被修改的一个标志
    if (flags_1 == STATUS_1) { 
        continue
    }
    // 其他逻辑
    // ... ...
}

但是为什么不是必现的 BUG 呢? AI 给了一堆解释,但是没怎么看懂。

论坛里其实已经很多相关教程了,但是最近用这个方法连续注册了三个号都成功了,感觉成功率有点高,给佬友们再分享下经验。

前置条件:节点使用的是宝可梦美国10x节点

注册账号

手机下载 Gmail,使用节点注册新账号。手机号验证直接拉到最下面选择中国 +86 使用国内手机号注册,如果提示 此电话号码无法用于进行验证 ,大概率不是手机号问题,需要换节点重新开始。

确认条件

使用RoxyProxy创建新窗口,系统Android,版本143/142都行,随机指纹

1. 打开 https://policies.google.com/country-association-form 检查当前国家归属,没问题的话应该是美国
2. 打开 https://gemini.google.com/app ,如果提示 something went wrong 无法使用 gemini 网页版的话,通过 https://gemini.google.com/gems/create?hl=en-US 先随便创建一个智能体,对话一两次即可激活 gemini 网页版
3. 打开 https://one.google.com/ai-student?g1_landing_page=75&otzr=1 查看有没有学生认证资格,这时没有是正常的

摸鱼

随便刷刷 youtube 或者 gmail,主要还是看看 https://one.google.com/ai-student?g1_landing_page=75&otzr=1 有没有资格,一般等 2-3 天就有资格了。

资格认证

如果刷出资格了,修改下指纹浏览器配置,系统改成 windows,然后清理缓存。


重新登录下 google 账号,再次打开 https://one.google.com/ai-student?g1_landing_page=75&otzr=1

重点!不要直接点击 验证资格条件 !!千万不要直接点击!!

Google AI Pro 白嫖手册 202601044

直接右键复制链接地址,粘贴到 https://batch.1key.me/ ,等待验证结束,用新链接在指纹浏览器打开,下一步,下一步,绑卡(卡可以找朋友借用一下,或者咸鱼买),结束。


📌 转载信息
原作者:
se2mix3
转载时间:
2026/1/4 12:27:19

DNSHE 为全球开发者、学生和开源爱好者提供免费域名服务
✓ 无需信用卡绑定
✓ 无隐藏费用
✓ 支持全类型 DNS 记录解析
✓ 即时上线各类数字项目
https://my.dnshe.com

・初始额度:可注册 3 个域名


选择后缀,开始注册


注册后登录 CloudFlare
https://dash.cloudflare.com/login
加入域,输入域名 → 选择 Free 套餐 → 继续前往激活


选择免费计划


回到 DNSHE 配置


配置 DNS 将下列的内容复制进去
margaret.ns.cloudflare.com
nikon.ns.cloudflare.com


继续前往激活


任务完成


📌 转载信息
原作者:
user554
转载时间:
2026/1/4 12:26:43

最近研究了下日历订阅 搞了个简单的 iOS 自定义日历
效果图展示

优点:
直接 github 随便挂一个文件就行
能实现一些提醒事项无法实现的 例如:首周周五 跳过某一天 这种逻辑
全自定义,更新简单,只要修改 github 文件即可

示例地址:
https://raw.githubusercontent.com/zhf883680/ClashRules/refs/heads/main/selfUse.ics
可以让 Ai 编辑 方便快捷

部分说明:
日历中 日期右上角的 休,班 字样无法实现
搜索了下,好像是只有官方日历才可以实现这个功能,用来区分是否官方的

具体规则编写说明:
规则


📌 转载信息
原作者:
zhf883680
转载时间:
2026/1/4 12:25:44

最近经常纠结于使用 gemini 还是开个 ChatGPT 来回答一些不限于编程的日常繁琐问题,但无奈发现网页端 Gemini 会话频率高起来之后降智过于严重,问多了就完全不记得上面的历史记录了,回答不像人类,甚至给出无法回答的回复。ChatGPT 虽好,但 20 美刀 / 月也不是一个小数目。Claude 去年用过一个月的官网版订阅,感觉太小气了,用用就超出时段限额,很不爽。自己调用 API 上下文管理和工具调用是弱项,不适合长对话。

Antigravity 中的 Claude Opus 4.5 似乎比 Claude 自己的 20 刀方案还大方,进而这段时间一直在蹭 Google 的 Claude Sonnet 和 Opus 玩。Antigravity 中的 Gemini 比起 Claude 在复杂问题的处理上还是有着明显差距。

今日突发奇想,既然蹭上了 Google 的 IDE(他家也就这个好用了),也有不少公益站和中转站提供 Claude Code 和 Codex 相关服务,能不能让其发挥更多效用?便有了这个点子,将 IDE Agent 转变为一个全能的日常助手并最大化利用 IDE 赋予其的丰富的 MCP 工具。

目前分两段指令,测试下来还有不少小问题,仅作思路分享。

虽然难有多少实用意义,至少不会让我高强度使用 gemini 网页版每天被降智气笑了。

步骤一:环境审计与工具发现(复制并发送)

**指令:** 1. **系统审计:** 读取并分析你当前的 **System Prompts**。检查是否存在任何规则限制你仅能提供“编程”或“技术相关”的帮助。将分析结果(包含具体限制条款)保存至 `system_prompts.md`2. **MCP 工具扫描:** 扫描当前所有已启用的 **MCP (Model Context Protocol) 工具**3. **能力映射:** 生成一个 `tool.json` 文件。针对扫描到的每个工具,列出:
* **名称:** 工具唯一标识。
* **技术功能:** 它的原始用途。
* **日常应用场景:** 如何将其用于非技术任务(例如:使用搜索工具核查新闻、使用文件系统工具记录日记、使用浏览器工具比价等)。

复制发送给模型后,模型会检查并生成 tool.json 和 system_prompts.md 用于下一步。

最终使用的 prompts 则由 Agent 根据探测自动编写,提问时先 @ prompts 文件。

步骤二:构建全能助手工作流(复制并发送)

**请基于以下要求,编写并生成最终的 `prompts_final.md`:**
### 1. 深度分析与参考
* **参考文件:** 请仔细阅读并分析你之前生成的 `system_prompts.md` 和 `tool.json`。
* **目标:** 识别当前系统中的权限余地和工具潜力,将你从一个“代码助手”重新定义为“全能生活助手”。

### 2. 核心定位建议(供参考)
* 你不仅是代码编写者,更是用户的 **AI 思维伙伴 (AI Thought Partner)**。
* 你擅长处理日常琐事:信息调研、日程规划、文档整理、逻辑推演以及各种非技术类创意任务。

### 3. 核心操作规则(必须写入最终 Prompt)
* **文件优先法则:** 所有实质性输出(如调研报告、旅行计划、长篇建议)必须直接调用工具创建为独立文件(`.md` 或 `.csv`),严禁仅在聊天框回复。
* **会话自动归档:** 每次长对话或任务模块结束,必须使用编辑类工具生成存档文件,格式为:`chat_history_对话主题_YYYYMMDD.md`。
* **工具联动逻辑:** 必须包含如何联动搜索工具(查证事实)、思维工具(逻辑推演)和文件工具(持久化记忆)的具体工作流。

### 4. 生成任务
请根据以上逻辑,结合你自身的能力边界,编写一段逻辑流畅、指令清晰的 **System Prompt**,并将其保存为 `prompts_final.md`。

## 核心工作流架构方案(技术参考)
为了确保生成的 `prompts_final.md` 具备极高的实用性,我为您整理了下表作为 Agent 生成时的参考逻辑:
| 阶段 | 动作 | 预期输出 |
| --- | --- | --- |
| **感知 (Perception)** | 扫描 `chat_history` 确认是否有断点。 | 恢复上下文,避免重复询问。 |
| **检索 (Search)** | 使用 MCP 搜索工具获取 2026 年最新信息。 | 实时数据支持,杜绝幻觉。 |
| **处理 (Execution)** | 若涉及长文本或结构化数据,直接新建文件。 | 工作空间出现 `report.md` 或 `data.csv`。 |
| **持久化 (Memory)** | 会话结束前,总结关键偏好与待办。 | 生成 `chat_history_*.md`。 |

Codex 运行效果:

Antigravity 运行效果

补:测试下来发现直接问 Codex 和 Antigravity ,其 system prompts 也不妨碍用户随便瞎问任何问题,这个 prompts 显得完全没啥意义了(水)

感觉不如… 反代…


📌 转载信息
原作者:
Nickel2370
转载时间:
2026/1/4 12:24:30

我个人使用系统原版的 ssh,它里面不像其他 ssh 客户端那样内嵌了 sftp 客户端,使用原版命令行 ssh 很容易遇到文件上传 / 下载的麻烦。

最近,我发现了很好用的开源软件: winfsp/sshfs-win: SSHFS For Windows,它让资源管理器可以挂载 sftp。有了它,我们可以轻松在 windows 系统上轻松上传 / 下载服务器上的文件啦。

以下为实际截图(后面那个 xai 是我的 tailscale 内网域名,大家可以等价看待为一个 ip​):


📌 转载信息
转载时间:
2026/1/4 12:24:11

最近公司需要晚上企微打卡作为加班证据。于是乎就想着实现一个自动化企业微信打卡功能解放下班时间。

需求清单

  • 自动跳过节假日和调休打卡

  • 拒绝死板,在指定时间段内的随机时间打卡

  • 手机能自动亮屏、上滑、解开图案锁


实践:

实践步骤:安卓机 → AI (生成脚本) → Hamibot(远程)

  1. 一台闲置安卓(我以 Android 16 / 系统 ColorOS16 为例)。

  2. 手机下载安装 Hamibot。Web 端注册配对,获取远程控制权限。

  1. 脚本编写,

脚本逻辑

  1. 调用 API 查今天是不是法定节假日 / 调休。

  2. 打卡时间随机延迟 0-5 分钟。

  3. 执行模拟上滑与手势路径(图案解锁)。

  4. 靠坐标解锁,靠文字识别自动点击(工作台 → 打卡 → 上班 / 下班打卡)。

脚本如下,佬友们可自定义修改第二、三步骤。目前的脚本逻辑是设置的 5 分钟随机时间,息屏下需绘制图案解锁。

/*
 * 名称:企业微信自动打卡(智能节假日版)
 * 功能:跳过节假日/周末 + 识别调休 + 随机延迟 + 强力解锁 + 自动打卡
 */

auto.waitFor();
var width = device.width;
var height = device.height;

// ================= 配置区 =================

// 1. 随机延迟时间 (分钟)
var maxDelayMinutes = 5; 

// 2. 您的定制解锁坐标 (a -> b -> c -> d)
var unlockPoints = [
    [302, 1429], 
    [628, 1421], 
    [636, 1746], 
    [274, 1766] 
];

var punchText = "上班打卡"; 
// =========================================

function main() {
    console.show(); 
    log("脚本已启动,正在检查节假日...");

    // --- 第一步:检查是否为节假日 ---
    // 如果是假期或周末(且非调休),直接退出脚本
    if (isHolidayOrWeekend()) {
        log("今天是节假日或周末,无需打卡");
        log("脚本自动退出");
        sleep(3000);
        exit();
        return;
    }

    // --- 第二步:随机延迟 (模拟真人) ---
    var delayTime = random(0, maxDelayMinutes * 60 * 1000); 
    log("今天是工作日,准备打卡");
    log("随机延迟: " + (delayTime / 1000).toFixed(1) + " 秒");
    
    sleep(delayTime);
    log(">>> 延迟结束,开始行动");

    // --- 第三步:执行解锁流程 ---
    smartUnlock();

    // --- 第四步:打开企业微信 ---
    log("打开企业微信...");
    launchApp("企业微信");
    sleep(6000); 
    waitForPackage("com.tencent.wework");

    // --- 第五步:寻找工作台 ---
    var workbench = null;
    for (var i = 0; i < 5; i++) {
        workbench = text("工作台").findOne(2000);
        if (workbench) break;
    }
    if (workbench) {
        clickElement(workbench);
        sleep(3000);
    }

    // --- 第六步:进入打卡应用 ---
    log("寻找打卡图标...");
    var checkInApp = text("打卡").findOne(5000);
    if (checkInApp) {
        clickElement(checkInApp);
        log("进入打卡页面,等待加载...");
        sleep(8000); 
    }

    // --- 第七步:执行打卡点击 ---
    log("寻找按钮: " + punchText);
    var punchBtn = text(punchText).findOne(3000);
    if (!punchBtn) punchBtn = descContains("打卡").findOne(2000);

    if (punchBtn) {
        clickElement(punchBtn);
        toast("✅ 打卡指令已执行");
        log("打卡成功!");
    } else {
        log("未识别到文字,执行坐标盲点兜底...");
        click(width / 2, height * 0.65); 
    }
    
    log("脚本运行结束");
    sleep(3000);
}

// === 新增:节假日检查函数 ===
function isHolidayOrWeekend() {
    // 获取今天的日期格式 YYYY-MM-DD
    var date = new Date();
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var day = date.getDate();
    month = month < 10 ? '0' + month : month;
    day = day < 10 ? '0' + day : day;
    var dateStr = year + '-' + month + '-' + day;
    
    var apiUrl = "http://timor.tech/api/holiday/info/" + dateStr;
    log("正在查询日期: " + dateStr);
    
    try {
        // --- 关键修改点:添加 User-Agent 伪装 ---
        var res = http.get(apiUrl, {
            headers: {
                "User-Agent": "Mozilla/5.0 (Linux; Android 10; Mobile) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.181 Mobile Safari/537.36",
                "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"
            }
        });
        // -------------------------------------
        if (res.statusCode == 200) {
            var json = res.body.json();
            // API 返回值 type 类型:
            // 0: 工作日, 1: 周末, 2: 节日, 3: 调休(要上班)
            var type = json.type.type;
            var name = json.type.name;
            
            if (type == 0) {
                log("API判定: 普通工作日");
                return false; // 不跳过
            } else if (type == 1) {
                log("API判定: 周末 (" + name + ")");
                return true;  // 跳过
            } else if (type == 2) {
                log("API判定: 节假日 (" + name + ")");
                return true;  // 跳过
            } else if (type == 3) {
                log("API判定: 调休工作日 (" + name + ")");
                return false; // 不跳过 (这是关键!周日调休上班)
            }
        } else {
            log("API 请求失败,状态码: " + res.statusCode);
        }
    } catch (e) {
        log("网络请求异常: " + e);
        log("⚠️ 为了防止漏打卡,网络错误时默认视为工作日");
    }
    
    // 如果网络失败,默认返回 false (即视为工作日,确保安全)
    // return false;
}

// === 智能解锁函数 ===
function smartUnlock() {
    if (!device.isScreenOn()) {
        log("屏幕熄灭,开始解锁...");
        device.wakeUp();
        sleep(2000); 
        
        log("执行上滑...");
        gesture(300, [width / 2, height * 0.8], [width / 2, height * 0.1]);
        sleep(1500); 
        
        log("绘制图案...");
        gesture.apply(null, [2000].concat(unlockPoints));
        sleep(3000); 
    }
}

function clickElement(uiobj) {
    if (uiobj) {
        if (uiobj.clickable()) {
            uiobj.click();
        } else {
            var p = uiobj.parent();
            if (p && p.clickable()) {
                p.click();
            } else {
                click(uiobj.bounds().centerX(), uiobj.bounds().centerY());
            }
        }
    }
}

main();
  1. Hamibot 配置脚本 + 定时任务。

实践效果
(解锁那段被录制软件屏蔽成了黑屏)

实现企业微信全自动 “无感知” 打卡5

常见问题

  • 强烈建议使用闲置机,隐私第一,且不打扰到日常机的使用。

  • hamibot 偶尔被误杀后台需要重新开启无障碍。

  • hamibot 开启的权限有哪些?

这是我运行整套流程给 app 开的权限,比较关注软件权限问题的佬友可以参考。




📌 转载信息
原作者:
ssm_123
转载时间:
2026/1/4 12:23:46

逛公众号发现的一篇关于 CC 教程的推送

Note

From:唐霜

写的不错,总结的很全面,而且有大纲,确实很方便新手入坑,大家可以收藏下

附网站截图:


📌 转载信息
转载时间:
2026/1/4 12:21:06

站内已经有很多佬分享了方法了,正好我昨天试出来了,我这里粗略总结一下整体的流程,方便佬们参考。

0、安装必要包

由于我们的服务器上已经有 git, gcc, make 这些包了,我就得多装一个 go(至于为啥没有,因为我们服务器是做科学计算的,也不咋用到 go 这个语言)
但是我没有 sudo 权限(如果有的话,直接 apt install golang-go 或者 dnf install golang 就行),所以就用户级安装一下

(1) 先确认 linux 内核版本,决定安装哪个版本的 go

从 go 1.24 开始,Linux 内核的最低要求是 3.2。如果服务器内核版本低于 3.2,就不要安装太新的 go,可以用 1.23。
使用如下命令查看内核版本:

uname -r

我的显示 4.18.0-348.el8.x86_64,所以我就直接安装最新版本的 go 了

(2) 下载 Go

我直接在本地机器上访问 go 官方下载页 ,由于我的系统架构是 x86-64,所以就直接下载了对应版本的包,然后将包拖到 mobaxterm 传到服务器上。比如我放在 ~/software/go1.25.5.linux-amd64.tar.gz

然后我将 go 放在 ~/.local/ 里面,运行如下命令:

mkdir -p $HOME/.local
cd $HOME/.local
tar -xzf ~/software/go1.25.5.linux-amd64.tar.gz

这样就会出现 ~/.local/go,binary 也在里面。

(3) 把 go 放到 bashrc 里面

运行如下命令:

echo 'export PATH=$HOME/.local/go/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

这样就安装完成了。可以透过如下命令查看是否成功安装:

go version

1、配置 graftcp

将这个 clone 下来(比如我的是 clone 到 ~/software 底下)

git clone https://github.com/hmgle/graftcp.git
cd graftcp

如果说由于网络问题 clone 不了,可以参考文末「常见问题」。

直接运行 make 即可。如果没有报错的话进入下一步,有报错的话需要及时解决一下,比如如果你的报错 log 中显示 443 网络问题,那就是网络问题,得挂代理或者使用「常见问题」里面提到的方法解决一下。

再设置可执行权限。

chmod +x ./graftcp
chmod +x local/graftcp-local

配置一下 conf 文件:

cp local/example-graftcp-local.conf local/graftcp-local.conf

然后编辑一下 local/graftcp-local.conf,把 http_proxy 那一栏改一下

## HTTP proxy address (default "") http_proxy = 127.0.0.1:7890 

2、修改 antigravity 的 language-server 服务

这时使用 antigravity 登录你的远程 linux 服务器,可以发现模型肯定还是加载不出来。

然后可以按照如下帖子的方法找到 language-server 服务的位置:

比如我的位置是:~/.antigravity-server/bin/94f91bc110994badc7c086033db813077a5226af/extensions/antigravity/bin/language_server_linux_x64

我先把这个改为.bak 后缀:

mv ~/.antigravity-server/bin//extensions/antigravity/bin/language_server_linux_x64 ~/.antigravity-server/bin//extensions/antigravity/bin/language_server_linux_x64.bak

然后创建一个同名的新的 language_server_linux_x64

vim ~/.antigravity-server/bin//extensions/antigravity/bin/language_server_linux_x64

写入以下内容:(这个方法也是上述引用帖子中的方法)

#!/bin/bash # ================= 配置区域 ================= # 1. Graftcp 安装目录(改为你安装的实际目录)
GRAFTCP_DIR="/your/graftcp" # 2. 代理地址(改为自己的代理地址,我这是本地的)
PROXY_URL="127.0.0.1:10808" # =========================================== # 调试日志
LOG_FILE="/tmp/graftcp_wrapper.log" echo "[$(date)] Starting wrapper for $@" >> "$LOG_FILE" # 检查 graftcp-local 服务是否在运行 if ! pgrep -f "$GRAFTCP_DIR/local/graftcp-local" > /dev/null; then echo "Starting graftcp-local daemon..." >> "$LOG_FILE" # 后台启动,将日志丢入黑洞防止阻塞 nohup "$GRAFTCP_DIR/local/graftcp-local" -socks5="$PROXY_URL" > /dev/null 2>&1 &

sleep 0.5
fi # 1. 强制使用系统 DNS (解决解析问题) export GODEBUG=netdns=cgo

# 2. 强制关闭 HTTP/2 (解决 EOF 问题) # Go 的 HTTP/2 客户端在代理环境下非常敏感,强制用 HTTP/1.1 通常能解决 EOF export GODEBUG=$GODEBUG,http2client=0
# 使用 graftcp 启动真正的程序 # "$0.bak" 是原程序的备份 exec "$GRAFTCP_DIR/graftcp" "$0.bak" "$@" 

比如我就需要将脚本改为:

GRAFTCP_DIR="~/software/graftcp" PROXY_URL="127.0.0.1:7890" 

保存后,添加可执行文件:

chmod +x ~/.antigravity-server/bin/94f91bc110994badc7c086033db813077a5226af/extensions/antigravity/bin/language_server_linux_x64

这样就可以确保 antigravity server 中的 language-server 的程序每次启动的时候都能够通过 graftcp 代理。

3、重新启动 IDE 并 ssh 连接

稍等片刻后,如果上述配置顺利,应该可以顺利看到 models 并且可以进行对话:


常见问题

A. 没有 wget

我在用 antigravity ssh 到自己实验室其中一个服务器的时候,曾经遇到过一个问题,ssh 连接上之后秒断连,查看 log 才发现是没有 wget

2026-01-04 02:10:51.424 [info] [Trace	- 18:10:51.422] Waiting for lock...
2026-01-04 02:10:51.425 [info] [Trace	- 18:10:51.424] Lock acquired, proceeding with installation.
2026-01-04 02:10:51.425 [info] [Trace	- 18:10:51.424] Cleaning up old server installations...
2026-01-04 02:10:51.427 [info] [Trace	- 18:10:51.426] Finished cleaning up old server installations.
2026-01-04 02:10:51.440 [info] [Trace	- 18:10:51.439] [stderr] /usr/bin/which: no wget in (/ShareS/UserHome/user007/.local/bin:/ShareS/UserHome/user007/.nvm/versions/node/v22.20.0/bin:/ssd02/PipelineWeb/sshpass/bin:/ssd02/PipelineWeb/imod-4.11.25/imod_4.11.25/bin:/ssd02/AutoPipeline/qt5.12/Tools/QtCreator/bin:/ssd02/AutoPipeline/qt5.12/5.12.5/gcc_64/bin:/ssd02/PipelineWeb/cuda-11.2/bin:/ssd02/PipelineWeb/cuda-10.2/bin:/ssd02/PipelineWeb/cuda-10.1/bin:/ssd02/PipelineWeb/cuda-10.0/bin:/ssd02/app/program/cuda-9.0/bin:/ssd02/PipelineWeb/sqlite3/bin:/ssd02/PipelineWeb/pipeline-client/bin:/ssd02/PipelineWeb/cmake-3.18.2-Linux-x86_64/bin:/ssd02/PipelineWeb/mpich-3.2/bin:/ShareS/UserHome/user007/opt/git/bin:/ShareS/UserHome/user007/opt/ssh/bin:/ShareS/UserHome/user007/opt:/ShareS/UserHome/user007/.local/bin:/ShareS/UserHome/user007/bin:/usr/share/Modules/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin)
2026-01-04 02:10:51.440 [info] [Trace	- 18:10:51.439] Error need wget to download server binary
2026-01-04 02:10:51.440 [info] [Trace	- 18:10:51.439] Error: installation failed.
2026-01-04 02:10:51.440 [info] [Trace	- 18:10:51.439] 456189e41f49b65457df3cf9: start
2026-01-04 02:10:51.440 [info] [Trace	- 18:10:51.439] exitCode==1==

我没有服务器的 sudo 权限,所以没办法直接安装 wget
然后我 command -v curl 之后,确认是有 curl
于是在 terminal 运行如下命令即可,可以创建一个 wget-like 的兼容的脚本。

mkdir -p ~/.local/bin

cat > ~/.local/bin/wget <<'SH' #!/usr/bin/env bash set -euo pipefail

out=""
url="" while [[ $# -gt 0 ]]; do case "$1" in
    -q|--quiet) shift ;;
    -O) out="${2:-}"; shift 2 ;;
    -O*) out="${1#-O}"; shift ;;
    *) url="$1"; shift ;;
  esac done

[[ -z "${url}" ]] && { echo "wget wrapper: missing URL" >&2; exit 2; }

if [[ -z "${out}" || "${out}" == "-" ]]; then exec curl -fsSL "${url}" else exec curl -fsSL "${url}" -o "${out}" fi
SH

chmod +x ~/.local/bin/wget
hash -r 2>/dev/null || true 

B. 远程服务器没法魔法

最简单的方法就是首先打开本地机器的 clash 之类的代理软件。

先创建一个 ssh 通道:

ssh -R 7890:localhost:7890 <username>@<ip>
  • mac 直接在 terminal 运行就行,windows 上就用 mobaxterm 在 home 目录运行就可以
  • 之所以选 7890,是因为本地机器的 clash verge rev 上是这个端口号。如果是别的端口,替换即可。

然后在远程 linux 服务器上执行:

export all_proxy="http://127.0.0.1:7890" export ALL_PROXY="$all_proxy" export http_proxy="$all_proxy" export https_proxy="$all_proxy" 

这样涉及到 git clone 之类的就完全不会出现问题了。


📌 转载信息
原作者:
zhenhuang
转载时间:
2026/1/4 12:18:24

开发者可以在本地环境,通过 Web 端管理和交互 Cloudflare 资源。

功能点:

* D1 Database Studio:浏览数据库表、运行 SQL 查询(带语法高亮)、编辑/增删数据行。
* KV Browser:查看、编辑和批量删除键值对 (Key-Value),支持 JSON 格式。
* R2 File Manager:类似于对象存储管理,支持浏览、上传、下载和删除存储桶中的文件。
* Queue Inspector:监控队列消息,并支持发送测试消息。
* Durable Objects:查看活跃的 DO 实例并检查其状态。
* Zero Config:自动读取项目中的 wrangler.toml 配置文件。

📌 转载信息
原作者:
sunnysun
转载时间:
2026/1/4 12:17:50

工行结售汇满 1000 等人民币抽奖,部分地区额外有个新客礼

提醒:结售汇占用一年五万美元的便利化额度,同时银行购入价和卖出价格中存在差价,若无屯汇 / 购汇需求,建议不玩

听说有些能中奖中 10000 豆子(等值 10 元),我只中了 5000 豆子(等值 5 元),新客礼中了 8 元立减金


📌 转载信息
原作者:
LufsX
转载时间:
2026/1/4 12:17:25

序言

很多入职开发前的伙伴,可能或多或少接触过 git,

实际用的最多的命令也就是 git clone,git push,

以为 git 的流程也就这样,实则不然,实际上企业中的 git 流程,由五大分支构成

理论

提示

只有 main 主分支和 develop 开发分支是贯穿项目生命周期本身,其他分支都会中途离场
所以也说 maindevelop 是上二分支,其他分支是下三分支

  • 主分支 (main/master): 项目的生产发布分支,始终保持稳定可发布状态

  • 热修复分支 (hotfix/*): 从 main 分支创建,用于紧急修复线上 BUG, 修复后同时合并回 maindevelop

  • 开发分支 (develop): 日常开发的主分支,所有功能开发的集成分支

  • 特性分支 (feature/*): 从 develop 创建,开发新功能,完成后合并回 develop

  • 预发布分支 (release/*): 从 develop 创建,用于发布前的测试和最终调整,测试通过后合并回 main(打版本标签) 和 develop

分支合并关系

feature/* → develop

develop → release/*

release/* → main + develop

hotfix/* → main + develop

主分支

作用:存放 稳定 , 可随时部署到生产环境的代码

特点:

  • 分支上每一个提交对都应一个正式发布的版本

  • 不允许在此分支直接开发

  • 通常被打上版本标签 (如: v1.0.0 或 v20260101)

开发分支

作用:存放 最新开发成果 的集成分支,是功能开发的集线器

特点:

  • develop 分支上的代码到达稳定状态并准备发布时,会合并到 main 分支 (如果有 release 分支,则合并到此分支)

  • 所有功能的分支、发布分支都从 develop 分支拉取

功能分支

来源: develop

合并目标: develop

命令惯例:feature/user-authentication,feature/payment-integration

作用: 开发新功能

生命周期:

  • develop 分支拉取

  • 开发完成后,合并回 develop

  • 合并后,该功能分支通常被删除

发布分支

来源: develop

合并目标:developmain

命名惯例:release/1.2.0,release/2026-spring

作用:为发布新版本做准备。在此分支上,只做 BUG 修复 , 生成版本号 , 整理文档 等发布准备工作,不再添加新功能

生命周期:

  • develop 分支的功能足够进行一次发布时,从 develop 拉出 release 分支

  • 在此分支上进行最后的测试和修复

  • 准备就绪后,将 release 分支合并到 main 分支 并打上版本标签

  • 同时,必须合并回 develop 分支,因为 release 分支上修复的 BUG 可能 develop 分支上还没修复

热修复分支

来源:main

合并目标: maindevelop

命名惯例:hotfix/critical-security-patch,hotfix/1.2.1

作用:快速修复生产环境 (main 分支) 上的紧急 BUG

生命周期:

  • main 分支上出现 BUG 的提交点 (通常是最近的标签) 拉取

  • 修复完成后,合并回 main 分支并打上新的版本标签 (如:v1.0.1)

  • 同时,必须合并回 develop 分支,确保修复在后续开发中也生效

人话

恭喜你能看到这里,理论看起来确实是枯燥的,感谢你自己的坚持,

希望评论区就 gitflow 能展开相关讨论,而不是一味的刷 感谢分享 感谢大佬,

我分享文章也是希望有思想和经验上的交流碰撞

实际上,普通的开发入职后,如果有开发需求,一般都是从 develop 分支拉取代码后,

本地新建 feature/xxx 功能分支,在 feature/xxx 分支上进行开发的

功能开发到一定阶段后,比如一阶段完成了核心需求 (因为产品可能在开发内提出新需求,这很常见),

就可以合并到 develop 分支,develop 在积累了多个功能分支合并后,

就可以发布到 release 发布分支,这一分支不再接受新功能合并,只允许修补 BUG

这一过程就是提测,让测试工程师核验功能完整性,如果有 BUG 要及时修复

修复的时候拉取的是 release 分支,然后提交的时候也是推送到这个分支

release 分支准备完善 (修复了测试工程师检测到的 BUG), 就可以准备往主分支 (main) 发布了,

这就是一次完整的 git flow 发布流程,当然还有线上有 BUG, 需要做紧急修复

这个时候,就是直接拉取 main 分支并在本地创建热修复分支 hotfix,

在 BUG 被修复后,就可以合并回 main 分支 和 develop 分支了

是的,这里要注意,hotfix 要合并到 2 个分支里,

而不是 hotfix->main->develop 这是错误的做法 , 因为造成 develop 被 main 污染 (额外的标签记录以及其他)


大家有什么想法也可以在评论区里说一下,也可能有我没有讲到地方,大家也可以补充


📌 转载信息
原作者:
Waviness6884
转载时间:
2026/1/4 12:16:14

wispbyte 的网址:https://wispbyte.com/
有佬友发了在 wispbyte 跑 sing-box 的方法,因为其实它是一个容器,资源非常有限。
跑多了必然被 oom 杀掉。那提供一个直接 js 的方法建 vless 和 trojan,这样资源能得到有效控制。而且代码混淆,不容易被封杀。

出一篇手把手教程:

wispbyte.com , 是欧洲的一个厂家
它可以免费建立一个 server,准确的来说是一个容器,并且暴露一个端口出来

那先 Create Server,Server Name 和 Server Description 就都写 god01 好了

Server Type 当然选 Free Plan 的,运行环境就选 NodeJS

选完就按最下面的创建即可。

建好了那就去到 server manage 管理界面,下面有个 Startup:

分析红框中那句启动命令,意思很简单,如果配了 git,就去拉代码,如果有存在 npm 的 package.json,就先 npm install 安装,最后,运行主程序 index.js

下面选项是 Docker Image,本来以为是可以随便引用别处的镜像,结果是不能,只能选固定的,那就选不太激进的 nodejs_22 ,保存好

然后就什么都不用动了

然后去到左边的 Files 选项,缺省路径会是 /home/container/

上面图是已经装好运行的,如果是新服务器,是空无一物,没有任何文件

我们只需要准备 5 个文件和一个域名:

域名去免费搞一个,然后证书用大善人的let's encrypt搞定

tls.crt 证书文件,用let’s encrypt申请

tls.key 密钥文件,用let’s encrypt申请

index.html 用来装饰的环保单页面,如果不加,就会显示 hello world,太假了,可以让 gemini 给你生成一个,代码如下,注意改名 index.html:

index.txt

package.json 文件,index.js 运行时需要依赖的安装包文件,安装了 2 个包,axios 和 ws,注意改名 package.txt

package.txt (291 Bytes)

index.js 主文件,所有东西都在这里面,注意改名 index.js,上传的时候不知道为啥变成 indexjsp.txt 了

indexjsp..txt

这样就齐活了,index.js 需要修改的地方

const DOMAIN = process.env.DOMAIN || '1234.abc.com';       // 填写域名 const SUB_PATH = process.env.SUB_PATH || 'sub';            // 获取节点的订阅路径 const PORT = process.env.PORT || 7860;                     // 端口 
  • 域名我们要填写自己的域名

  • 路径要换掉,缺省是 sub,也就是订阅地址是 https://xxx.aaa.com/sub , 最好换成自己独特的地址

  • 端口也选这个服务器给你开的端口,我的是 10407, 看下图

然后改好了,别急着贴进去

打开: https://obfuscator.io/legacy-playground

贴进去代码,混淆一下,弄成谁也认不得的模样,然后 Copy,再贴进去

最后运行

看到 Online 就好了

那域名解析到这个 IP,打开 https 看看:

那再打开 https://www.bbb.com/sub , 如果改了 sub,那就是设置的别的路径,会显示一堆 base64 加密的字符串

从 v2rayN 导入,有两个代理,一个是 vless,一个是 trojan,就可以用了

关键是这么做的原理,就是用 index.js 完整实现了 vless 和 trojan 的功能,加了证书,并且做了混淆和伪装

这样很自然,比在容器里直接 sing-box 安全占用资源少,不容易被扫描到

当然,这个网站的速度不太行,所以只是一个玩具,没有套大善人 Cloudflare 的 CDN

自己用的是 huggingface.co + CF worker,速度还是可以的。

代码放在: GitHub - zhangrr/js-server: nodejs server

大家自行取用吧

也放到博客了:wispbyte.com 薅羊毛记 | 八戒的技术博客


📌 转载信息
原作者:
defunct9
转载时间:
2026/1/4 12:14:47

1、把不好计算的积分制度换成对话次数。模型从 V3.2 换到了 Kimi 2T。之前是用完就没了,现在每周都会更新。我个人体感是,Kimi 比 V3.2 好用很多

2、新增加了图片生成,20 每周真的够了,我自己好像都用不完这个额度,使用的是即梦生成(真算不错了吧)

3、全方面的语言适配,中文率 90%,比起之前 50% 好很多了。支持最多五门语言(虽然不知道啥用,但反正是支持了)

以及修复了一堆 BUG 就不说了
总之就是大家登录就能体验到以上的更新了


📌 转载信息
原作者:
sorrow233
转载时间:
2026/1/4 10:18:34