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

  • अपने दिन को वश में करने का मज़ेदार तरीका

    ब्लॉग में स्लेवेन द्वारा – मार्च 8, 2026 नया फाइनलिस्ट यहाँ है! यदि आपने इसे अभी तक आज़माया नहीं है, तो इसमें अपना हाथ डालें: जो आप पहले से उपयोग कर रहे हैं उसके साथ फ़ाइनलिस्ट चलाएं और इसे चुपचाप वह लेने दें जो आपका वर्तमान सेटअप नहीं करता है। यह किसी नए सिस्टम से…

  • লিঙ্কগুলি কি টুইটারে সংবাদ প্রকাশকদের ক্ষতি করে? আমাদের বিশ্লেষণ হ্যাঁ পরামর্শ দেয়

    ইলন মাস্ক বলেছেন: টুইটের লিঙ্কগুলি ব্যস্ততার জন্য খারাপ। গত কয়েকদিন ধরে, নেট সিলভারের একটি পোস্টের দ্বারা উদ্ভূত, লোকেরা লিঙ্ক এবং বাগদানের মধ্যে সম্পর্ক নিয়ে আবার তর্ক শুরু করেছে। কিন্তু আমাদের 18 জন প্রকাশকের হাজার হাজার টুইটের নতুন বিশ্লেষণ এটিকে বেশ স্পষ্ট করে তোলে: লিঙ্কগুলি X/Twitter-এ সংবাদ প্রকাশকদের ক্ষতি করে বলে মনে হয়। 2016 সালে, বিশ্লেষণ…

  • Flickr 的 URL 方案-無名之輩

    我在 URL 作為使用者介面方面接受的教育有一半來自 2000 年代末的 Flickr。它的 URL 如下圖所示: flickr.com/photos/mwichary/favoritesflickr.com/photos/mwichary/setsflickr.com/photos/mwichary/sets/72177720330077904flickr.com/photos/mwichary/54896695834flickr.com/photos/mwichary/54896695834/in/set-72177720330077904 這真是令人難以置信,令人呼吸新鮮空氣。沒有多餘的 www. 在前面或尷尬 .php 在最後。沒有參數與其令人不愉快 ?&= 句法。不 % 用十六進位代碼進行聚會的標誌。當您與其他人共用這些 URL 時,您無需修改或刪除任何內容。當 Chrome 的網址列開始自動完成它們時,您就清楚地知道自己要去哪裡。 這可能看起來很愚蠢。這 使用者介面 網址數量?誰手動輸入或編輯 URL?但鍵盤仍然是最有效的輸入裝置。如果您要去的地方是您已經去過的地方,那麼輸入幾個字母可能比等待頁面加載、單擊等更快地到達目的地。它可能比篩選書籤更快到達那裡。或者,如果您要去的位置在層次結構中位於上層,則精心設計的 URL 將允許您拖曳以進行選擇,然後從末尾退格一些內容。 Flickr 允許完成這一切,而且無需按 Shift 鍵。 任何易於編輯的 URL 都需要輕鬆編輯 可讀的, 也。 Flickr 是。連結名稱非常簡單,以至於看到菜單… …準確地告訴您每個項目的 URL 是什麼。 此後的幾年裡,富文本的夢想並沒有實現。我們繼續在各地看到和使用裸 URL。這就是 Flickr URL 的另一個好處:它們很短。它們可以放在電子郵件或 Markdown 中。從頭開始,它們可以被放置在 句子。 今天,它們在 Slack 上永遠不會被中間那個令人沮喪的省略號截斷(這偶爾會導致有人複製縮短且格式錯誤的 URL 並進一步共享!)。…

  • 缩放、拉伸和移动正弦曲线

    2026 年 5 月 2 日 07:17 标签 数学 这是关于如何调整标准正弦波以改变其幅度、频率和相移的简要说明。更准确地说,给出一般函数: 我们将看看如何调整参数 , 和 影响形状。下面的每个部分都从数学角度涵盖了这些方面之一,您可以使用底部的演示来直观地试验该主题。 缩放 从概念上来说,缩放是最简单的改变。我们调整 增加或减少 的幅度(最大高度)。设置将使 值是原始函数的两倍(正方向和负方向)。 伸展运动 拉伸会改变 的频率,与其周期成反比。基线函数的周期为 ,这意味着它每隔 重复一次。换句话说,对于任何 。 如果我们设置,我们就会得到。该函数的重复速度是 的两倍,因为 在送入正弦曲线之前乘以 2。如果 变化 ,正弦曲线的输入变化 。因此, is 的周期、 is 的周期等等。 更一般地, 的周期是 。玩下面的演示,通过更改来查看其实际效果 并观察波形如何变化。 如果我们知道我们想要的周期,我们可以很容易地计算出 这给了我们这个时期: 变速 我们讨论的最后一个参数是 ;它被称为 阶段 的正弦曲线。在基线中, 。正弦波在 处为 0,在 处达到其正峰值,在 处再次穿过 0,在 处达到负峰值,并返回到重复开始处的原始位置。 通过添加一个非零…

  • フーリエ変換に関する注意事項

    2026 年 7 月 14 日 20:04 タグ 数学 フーリエ級数は周期関数を解析するための優れたツールです。しかし、繰り返されない関数はどうなるでしょうか?有限区間で定義された非周期関数のフーリエ級数は、その区間を超えた動作を気にしない限り計算できることがわかりました。 このアイデアを関数に拡張してみましょう。 一度もない 繰り返す;つまり、 間隔 で定義された非周期関数です。 非繰り返し関数のフーリエ級数の視覚化 この主題を先へ進めるために、フーリエ級数に関する以前の投稿で使用された例を振り返ってみましょう。 フーリエ変換につながるフーリエ級数 これらのメモでは、フーリエ級数の複雑な指数公式を使用します。 と: 不定期のイベントに興味があります 間隔 で定義されます。したがって、 に関する上記の方程式を調べます。 まず、表記を少し変更してみます。周期 () に関して式を書く代わりに、n 次高調波の角周波数を使用します。 したがって、シリーズを次のように少し書き直すことができます。 2 つの連続する周波数の差として使用すると、次のようになります。 この表記法を使用すると、次のように表現されます。 これまでのところ、ここには新しい洞察はなく、いくつかの新しい表記があるだけです。次のステップを促進するためにこれを使用します。 それ以来 。のフーリエ級数表現の極限を計算してみます。 いつ : そして、混乱を避けるために、ダミーの積分変数を から に変更して、最新のものをこの式に代入します。 順序を少し変更し、複素指数内の で置き換えます。 和の極限を注意深く見ると、これはリーマン和です (付録 A を参照)。の「サンプル」バージョンです 、 そして 。したがって、これを積分に置き換えて、次のように変更できます。 そして次へ: 内部積分は次のように呼ばれます。 フーリエ変換 の と表されます: そして、完全な方程式は、…

  • অ্যাপল দুর্ঘটনাক্রমে ‘ম্যাকবুক নিও’ ফাঁস করেছে

    অ্যাপল তার গুজব কম দামের ম্যাকবুক মডেলের নাম অকালে প্রকাশ করেছে বলে মনে হচ্ছে, যা এই বুধবার ঘোষণা করা হবে বলে আশা করা হচ্ছে। অ্যাপলের ওয়েবসাইটে “ম্যাকবুক নিও” (মডেল A3404) এর জন্য একটি নিয়ন্ত্রক নথি হাজির হয়েছে৷ দুর্ভাগ্যবশত, এখনও কোন বিস্তারিত বা ছবি উপলব্ধ নেই. যদিও পিডিএফ ফাইলটিতে “ম্যাকবুক নিও” নাম নেই, এটি সংক্ষিপ্তভাবে EU…

Deixe um comentário

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