v2ex_hot_2026-01-23

V2EX 热门帖子

1. AgentSkills for AI Developers

大家好,我是 AgentSkills.to 的开发者。

在开发过程中,我发现为 Claude Code 、Cursor 或 Codex CLI 重复编写复杂的提示词非常耗时。为了解决这个问题,我构建了 AgentSkills.to —— 一个开源的“技能”市场,旨在让 AI Agent 真正具备生产力。 为什么值得一试?

即插即用: 拥有 3,700+ 项涵盖前端、后端及 DevOps 的生产级技能。

跨平台: 完美适配 Claude Code, Cursor, Codex CLI 和 Amp 。 开源共享: 你可以免费获取所有工作流,也可以在 GitHub 上贡献你的独家秘籍。 我们的目标是让大家不再浪费时间“重复造轮子”,而是通过社区验证的技能快速交付高质量代码。

欢迎体验: https://agentskills.to

作者: quiqa | 发布时间: 2026-01-22 23:41


2. 微软内部正在鼓励员工使用 Claude Code

尽管微软对外依然在主推 Github Copilot ,但微软内部正在鼓励员工使用 Claude Code 。

原文:微软内部全面拥抱 Claude Code:AI 编码工具格局生变

作者: Fdyo | 发布时间: 2026-01-22 17:54


3. ChromeOS Flex,如何科学上网 ?

我在笔记本上,安装了 ChromeOS Flex ,请问如何科学上网 ?

我需要科学上网之后,登录我的谷歌账号。

在 ChromeOS Flex 中,目前,因不知如何进行科学上网,导柱无法登录我的谷歌账号,只能使用 [访客身份] 使用 ChromeOS Flex , 只能使用有限的功能。

作者: c2r5 | 发布时间: 2026-01-22 18:28


4. [独立开发] 单机 Rust 如何抗住 10w+ 在线行情推送?告别 Redis/Kafka,聊聊我的“极简主义”架构

大家好,我是《交易学徒》的独立开发者。

最近在重构后端行情网关,目标是支撑 10w+ 同时在线用户。在技术选型时,很多“标准答案”是微服务、Redis 集群、Kafka 消息队列。但作为独立开发者,维护这一套重型架构的运维成本和心智负担太高了。

于是我反其道而行之,选择了一种“极致单机” 的方案:没有任何外挂组件( No Redis, No Kafka ),所有状态在进程内解决,纯 Rust 函数调用。

经过实战验证,这套架构不仅部署简单(就一个 Binary ),而且足够稳定。今天分享一下我是如何用 Rust 的特性“白嫖”性能的,欢迎 V 友们拍砖。

一、 核心理念:按需订阅,算一笔带宽的账 早期的 demo 喜欢大包大揽,客户端连上来就推 Top 20 币种。这在用户量大时是灾难。我的做法是“用户看哪里,就只推哪里”

客户端停留在 BTC/USDT 的 15 分钟 K 线界面,服务端就只建立这一个订阅关系。一旦切换,立马移除旧订阅。

算一笔账( Resource Cost ): 假设一个行情包 Payload 是 200 Bytes ,推送频率 5 次/秒。

全量推送(推 Top 20 ):10 万用户 x 20 个币种 x 200B x 5 = 2 GB/s (带宽直接破产)。

按需订阅(推 1 个):10 万用户 x 1 个币种 x 200B x 5 = 100 MB/s 。

结论: 简单的逻辑改变,带宽节省 95%,单机千兆网卡轻松抗住。

二、 列表行情:Polling + 边缘计算(白嫖 CF ) 对于“行情列表”这种一屏显示几十个数据的页面,建立长连接维护成本太高。 我采用了 1 秒轮询 + Cloudflare 边缘缓存 的策略。

策略: 设置 HTTP 响应头,让 CF Edge Cache TTL = 1 秒。

效果:10 万人同时刷新列表,99% 的流量被 CF 的全球节点挡住了,真正打到我源服务器 Rust 进程的 QPS 只有个位数。

收益: 既利用了 CDN 的带宽,又保护了单机后端。

三、 架构做减法:进程内通信替代中间件 这是我这次重构最大的感悟:单机并发足够高时,不需要 Redis 和 Kafka 。

替代 Redis: 使用 Rust 的 DashMap (Concurrent HashMap)。数据就在内存里,读写是纳秒级,没有网络 IO 开销,没有序列化/反序列化成本。

替代 Kafka: 使用 tokio::sync::broadcast 和 mpsc::channel 。

优势: 传统的“发布-订阅”为了解耦上了 MQ ,但在单机 Rust 里,一个 Arc 就能解决问题。部署时不需要操心 MQ 挂没挂,只要我的进程活着,消息系统就活着。

四、 信使模式 (Messenger Pattern) 与背压 在 Tokio 异步编程中,最忌讳 await 阻塞。 如果客户端网络卡顿(比如进电梯),socket.send().await 可能会阻塞,导致同个 Loop 下的心跳包处理被卡死,造成“假死”。

我的解法:

读写分离: 为每个连接 spawn 一个独立的 send_task ,通过 mpsc::channel(128) 通信。

严格背压 (Backpressure): 使用 try_send 。如果 Channel 满了(说明客户端来不及收),直接丢弃新行情。

理由: 实时行情旧数据无价值。这行代码是系统的“保命符”,防止慢客户端拖垮服务端内存( OOM )。

五、 极致性能:Zero-Copy (零拷贝) 在广播行情时,不要为 10 万个用户 copy 10 万份数据。

Rust // 内存中只有一份二进制 Payload let payload = Arc::new(Bytes::from(vec![…]));

// 10 万次分发只是增加了 10 万次引用计数( Reference Counting ) // 几乎没有任何内存分配开销 for client in clients { client.tx.try_send(payload.clone()); } 利用 Rust 的 Arc 和 Bytes ,让 CPU 缓存极其友好。 六、 扫地僧:资源清理 长运行的单机服务最怕内存泄漏。 当 socket 断开时,必须像外科手术一样精准清理:

从 DashMap 移除 Client 。

清理反向索引 subscriptions 。

如果某个 Topic 无人订阅,立即 drop 掉对应的 channel 发送端,停止上游数据生产。

总结 作为独立开发者,资源有限。这套“Rust 单机 + 无外挂组件” 的架构,让我用最低的成本(一台服务器)抗住了业务压力,而且睡得很安稳。

Simplicity is the ultimate sophistication.

🎁 V 友专属福利 软件名字叫 《交易学徒》,是一个辅助交易员复盘、模拟、练盘感的工具。前端也是我用 Flutter 写的( Rust + Flutter 真是全栈开发的绝配)。

官网下载: https://www.zgjiazu.top

Google Play: https://play.google.com/store/apps/details?id=com.zengkai.jyxtclient

回帖福利: 在本帖回复并附上 App 内的 ID (在‘我的页面’可以看到),我后台人肉送一个月 VIP 会员。

同时也欢迎大家在评论区提 Bug ,或者交流关于 Rust 后端与 Flutter 前端开发的坑!

作者: kai92zeng | 发布时间: 2026-01-22 07:46


5. 小公司开发有什么需要避免的操作吗

目前背景: 是个小公司的后端开发,服务器,数据库,git,公司路由器都在我手里,感觉责任重大,想知道有什么需要避免的操作吗,主要是害怕万一一周或者几个月我不在,避免公司业务出问题

以下是我自己想到的几点,想知道还有没有其他没想到的方案

1.数据库的分区表,特别是和时间相关的,不能手动生成,要不然后面人不在没交代的话会直接给服务器崩掉

2.给本地调试的服务器端口白名单,不能图方便给网段开白名单,要不然后面会有脚本小子或者勒索病毒来扫

3.一些公共库,如果有不符合业务需求的地方,不要把人家的源码拉下来自己改然后编译成引用放在库里,(比如说 ef core upsert 的库之前不支持 ef10)否则后面更新时候会炸掉

4.单元测试不要埋雷,一些当调试用的或临时跑点小任务单元测试不能放在例行单元测试的文件夹里面,污染数据库

作者: yixin026 | 发布时间: 2026-01-22 06:51


6. 有没有微信文件传输助手的 App 或开源第三方工具?

https://szfilehelper.weixin.qq.com/

这个网页很简单, 就能传文字和文件, 不知道有没有人做了相关工具的?

如果没有微信这方面的工具, 大家都是怎么在不同手机和电脑上互传文件的?
听闻 apple 生态很方便, 可是我主要用 windows, 手机是一加和 iPhone.

之前本来是搞了几个微信号来互传, 现在 google voice 注册的微信号啥也没干就给封号了.
Edge 的 drop 也用了好一阵, 最近老是无响应, 也很不好用了.
邮件又稍微有点麻烦, 没好的办法的话就只能用邮件了.

作者: jqknono | 发布时间: 2026-01-22 12:58


7. 想请教大家关于学习新知识时的思路或者说最佳实践

最近在看着 Spring AI 的官方文档来学习 Java 在 AI 这方面的东西,但是我遇到一个问题就是,经常遇到看不懂,或者写了同样的代码却跑不起来的问题。

我举个例子: Spring AI 的官方文档的 Reference/Chat Client API 或者 Reference/Prompts 里面已经写了很多示例代码了,但是其实跟着写出这些代码后,程序是跑不起来的,一直到下面第五节的 Models 篇章里面,才介绍了说需要引入各模型的依赖,上面那些章节的示例代码才能运行。

我觉得可能是我的文档阅读思路不对(或许应该先整体大致阅读一遍?然后再考虑写 demo 来熟悉?),所以想问问大家,大家在学东西的时候,一般是遵循怎样的学习思路来学习的?看书?看视频?或者说,大家阅读官方文档的时候,是怎样的思路来阅读的?

作者: AkaneWWW | 发布时间: 2026-01-22 14:30


8. vibe coding 真的会上瘾啊,停不下来!

另外我发现 Claude opus 在写页面样式上真的比 gemini pro 差了一个档次啊。

当然其他方面感觉都很强,让我肃然起敬的那种🫡

作者: Aaron01 | 发布时间: 2026-01-21 21:00


9. giffgaff 手机卡充值后才有信号吗

闲鱼上买的一个卡,插上后一直无服务,必须充值以后才有信号吗?

20 多买的,发现论坛上还有免费送呢,亏大了

作者: yuanyao | 发布时间: 2026-01-22 05:29


10. 请问抖音,学浪的视频课,有办法下载么?

现在是在抖音里看,
想保存只能录屏么?有高手下载过么?

作者: mrlfishman | 发布时间: 2026-01-22 10:49


11. 国内外一个有趣的技术倾向区别

今天在看分布式任务工具 找来找去看到 3 个,xxl-job, powerjob, elasticjob 然后我发现居然全是国产的,类似产品竟然没有国外的,我寻思不应该啊 (不是说国外的就好什么的,但是这种中间件没有的话确实感到奇怪) 问了 AI 得到如下回答

XXL-JOB 、ElasticJob 这类工具在中国特别火,是由中国互联网特定的技术土壤决定的

国外用 Quartz ,它是祖师爷,国内工具大多是对 Quartz 的二次封装(加了 UI 、加了分片、加了 RPC )。国外老项目仍大量直接用 Quartz 。

国外云原生走得更早,很多简单的定时任务直接交给 Kubernetes CronJob 或云厂商的 Serverless 服务了,不需要额外部署一个 XXL-JOB ,复杂的任务则是选择 Airflow 这样的工作流平台

国内的 ElasticJob 和 XXL-JOB 实际上是卡在了“简单 Cron”和“复杂编排”中间的一个完美生态位:它比 Quartz 好用,比 Airflow 简单,又完美契合 Java 生态

如果真是这样那感觉还是挺有意思的,居然这样奇怪的产生了一个技术生态位

作者: litchinn | 发布时间: 2026-01-22 06:40


12. 公司营销被运营商截胡,有什么好办法吗

有新用户注册后,很快就会有人给新用户打电话,然后推荐其他家的产品。

老板在测试自家产品的时候,用新手机号注册,过了大概五分钟就有人给他打电话售卖其他产品。

公司很小,没有什么内部卖数据的必要性。所以怀疑是运营商把数据卖了(听说运营商确实卖这类数据),但是并没办法实锤。

各位 V 友们,有什么好办法吗?

作者: DendimoN | 发布时间: 2026-01-22 02:38


13. antigravity 挂了,只能开始“古法手作”了

作者: bingqilinphenjh | 发布时间: 2026-01-22 09:59


14. 今天 TUN 模式也连不上 Angravity 了

之前还好好,今天突然 load 不出 model 了,有佬提供下终极方案吗

作者: nomisk | 发布时间: 2026-01-22 10:00


15. 大家都是用什么 AI 来生成设计稿的?

比如我想要做一个 App ,代码是可以使用 Cursor 之类的 IDE 来做,但是整体看起来的 UI 效果不是很好,有没有可以生成 UI 设计稿,或者生成一些图标的?或者大家自己独立做开发的时候,如何解决 UI 这块的需求。

希望各位大佬帮忙解答下,先提前谢谢了~

作者: canyu9512 | 发布时间: 2026-01-22 08:56


16. [踩坑] A 股开盘把 Python 搞挂了,怒切 Go 重写行情网关 (附 pprof 分析 + 源码)

💥 事故现场
LZ 所在的量化小厂,早期基础设施全是 Python (Asyncio) 一把梭。 跑美股( US )的时候相安无事,毕竟 Tick 流是均匀的。 上周策略组说要加 A 股 (CN) 和 外汇 (FX) 做宏观对冲,我就按老套路接了数据源。

结果上线第一天 9:30 就炸了。 监控报警 CPU 100%,接着就是 TCP Recv-Q 堆积,最后直接断连。 策略端收到行情的时候,黄花菜都凉了(延迟 > 500ms )。

🔍 排查过程 (Post-Mortem)
被 Leader 骂完后,挂了 py-spy 看火焰图,发现两个大坑:

Snapshot 脉冲:A 股跟美股不一样,它是 3 秒一次的全市场快照。几千只股票的数据在同一毫秒涌进来,瞬间流量是平时的几十倍。

GIL + GC 混合双打:

json.loads 是 CPU 密集型,把 GIL 锁死了,网络线程根本抢不到 CPU 读数据。

短时间生成大量 dict 对象,触发 Python 频繁 GC ,Stop-the-world 。

🛠️ 架构重构 (Python -> Go)
为了保住饭碗,连夜决定把 Feed Handler 层剥离出来用 Go 重写。 目标很明确:扛住 A 股脉冲,把数据洗干净,再喂给 Python 策略。

架构逻辑:WebSocket (Unified API) -> Go Channel (Buffer) -> Worker Pool (Sonic Decode) -> Shm/ZMQ

为什么用 Go ?

Goroutine:几 KB 开销,随开随用。

Channel:天然的队列,做 Buffer 抗脉冲神器。

Sonic:字节开源的 JSON 库,带 SIMD 加速,比标准库快 2-3 倍(这个是关键)。

💻 Show me the code
为了解决 协议异构( A 股 CTP 、美股 FIX 、外汇 MT4 ),我接了个聚合源( TickDB ),把全市场数据洗成了统一的 JSON 。这样 Go 这边只用维护一个 Struct 。

以下是脱敏后的核心代码,复制可跑(需 go get 依赖)。
package main

import (
“fmt”
“log”
“runtime”
“time”

github.com/bytedance/sonic“ // 字节的库,解析速度吊打 encoding/json
github.com/gorilla/websocket
)

// 防爬虫/防风控,URL 拆一下
const (
Host = “api.tickdb.ai
Path = “/v1/realtime”
// Key 是薅的试用版,大家拿去压测没问题
Key = “?api_key=YOUR_V2EX_KEY”
)

// 内存对齐优化:把同类型字段放一起
type MarketTick struct {
Cmd string json:"cmd"
Data struct {
Symbol string json:"symbol"
LastPrice string json:"last_price" // 价格统一 string ,下游处理精度
Volume string json:"volume_24h"
Timestamp int64 json:"timestamp" // 8 byte
Market string json:"market" // CN/US/HK/FX
} json:"data"
}

func main() {
// 1. 跑满多核,别浪费 AWS 的 CPU
runtime.GOMAXPROCS(runtime.NumCPU())

url := “wss://“ + Host + Path + Key
conn, _, err := websocket.DefaultDialer.Dial(url, nil)
if err != nil {
log.Fatal(“Dial err:”, err)
}
defer conn.Close()

// 2. 订阅指令
// 重点测试:A 股(脉冲) + 贵金属(高频) + 美股/港股
subMsg := { "cmd": "subscribe", "data": { "channel": "ticker", "symbols": [ "[600519.SH](http://600519.SH)", "[000001.SZ](http://000001.SZ)", // A 股:茅台、平安 (9:30 压力源) "XAUUSD", "USDJPY", // 外汇:黄金、日元 (高频源) "[NVDA.US](http://NVDA.US)", "[AAPL.US](http://AAPL.US)", // 美股:英伟达 "[00700.HK](http://00700.HK)", "[09988.HK](http://09988.HK)", // 港股:腾讯 "BTCUSDT" // Crypto:拿来跑 7x24h 稳定性的 ] } }
if err := conn.WriteMessage(websocket.TextMessage, []byte(subMsg)); err != nil {
log.Fatal(“Sub err:”, err)
}
fmt.Println(“>>> Go Engine Started…”)

// 3. Ring Buffer
// 关键点:8192 的缓冲,专门为了吃下 A 股的瞬间脉冲
dataChan := make(chan []byte, 8192)

// 4. Worker Pool
// 经验值:CPU 核数 * 2
workerNum := runtime.NumCPU() * 2
for i := 0; i < workerNum; i++ {
go worker(i, dataChan)
}

// 5. Producer Loop (IO Bound)
// 只管读,读到就扔 Channel ,绝对不阻塞
for {
_, msg, err := conn.ReadMessage()
if err != nil {
log.Println(“Read err:”, err)
break
}
dataChan <- msg
}
}

// Consumer (CPU Bound)
func worker(id int, ch <-chan []byte) {
var tick MarketTick
for msg := range ch {
// 用 Sonic 解析,性能起飞
if err := sonic.Unmarshal(msg, &tick); err != nil {
continue
}

if tick.Cmd == “ticker” {
// 简单的监控:全链路延迟
latency := time.Now().UnixMilli() - tick.Data.Timestamp

// 抽样打印
if id == 0 {
fmt.Printf(“[%s] %-8s | Price: %s | Lat: %d ms\n”,
tick.Data.Market, tick.Data.Symbol, tick.Data.LastPrice, latency)
}
}
}
}

📊 Benchmark (实测数据)
环境:AWS c5.xlarge (4C 8G),订阅 500 个活跃 Symbol 。 复现了 9:30 A 股开盘 + 非农数据公布 的混合场景。
指标,Python (Asyncio),Go (Sonic + Channel),评价
P99 Latency,480ms+,< 4ms,简直是降维打击
Max Jitter,1.2s (GC Stop),15ms,终于不丢包了
CPU Usage,98% (单核打满),18% (多核均衡),机器都不怎么转
Mem,800MB,60MB,省下来的内存可以多跑个回测

📝 几点心得
术业有专攻:Python 做策略逻辑开发是无敌的,但这种 I/O + CPU 混合密集型的接入层,还是交给 Go/Rust 吧,别头铁。

别造轮子:之前想自己写 CTP 和 FIX 的解析器,写了一周只想跑路。后来切到 TickDB 这种 Unified API ,把脏活外包出去,瞬间清爽了。

Sonic 是神器:如果你的 Go 程序瓶颈在 JSON ,无脑换 bytedance/sonic ,立竿见影。

代码大家随便拿去改,希望能帮到同样被 Python 延迟折磨的兄弟。 (Key 是试用版的,别拿去跑大资金实盘哈,被限流了别找我)

作者: Howiee | 发布时间: 2026-01-21 08:22


17. Antigravity 反重力挂了,但 Antigravity Tools 反代出来的 API 还能用

那可以用 Claude Code + Opus4.5 继续干活了?

不,该下班了。

作者: imik | 发布时间: 2026-01-22 09:47


18. edge 和系统的绑定是真的恶心啊

最近开发总是浏览器和 moba 终端来回切换,每次都自动变成中文,原本以为是系统的 bug,最近有时间试了一下,真的只有 edge 切换到其它界面才会保留输入法状态,也就是说,edge 是中文的,你切换到其它界面肯定也是中文,不管你原先的界面是什么,真心被恶心到了

作者: son012 | 发布时间: 2026-01-22 06:03


19. Nature 编程语言集成 WebView

一位开发者尝试在 nature 编程语言 中集成 WebView (项目地址:https://github.com/wzzc-dev/nature-webview),采用类似 Rust Tauri 的集成方式,最终打包完成后可以得到体积小巧、轻量化的可执行桌面程序。

这个简单的桌面程序就是由 nature + webview 打包而来,在 macos arm64 上只有 680KB 的大小,下面是一个更加简单的 hello world 代码示例

import webview as w
import webview.{webview_t}
import libc.{cstr, to_cfn}
import co.{sleep}
import co
import runtime

fn interval_callback() {
    co.yield() // Yield coroutine every 10ms to allow GC to run
}

fn other() {
    for true {
        println('other co')
        sleep(1000)
    }
}

fn main() {
    println("Hello, Nature Webview!")

    @async(other(), co.SAME)

    var window = w.create(1, null)
    w.set_title(window, "Hello World".to_cstr())
    w.bind(window, "interval_callback".to_cstr(), to_cfn(interval_callback as anyptr), 0)

    var html = `
      <html>
          <body>
              <script>setInterval(() => {window.interval_callback();}, 10);</script>
              <h1>Hello, Nature!</h1>
          </body>
      </html>`

    w.set_html(window, html.to_cstr())

    w.run(window) // blocking coroutine!
    w.destroy(window)
}

nature 是一款基于全局协程模型的编程语言,它与 WebView 的兼容性并不理想。起初该方案完全无法运行,nature-webview 的作者与我进行了沟通, 我认为这是一项非常有意义的工作,是 nature 核心 GUI 特性的重要环节,因此我着手排查并解决导致运行失败的问题,经过一个周末努力,主要问题都被解决,我迫不及待的将其分享出来!

WebView 必须运行在 t0 系统栈 + 系统线程中

在 macOS 系统上,编译完成后程序虽能正常启动,但通过 JS 回调 nature 时却发生了崩溃,且这个崩溃的调用栈非常深,难以追溯。即便通过 Debug 方式构建 WebView ,依旧无法获取完整的调用栈。

最终发现这是因为 WebView 动态依赖 WebKit 库,而 WebKit 库无法追踪调用栈 。经过多次尝试后偶然发现了 macos 的崩溃报告,我发现其中包含了完整的堆栈追踪日志!原来我一直忽略了如此重要的信息。

命令行执行程序崩溃时,也可以通过 ~/Library/Logs/DiagnosticReports/ 直接查看堆栈追踪日志

Crashed Thread:        0  Dispatch queue: com.apple.main-thread
Exception Type:        EXC_BREAKPOINT (SIGTRAP)

Termination Reason:    Namespace SIGNAL, Code 5 Trace/BPT trap: 5
Terminating Process:   exc handler [37708]

Thread 0 Crashed::  Dispatch queue: com.apple.main-thread
0   JavaScriptCore                	    0x7ff828e4b7d1 JSC::LocalAllocator::allocate(JSC::Heap&, JSC::GCDeferralContext*, JSC::AllocationFailureMode)::'lambda'()::operator()() const + 6801
1   JavaScriptCore                	    0x7ff829574b24 JSC::VM::VM(JSC::VM::VMType, JSC::HeapType, WTF::RunLoop*, bool*) + 24452

根据日志可以判断这是一个通过类似 assert 抛出来的断点类型的异常,并且发生在内存分配中,说明这极有可能和运行环境相关。

于是我尝试使用 C + WebView 进行对比测试并复现问题,nature 是运行在协程和协程栈中,所以通过 c 库的 mcontext + mmap stack 模拟 nature 的运行模式,果然重现了错误。到这里已经大概猜测是 WebKit 会进行运行时栈检测,并且是通过 pthread_get_stackaddr_np 的方式直接读取线程默认栈。

这是一个棘手的问题,如果需要兼容 WebView 需要对 nature 的基础架构进行一定改动。到目前为止都还只是猜测,为了证实测测我去下载了一个多 G 的 WebKit 代码定位堆栈追踪中的函数。最终定位到了下面的关键逻辑

ALWAYS_INLINE void* LocalAllocator::allocate(JSC::Heap& heap, size_t cellSize, GCDeferralContext* deferralContext, AllocationFailureMode failureMode)
{
    VM& vm = heap.vm();
    if constexpr (validateDFGDoesGC)
        vm.verifyCanGC();
    return m_freeList.allocateWithCellSize(
        [&]() ALWAYS_INLINE_LAMBDA {
            sanitizeStackForVM(vm);
            return static_cast<HeapCell*>(allocateSlowCase(heap, cellSize, deferralContext, failureMode));
        }, cellSize);
}

这个函数的结构和堆栈追踪中显示的一致,虽然有版本变动带来的影响,但是大概率就是该函数导致了崩溃,进一步追踪发现其中的 sanitizeStackForVM 函数果然使用了 pthread_get_stackaddr_np 来获取栈信息并进行 assert 判断。

问题到这里基本已经确定,可以尝试解决该问题。过去我知道 UI 必须在系统默认线程上渲染,但是没想到有些 UI 库对栈的要求也如此严格。由于 nature 的协程运行在共享栈中,所以解决起来也比较简单,直接拿系统栈作为共享栈使用即可,不过系统栈还需要驱动 procesor 运行,所以我暂时拿其中一半系统栈来作为协程的共享栈。

当然这是一个临时解决方案,在较新的 macos 26.2 系统中并不会发生类似的崩溃,以后也许可以继续使用 mmap 进行栈分配。

WebView 必须使用 glibc

由于 macos 系统发行版本单一,并且强制要求使用动态库链接,所以 nature 在 macos 上没有遇到编译问题,但是在 linux 上则出现了该问题。

nature 在 linux 系统上基于 musl 进行纯静态编译,libruntime.a + libuv.a + libc.a 是 nature 依赖的核心,这三件套都是 musl libc 纯静态编译的,所以跨平台性很好,一次编译到处运行。

WebView 在 linux 上依赖的 webkit 和 gtk 必须基于 glibc 动态编译 ,这和 nature 现在的编译理念产生了严重的冲突。动态编译的 webkit 和 gtk 在不同的 linux 发行版本上也有着兼容问题。难道这无法解决么?还真不行,Rust 的 tarui 在 linux 系统上也同样有着这样的兼容困扰。

既然现在 webkit 和 gtk 直接打破了静态编译的幻想,必须动态编译,必须依赖 glibc ,牺牲一定的跨平台性,那 nature 索性直接放弃静态编译和交叉编译的思路,直接使用 glibc 进行动态编译好了。

使用系统自带的链接器 ld 将 nature 依赖的静态库代码和 webkit 相关库进行动静态库混合链接后,终于在 ubuntu 22.04 desktop 上运行成功。

nature 手写的链接器只实现了静态编译部分,所以动态编译时需要通过 –ld /usr/local/ld 指定系统链接器。

为了更好的兼容性 nature build 的 –ldflags 参数还需要进行调整,在识别到传递 -lc 参数后,会自动去掉 libc.a 的依赖。有一个比较神奇的地方在于 musl libc 工具链编译的 libruntime.a 和 libuv.a 能够和 glibc 库直接混合链接使用。

最终得到的令人眼花缭乱的编译参数 😄,nature 并不依赖于 gcc 工具链,所以需要在 ldflags 中处理 crtendS 这样的初始化文件。

nature build --ld '/usr/bin/ld' --ldflags "/usr/lib/gcc/x86_64-linux-gnu/11/crtbeginS.o /usr/lib/gcc/x86_64-linux-gnu/11/crtendS.o --dynamic-linker=/lib64/ld-linux-x86-64.so.2 -L/usr/lib/x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/11 --whole-archive /usr/local/lib/libwebview.a --no-whole-archive -lwebkit2gtk-4.1 -lgtk-3 -lgdk-3 -lz -lpangocairo-1.0 -lcairo-gobject -lgdk_pixbuf-2.0 -latk-1.0 -lpango-1.0 -lcairo -lharfbuzz -lsoup-3.0 -lgio-2.0 -lgmodule-2.0 -ljavascriptcoregtk-4.1 -lgobject-2.0 -lglib-2.0 -lstdc++ -lgcc_s -lpthread -lc" test.n --verbose

w.run 阻塞 runtime

现在解决所有的问题了么?注意看这一行代码,它直接指向了一个 c++ 函数 webview_run ,并且这个函数永远不会返回。这会发生什么?

w.run(window) // blocking coroutine!

经过上面的适配,webview 成功在协程中运行,如果你足够了解协程的运行原理,你就会知道这一行阻塞操作会占用核心线程都控制权,这导致在该核心线程上的协程调度器和其他协程永远都不会运行。但这还不够致命,nature 可以轻易的通过创建新的线程来解决这个问题。真正的问题是阻塞系统调用会导致该线程无法进入 STW 状态,从而阻塞整个 GC ,这才是真正无解且致命的问题。

nature 采用了协作式的调度方案,意味着更多的控制权交在了开发者手上,为了更友好的 GUI 体验,也许应该尝试一些不同的方案。于是最终使用了一个比较 hack 的方式解决了该问题。

w.bind(window, "interval_callback".to_cstr(), to_cfn(co.yield as anyptr), 0)

var html = `
  <html>
      <body>
          <script>setInterval(() => {window.interval_callback();}, 10);</script>
          <h1>Hello, Nature!</h1>
      </body>
  </html>`

我们在 js 代码中创建了一个定时器,每 10ms 调用一次 nature 函数绑定,该函数绑定会 yield 当前协程将控制权交还给协程调度器。 通过这种方式不需要调整任何的 nature 编译器让整个协程调度器能够正常运转,代价大概就是需要 10ms 的延迟,而不是按需调度罢了。但是至少不会产生 GC 问题。

C/C++ 回调 nature fn

C/C++ 是不安全非托管的函数能够回调 nature 函数吗?原则上不行,比如 golang 不允许,因为 golang 的 C 代码和 go 代码运行在了不同的栈中,所以无法直接调用。

nature 和 C 代码在同一个共享栈中运行 ,所以回调能够正常触发。但在当前的设计中,nature 没有考虑过作为回调被 C 代码调用,所以 GC 不能正确的识别该混合调用模式。但这还算好解决,我们可以通过追溯栈帧获取整个栈上的函数调用链条并进行 GC root mark, C 在大多数情况下同样遵循该栈帧规则。

另外一个问题是闭包问题

fn foo() {}

fn main() {
    int a = 1
    fn() f = foo
    f = fn() {
        var b = a // Reference to external var
    }
    
    f()
    foo()

}

在高级编程语言中通常会区分闭包和全局函数,在上面的代码示例中,面对一个 fn 类型的变量 f ,编译器无法追踪其是全局函数还是闭包。所以通常会采取妥协的策略将 fn 类型变量统一按照闭包进行存储和使用。如图,fn 并不是一个单独的指针指向函数的地址,而是一个 16byte 的 pair 结构。

所以如果直接将 nature 中的 global fn 通过参数进行传递时,该参数是一个 16byte 的奇怪数据,C 并不知道 fn 的地址是什么,所以还需要从闭包中提取 fn 地址传递给 C 。这里的 libc.to_cfn 做了一个简单的工作,就是直接抛弃 env ptr(全局函数的 env ptr 总是为 null)并从中提取 fn ptr 传递给 C 函数。

w.bind(window, "interval_callback".to_cstr(), libc.to_cfn(interval_callback as anyptr), 0)

总结

到这里已知的问题都得到了解决,虽然方案上比较妥协,但是最终还是让 nature 编程语言成功集成了 WebView ,并且能够达到和 C + webview 一样的原生性能体验,同时也能够享受 GC 编程语言带来的安全性和协程的便利性。而 WebView 是一个典型的 C/C++ UI 库的示例,可以采用同样的方式集成类似 sokol/ImGui 等 UI 库。

https://nature-lang.cn/news/20260115 就如上一篇文章最后提到的,可控内存分配器和 unsafe 裸函数支持是原本的 GUI 支持策略基础,但是未料到共享栈模式的协程和 C/C++ 的兼容性如此优秀,直接就完成了适配。不过这种妥协不会是最终的解决方案,unsafe 裸函数和可控内存分配模式的工作会继续推动。到时候 nautre 的 main 函数可以选择独立于协程调度系统采取单独的线程和栈运行,让 nature 更加适应原生的 GUI 开发。

当然图形化操作系统 windows 同样是 GUI 支持重要一个环节,我将会进行看进行支持,由于调整了 nature 的源码,所以需要等到 0.7.3 版本发布时才能体验 nature-webview ,在这期间我会使用 nature 结合 webview 开发一个小项目进一步测试可用性。

作者: weiwenhao | 发布时间: 2026-01-22 09:06


20. Windows 10 22H2 转 Windows 10 IoT 企业版 LTSC 2021

准备工作

准备好以下文件和工具:

  • Windows 10 企业版 LTSC 2021 原版镜像 (ISO),提供一个 itellyou 的地址:

    ed2k://|file|SW_DVD9_WIN_ENT_LTSC_2021_64BIT_ChnSimp_MLF_X22-84402.ISO|5044211712|1555B7DCA052B5958EE68DB58A42408D|/

  • Windows 10 IoT 企业版 LTSC 转换密钥

    QPM6N-7J2WJ-P88HH-P3YRH-YY74H

  • 辅助脚本 访问 GitHub 下载 LTSConvert 脚本: https://github.com/Bladez1992/LTSConvert

安装与系统转换

按照 LTSConvert 项目页面的说明运行脚本。

关键步骤:

  • 更改更新设置 点击安装界面上的 “更改安装程序下载更新的方式”。选择跳过更新 在弹出的选项中,选择 “不是现在” (Not right now)。

  • 确认保留数据 在最终点击“安装”前的确认页面,务必检查屏幕上是否显示:保留个人文件和应用

如果未显示此选项,请不要继续,否则你的文件将会丢失。

版本转换与激活

进入“设置 > 激活 > 更改产品密钥”,输入上方 IoT 密钥 完成版本转换。

使用开源工具 https://github.com/massgravel/Microsoft-Activation-Scripts 进行永久激活

系统更新

激活完成后,进入 Windows 更新中心,检查并安装所有系统更新即可。

更新感受

  • 日常用的软件都没问题,win + s 搜索变得非常快

作者: wwwz | 发布时间: 2026-01-22 08:53


21. 对 llm 的感性化感叹:师者,传道授业解惑也。

在我的个人求学生涯和 1.5 年的职业生涯中,目前 llm 对我在专业上的帮助是最大的。

虽然它也会胡说八道,但是它是真的耐心教我,有求必应,竭尽所能,没有主观上的耍我坑我利用我。

有条件的朋友,真建议试试最顶尖的模型,和这些模型交流的体验真的是,比跟那些谄上欺下
的,自视甚高的,彼此防备的,勾心斗角的,一团浆糊的,不可理喻的愚蠢的人类要强的多。

当然了,llm 的背后包括架构和数据,是来自于广泛的人类的智慧, 这一点不可忽视。虽然,人个体其实也是广泛的人类的智慧的训练结果,没差异。

作者: YanSeven | 发布时间: 2026-01-22 03:01


22. flutter 生态这么差?写个 demo 两天都没调通

用 vlc 插件写个播放器 android linux 没一个能正常播放出画面。报什么通道创建错误。不管本地,网络流都报一个错。

这生态环境太恶劣了吧。ai ,google 都不能解决问题

实在是太难搞了

作者: wnpllrzodiac | 发布时间: 2026-01-21 10:25


23. trae 国际版 的 gpt 5.2 模型几乎是不可用了,一直要排队

17690674489535.png 之前还好,自从出了那个一周年庆活动之后就一直这样,超售太严重了

作者: meteora0tkvo | 发布时间: 2026-01-22 07:39


24. 如何选择合适的 AI 模型以平衡开发效率与使用成本?

日常习惯使用 VSC 作为生产力工具,所以决定使用 GitHub Copilot ,并为此付费。然而,在使用过程中,对于模型的选择以及使用额度与项目需求的匹配度方面仍有一些顾虑。因此,我想了解一下大家通常使用哪些模型来提升开发效率,以及在选择这些模型时是如何权衡项目需求和使用成本的。大家都是选择什么模型?无脑选 Claude Sonnet Opus ? x3 的消耗吃不消。

VSC 模型截图

作者: Oysmart | 发布时间: 2026-01-22 08:30


25. 如果充会员,你们会选择哪一家 AI?

之前微软勾引咱,给咱免费使用 Github Copilot Pro 。 现在微软收回去了,咱在 Google Antigravity 流浪。

现在总感觉额度不够用,想冲会员。

如果充会员的话,你会选 vscode 的 Github Copilot ,还是 antigravity 的 google 会员?

PS:antigravity 在 arm 服务器上用不了 remote ssh ,旧一点的 CPU 电脑上也用不了 remote ssh 。vscode 可以。

总是听说 Claude 系列编程给力,但是无奈我每次用 Google Antigravity 体验 Claude ,嗖的一下额度就没了。冲会员额度能管够吗

作者: sn0wdr1am | 发布时间: 2026-01-21 01:09


26. 好奇

编辑掉了

作者: hxndg | 发布时间: 2026-01-22 14:42


27. 寻找 RSS 阅读器大佬,求合作 v:ZDc0MDI0OTQ3NA==

RT,求合作,求骚扰,v:ZDc0MDI0OTQ3NA==

作者: hidumouren | 发布时间: 2026-01-22 05:26


28. 请教一个 Antigravity 安装插件问题

Antigravity 安装插件后,都不显示在左侧栏目中,可以怎么设置啊,多谢!

作者: xstress | 发布时间: 2026-01-22 02:41


29. 一个对比 JavaORM 框架的小仓库

GitHub 地址: https://github.com/f0rb/java-orm-comparison

包含 SpringDataJPA/SpringJdbc/jOOQ/MyBatis-plus 等框架开发动态查询功能的代码,以及与 DoytoQuery 的代码量和性能对比。

作者: f0rb | 发布时间: 2026-01-22 03:59


30. 急求 antigravity 使用稳定的机场

最近手里两个机场感觉都不稳

想看看大家有没有稳定的机场换一下

主要就是要求 antigravity 稳定, 专门用于 antigravity

看视频自然有别的机场

发 base64 链接没问题

作者: iorilu | 发布时间: 2026-01-22 07:04


31. 免费 chat app 哪家强

我主力开发工具是 cursor ,为了节省用量,我一般会在 chat app 里先脑暴一下,或者做一些数据处理

我使用过的 chat 不算多,chatgpt claude grok deepseek ,而且都没有付费过,所以不太清楚上限

但目前我基本只用 grok 了,有几个原因
- grok 免费用量挺多的,基本不会用超,其他几个很容易用超
- 我最看重的是联网查询能力,可以帮我搜一些新的文章、项目等,grok 基本每次都能搜 20-50 个引用,在用过的 app 里面算挺多的了
- grok 的输出风格比较适中,chatgpt 会使用太多的 list
- grok 审查比较宽松

我的使用场景其实比较有限,想知道大家都是怎么搭配用的,免费和收费的工具都有哪些推荐

作者: Cyron | 发布时间: 2026-01-22 05:37


32. win 系统下 现在能双开微信的方法 求助

bat 方法试了 不行 连续回车方法试了 不行 还有什么方法? 我需要同一个 PC 电脑开 2 个微信

作者: Achao1121 | 发布时间: 2026-01-21 06:46


33. 我做了一个简洁但很灵活的 Python LLM agent workflow 库,欢迎试用

学习 Agent 过程中做了个很小的 Python workflow 库,想请大家给些反馈

最近在学习 Agent 相关的东西,用过 LangChain 、CrewAI 一段时间,但个人不是很适应它们的代码风格,
所以自己摸索着设计了一个很小的 Python 库:PicoFlow

目标是尽量用接近普通 async Python 的方式来表达 agent 的执行流程,而不是引入图结构或较重的框架抽象。

项目地址:
https://github.com/the-picoflow/picoflow


基本用法

每个步骤就是一个 async 函数,然后直接组合:

from picoflow import flow, llm, create_agent

LLM_URL = "llm+openai://api.openai.com/v1/chat/completions?model=gpt-4.1-mini&api_key_env=OPENAI_API_KEY"

@flow
async def mem(ctx):
    return ctx.add_memory("user", ctx.input)

agent = create_agent(
    mem >> llm("Answer in one sentence: {input}", llm_adapter=LLM_URL)
)

print(agent.get_output("What is PicoFlow?", trace=True))

底层就是 async function 的组合,ctx 是显式传递的共享上下文。 整体概念比较少,尽量保持接近普通函数组合的思路。

目前还处在早期阶段,欢迎大家试用,帮我提提意见。 谢谢大家!

作者: shijizhi | 发布时间: 2026-01-22 02:27


34. token 不够用,大家是一个什么组合

Claude Code pro+ claude code+minimax token 不够用,

大家是一个什么组合,感觉 glm 模型有点垃圾,一个小问题给我修的乱起八糟,也不太想用。

作者: chenguangwei | 发布时间: 2026-01-21 07:03


35. 分享一个扫描版 PDF 翻译的工具, 如下

传送门:https://github.com/twwch/PDFVisualTranslator

作者: jaycee110905 | 发布时间: 2026-01-22 09:56


36. Antigravity 我登录他的 ide,直接提示地区不支持,这个有什么办法吗?

怎么切换地区呢?切换了之后会不会封号什么的呢,我是 google one 的付费用户

作者: leosj | 发布时间: 2026-01-21 05:03


37. 如何让 AI 工具更准确地处理依赖的第三方库?

在使用 AI 工具时(例如 cursor ,claude code ),有时候会需要分析不在代码仓库中的第三方库,这个时候 AI 工具往往会去用搜索引擎搜索,但对一些比较复杂的库,搜索引擎往往又不能提供有用的信息。有没有方法能让 AI 工具使用更准确的方法获得依赖的信息?比如直接在 github 上搜索,或者在本地代码缓存中搜索(例如 golang 这种将源代码作为依赖的情况)?

作者: xfn | 发布时间: 2026-01-21 03:58


38. 救助 V 友们: frp 把内网的海康摄像头映射到公网然后通过 sdk 连接 8000 端口访问控制问题

场景: frp 把内网的海康摄像头映射到公网然后通过 sdk 访问映射出来的 8000 端口,访问控制时,在 Qt 应用中报错-7:协议不支持。

但是 web 方式可以访问。

作者: yiyiniu | 发布时间: 2026-01-21 12:25


39. 任务管理器的使用技巧

  1. 按住 ctrl 键,页面不会实时刷新
  2. 按住 ctrl 键点击“运行新任务”,会弹出管理员模式的 cmd 窗口

作者: Need4more | 发布时间: 2026-01-20 17:12


40. 有一起交流小程序运营经验的吗

这个小程序,99%都是 AI“摸”出来的! 我主要负责提供需求、以及鼓励驱动它持续干活! 有想一起运营小程序可以进来交流下经验

它简约、轻量,甚至这条介绍文案也是 AI 随手写的——

Image

作者: zeni18 | 发布时间: 2026-01-21 14:33


41. 大家都来分享一下自己的 vibe coding 技巧

我先来

推荐做法

  • 引导 AI 出方案你来 review, review 通过了以后,先让 AI 先写测试用例,让测试用例失败,让 AI 自动修复测试用例,你来 review 修复方案和代码。
  • 多用 plan 模式,确认没问题了才让 AI 生成代码,不要一把梭不停的让 AI 修改代码 ,改来改去可能越改越奇怪,最好是把计划做好,这样效率和准确率更高。

不推荐

  • 你来出方案,让 AI 实现,你来测试,让 AI 修复代码。

作者: Nexora | 发布时间: 2026-01-20 02:52


42. 微软免费 2 年的 Microsoft 365 Premium 订阅—继上次免费 e3 全局

继上次微软免费的 Microsoft 365 E3 全局 https://v2ex.com/t/1172827

看到隔壁有人发,我想起了去年也验证过,方法很简单,当然前提你有 edu 邮箱,没有的话去 google 搜个社区大学注册。

去年起微软针对教育用户(学生)免费提供 2 年的 Microsoft 365 Premium 订阅。按微软价格的话,大概人民币 3000 多。

Microsoft 365 Premium 以每月 19.99 美元的价格,同时提供微软 Office 套件的使用权限与 Copilot Pro 的功能。该订阅包含更高的功能使用限额,以及 Copilot Labs 、Actions 等 Copilot Pro 专属功能的访问权限等。同时你可以通过电子邮件邀请最多 5 个人加入你的 Microsoft 365 家庭版订阅。

截图

具体方法

必备条件 edu 邮箱。 邮箱

登录你的微软个人账号,依次点击下面链接,进入验证,填写你的大学 edu 邮箱。 邮箱 个人版: https://checkout.microsoft365.com/acquire/purchase?language=EN-US&market=HK&requestedDuration=Month&scenario=microsoft-365-student&client=poc&campaign=StudentFree12M

高级版: https://checkout.microsoft365.com/acquire/purchase?language=EN-US&market=HK&requestedDuration=Month&scenario=microsoft-365-premium&client=poc&campaign=StudentPremiumFree12M 我的订阅

支付方式支持 paypal ,支付宝等,验证订阅后,你可以直接取消自动续费,就不会扣费风险!

作者: tunggt | 发布时间: 2026-01-20 04:16


43. 有没有一个融合了 vscode+obsidian 的对代码和 markdown 都支持出色的工具

vscode 里面看 Markdown 太痛苦,主要是不够美观。

obsidian 则是无法看代码。

作者: YanSeven | 发布时间: 2026-01-21 07:16


44. Codex 的上下文为什么显示只有 258K?

这几天发现在 codex 里用/status 看上下文变成 258K 了。我记得之前一直显示的是 272K ,意思是 400k-128k 预留最后一个回答上下文空间。但是最近编程 258K 了,大家也是这样吗?

Context window: 100% left (11.2K used / 258K)

作者: bixinhaner | 发布时间: 2026-01-21 11:18


45. 我终于把 rss 源、自定义源、关键词、微信公众号的内容都融合进来了,对信息敏感的请进

体验地址:hot.uihash.com

需要登陆,进入我的设置页面,即可看到,添加都在我的关注栏目中;

我的截图

作者: David666 | 发布时间: 2026-01-21 09:13


46. 本地轻量 code 模型进行简单辅助编码

有没有大佬试过在本地部署一个轻量一点的 code 大模型用来进行简单的编码辅助?各大厂商的大模型确实厉害,但是我觉得有时候一些简单的编码辅助可以利用本地的轻量模型完成。

作者: hubianluanma | 发布时间: 2026-01-21 03:09


47. 浏览器 Group 使用习惯是啥?

最近 chrome 开始测试垂直标签栏(这玩意 edge 早就有了),搭配上 group 更方便管理了。

虽然浏览器的 Group 功能出了好几年了,但从没用过。个人习惯不会在一个浏览器窗口开几十个 tab ,顶多十几个 tab 。针对不同的项目或者类型的网页,我会创建多个窗口,有两个显示屏,并且系统( macOS 和 Windows 都有)也创建多个 Desktop ,这样进行分离不同的浏览器标签类型。

平时两个显示屏和两个 Desktop 就够用了。也挺方便的。

看周围的人管理 group 非常麻烦,操作起来要拖拽来拖拽去,点一下展开一堆 tab ,找标签也是比较麻烦。唯一感觉比较爽的是一个 group 可以一键关闭。

所以你们用浏览器 group 是什么姿势?

一定有我不知道好处,想学习下。

作者: ethusdt | 发布时间: 2026-01-21 06:34


48. 开源了一个 html 转 pdf 的 js 库,这应该是 html 转 pdf 最正确的思路了

大概的实现步骤:

1.解析 html 页面,生成一个包含节点位置信息,样式,层级,内容等信息的 DOM 树。

2.递归 DOM 树,根据节点据顶部的高度和生成页面规格的高度,将节点分配到不同的页面。

3.调用 jspdf.js 的 api,将节点绘制到 PDF 文件上。

优点:

1.生成的是矢量的 PDF ,可以对 PDF 的文本进行搜索,选中,编辑。

2.生成的文件体积很小

3.使用简单,一行代码即可将 html 页面转成 pdf

4.精准的分页,避免元素被切割。

5.如果文件体积不大,而且电脑性能支持,可以生成几千页的 PDF

  1. 具体的说明

https://juejin.cn/post/7583912637470769203

  1. 在线体验

https://dompdfjs.lisky.com.cn

  1. Git 仓库地址 (欢迎 Star⭐⭐⭐)

https://github.com/lmn1919/dompdf.js

作者: lmq1919 | 发布时间: 2026-01-20 01:54


49. 请教下 frp 的安全性

最近整了个阿里云服务器,搭建了 frp 服务,准备将家里的小服务器的部分端口暴露给外网,方面自己在外使用。

我的使用方式是这样的:

1 、阿里云服务端只完全开放 7000 ,其他端口都不开放; 2 、阿里云服务端的 auth.token 设置为一个随机生成的复杂 token ; 3 、其他端口(比如:8080 ,8081 ,22 等),需要用到的时候,只要到阿里云上设置一下白名单并开放就行了。

各位大佬帮忙看看,这么做有没有什么比较严重的风险。还有没有其他可以优化的地方。抱拳

作者: eastry | 发布时间: 2026-01-20 06:30


50. 现在有那些 AI 支持读入单文件 10 万行以上的 God Class?试了好几个 AI IDE 都会报错, Gemini 网页版不报错但明显只读了开头 300 行左右

刚发现 Antigravity 的 Claude 会一直报错但是 Gemini 不报错,但 100%死循环思考直到失败,估计读了下面忘了上面

作者: drymonfidelia | 发布时间: 2026-01-21 08:59