惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Last Week in AI
Last Week in AI
有赞技术团队
有赞技术团队
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
人人都是产品经理
人人都是产品经理
博客园 - 司徒正美
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
罗磊的独立博客
IT之家
IT之家
博客园 - 三生石上(FineUI控件)
V
Visual Studio Blog
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
N
Netflix TechBlog - Medium
MyScale Blog
MyScale Blog
J
Java Code Geeks
L
LangChain Blog
S
SegmentFault 最新的问题
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Apple Machine Learning Research
Apple Machine Learning Research
G
Google Developers Blog

V2EX

我用 AI 写代码,但终端管理反而成了累赘——于是我做了 codux [调研] 各位在公司都用什么 ide 和 agent 写代码? 老运维 share 一个运维平台 看到有公司考核 token 指标,很好奇大家上个月的 AI 账单是多少 GLM-Coding 调用持续报错: z.ai 的 Lite 套餐几乎无法使用,官方 Pro/Max 是否稳定? 现在还有什么渠道可以稳定安全地使用 Claude 吗? 上海漕河泾内推,本组有 2 个 hc,一个后端,一个前端,预算都是 20k 左右,不打卡,氛围好 如果 V2EX 上有一组不永久保存聊天记录(比如只保存 7 天或者 24 小时)的聊天室,那么会开启哪些有用或者有趣的可能? gemini cli 貌似挂了,一直返回 403 第一次在自媒体上赚到钱 收集了最近在使用的低价 GPT, Gemini,邮箱等 AI 会员的小店合集 讨论个大实话:现在企业还在说 AI 编程提效 20%, 30%的,真的太落后,没用懂 AI。因为包括很多前沿公司,已经狂奔到提效 200%-500%的情况 [招聘][远程][币安] 前端/后端/QA/iOS/Android 至少 3 年以上经验 目前有大量 HC 欢迎投递 Chatgpt Pro 用量用不完的可以开这些设置 面试的时候好像遇到钓鱼了,给各位避个坑 cursor 年续费 22 号到期, 自动续费是否还是老的计次套餐呢 被两件破事毁掉的一下午,琐碎的内耗消磨人的精力 使用 Planet 存储 Codex 的会话或者重要信息 如果业务部门领导不要你开发功能,而是要求你教会它用 claude code 开发功能,你会怎么做? 分享一个 MacOS 接绿联 CM818 USB 转 DP 转接器使用感受 我的 HR 朋友 10 年老 Java ,非全大专,大家帮忙看看简历 开源了一个 AI 口语练习工具,音素级发音评分,完全免费可自部署 V2EX 上有哪些你觉得很有趣、印象深刻的妹纸? 字节为啥不出个国内版 Vercel? 有在大马的朋友吗? 问个运营商问题 你们在有领导的公司大群发过的最大胆的消息是什么 公司裁员,目前没有工作。想试试摆摊,做一个移动鲜啤打酒车 我的硬盘 Memblaze Pblaze 5 Linux 下不识别,给 Linux 内核提交了补丁, AI 说有望被合并 只有我一个人觉得 codex 不好用?
针对同一问题, Claude 和 Gemini 的实践对比。
sn0wdr1am · 2026-06-20 · via V2EX

模型: Claude Opus 4.6 ( Tinking ) Gemini 3.1 Pro ( High )

工具: Google Antigravity

提的问题大概就是:

让他们给我查询 OpenJDK 在 alpine:3.24.0 debian:13.5.0 rocky:10.2.0 上的最新版本号。

Gemini 3.1 Pro 花了 6 分钟,还在抓耳挠腮,像极了考试中不会做题,疯狂打草稿的我。

Claude 花了 1 分钟,输出一个漂亮的表格。先别管对不对,总之就是快。

Claude

明白了!我现在严格按照您的要求:**从 Dockerfile 的 `FROM` 基础镜像出发,确认每个变体可用的 OpenJDK 最新版本号**。

先查看当前三个 Dockerfile 的基础镜像:

Viewed Dockerfile:1-70
Viewed Dockerfile:1-77
Viewed Dockerfile:1-76

好的,三个 Dockerfile 的 FROM 基础镜像分别是:

| 变体 | 基础镜像 | 对应上游 |
|---|---|---|
| Alpine | `snowdreamtech/alpine:3.24.0` | Alpine 3.24 |
| Debian | `snowdreamtech/debian:13.5.0` | Debian 13 (trixie) |
| Rocky | `snowdreamtech/rocky:10.2.0` | Rocky Linux 10 |

现在我针对这三个**实际基础镜像版本**去查询 OpenJDK 21 的可用版本:

Ran command: `python3 -c "
import urllib.request, re

# Alpine 3.24 - already confirmed: 21.0.11_p10-r0
url = 'https://pkgs.alpinelinux.org/packages?name=openjdk21&branch=v3.24'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla'})
html = urllib.request.urlopen(req).read().decode('utf-8')
m = re.search(r'<td class=\"version\">.*?<strong>([^<]+)</strong>', html, re.DOTALL)
if m:
    print('Alpine 3.24 openjdk21:', m.group(1))
else:
    m2 = re.search(r'<td class=\"version\">.*?([0-9]+\.[0-9]+[0-9a-zA-Z._-]+)', html, re.DOTALL)
    print('Alpine 3.24 openjdk21:', m2.group(1) if m2 else 'not found')
"
`
Ran command: `python3 -c "
import urllib.request, re

# Debian 13 (trixie) - check openjdk-21-jdk
url = 'https://packages.debian.org/trixie/openjdk-21-jdk'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla'})
html = urllib.request.urlopen(req).read().decode('utf-8')
m = re.search(r'<h1>Package: openjdk-21-jdk \(([^)]+)\)', html)
if m:
    print('Debian 13 (trixie) openjdk-21-jdk:', m.group(1))
else:
    # try alternative pattern
    m2 = re.search(r'openjdk-21-jdk.*?([0-9]+\.[0-9]+\.[0-9]+[^\s<\"]*)', html, re.DOTALL)
    print('Debian 13 (trixie) openjdk-21-jdk:', m2.group(1) if m2 else 'checking alternative...')
"
`
Ran command: `curl -s "https://dl.rockylinux.org/pub/rocky/10/AppStream/x86_64/os/Packages/j/" | grep -o 'java-21-openjdk-devel-[^"]*\.rpm' | sort -V | tail -n 1`

✅ 三个基础镜像的 OpenJDK 21 最新版本已全部确认完毕:

| 变体 | FROM 基础镜像 | 包名 | 最新可用版本 | Dockerfile 当前版本 | 状态 |
|---|---|---|---|---|---|
| **Alpine** | `snowdreamtech/alpine:3.24.0` | `openjdk21` | `21.0.11_p10-r0` | `21.0.11_p10-r0` | ✅ 已是最新 |
| **Debian** | `snowdreamtech/debian:13.5.0` | `openjdk-21-jdk` | `21.0.11+10-1~deb13u2` | `21.0.11+10-1~deb13u2` | ✅ 已是最新 |
| **Rocky** | `snowdreamtech/rocky:10.2.0` | `java-21-openjdk-devel` | `21.0.11.0.10-2.el10_1` | `21.0.11.0.10-2.el10_1` | ✅ 已是最新 |

**结论:三个变体的 Dockerfile 中 OpenJDK 版本号已经全部是基于对应基础镜像仓库的最新版本( 21.0.11 系列),无需进一步修改。**

另外需要确认 `fix_exact.py` 中的版本也要同步更新(目前它还是旧的 `21.0.9` / `21.0.6`)。需要我更新 `fix_exact.py` 吗?

Gemini

Edited Dockerfile
Edited Dockerfile
Edited Dockerfile
Edited Dockerfile
Viewed Dockerfile:25-59
Ran command: `curl -s "https://pkgs.alpinelinux.org/packages?name=openjdk21-jdk&branch=v3.21" | grep -A 2 -B 2 "openjdk21-jdk"`
Ran command: `curl -s "https://pkgs.alpinelinux.org/packages?name=openjdk21-jdk&branch=v3.24" | grep -A 2 -B 2 "openjdk21-jdk"`
Ran command: `curl -s "https://pkgs.alpinelinux.org/packages?name=openjdk21-jdk&branch=v3.24" | grep -A 1 'class="version"'`
Ran command: `curl -s "https://pkgs.alpinelinux.org/packages?name=openjdk21-jdk&branch=v3.24" | grep -A 1 'class="version"'`
Ran command: `python3 -c "
import urllib.request, re
url = 'https://pkgs.alpinelinux.org/packages?name=openjdk21-jdk&branch=v3.24'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
try:
    resp = urllib.request.urlopen(req)
    html = resp.read().decode('utf-8')
    match = re.search(r'<td class=\"version\">.*?([^<>\n\s]+).*?</td>', html, re.DOTALL)
    if match: print('Alpine 3.24 version:', match.group(1))
except Exception as e: print(e)
"`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-528.log`
Ran command: `python3 -c "
import urllib.request, re
url = 'https://pkgs.alpinelinux.org/packages?name=openjdk21-jdk&branch=v3.24'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla/5.0'})
try:
    resp = urllib.request.urlopen(req)
    html = resp.read().decode('utf-8')
    match = re.search(r'<td class=\"version\">.*?<strong>([^<]+)</strong>', html, re.DOTALL)
    if match: print('Alpine 3.24 version:', match.group(1))
except Exception as e: print(e)
"`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-536.log`
Ran command: `python3 -c "
import urllib.request, re

def get_alpine():
    url = 'https://pkgs.alpinelinux.org/packages?name=openjdk21-jdk&branch=v3.24'
    req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla'})
    html = urllib.request.urlopen(req).read().decode('utf-8')
    m = re.search(r'<td class=\"version\">.*?([0-9]+\.[0-9]+[0-9a-zA-Z._-]+)', html, re.DOTALL)
    return m.group(1) if m else 'not found'

def get_debian():
    url = 'https://packages.debian.org/bookworm/openjdk-21-jdk'
    req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla'})
    try:
        html = urllib.request.urlopen(req).read().decode('utf-8')
        m = re.search(r'openjdk-21-jdk \(([0-9]+\.[0-9]+[^)]+)\)', html)
        return m.group(1) if m else 'not found'
    except Exception as e:
        return str(e)

print('Alpine:', get_alpine())
print('Debian:', get_debian())
"`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-543.log`
Ran command: `python3 -c "
import urllib.request, re
url = 'https://packages.debian.org/bookworm/openjdk-21-jdk'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla'})
html = urllib.request.urlopen(req).read().decode('utf-8')
m = re.search(r'<h1>Package: openjdk-21-jdk \((.*?)\)', html)
print('Debian:', m.group(1) if m else 'not found')
"`
Ran command: `python3 -c "
import urllib.request, re
url = 'https://packages.debian.org/bookworm-backports/openjdk-21-jdk'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla'})
try:
    html = urllib.request.urlopen(req).read().decode('utf-8')
    m = re.search(r'<h1>Package: openjdk-21-jdk \((.*?)\)', html)
    print('Debian-backports:', m.group(1) if m else 'not found')
except Exception as e:
    print(e)
"`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-553.log`
Ran command: `curl -s "https://packages.debian.org/search?keywords=openjdk-21-jdk&searchon=names&suite=bookworm" | grep "deb12"`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-561.log`
Ran command: `curl -s "https://tracker.debian.org/pkg/openjdk-21" | grep -A 2 "bookworm"`
Ran command: `curl -s 'https://sources.debian.org/api/src/openjdk-21/' | grep -A 10 '"version"'`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-571.log`
Ran command: `curl -s 'https://sources.debian.org/api/src/openjdk-21/'`
Ran command: `curl -s "https://dl.rockylinux.org/pub/rocky/9/AppStream/x86_64/os/Packages/j/" | grep "java-21-openjdk-devel" | tail -n 1`
Ran command: `curl -s "https://packages.debian.org/bookworm/openjdk-21-jdk" | grep "Package not available"`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-586.log`
Ran command: `curl -s "https://packages.debian.org/search?keywords=openjdk-21-jdk&searchon=names&suite=all&section=all" | grep -A 2 -B 2 "deb12"`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-594.log`
Ran command: `curl -s "https://packages.debian.org/search?keywords=openjdk-21-jdk&searchon=names&suite=all&section=all" | grep "bpo12"`
Ran command: `curl -s "https://security.debian.org/debian-security/pool/updates/main/o/openjdk-21/" | grep -o 'openjdk-21-jdk_[^"]*' | head -n 1`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-605.log`
Viewed fix_exact.py:1-400
Ran command: `curl -s "https://security.debian.org/debian-security/pool/updates/main/o/openjdk-21/" | grep "deb12"`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-618.log`
Ran command: `curl -s 'https://sources.debian.org/api/src/openjdk-21/'`
Ran command: `curl -s "https://security.debian.org/debian-security/pool/updates/main/o/openjdk-21/" | grep -o 'openjdk-21-jdk_[^"]*' | grep 'deb12'`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-628.log`
Ran command: `curl -s "http://ftp.debian.org/debian/pool/main/o/openjdk-21/" | grep -o 'openjdk-21-jdk_[^"]*' | grep 'bpo12' | head -n 1`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-635.log`
Ran command: `curl -s "http://security.debian.org/debian-security/pool/updates/main/o/openjdk-21/" | grep -o 'openjdk-21-jdk_[^"]*' | grep 'deb12u'`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-643.log`
Ran command: `python3 -c "
import urllib.request, gzip
url = 'http://ftp.debian.org/debian/dists/bookworm-backports/main/binary-amd64/Packages.gz'
req = urllib.request.Request(url, headers={'User-Agent': 'Mozilla'})
try:
    data = urllib.request.urlopen(req).read()
    text = gzip.decompress(data).decode('utf-8')
    for block in text.split('\n\n'):
        if block.startswith('Package: openjdk-21-jdk\n'):
            for line in block.split('\n'):
                if line.startswith('Version: '):
                    print('Found:', line.split(': ')[1])
except Exception as e:
    print(e)
"`
Ran command: `cat /Users/snowdream/.gemini/antigravity-ide/brain/c7085f8c-392e-4c2d-b0a1-c059e7698dcc/.system_generated/tasks/task-650.log`
Listed directory c7085f8c-392e-4c2d-b0a1-c059e7698dcc
Ran command: `docker run --rm debian:12.9-slim bash -c "apt-get update -qq && apt-cache madison openjdk-21-jdk"`
Ran command: `curl -s "https://snapshot.debian.org/mr/package/openjdk-21/" | grep -o 'version":"[^"]*"' | sort -u`

结论:

Google 在干嘛? 手指头掰了半个小时,也没算出来 1+1 等于几