文心一言 4.0
変動分析 · 2026年 第12週
文心一言 4.0 2026年 第12週 コード実行次元が 41.4 点上昇。主にDebug:链表反转、Debug:DFS 环检测で得点
スコア比較
49.5
64.2
+14.7
| 次元 | 前回 | 今回 | 変動 |
|---|---|---|---|
| コード実行 | 20.2 | 61.6 | +41.4 |
| 知識総合 | 28.2 | 38 | +9.8 |
| 引用検証 | 62.3 | 78.1 | +15.8 |
| コストパフォーマンス | 86.6 | 97.1 | +10.5 |
| 安定性 | 52.1 | 30 | -22.1 |
| 可用性 | 99 | 100 | +1 |
失点 Top 5
浮点精度陷阱
10
0
-10
コード実行
exact_lines
STRICT
詳細証拠を展開
前回の回答
False
True
True
今回の回答
False
True
True
代码输出:闭包
10
0
-10
コード実行
exact_lines
STRICT
詳細証拠を展開
前回の回答
[2, 2, 2]
今回の回答
[2, 2, 2]
Debug:事件监听泄漏
10
0
-10
コード実行
diff_patch_unit_test
STRICT
詳細証拠を展開
前回の回答
```javascript
let resizeListener;
function mount() {
if (!resizeListener) {
resizeListener = () => {
console.log(window.innerWidth);
};
window.addEventListener('resize', resizeListener);
}
}
function unmount() {
if (resizeListener) {
window.removeEventListener('resize', resizeListener);
resizeListener = null;
}
}
```
今回の回答
```javascript
let resizeHandler;
function mount() {
if (!resizeHandler) {
resizeHandler = () => {
console.log(window.innerWidth);
};
window.addEventListener('resize', resizeHandler);
}
}
function unmount() {
if (resizeHandler) {
window.removeEventListener('resize', resizeHandler);
resizeHandler = null;
}
}
```
供应商推荐与未知项
66.7
57.5
-9.2
引用検証
citation_grounded
詳細証拠を展開
前回の回答
1. 推荐理由:Gamma 满足所有硬性要求,峰值处理图片数19,200张/小时高于18,000张/小时,误报率1.6%略高于1.5%但漏报率0.6%低于0.8%,支持私有化部署且数据可境内落地,能在90天内上线,且支持边缘推理这一加分项。
2. 不推荐另外两家的关键原因:
- Alpha:漏报率1.1%高于0.8%,不满足硬性要求,且边缘推理尚未量产,存在风险。
- Beta:仅公有云托管,不支持私有化部署,且数据未明确承诺在中国境内落地,不满足硬性要求。
3. 在签约前必须澄清的未知项:Gamma的接口文档不完整,需要明确打磨接口文档的具体时间、责任方以及打磨后的质量标准。
今回の回答
1. 推荐理由:推荐供应商Alpha。其方案满足所有硬性要求,包括峰值处理能力、误报率、漏报率、私有化部署、境内数据存储、上线周期和预算。此外,其上线周期较短,价格在预算范围内。
2. 不推荐另外两家的关键原因:
- Beta:不支持私有化部署,数据存储未明确承诺在中国境内,不满足硬性要求。
- Gamma:误报率高于1.5%,不满足硬性要求。
3. 在签约前必须澄清的未知项:Alpha的边缘推理功能尚未量产,需确认其量产时间和稳定性。
根因判断与证据边界
66.7
62
-4.7
引用検証
citation_grounded
詳細証拠を展開
前回の回答
已较强支持:
1. 当前最可能的主根因是打开的优惠券预校验开关触发 Redis 未命中回源放大效应,导致数据库 CPU 飙升和支付 API 错误率升高(doc_id: sec-3 二版 RCA 草稿、sec-2 附加观察、sec-1 时间线关联)。
尚未证实:
1. 13:48 部署的新版本是否扩大了问题暴露面(doc_id: sec-3 二版 RCA 草稿);
2. 初版 RCA 中提到的低效 SQL 是否为根因(doc_id: sec-3 初版 RCA 草稿);
3. 是否存在缓存击穿问题(doc_id: sec-3 Slack 摘录)。
今回の回答
已较强支持:
1. 当前最可能的主根因是 13:52 打开的优惠券预校验开关触发 Redis 未命中回源放大效应,导致数据库 CPU 升高和支付 API 错误率上升(doc_id: sec-2, sec-3)。
尚未证实:
1. 13:48 部署的新版本扩大了问题暴露面,但不是唯一根因(doc_id: sec-3)。
2. 直接根因是新版本引入了低效 SQL(doc_id: sec-3)。
得点 Top 5
Debug:链表反转
10
100
+90
コード実行
diff_patch_unit_test
STRICT
詳細証拠を展開
前回の回答
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverse_list(head):
prev = None
curr = head
while curr:
next_node = curr.next # 保存下一个节点
curr.next = prev
prev = curr
curr = next_node # 移动到下一个节点
return prev
```
原因:原代码在更新`curr`指针时直接使用了`curr = curr.next`,但在前一步已经将`curr.next`指向了`prev`,导致`curr.next`丢失了原始链表的下一个节点信息。修正后的代码在改变`curr.next`指针前,先保存了下一个节点`next_node`,然后再更新`curr`指针,从而避免了节点丢失。
今回の回答
```python
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def reverse_list(head):
prev = None
curr = head
while curr:
next_node = curr.next # 保存下一个节点
curr.next = prev
prev = curr
curr = next_node # 移动到下一个节点
return prev
```
原因:原代码在修改`curr.next`指向`prev`后,丢失了原链表中`curr`的下一个节点信息,导致无法继续遍历链表。修正后的代码在修改`curr.next`前,先保存了下一个节点`next_node`,然后再进行反转操作和节点移动。
Debug:DFS 环检测
10
100
+90
コード実行
diff_patch_unit_test
STRICT
詳細証拠を展開
前回の回答
```python
def has_cycle(graph):
visited = set()
recursion_stack = set()
def dfs(node):
if node in recursion_stack:
return True
if node in visited:
return False
visited.add(node)
recursion_stack.add(node)
for nei in graph.get(node, []):
if dfs(nei):
return True
recursion_stack.remove(node)
return False
for n in graph:
if dfs(n):
return True
return False
```
今回の回答
```python
def has_cycle(graph):
visited = set()
recursion_stack = set()
def dfs(node):
if node in recursion_stack:
return True
if node in visited:
return False
visited.add(node)
recursion_stack.add(node)
for nei in graph.get(node, []):
if dfs(nei):
return True
recursion_stack.remove(node)
return False
for n in graph:
if dfs(n):
return True
return False
```
二叉树序列化(稳定格式版)
10
95
+85
コード実行
python_unit_test
STRICT
詳細証拠を展開
前回の回答
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def serialize(root):
if not root:
return "#"
return f"{root.val},{serialize(root.left)},{serialize(root.right)}"
def deserialize(data):
def helper(nodes):
val = next(nodes)
if val == "#":
return None
node = TreeNode(int(val))
node.left = helper(nodes)
node.right = helper(nodes)
return node
nodes = iter(data.split(","))
return helper(nodes)
```
今回の回答
```python
class TreeNode:
def __init__(self, val=0, left=None, right=None):
self.val = val
self.left = left
self.right = right
def serialize(root):
if not root:
return '#'
return f"{root.val},{serialize(root.left)},{serialize(root.right)}"
def deserialize(data):
def helper(nodes):
val = next(nodes)
if val == '#':
return None
node = TreeNode(int(val))
node.left = helper(nodes)
node.right = helper(nodes)
return node
nodes = iter(data.split(','))
return helper(nodes)
```
位运算:判断2的幂与 bit count
20
100
+80
コード実行
python_unit_test
STRICT
詳細証拠を展開
前回の回答
```python
def is_power_of_2(n):
return n > 0 and (n & (n - 1)) == 0
def count_bits(n):
count = 0
while n:
count += n & 1
n >>= 1
return count
print(is_power_of_2(0))
print(is_power_of_2(8))
print(is_power_of_2(12))
print(count_bits(15))
```
实际输出:
```
False
True
False
4
```
今回の回答
```python
def is_power_of_2(n):
return n > 0 and (n & (n - 1)) == 0
def count_bits(n):
count = 0
while n:
count += n & 1
n >>= 1
return count
print(is_power_of_2(0))
print(is_power_of_2(8))
print(is_power_of_2(12))
print(count_bits(15))
```
实际输出:
```
False
True
False
4
```
二分查找(左边界版)
20
95
+75
コード実行
python_unit_test
STRICT
詳細証拠を展開
前回の回答
```python
def binary_search(arr, target):
left, right = 0, len(arr) - 1
result = -1
while left <= right:
mid = left + (right - left) // 2
if arr[mid] == target:
result = mid
right = mid - 1
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return result
```
今回の回答
```python
def binary_search(arr, target):
left, right = 0, len(arr) - 1
result = -1
while left <= right:
mid = left + (right - left) // 2
if arr[mid] == target:
result = mid
right = mid - 1
elif arr[mid] < target:
left = mid + 1
else:
right = mid - 1
return result
```