GoForum🌐 V2EX

针对同一问题, Claude 和 Gemini 的实践对比。

sn0wdr1am · 2026-06-20 19:08 · 0 次点赞 · 8 条回复

模型: 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 等于几

8 条回复
123128xyz · 2026-06-20 19:13
#1

gemini 美版豆包,你敢用来写代码//////

wolfie · 2026-06-20 19:38
#2

gemini 3.1 不理解指令,防御性太强 一直自我发挥,3.5 稍微好了那么一点。 还有 agy 做的也很差,乱七八糟上下文塞的很多。

terence4444 · 2026-06-20 19:43
#3

Prompt 很重要,如果这都没有,别人如何验证?

andrew2558 · 2026-06-20 20:03
#4

大家别再讨论 gemini 了,让他在自我世界里消失吧,我没见过这么差的模型

laminux29 · 2026-06-20 20:13
#5

我是 7 款 AI 同时使用,国外 4 款,国内 3 款。

我自己的感觉是,OpenAI 与 Gemini 像是高材生,对于大多数问题,回答的更好。但国内的普通生 Deepseek 、豆包、千文,偶尔会超神,也就是超过我用的其他所有 AI 。

所以,同时使用多款 AI 才是正解,对于同一个问题,去追究谁更强,没什么意义。AI 不像只有第一名的比武,而是像文无第一的文科比赛。

sn0wdr1am · 2026-06-20 20:13
#6

@terence4444

同样的一个问题,Claude 比 Gemini 回答的好。 找 Prompt 问题,找别的理由没意义。

sn0wdr1am · 2026-06-20 20:18
#7

@laminux29 Gemini 重度使用。

其实总体表现还可以。

有时候给人很垃圾,钻牛角尖,瞎写脚本,乱替换的感觉,陷入一种无意义的内耗,空转状态。

你指出来,他就道歉,下次还可能犯同样的错误,重复道歉。

laminux29 · 2026-06-20 20:28
#8

@sn0wdr1am 各家 AI 都会发生这种情况。

所以我的策略就是一起用,总有一家 AI 头脑清明。

更重要的是,在有多家 AI 都能答对的情况下,不同的 AI 还能给你补充不同的重要观点。

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: sn0wdr1am
发布: 2026-06-20
点赞: 0
回复: 0