Przedstawiamy Showboata i Rodneya, aby agenci mogli zaprezentować to, co zbudowali

Przedstawiamy Showboata i Rodneya, aby agenci mogli zaprezentować to, co zbudowali


Przedstawiamy Showboata i Rodneya, aby agenci mogli zaprezentować to, co zbudowali

10 lutego 2026 r

Kluczowym wyzwaniem w pracy z agentami zajmującymi się kodowaniem jest to, aby obaj przetestowali to, co zbudowali, i zademonstrowali to oprogramowanie Tobie, swojemu nadzorcy. Wykracza to poza testy automatyczne — potrzebujemy artefaktów, które pokazują ich postęp i pomagają nam dokładnie zobaczyć, co potrafi oprogramowanie stworzone przez agenta. Właśnie wypuściłem dwa nowe narzędzia mające na celu rozwiązanie tego problemu: Showboat i Rodney.

Sprawdzanie, czy kod faktycznie działa

Niedawno pisałem o tym, że zadaniem inżyniera oprogramowania nie jest pisanie kodu, lecz jego działanie dostarczyć kod, który działa. W dużej mierze polega to na udowadnianiu sobie i innym, że kod, za który jesteśmy odpowiedzialni, działa zgodnie z oczekiwaniami.

Staje się to jeszcze ważniejsze i trudniejsze, gdy traktujemy agentów kodujących jako kluczową część naszego procesu tworzenia oprogramowania.

Im więcej kodu tworzymy za pomocą agentów, tym cenniejsze są narzędzia, które zmniejszają ilość czasu potrzebnego na ręczną kontrolę jakości.

Jedną z najciekawszych rzeczy w modelu fabryki oprogramowania StrongDM jest to, w jaki sposób zapewniają, że ich oprogramowanie jest dobrze przetestowane i zapewnia wartość pomimo swojej polityki mówiącej, że „kod nie może być przeglądany przez ludzi”. Część ich rozwiązania obejmuje kosztowne roje agentów kontroli jakości realizujących „scenariusze” w celu wykorzystania swojego oprogramowania. To fascynujące, ale nie chcę wydawać tysięcy dolarów na roboty kontroli jakości, jeśli mogę tego uniknąć!

Potrzebuję narzędzi, które pozwolą agentom jasno zademonstrować mi swoją pracę, minimalizując jednocześnie możliwość oszukiwania w związku z tym, co zrobili.

Showboat: agenci tworzą dokumenty, aby zaprezentować swoją pracę

Łódź pokazowa to narzędzie, które zbudowałem, aby pomóc agentom zademonstrować mi swoją pracę.

Jest to narzędzie CLI (plik binarny Go, opcjonalnie opakowany w Python, aby ułatwić instalację), które pomaga agentowi utworzyć dokument Markdown demonstrujący dokładnie, co potrafi jego nowo opracowany kod.

Nie jest przeznaczony do uruchamiania przez ludzi, ale tak czy inaczej można go uruchomić:

showboat init demo.md 'How to use curl and jq'
showboat note demo.md "Here's how to use curl and jq together."
showboat exec demo.md bash 'curl -s https://api.github.com/repos/simonw/rodney | jq .description'
showboat note demo.md 'And the curl logo, to demonstrate the image command:'
showboat image demo.md 'curl -o curl-logo.png https://curl.se/logo/curl-logo.png && echo curl-logo.png'

Oto jak wygląda wynik, jeśli otworzysz go w VS Code i wyświetlisz podgląd Markdown:

Zrzut ekranu przedstawiający plik Markdown "demo.md" obok siebie z wyrenderowanym podglądem. Źródło Markdown (po lewej) pokazuje: "# Jak używać curl i jq"kursywa, znacznik czasu "2026-02-10T01:12:30Z"proza "Oto jak używać razem curl i jq."blok kodu bash z "curl -s https://api.github.com/repos/simonw/rodney | jq.opis"blok wyjściowy pokazujący „"Narzędzie CLI do interakcji z siecią"', tekst "I logo curl, aby zademonstrować polecenie obrazu:"blok kodu bash {image} z "curl -o curl-logo.png https://curl.se/logo/curl-logo.png && echo curl-logo.png"i odniesienie do obrazu Markdown "2056e48f-2026-02-10". Wyrenderowany podgląd (po prawej) wyświetla sformatowany nagłówek, sygnaturę czasową, prozę, stylizowane bloki kodu i obraz logo zawiniętego w kolorze ciemnoturkusowym "kędzior://" z elementami w stylu obwodów.

Oto plik demo.md w skrócie.

Zatem sekwencja showboat init, showboat note, showboat exec I showboat image Commands tworzy dokument Markdown po jednej sekcji na raz, z wynikami tychże exec polecenia automatycznie dodawane do dokumentu bezpośrednio po uruchomionych poleceniach.

The image polecenie jest trochę specjalne — szuka ścieżki pliku do obrazu w wynikach polecenia, kopiuje ten obraz do bieżącego folderu i odwołuje się do niego w pliku.

To w zasadzie całość! Jest pop polecenie usunięcia ostatnio dodanej sekcji, jeśli coś pójdzie nie tak, a verify polecenie ponownego uruchomienia dokumentu i sprawdzenia, czy nic się nie zmieniło (nie jestem do końca przekonany co do projektu tego dokumentu) i extract polecenie, które odtwarza polecenia CLI użyte do utworzenia dokumentu.

To całkiem proste — tylko 172 linijki Go.

Spakowałem go za pomocą mojego narzędzia „przejdź do koła”, co oznacza, że ​​możesz go uruchomić nawet bez wcześniejszej instalacji, w ten sposób:

To --help polecenie jest naprawdę ważne: ma na celu zapewnienie agentowi kodującemu wszystko, co musi wiedzieć aby móc korzystać z narzędzia. Oto cały tekst pomocy.

Oznacza to, że możesz otworzyć Claude Code i powiedzieć mu:

Run "uvx showboat --help" and then use showboat to create a demo.md document describing the feature you just built

I tyle! The --help tekst działa trochę jak Umiejętność. Twój agent może przeczytać tekst pomocy i wykorzystać każdą funkcję Showboat, aby utworzyć dokument demonstrujący wszystko, czego potrzebujesz.

Oto zabawna sztuczka: jeśli ustawisz Claude’a na tworzenie dokumentu Showboat, możesz go otworzyć w VS Code i oglądać aktualizację okienka podglądu w czasie rzeczywistym, gdy agent przegląda wersję demonstracyjną. To trochę tak, jakby Twój współpracownik opowiadał Ci o swojej najnowszej pracy podczas sesji udostępniania ekranu.

I na koniec kilka przykładów. Oto dokumenty, które Claude stworzył za pomocą Showboat, aby pomóc zademonstrować funkcje, nad którymi pracowałem w innych projektach:

Używam Showboat na tyle często, że przekonałem się o jego użyteczności.

(Widziałem też, jak agenci oszukują! Ponieważ plik demonstracyjny to Markdown, agent czasami edytuje ten plik bezpośrednio, zamiast używać Showboat, co może skutkować wynikami poleceń, które nie odzwierciedlają tego, co faktycznie się wydarzyło. Oto problem z tym związany.)

Rodney: Automatyzacja przeglądarki CLI zaprojektowana do współpracy z Showboat

Wiele projektów, nad którymi pracuję, obejmuje interfejsy internetowe. Agenci często tworzą dla nich zupełnie nowe strony i chcę zobaczyć te reprezentowane w demonstracjach.

Funkcja obrazu Showboat została zaprojektowana, aby umożliwić agentom przechwytywanie zrzutów ekranu w ramach ich demonstracji, pierwotnie przy użyciu mojego narzędzia do skrobania ujęć lub Playwright.

Format Showboat korzysta z narzędzi CLI. Szukałem dobrych opcji zarządzania wieloobrotową sesją przeglądarki z poziomu CLI i nie udało mi się, więc zdecydowałem się spróbować zbudować coś nowego.

Claude Opus 4.6 wskazał mi bibliotekę Rod Go do interakcji z protokołem Chrome DevTools. To fantastyczne — zapewnia kompleksowe omówienie praktycznie wszystkiego, co można zrobić w zautomatyzowanej przeglądarce Chrome, a wszystko to w samodzielnej bibliotece, która kompiluje się do kilku MB.

Jedyne, czego Rodowi brakowało, to CLI.

Pierwszą wersję zbudowałem jako prototyp raportu asynchronicznego, co utwierdziło mnie w przekonaniu, że warto rozkręcić go pod własny projekt.

Nazwałem go Rodney jako ukłon w stronę biblioteki Rod, na której się opiera, oraz jako nawiązanie do Only Fools and Horses – a także dlatego, że nazwa pakietu była dostępna w PyPI.

Możesz uruchomić Rodneya za pomocą uvx rodney lub zainstaluj w ten sposób:

(Lub pobierz plik binarny Go ze strony wydań.)

Oto prosta przykładowa sesja:

rodney start # starts Chrome in the background
rodney open https://datasette.io/
rodney js 'Array.from(document.links).map(el => el.href).slice(0, 5)'
rodney click 'a(href="https://simonwillison.net/for")'
rodney js location.href
rodney js document.title
rodney screenshot datasette-for-page.png
rodney stop

Oto jak to wygląda w terminalu:

;~ % rodney start Chrome uruchomiono (PID 91462) Adres URL debugowania: ws://127.0.0.1:64623/devtools/browser/cac6988e-8153-483b-80b9-1b75c611868d ~ % rodney open https://datasette.io/ Datasette: narzędzie wielofunkcyjne typu open source do eksplorowania i publikowania danych ~ % rodney js 'Array.from(document.links).map(el => el.href).slice(0, 5)’ ( "https://datasette.io/for", "https://docs.datasette.io/en/stable/", "https://datasette.io/tutorials", "https://datasette.io/examples", "https://datasette.io/plugins" ) ~ % rodney kliknij „a(href="/Do")’ Kliknięto ~ % rodney jslocation.href https://datasette.io/for ~ % rodney js document.title Przypadki użycia Datasette ~ % rodney zrzut ekranu datasette-for-page.png datasette-for-page.png ~ % rodney stop Chrome zatrzymany” src=”https://static.simonwillison.net/static/2026/rodney-demo.jpg” style=”max-width: 100%;”/></p>
<p>Podobnie jak w przypadku Showboat, to narzędzie nie jest przeznaczone do użytku przez ludzi! Celem jest umożliwienie działania agentów kodujących <code>rodney --help</code> i zobacz wszystko, co muszą wiedzieć, aby rozpocząć korzystanie z narzędzia. Możesz zobaczyć wyniki pomocy w repozytorium GitHub.</p>
<p>Oto trzy demonstracje Rodneya, które stworzyłem za pomocą Showboat:</p>
<h4 id=Rozwój oparty na testach pomaga, ale nadal potrzebujemy testów ręcznych

Po tym, jak przez całą karierę byłem sceptyczny wobec szkoły tworzenia oprogramowania skupiającej się na pierwszym teście i maksymalnym pokryciu testami (lubię zamiast tego testy obejmujące tworzenie oprogramowania), ostatnio zacząłem skupiać się na procesach opartych na pierwszym testowaniu, aby zmusić agentów do napisania tylko kodu niezbędnego do rozwiązania danego problemu.

Wiele moich sesji agenta kodującego w Pythonie zaczyna się w ten sam sposób:

Run the existing tests with "uv run pytest". Build using red/green TDD.

Poinformowanie agentów, jak przeprowadzać testy, może również służyć jako wskaźnik, że testy w tym projekcie istnieją i mają znaczenie. Agenci będą czytać istniejące testy przed napisaniem własnych, zatem posiadanie czystego zestawu testów z dobrymi wzorcami zwiększa prawdopodobieństwo, że sami napiszą dobre testy.

Wszystkie modele pionierskie rozumieją, że „czerwony/zielony TDD” oznacza, że ​​powinni najpierw napisać test, uruchomić go i obserwować, jak się nie powiedzie, a następnie napisać kod, aby go zaliczyć — jest to wygodny skrót.

Uważam, że znacznie zwiększa to jakość kodu i prawdopodobieństwo, że agent wygeneruje właściwą rzecz przy najmniejszej liczbie podpowiedzi.

Ale każdy, kto pracował z testami, będzie wiedział, że to, że pomyślnie przeszły testy automatyczne, nie oznacza, że ​​oprogramowanie faktycznie działa! Taka jest motywacja stojąca za Showboat i Rodney – nigdy nie ufam żadnej funkcji, dopóki nie zobaczę jej na własne oczy.

Przed zbudowaniem Showboat często dodawałem „ręczny” etap testowania do sesji agenta, na przykład:

Once the tests pass, start a development server and exercise the new feature using curl

Obydwa narzędzia zbudowałem na swoim telefonie

Zarówno Showboat, jak i Rodney zaczynali jako Claude Code w projektach internetowych tworzonych za pośrednictwem aplikacji Claude na iPhone’a. Większość trwających dla nich prac fabularnych przebiegała w ten sam sposób.

Nadal jestem trochę zaskoczony, ile pracy związanej z kodowaniem wykonuję teraz na telefonie, ale szacuję, że większość kodu, który obecnie wysyłam do GitHuba, została napisana dla mnie przez agentów kodujących korzystających z tej aplikacji na iPhone’a.

Początkowo zaprojektowałem te dwa narzędzia do użytku w środowiskach asynchronicznych agentów kodowania, takich jak Claude Code dla Internetu. Jak na razie sprawdza się to naprawdę dobrze.



Source link

Postagens Similares

  • Pyodide で使用するために WASM ホイールを PyPI に公開する

    Pyodide で使用するために WASM ホイールを PyPI に公開する 2026 年 6 月 13 日 Pyodide 314.0 のリリース発表 (Hacker News 経由) には、私が長い間楽しみにしていたニュースが含まれています。 Pyodide (または PEP 783 で定義されている PyEmscripten プラットフォームと互換性のある Python ランタイム) 用に構築された Python パッケージを PyPI に直接公開し、実行時にインストールできるようになりました。 以前は、Pyodide のメンテナは 300 を超えるパッケージを自分たちで保守、構築、ホストする必要がありました。新しいパッケージごとに手動でのレビューが必要になるため、これはメンテナーに多大な負担をもたらし、コミュニティにとって大きなボトルネックとなりました。 今後、パッケージ管理者は、Linux、macOS、または Windows 上のネイティブ ホイールの場合と同様に、Pyodide ホイールを簡単に構築して PyPI に公開できるようになります。 これは、4 月 21 日に公開された、これをサポートする PyPI 自体への PR です。 私はピオディドを崇拝していますが、過去にはこの制限に不満を感じていました。 C または…

  • Post-middelgrote publicatie

    September 2009 Alle soorten uitgevers, van nieuws tot muziek, zijn er niet blij mee dat consumenten niet meer voor inhoud willen betalen. Tenminste, zo zien zij het. In feite betaalden consumenten nooit echt voor inhoud, en uitgevers verkochten deze ook niet echt. Als de inhoud was wat ze verkochten, waarom was de prijs van boeken,…

  • الذكاء الاصطناعي هو مجرد التفكير والعمل

    إحدى الطرق المفيدة للتغلب على الضجيج والضجيج في محادثات الذكاء الاصطناعي هي استبدال كلمة “AI” بكلمتي “التفكير” و”التنفيذ”. المشكلة التي يواجهها الكثير من الناس هي الاعتقاد بأن الذكاء الاصطناعي هو الحل في حد ذاته، في حين أنه في الواقع مجرد قدرة إضافية على التفكير وقدرة إضافية على العمل. لكن “التفكير” و”العمل” ما زالا يتركان جميع…

  • 異端

    2022 年 4 月 我一生中目睹的最令人驚訝的事情之一就是異端概念的重生。 理查德·韋斯特弗爾(Richard Westfall)在他出色的牛頓傳記中描述了他被選為三一學院院士的那一刻: 在舒適的支持下,牛頓可以自由地全身心投入到他選擇的任何事情中。為了繼續留下來,他只需要避免三宗不可饒恕的罪孽:犯罪、異端和婚姻。 (1) 我第一次讀到它是在 20 世紀 90 年代,它聽起來很有趣的中世紀風格。多麼奇怪啊,必須避免犯異端邪說。但 20 年後我重讀它時,它聽起來像是對當代就業的描述。 您可能會因為越來越多的意見而被解僱。那些進行解僱的人並不使用“異端”這個詞來描述他們,但在結構上他們是等效的。從結構上講,異端有兩個獨特之處:(1)它優先於真假問題,(2)它比演講者所做的一切都重要。 例如,當有人將某個陳述稱為“x-ist”時,他們也含蓄地表示討論到此結束。說了這句話後,他們並沒有繼續考慮這個說法是否屬實。使用此類標籤相當於會話中發出異常信號。這就是使用它們的原因之一:結束討論。 如果您發現自己與經常使用這些標籤的人交談,那麼可能值得明確詢問他們是否認為任何嬰兒都被與洗澡水一起倒掉了。無論 x 的值如何,一個陳述是否可以是 x-ist 並且為真?如果答案是肯定的,那麼他們就承認禁止真相。這很明顯,我猜大多數人都會回答“不”。但如果他們的回答是否定的,那麼很容易表明他們錯了,而且在實踐中,無論這些陳述是真還是假,這些標籤都會被貼在陳述上。 最明顯的證據是,一個陳述是否被視為 x-ist 通常取決於誰說的。真相不是這樣的。同樣的陳述當一個人說出來時不可能是真的,但當另一個人這麼說時就不是了,因此是錯誤的。 (2) 與普通觀點相比,異端邪說的另一個獨特之處在於,異端邪說的公開表達超過了演講者所做的一切。在平常的事情上,比如歷史知識或音樂品味,人們會根據你的平均意見來評價你。異端在本質上是不同的。這就像將一大塊鈾滴到秤上。 在過去(現在仍然在某些地方),對異端的懲罰是死刑。你本來可以過著模範善良的生活,但如果你公開懷疑,比如說,基督的神性,你就會被燒死。如今,在文明國家,異教徒只會在隱喻意義上被解僱,即失去工作。但情況的結構是一樣的:異端壓倒一切。你本可以在過去的十年裡拯救孩子們的生命,但如果你表達某些觀點,你就會自動被解僱。 這與您犯了罪非常相似。無論你的生活多麼有道德,如果你犯了罪,你仍然必須受到法律的懲罰。以前過著無可指責的生活可能會減輕懲罰,但這並不影響你是否有罪。 異端邪說是一種觀點,其表達被視為犯罪——這種觀點不僅讓一些人覺得你錯了,而且覺得你應該受到懲罰。事實上,他們希望看到你受到懲罰的願望往往比你真正犯罪時更強烈。有許多極左人士堅信重罪犯重新融入社會(就像我自己一樣),但似乎認為任何犯有某些異端邪說的人都不應該再工作。 總有一些異端邪說——有些觀點你會因為表達而受到懲罰。但現在的數量比幾十年前要多得多,即使是那些對此感到高興的人也不得不承認事實確實如此。 為什麼?為什麼這個聽起來過時的宗教概念又以世俗的形式回歸呢?為什麼現在呢? 形成不寬容浪潮需要兩個要素:不寬容的人以及引導他們的意識形態。不寬容的人總是存在的。它們存在於每一個足夠大的社會中。這就是為什麼不寬容的浪潮會突然出現。他們所需要的只是一些東西來引爆他們。 我已經寫了一個 散文 形容思想激進、思想傳統的人。簡而言之,人們可以根據(1)他們的獨立性或傳統思想程度,以及(2)他們對此的激進程度進行兩個維度的分類。思想激進、傳統觀念強的人是正統觀念的執行者。 通常它們僅在本地可見。他們是群體中脾氣暴躁、挑剔的人——當有事情違反現行禮儀規則時,他們總是第一個抱怨的人。但偶爾,就像元素對齊的向量場一樣,大量具有攻擊性的傳統思想的人會同時團結在某種意識形態的支持下。然後,它們就變得更加成問題,因為暴民動態佔據主導地位,每個參與者的熱情都會因其他參與者的熱情而增加。 20世紀最臭名昭著的案例可能是文化大革命。儘管文化大革命是毛澤東發起的,目的是削弱他的對手,但除此之外,文化大革命主要是一種草根現象。毛澤東實質上說:我們中間有異端。找出他們並懲罰他們。這就是那些思想激進、傳統觀念強的人所需要聽到的。他們像狗追松鼠一樣高興。 為了團結傳統思想,意識形態必須具有宗教的許多特徵。特別是它必須有嚴格和任意的規則,讓追隨者能夠證明他們的 純度 通過服從,它的追隨者必須相信,任何遵守這些規則的人在道德上事實上都優於任何不遵守這些規則的人。 (3) 20 世紀 80 年代末,美國大學中出現了這種類型的新意識形態。它具有很強的道德純潔性成分,而那些具有激進傳統思想的人以他們一貫的渴望抓住了它——更重要的是,因為過去幾十年社會規範的放鬆意味著要禁止的事情越來越少。由此產生的不寬容浪潮在形式上與文化大革命驚人地相似,儘管幸運的是規模要小得多。 (4) 我在這裡故意避免提及任何具體的異端邪說。部分原因是,無論過去還是現在,異端獵手的普遍策略之一就是指責那些不同意他們壓制異端思想的人。事實上,這種策略是如此一致,以至於你可以用它作為檢測任何時代政治迫害的一種方式。 這是我避免提及任何具體異端邪說的第二個原因。我希望這篇文章能夠在未來發揮作用,而不僅僅是現在。不幸的是,它可能會。那些具有激進傳統思想的人永遠在我們中間,尋找著禁止的事物。他們所需要的只是一種意識形態來告訴他們什麼。目前的情況不太可能是最後一次。 左翼和右翼都有激進的傳統思想。當前的不寬容浪潮之所以來自左派,只是因為新的統一意識形態恰好來自左派。下一個可能來自右邊。想像一下那會是什麼樣子。 幸運的是,在西方國家,對異端的鎮壓已經不再像以前那麼糟糕了。儘管在過去十年中你可以公開表達意見的範圍已經縮小,但仍然比幾百年前寬得多。問題是導數。直到 1985 年左右,這個窗口變得越來越寬。任何展望 1985…

  • டிம் ஆப்பிள் மீது டிரம்ப்

    அமெரிக்காவின் ஜனாதிபதி, இன்று காலை தனது வலைப்பதிவில் (அனைத்து மூலதனம், நிறுத்தற்குறிகள் மற்றும் விடுபட்ட/தவறான சொற்கள் வினைச்சொல்): நான் எப்பொழுதும் டிம் குக்கின் பெரிய ரசிகனாக இருந்தேன், அதே போல் ஸ்டீவ் ஜாப்ஸ், ஆனால் ஸ்டீவ், பிளானட் எர்த்தில் இருந்து மிகவும் இளமையாக எடுக்கப்படாமல், டிம்மிற்குப் பதிலாக நிறுவனத்தை நடத்தாமல் இருந்திருந்தால், அந்த நிறுவனம் சிறப்பாகச் செயல்பட்டிருக்கும், ஆனால் டிம் கீழ் இருந்ததைப் போல் எங்கும் இல்லை. என்னைப் பொறுத்தவரை இது எனது முதல் பதவிக்காலத்தின் தொடக்கத்தில்…

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *