页面顶部
已进入:阅读页
← 返回

动态2026-08-15GitHub作者:李笑来原文链接

klode 发布 v0.5.0

klode 发布了 v0.5.0。

这个版本更新了什么#

This is the same code as v0.4.3, under a number that tells the truth about it#

0.4.3 shipped these breaking changes as a patch​, which a klode>=0.4,<0.5 pin picks up automatically. That was the wrong number for them. 0.4.3 is yanked on PyPI — yanked, not deleted, so an exact pin still resolves and nobody already depending on it is broken.

git diff v0.4.3 v0.5.0 over the package is one line​: the version string.

⚠️ Breaking changes#

Five kinds of input that worked on 0.4.2 now raise. Every one of them was a guard failing open.

What now raises Was Why
permutations of 3, 5, 7… (constructor and [judge].permutations) accepted an odd count presents one level order more often, keeping the position bias the average exists to cancel — at higher cost than the even number below it. Use 1 or an even number to 16.
a non-integer hurdle (59.6, True, "60") via the API or the review service accepted, truncated truncation only moves the bar DOWN — int(59.6) is 59, so a draft scoring 59.52 passed a bar it did not clear
a shelf or extra_guard_dirs entry beginning with - accepted it reaches git ls-files as a pathspec, where a leading dash reads as a flag and silently disables the copyright-leak guard
an absolute --pattern to klode normalize accepted, scanned nothing glob ignores root_dir for an absolute pattern, re-arming every metacharacter in the library path
klode build when enumeration disagrees with the disk rewrote the board it overwrote INDEX.md with an empty board and reported success
Verdicts move. The gate compared a rounded score against the hurdle, so any draft within half
a point below it passed. Go becomes Recycle at the boundary — one direction only, never the
reverse. Rubrics whose criteria share a single scale cannot produce a fractional mean and are
unaffected.
Stored calibrations stop claiming coverage. Calibration now pins the judge (model,
permutation policy, prompt version) as well as the rubric, and reports calibrated=False until
re-measured.

Thirty-five defects fixed across three passes: an adversarial review of the plan before it was written, then two independent file-by-file re-audits of the work itself. The re-audits found 22 more, ten of them inside guards added earlier in the same effort — that pattern is documented in the changelog rather than smoothed over. Highlights: a public address spelled as an integer walked past the plaintext-transport guard (http://134744072 resolves to 8.8.8.8); a glob metacharacter in a library path made the fail-closed linter exit 0 over a rotted citation; an edited rubric could not be re-approved by the command its own error message named; normalize --check certified a corpus it had read half of; and check.py's in-tree backup sweep had never matched anything in its life. This line is also the first klode release whose test suite ran before publication — every tag before v0.4.3 published without it, because tests.yml triggers on branch pushes and a tag is not a branch. 981 tests across Python 3.11–3.14. Full detail in CHANGELOG.md.

以上是作者写在 GitHub 上的英文更新说明原文,未经翻译。查看原页面