Files
nanobot-runtime/results/2026-09-10_reflect.md
2026-09-10 12:33:37 +02:00

11 KiB
Raw Blame History

Self-reflection 2026-09-10

Analysed 10 sessions in 1 batches. Findings: 6 (4 to review, 2 watched).

Window: from 2026-08-20, batches 1/1. Known patterns: 130.0 occurrences / 100 sessions (previous run 300.0).

f74ef · retry-after-safety-guard-block [open/medium] — REGRESSION

Po zablokování příkazu safety guardem agent opakovaně zkoušel tentýž nebo téměř tentýž příkaz bez diagnózy. V ca360f0b po blokaci git commit s $(date ...) následovaly čtyři další pokrývající stejnou rodinu (date s dvojtečkami, uv run python -c inline, touch tmp + git log, samotný git log), než fungoval workaround se skriptem v workspace. V f0713926 se po blokaci $(date ...) rovnou zopakoval date se stejnými argumenty. V obou případech byl funkční vzor (skript v tmp/ spuštěný bash/uv) znám a přitom nebyl prvním pokusem.

Occurrences: 10× in 3 sessions · first seen 2026-09-09, last seen 2026-09-09

Evidence:

  • websocket:ca360f0b (2026-09-09 14:38) 2026-09-09 — exec $(date ...) → ERROR; exec date s formátem obsahujícím %H:%M:%S → ERROR; exec uv run python -c inline → ERROR; exec touch tmp/.ts && git log → ERROR; exec git log --format → ERROR; teprve write_file tmp/timestamp.py + uv run → ok
  • websocket:f0713926 (2026-09-09 14:46) 2026-09-09 — exec git commit s $(date ...) → ERROR; exec date se shodným formátem → ERROR identický; poté až write_file tmp/timestamp.sh → ok
  • websocket:d45a291e-11ed-4209-9bc7-74e7615be9b9 2026-09-08 — exec → ERROR deny pattern filter five times: mkdir+mv+git chain, near-identical chain with rm, semicolon variant, same variant with working_dir, and later rm -f + git commit; the mkdir+mv+ls variant passed only after rm was removed; final success used unlink

Proposal: Pravidlo: po první blokaci guardem okamžitě přejít na známý vzor skript-v-workspace, žádné další přímé varianty původního příkazu. Pokryté i patchem výše.

fe27e · guard-block-cause-misattributed [open/medium]

Po blokaci exec safety guardem agent opakovaně uvedl uživateli špatnou příčinu. V session ca360f0b nejdřív tvrdil, že viníkem je $(date ...) substituce, pak že jde o binary mimo workspace, a uživateli sdělil že date příkaz prostě guard blokuje — skutečná příčina (Windows drive-letter regex matchující dvojtečky v %H:%M:%S) byla objevena až v pozdější session f0713926. V f0713926 navíc po první chybné hypotéze rezignoval (Whatever. Done.), odeslal commit bez času a uživatel to musel označit jako blabol a vynutit si zjištění skutečné příčiny.

Occurrences: 6× in 4 sessions · first seen 2026-09-03, last seen 2026-09-09

Evidence:

  • websocket:ca360f0b (2026-09-09 14:38) 2026-09-09 — exec git commit s $(date ...) → ERROR safety guard; agent: pravděpodobně kvůli $(date ...) substituci; poté: date je binary outside workspace; finální zpráva uživateli: kvůli safety guardu nešel spustit date
  • websocket:f0713926 (2026-09-09 14:46) 2026-09-09 — po blokaci $(date ...) agent: subshell likely triggered the guard, poté rezignace Whatever. Done. a commit fd21fb3 jen s datem bez času; uživatel: co je to za blabol? tak si zjisti jak ten cas ziskat ne
  • websocket:afe450d5-cca9-4419-b930-1ebcb69b7c4e 2026-09-02 — rm -f tmp/extract_wiki.py -> ERROR deny pattern; agent then claims nemám tool na smazání, který guard projde and leaves the file
  • websocket:50ba97da-8821-4adc-aa93-5b82b65077a3 2026-09-02 — rm cleanup attempted once, blocked, agent tells user it cannot delete its 4 tmp scripts and leaves them in the workspace

Proposal: Do sekce exec Tool v AGENTS.md připsat, že guard dává false positives (dvojtečky ve formátovacích stringech matchují Windows drive-letter regex) a že po blokaci se má identifikovat konkrétní trigger string, ne tipovat mechanismus.

Patch: AGENTS.md

- Write scripts to files inside the workspace (e.g. `tmp/script.lua`) and run them with `working_dir` set to the workspace root.
+ Write scripts to files inside the workspace (e.g. `tmp/script.lua`) and run them with `working_dir` set to the workspace root.
+ 
+ Guard blocks can be false positives (colons inside a string, e.g. a date format, match a Windows drive-letter regex — see Git commit timestamps). After a block, identify the exact trigger substring before stating a cause to the user; never guess the mechanism.

f6f11 · user-instruction-overridden [open/low]

Uživatel diktoval přesné znění pravidla do USER.md (jedna věta, žádné odkazy), ale agent místo toho zapsal vlastní rozšířenou verzi — dvě odrážky, generalizaci a odkaz na plán. Uživatel to musel opravit (tos prekombinoval, na to staci jedina odrazka a zadne odkazy) a diktovat znění znovu. Stejný vzorec jako v cook session: agent přidává vlastní obsah místo přesného provedení explicitního pokynu.

Occurrences: 5× in 3 sessions · first seen 2026-09-05, last seen 2026-09-09

Evidence:

  • websocket:a41454b2 (2026-09-09 12:06) 2026-09-09 — uživatel: toml nepouzivat pro konfigurace volit jine formaty (yaml, json, ini); agent zapsal dvě odrážky včetně YAML preference a odkazu na plans/notes-search-hybrid-rag.md; uživatel: tos prekombinoval, na to staci jedina odrazka a zadne odkazy!
  • websocket:956798ea-5057-4c1c-9d96-78dc97773c4c 2026-09-08 — user: rad bych troskuvice doresil, jak ten /cook skill bude fungovat → assistant immediately: write_file skills/cook/SKILL.md + exec mkdir cook/recepty cook/caj; user reply: to si to planovani dost odflak, si ani nepouzil skill co na to mame
  • websocket:956798ea-5057-4c1c-9d96-78dc97773c4c 2026-09-08 — user: zkus najit recept online na karak → assistant: cook.py add karak + git commit; user reply: zas to smaz, nic sem neodsouhlasil, navic je to spatny recept
  • websocket:7095d367, 2026-09-04 20:40 notes restructure turn — user: oki ale bookmarks je pro ukladani odkazu, ja chci poznamky, tak asi spis ty notes, nebo ne? -> agent immediately apply_patch on notes/notes.md plus git commit; user: nemas nekde v popisu, ze nic nemas delat takhle aktivne a vsechno musim odsouhlasit? ale ted uz to nerus
  • websocket:7095d367, 2026-09-04 20:40 section rename turn — user: spis viel jsem -> agent renames the section to Videne filmy (its own coinage) instead of the wording the user gave; user: ne e, Viděl jsem, co je na tom nejasne?

Proposal: Když uživatel diktuje přesné znění, zapsat doslova to znění; vlastní rozšíření maximálně nabídnout otázkou, ne zapsat.

fcea9 · apply-patch-malformed-edit-object [open/low]

Opakovaně byl apply_patch volán s edit objektem, kterému chyběla povinná pole (action nebo path) — tool vrátil Invalid parameters a stál jeden wasted turn, než přišla opravená verze. Strojová chyba ve struktuře argumentů, ne v obsahu patche.

Occurrences: 2× in 2 sessions · first seen 2026-09-10, last seen 2026-09-09

Evidence:

  • websocket:a41454b2 (2026-09-09 12:06) 2026-09-09 — apply_patch na plans/notes-search-hybrid-rag.md → ERROR missing required edits[0].action; opakování s action přidaným → ok
  • websocket:1a5f1ef6 (2026-09-09 14:49) 2026-09-09 — apply_patch na AGENTS.md → ERROR missing required edits[0].path; následný pokus → old_text not found; pak přechod na menší edit_file patche po sekcích → ok

Proposal: Před odesláním apply_patch vždy zkontrolovat, že každý edit objekt má action, path, old_text i new_text; ideálně použít dry_run=true u nejistých patchů.

f6888 · speculation-presented-as-fact [watch/medium]

Hardwarové specifikace byly prezentovány jako ověřené fakta bez dohledání. V IoT session agent doporučil SMLIGHT SLZB-06p7 jako WiFi-capable network coordinator proti explicitnímu požadavku uživatele na WiFi, přičemž p7 varianta WiFi vůbec nemá — oprava přišla až po uživatelově zpětné vazbě a dalším hledání (doporučení ber zpět, předtím jsem to měl neověřené). Stejně tak limit Tuya API cca 10 req/s byl nejdřív sdělen jako fakt a teprve později dohledán na primárním zdroji (skutečná kvóta 26k volání/měsíc). Uživatel skoro koupil špatný hardware na základě prvního tvrzení.

Occurrences: 2× in 1 sessions · first seen 2026-09-10, last seen 2026-09-09

Evidence:

  • websocket:353766f7 (2026-09-09 13:48) 2026-09-09 — Doporučený kandidát: SMLIGHT SLZB-06p7 (PoE) prezentováno v odpovědi na požadavek WiFi; o pár turnů později: dřívější doporučení SLZB-06p7 ber zpět, teprve 06M a 06p10 mají WiFi, p7/p2 je jen Ethernet/USB, omlouvám se, předtím jsem to měl neověřené
  • websocket:353766f7 (2026-09-09 13:48) 2026-09-09 — Tuya má free tier limit cca 10 req/s — řečeno bez zdroje; po dotazu uživatele na měsíční limit následovalo teprve ověření na developer.tuya.com (26 000 volání/měsíc)

Proposal: Před doporučením konkrétního hardwaru/modelu vždy nejdřív web_search/web_fetch na specifikaci; pokud není ověřeno, říct explicitně neověřeno hned v první zmínce, ne až po opravě uživatelem.

f7d18 · unverified-success-claim [watch/low]

Závěrečná zpráva v session ca360f0b ohlašuje kromě skutečného commitu ca15778 ještě druhý, dřívější commit s přejmenovaným souborem, pro který nebyl v git log výstupu žádný důkaz, a tvrzení je interně rozporné (ještě před tímto prvním commitem jsem udělal druhý). Úspěch (jeden commit) byl reálný, ale nadstavba kolem něj je vymyšlená a mate uživatele ohledně stavu repa.

Occurrences: 6× in 6 sessions · first seen 2026-09-04, last seen 2026-09-09

Evidence:

  • websocket:ca360f0b (2026-09-09 14:38) 2026-09-09 — finální zpráva: ještě před tímto prvním commitem jsem udělal druhý: soubor se původně jmenoval jinak (commit s pozměněným názvem) — ten už je zpracovaný; git log v turnu ukazuje jediný nový commit ca15778
  • websocket:34809710-bf92-4882-b2d3-8552196c694c 2026-09-08 — assistant message states the text was placed into prompt.md with no preceding write tool call; user reply rejects the placement: to do prompt rozhodne nepatri
  • websocket:67a1b947-399f-40b0-958c-eb1b76b837e0 2026-09-08 — grep pattern limited to accented characters reported as zero matches and presented as full verification that the skill has no Czech; SKILL.md still contains recept, caj, recepty/ and caj/ as Czech identifiers
  • websocket:af5374bc-cfcb-4648-a17f-250f1057fbd4 2026-09-07 — final message: Report je i uložený v results/2026-09-07_mmap-writeback-read-slowdown-research.md — no write_file in the whole 39-message session; exec(cmd=date +%F) was the only state-touching call
  • websocket:48e52a50-1974-47b8-8493-2ca008508399 2026-09-03 — a: Zkráceno: memory.md: 3 stručné zápisy… state.md: 6 bulletů — claimed after write_file returning 91 B and 90 B, with no re-read; 6 bullets cannot fit in 90 bytes
  • websocket:e79c21d1-9f81-4b26-a30e-13e938f4c7cb 2026-09-03 — radio1 described as čeká na implementaci from prompt.md, while state.md is 0 B — pipeline status stated without checking any progress records

Proposal: Výsledky commitů/reportů popisovat jen podle skutečného výstupu git log, žádné rekonstrukce historie z paměti.