Eine Änderung in einem Repository überprüfen¶
Geben Sie einem Agent eine Sandbox und den mitgelieferten Skill code-review, lassen Sie ihn ein kleines Git-Repository anlegen und dann den Diff eines Commits prüfen. Der Diff enthält zwei eingebaute Fehler, einen Off-by-one und ein unbehandeltes None, an file:line-Stellen, die Sie von Hand prüfen können. Dies ist eine Anleitung zum Ausführen, mit einem festgehaltenen Run als Referenz.
Was Sie brauchen¶
- Eine laufende Installation mit einem Modellprofil und einer registrierten Sandbox-Verbindung, deren Standard-Runtime
workbenchist, denn sie enthältgit. - Den Skill
code-review, den jede Organisation mitbringt. Siehe Skills. - Nichts weiter zum Anhängen: Das Repository legt der Agent selbst in der Sandbox an, aus dem genauen Dateiinhalt im Prompt unten.
Die Eingabe vorbereiten¶
Hier gibt es keine Datei zum Anhängen. Das "Repository" sind zwei kleine Python-Dateien, die der Agent auf Ihre Anweisung selbst schreibt, sodass Sie genau bestimmen, was der Diff enthält. Version 1 ist ein einfacher Warenkorbrechner:
# utils.py (version 1)
def compute_total(prices):
total = 0
for p in prices:
total += p
return total
def find_discount_tier(count):
tiers = [(10, 0.05), (20, 0.10), (50, 0.15)]
for threshold, rate in tiers:
if count >= threshold:
return rate
return 0.0
# main.py (version 1)
from utils import compute_total, find_discount_tier
def checkout(cart):
prices = [item["price"] for item in cart]
total = compute_total(prices)
rate = find_discount_tier(len(cart))
return total * (1 - rate)
Version 2 fügt einen Mitgliederrabatt und eine Hilfsfunktion apply_discount hinzu, mit zwei eingebauten Fehlern: Der neue Parameter member_rate in main.py ist standardmäßig None und wird ohne Prüfung verwendet, und apply_discount in utils.py rabattiert jede Position einschließlich der teuersten und hängt dieselbe Position dann noch einmal an, sodass sie doppelt gezählt wird.
# utils.py (version 2, adds apply_discount)
def apply_discount(prices, rate):
"""Discount every item except the single most expensive one."""
sorted_prices = sorted(prices)
n = len(sorted_prices)
discounted = [sorted_prices[i] * (1 - rate) for i in range(n)]
discounted.append(sorted_prices[-1])
return discounted
# main.py (version 2)
from utils import compute_total, find_discount_tier, apply_discount
def checkout(cart, member_rate=None):
prices = [item["price"] for item in cart]
tier_rate = find_discount_tier(len(cart))
discounted_prices = apply_discount(prices, tier_rate)
total = compute_total(discounted_prices)
return total * (1 - member_rate)
Referenz: Der Diff zwischen den Versionen hat genau zwei echte Fehler. return total * (1 - member_rate) in main.py löst immer dann TypeError aus, wenn member_rate auf dem Standardwert bleibt, und apply_discount in utils.py gibt eine Position zu viel zurück, weil die Schleife den letzten Index schon enthält, bevor dieselbe Position erneut angehängt wird. Weder compute_total noch find_discount_tier ändern sich zwischen den Versionen, also sagt ein korrektes Review nichts über sie.
Den Agent bauen¶
- Erstellen Sie unter Agents → New agent einen Agent und wählen Sie Ihr Modellprofil.
- Aktivieren Sie in der Toolbox Files & shell. Wählen Sie Container, Ihre Sandbox-Verbindung und die Runtime
workbench, und behalten Sie den Konversations-Scope bei. - Aktivieren Sie Skills und binden Sie
code-review. - Legen Sie ein Budget für den Versuch fest. Der festgehaltene Run nutzte etwa 40 Schritte und kostete etwa 0,18 USD, vor allem durch die wiederholten Shell-Genehmigungen.
- Setzen Sie die Instruktionen unten und klicken Sie dann auf Publish.
You review a change in a git repository using the bound code-review skill.
Follow that skill: read the whole change before commenting, say what is wrong
and why it matters, and separate what blocks from what does not.
Only report issues that are actually in the diff. Do not report a problem in a
line the diff did not touch.
Cite every finding as file:line and give a concrete fix.
Ausführen¶
Öffnen Sie einen neuen Chat und fügen Sie die beiden Versionen oben zusammen mit der Anweisung ein, das Repository anzulegen und die Änderung zu prüfen:
Set up a tiny git repository in your workspace and review one change in it.
1. Create a directory `grocery_calc`, write utils.py and main.py exactly as
given above (version 1), then git init, configure a throwaway user, and
commit them as the initial version.
2. Replace both files with version 2 exactly as given above, and commit that
as a second commit.
3. Run `git diff HEAD~1 HEAD` to get the exact change, then review that diff
using the bound code-review skill. Report every real defect the diff
introduces, each as file:line with a concrete fix. Do not report anything
about a line the diff did not change.
Jeder execute-Aufruf des Agents (git init, jeder Commit, der Diff) zeigt im Chat Tool approval required. Lesen Sie den Befehl und klicken Sie jeweils auf Approve. Der Run setzt dort fort, wo er angehalten hat. Um das für einen vertrauenswürdigen Test-Agent zu überspringen, ändern Sie die Genehmigungseinstellung von execute im Builder. Siehe Genehmigungen.
Das Ergebnis prüfen¶
| Prüfung | Referenz |
|---|---|
Unbehandeltes None gefunden |
main.py:9, return total * (1 - member_rate) stürzt ab, wenn member_rate auf dem Standardwert None bleibt |
| Off-by-one gefunden | utils.py:20-21, die Comprehension deckt bereits jeden Index einschließlich des letzten ab, dann wird diese Position ein zweites Mal angehängt |
| Beide als file:line angegeben | Nicht nur "in apply_discount ist ein Fehler" |
| Die Korrektur ist konkret | Ein korrigierter Codeausschnitt, nicht nur eine Beschreibung des Problems |
| Unveränderter Code | Keine Anmerkung zu compute_total oder find_discount_tier, die der Diff nicht berührt hat |
| Blockierend oder nicht | Die beiden Fehler sind als blockierend markiert, alles Stilistische hat das Präfix "nit" |
Lesen Sie den Diff selbst, bevor Sie dem Review vertrauen. git diff HEAD~1 HEAD im Dateibereich des Workspaces zeigt genau das, was der Agent geprüft hat.
Festgehalten auf v0.0.504, 25. September 2026
Modell: Claude Sonnet 4.6 über OpenRouter. Der Agent lud den Skill code-review, dann per read_skill_resource dessen checklist.md und review-comment.md, schrieb danach beide Dateien, committete zweimal und führte den Diff aus. Das waren drei execute-Aufrufe, jeder zur Genehmigung geparkt. Nach der Genehmigung antwortete er mit drei blockierenden Befunden und einem Nit.
Er nannte main.py:9 für den TypeError bei fehlendem member_rate mit einer zweizeiligen Korrektur und utils.py:20-21 für die doppelt gezählte Position mit einer korrigierten apply_discount, genau passend zu beiden eingebauten Fehlern. Außerdem markierte er den Diff als ungetestet, nach der Regel aus der Checkliste des Skills, dass eine Verhaltensänderung einen Test braucht. Zu compute_total und find_discount_tier sagte er nichts. Kosten: 0,18 USD über 40 Schritte, das meiste davon für die drei Genehmigungsrunden.
Wenn etwas schiefgeht¶
- Der Agent sagt, er habe keine Shell. Die Capability nutzt Files statt Container. Wechseln Sie zu Container und wählen Sie die Runtime
workbench. - Der Run hält nach
git initoder einem Commit an. Er wartet auf die Genehmigung vonexecute. Öffnen Sie den Chat oder den Tab Approvals in Activity. - Das Review meldet etwas in unverändertem Code. Verschärfen Sie die Instruktionen: Es soll nur prüfen, was
git diffzeigt, nicht die ganze Datei. - Ein Befund hat kein file:line. Bitten Sie den Agent, die Kommentarvorlagen der Checkliste erneut zu lesen, die immer eine Stelle nennen.
- Der erste Durchgang ist langsam. Das
workbench-Image wird gebaut. Spätere Sessions verwenden es wieder. Siehe die Sandbox.
Den Versuch festhalten¶
Bewahren Sie die beiden genauen Versionen, den Diff, das Review, die Agent-Version und jeden genehmigten Befehl in Activity auf. Ein Mensch entscheidet weiterhin, ob die Korrekturen stimmen und ob "kein Test dafür" den Merge wirklich blockieren soll. Der Skill formuliert diese Regel, aber sie auf einen echten Pull Request anzuwenden, ist die Entscheidung eines Menschen, genauso wie beim lokalen Review-Standard, dem dieses Projekt bei seinen eigenen PRs folgt.
Nächste Schritte¶
Verbinden Sie denselben Agent mit einer Sandbox mit Netzwerkzugang und lassen Sie ihn einen Diff aus einem geklonten öffentlichen Repository prüfen statt eines diktierten. Die Runtime workbench hat git und ein Netzwerk, also funktioniert git clone genauso wie hier git diff.