{"id":3289,"date":"2025-06-07T13:50:00","date_gmt":"2025-06-07T13:50:00","guid":{"rendered":"https:\/\/techtrendfeed.com\/?p=3289"},"modified":"2025-06-07T13:50:00","modified_gmt":"2025-06-07T13:50:00","slug":"autonomous-coding-brokers-a-codex-instance","status":"publish","type":"post","link":"https:\/\/techtrendfeed.com\/?p=3289","title":{"rendered":"Autonomous coding brokers: A Codex instance"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>Up to now few weeks, a number of \u201cautonomous background coding brokers\u201d have been launched.<\/p>\n<ul>\n<li><strong>Supervised coding brokers:<\/strong> Interactive chat brokers which are pushed and steered by a developer. Create code regionally, within the IDE. Instrument examples: GitHub Copilot, Windsurf, Cursor, Cline, Roo Code, Claude Code, Aider, Goose, \u2026<\/li>\n<li><strong>Autonomous background coding brokers:<\/strong> Headless brokers that you just ship off to work autonomously via a complete job. Code will get created in an surroundings spun up completely for that agent, and often leads to a pull request. A few of them are also runnable regionally although. Instrument examples: OpenAI Codex, Google Jules, Cursor background brokers, Devin, \u2026<\/li>\n<\/ul>\n<p>I gave a job to OpenAI Codex and another brokers to see what I can study. The next is a file of 1 specific Codex run, that can assist you look behind the scenes and draw your individual conclusions, adopted by a few of my very own observations.<\/p>\n<h2 id=\"the-task\">The duty<\/h2>\n<p>We now have an inner software referred to as Haiven that we use as a demo frontend for our software program supply immediate library, and to run some experiments with totally different AI help experiences on software program groups. <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/tw-haiven\/haiven\">The code for that software is public.<\/a><\/p>\n<p>The duty I gave to Codex was relating to the next UI situation:<\/p>\n<p><strong>Precise:<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/martinfowler.com\/articles\/exploring-gen-ai\/codex-before.png\" alt=\"Current state screenshot - some labels in a web UI, &quot;DeliveryManagement&quot;, &quot;Client-Research&quot;\" \/><\/p>\n<p><strong>What I wished from the agent:<\/strong><\/p>\n<p><img decoding=\"async\" src=\"https:\/\/martinfowler.com\/articles\/exploring-gen-ai\/codex-after.png\" alt=\"Screenshot of what we want: The labels should be more human readable, &quot;Delivery Management&quot;, &quot;Client Research&quot;\" \/><\/p>\n<p><strong>Immediate:<\/strong> <br \/><code>Once we create the filter labels on the dashboard, we create human readable labels based mostly on the classes we've got. \"client-research\" is became \"Shopper-Analysis\", \"deliveryManagement\" into \"DeliveryManagement\". Enhance the sophistication of the \"category-to-human-readable\" logic in order that the labels are showing to the consumer as \"Shopper Analysis\" and \"Supply Administration\"<\/code><\/p>\n<p>This job is<\/p>\n<ul>\n<li>Comparatively small<\/li>\n<li>A typical \u201ccosmetics\u201d job that&#8217;s not tremendous pressing and may get deprioritised time and again<\/li>\n<\/ul>\n<h2 id=\"agent-logs\">Agent logs<\/h2>\n<p>I\u2019m sharing the detailed logs right here with the intention to get an impression of what&#8217;s going on beneath the hood.<\/p>\n<p>Right here\u2019s what the logs view seems like in Codex:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/martinfowler.com\/articles\/exploring-gen-ai\/codex-log_view.png\" alt=\"A screenshot of Codex's &quot;Logs&quot; view, showing examples of step summaries and command executions\" \/><\/p>\n<p><strong>Amassing data first<\/strong><\/p>\n<p>The primary 17 log entries have been all about studying AGENTS.md and README.md:<\/p>\n<ul>\n<li>\u201cI must verify the AGENTS.md within the repository root for directions.\u201d<\/li>\n<li>seems for AGENTS.md, however I had truly referred to as it AGENT.md, which led to some forwards and backwards till it figured that out<\/li>\n<li>reads README.md<\/li>\n<li>Appears to be like at .pre-commit, finds a take a look at setup<\/li>\n<\/ul>\n<p><strong><em>The next tables record the remainder of the log messages verbatim. After every of these messages, the agent executed a command, for a few of them I added that precise command for context. I\u2019m certain that the log messages are simply summaries of the tokens that have been truly happening behind the scenes, as a result of the messages are manner too quick to characterize the complete \u201cconsidering\u201d the mannequin will need to have been going via.<\/em><\/strong><\/p>\n<p><strong>Trying to find the related code with a number of <code>grep<\/code><\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">I must seek for <strong>\u201ccategory-to-human-readable\u201d<\/strong> to find the place to make modifications for the frontend labels.<\/td>\n<td style=\"text-align: left\"><code>grep -R \"human readable\" -n<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll search for any mentions of <strong>\u201cclass\u201d<\/strong> within the mission.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Grep output is very large due to node_modules; I\u2019ll restrict it to src as an alternative.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll seek for <strong>\u201cto human\u201d<\/strong> within the src listing to search out related references.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll open and verify index.js to see what\u2019s inside.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019m checking if the category-to-human-readable transformation is dealt with in _navigation_items or elsewhere.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019m going to search for <strong>\u201chuman readable\u201d<\/strong> to get extra information on the subject.<\/td>\n<td style=\"text-align: left\"><code>grep -R \"human-readable\" -n ui\/src | head<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I&#8217;m wondering if there\u2019s a perform for changing classes into one thing extra readable.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Filtering the search to simply the \u201csrc\u201d folder to keep away from node_modules noise.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\"><em>second time it\u2019s working into this, didn\u2019t \u2018keep in mind\u2019<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll search for a perform like <strong>\u201ctoHumanReadable\u201d<\/strong>. Let\u2019s see what I discover.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019m checking the entire repo in case the logic is within the backend or a library.<\/td>\n<td style=\"text-align: left\"><code>grep -R \"Human\" -n | head<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll restrict the scope to app\/ and ui\/src to keep away from the massive node_modules folder.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\"><em>third time it\u2019s working into this, didn\u2019t \u2018keep in mind\u2019<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I believe the logic may be lacking, so I\u2019ll verify _navigation_items and different modules for classes.<\/td>\n<td style=\"text-align: left\"><code>grep -R \"human\" app -n | head<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I believe it\u2019s time to look a bit deeper. Let\u2019s dive in and discover.<\/td>\n<td style=\"text-align: left\"><code>grep -R \"human\" app | wc -l<\/code><\/td>\n<td style=\"text-align: left\"><em>To \u201clook deeper\u201d, it searches for \u201chuman\u201d once more, however pipes it into <code>wc<\/code> as an alternative of <code>head<\/code>?<\/em><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Lastly, it\u2019s getting nearer! The labels have been beforehand crudely capitalized through CSS, it finds that<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">I\u2019m checking for references to <em>\u201ccapitalize\u201d<\/em> or class transformation within the frontend.<\/td>\n<td style=\"text-align: left\">Output: <code><br \/>root@0c5de6379b32:\/workspace\/haiven# grep -R \"capitalize\" -n ui\/src | head<br \/>ui\/src\/pages\/index.js:250:                                    className=\"capital<br \/>ize\"<br \/>ui\/src\/kinds\/globals.css:1915:.capitalize {<br \/>ui\/src\/kinds\/globals.css:1916:  text-transform: capitalize;<br \/>ui\/src\/kinds\/globals.css:1931:  text-transform: capitalize;<br \/><\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll verify across the Tag part in index.js.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Tag show capitalizes phrases incorrectly as a consequence of hyphen or camelCase; I\u2019ll take a look at filter classes.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Now it\u2019s beginning to verify for extra related code within the <code>app<\/code> folder, the place the backend is. It doesn\u2019t discover something, which is right, there\u2019s nothing related there<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">I\u2019ll verify the repo for the way classes are formatted, specializing in hyphens and camelCase.<\/td>\n<td style=\"text-align: left\"><code>grep -R \"classes\" -n app | head<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Time to attempt a brand new search!<\/td>\n<td style=\"text-align: left\"><code>grep -R \"shopper\" -n app | head<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll take a better take a look at the prompts within the take a look at information.<\/td>\n<td style=\"text-align: left\"><code>grep -R \"classes:\" -n app\/exams | head<\/code><\/td>\n<td style=\"text-align: left\"><em>Why?<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">It seems just like the take a look at information has restricted classes. I\u2019ll verify the docs for any variations.<\/td>\n<td style=\"text-align: left\"><code>grep -R \"client-research\" -n<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll begin by opening the information to take a better look.<\/td>\n<td style=\"text-align: left\"><code>sed -n '1,100p' ui\/src\/app\/_navigation_items.js<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Now it\u2019s going again to looking within the ui folder &#8211; it discovered the CSS beforehand, and is now searching for current code that it could reuse to resolve the duty. That\u2019s nice, as a result of we certainly have already got an identical perform, and it finds it:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">I would like a perform to transform tags like \u201cclient-research\u201d to \u201cShopper Analysis\u201d for filters.<\/td>\n<td style=\"text-align: left\"><code>grep -R \"to.*Readable\" -n ui\/src | head<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019m opening the <strong>toReadableText<\/strong> perform inside <strong>_dynamic_data_renderer.js<\/strong> to discover it.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019m transferring via the web page to get the small print I would like.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>It now finds a spot within the current perform\u2019s implementation:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">I see that hyphens aren\u2019t dealt with by the perform. I would like to regulate it for hyphens.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll modify toReadableText to deal with hyphens, guaranteeing correct capitalization and spacing. Let\u2019s verify exams!<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\"><em>It truly didn\u2019t verify any exams<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll verify _dynamic_data_renderer.js to look at toReadableText and modify it for hyphen-case.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll verify exams\/_sidebar.take a look at.js to evaluation the associated classes there.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll verify different information to see if toReadableText seems anyplace.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll verify if _sidebar or others include a toReadableText perform.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Replace the take a look at for the perform that it desires to alter:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">I\u2019ll regulate the perform to deal with hyphen-case, then replace exams to mirror that.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll verify the take a look at file after line 36 to make sure hyphen-case is roofed.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll scroll via traces 60 to 120 to look at the remainder of the file.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019m scrolling the remaining to seize all of the related data.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll add exams for hyphen-case and replace toReadableText, together with modifying index.js for classes.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll regulate _dynamic_data_renderer.js and index.js to make use of toReadableText and replace exams.<\/td>\n<td style=\"text-align: left\"><code>git standing --short<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>You may configure some surroundings startup instructions in Codex, I had configured that to be <code>yarn set up<\/code>, which led to the next:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">There are untracked .yarn\/ and .yarnrc information. I\u2019ll verify and clear them up.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll verify the basis of \u2018ui\u2019 and take away any pointless Yarn 4 entries.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll take a look at the commit historical past to see if these .yarn information have been added later.<\/td>\n<td style=\"text-align: left\"><code>git log --oneline -n 1<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll evaluation the repository\u2019s .gitignore to verify if Node modules are excluded.<\/td>\n<td style=\"text-align: left\"><code>grep yarn .gitignore<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I see no entry for .yarn or .yarnrc. I\u2019ll verify and take away them if wanted.<\/td>\n<td style=\"text-align: left\"><code>cat ui\/.gitignore<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll verify if I can take away .yarn or .yarnrc information since they shouldn\u2019t be dedicated.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">It seems like yarn.lock modifications have been made. Time to reset to HEAD.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Precise code modifications:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">Time to change the code. I\u2019ll start the mandatory updates now.<\/td>\n<td style=\"text-align: left\"><code>sed -n '1,30p' ...<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019m going so as to add a hyphen to the mandatory a part of the code.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019m going to make modifications to the index.js file now.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll import toReadableText and begin utilizing it within the code.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll replace index.js to import toReadableText and regulate the _dynamic_data_renderer exams.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I would like to exchange {tag} with {toReadableText(tag)} for higher rendering.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll check out the variations to higher perceive the modifications.<\/td>\n<td style=\"text-align: left\"><code>git diff<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll evaluation the modifications in index.js to see what\u2019s been modified.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll add a brand new take a look at for hyphenated circumstances in _dynamic_data_renderer.take a look at.js.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll think about inserting a take a look at after line 35.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Operating our code linter subsequent, good:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">I\u2019ll format the code utilizing Prettier as instructed.<\/td>\n<td style=\"text-align: left\"><code>cd ui &amp;&amp; npx prettier -w ...<\/code><\/td>\n<td style=\"text-align: left\"><em>Prettier is talked about within the AGENTS.md. It appears to run <code>prettier<\/code> efficiently, although not one of the information have been modified<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll evaluation the logs to collect extra data.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Making an attempt to run the exams &#8211; unsuccessfully:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">I\u2019ll run the yarn exams to verify if all the pieces\u2019s working high quality.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Assessments may\u2019ve been cached or want community\u2014output\u2019s empty, so I\u2019ll verify the log.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">The lockfile isn\u2019t up to date. I\u2019ll attempt working \u2018yarn set up\u2019 for the reason that surroundings permits it.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">The surroundings is offline, so yarn set up can\u2019t be run, however I see a node_modules folder.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I see node_modules are already put in. I\u2019ll verify the log for why exams failed.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">The error occurs as a result of Yarn 4 depends on .yarn and .yarnrc, which we eliminated.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\"><em>?<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">It seems like .yarnrc.yml isn\u2019t tracked. I\u2019ll additionally verify .yarn for monitoring.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019m double-checking the bundle.json to see if \u201chaiven-ui\u201d is the proper title.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\"><em>?<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll verify the Node model to verify if it\u2019s 18 or 20 by working node -v.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\"><em>bizarre, the node model laid out in bundle.json is 22.6<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I believe switching to npx vitest run may repair the error. Let\u2019s attempt that.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">The output is lengthy\u2014now I\u2019ll seize the final abstract traces.<\/td>\n<td style=\"text-align: left\"><code>Error: Not carried out: window.getComputedStyle(elt, pseudoElt)<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">The output is just too lengthy, so I\u2019ll extract the important thing factors for a abstract.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Occurring a tangent about establishing the venv, which is completely pointless as a result of it solely plans modifications for frontend code:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">The exams failed as a consequence of case variations, however now I\u2019ll activate the digital surroundings.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\"><em>AGENTS.md incorporates directions to activate venv for the Python backend, however we\u2019re within the frontend right here, so\u2026<\/em><\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Hmm, the .venv isn\u2019t right here. I ought to verify if it wants creation or already exists.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">It seems just like the .venv listing is lacking. Let\u2019s evaluation AGENT\u2019s directions fastidiously.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">The surroundings appears offline, however there may be a script to arrange dependencies regionally.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I can\u2019t run \u201cpoetry set up\u201d offline, however I\u2019ll verify the .cursor folder for dependencies.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I can\u2019t run backend exams with the present setup, however I\u2019ll attempt pytest anyway.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong>Gave up on the exams, now wrapping up the modifications:<\/strong><\/p>\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Message<\/th>\n<th style=\"text-align: left\">Command (samples)<\/th>\n<th style=\"text-align: left\">Notes<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">Assessments failed as a consequence of lacking dependencies. Now, I\u2019ll verify standing and proceed with committing.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I believe the .yarnrc.yml was left over from a earlier yarn set up. Eradicating it.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll seize the related file traces for the citations now.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll get the encompassing line vary for the modifications in index.js.<\/td>\n<td style=\"text-align: left\"><code>nl -ba ui\/src\/pages\/index.js | sed -n '12,28p'<\/code><\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">I\u2019ll seize the related traces round these modifications now.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">It\u2019s time to finalize the PR message and confirm the commit.<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">UI exams failed as a consequence of surroundings points. I\u2019ll reference the final failure traces. Accomplished!<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<td style=\"text-align: left\">\u00a0<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><strong><img decoding=\"async\" src=\"https:\/\/martinfowler.com\/articles\/exploring-gen-ai\/codex-results_view.png\" alt=\"Screenshot of the final results view in OpenAI Codex\" \/><\/strong><\/p>\n<p><a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/tw-haiven\/haiven\/pull\/830\">Right here is the complete pull request created by Codex.<\/a><\/p>\n<h2 id=\"observations\">Observations<\/h2>\n<h3 id=\"brute-text-search\">Brute textual content search<\/h3>\n<p>I discovered it fascinating to see that Codex, and many of the different coding assistants I\u2019m utilizing, are resorting increasingly to easy textual content search to search out related code. Within the log above you see how Codex goes via a bunch of search phrases with <code>grep<\/code>, to search out related items of code (\u201chuman\u201d, \u201chuman readable\u201d, \u201chumanReadable\u201d, \u2026). The explanation why I discover it fascinating is as a result of there have been plenty of seemingly extra refined code search mechanisms carried out, like semantic search over codebase indices with vectors \/ embeddings (Cursor, GH Copilot, Windsurf), or utilizing the summary syntax tree as a place to begin (Aider, Cline). The latter continues to be fairly easy, however doing textual content search with grep is the only potential.<\/p>\n<p>It looks as if the instrument creators have discovered that this easy search continues to be the simplest in spite of everything &#8211; ? Or they\u2019re making some type of trade-off right here, between simplicity and effectiveness?<\/p>\n<h3 id=\"the-remote-dev-environment-is-key-for-these-agents-to-work-in-the-background\">The distant dev surroundings is vital for these brokers to work \u201cwithin the background\u201d<\/h3>\n<p>Here&#8217;s a screenshot of Codex\u2019s surroundings configuration display (as of finish of Might 2025). As of now, you may configure a container picture, surroundings variables, secrets and techniques, and a startup script. They level out that after the execution of that startup script, the surroundings won&#8217;t have entry to the web anymore, which might sandbox the surroundings and mitigate a few of the safety dangers.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/martinfowler.com\/articles\/exploring-gen-ai\/codex-environment_setup.png\" alt=\"Screenshot of Codex's environment configuration screen (as of end of May 2025); Shows configurable container image, environment variables, secrets, and a setup script.\" \/><\/p>\n<p>For these \u201cautonomous background brokers\u201d, the maturity of the distant dev surroundings that&#8217;s arrange for the agent is essential, and it\u2019s a difficult problem. On this case e.g., Codex didn\u2019t handle to run the exams.<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/martinfowler.com\/articles\/exploring-gen-ai\/codex-failed_to_run_tests.png\" alt=\"\" \/><\/p>\n<p>And it turned out that when the pull request was created, there have been certainly two exams failing due to regression, which is a disgrace, as a result of if it had identified, it will have simply been capable of repair the exams, it was a trivial repair:<\/p>\n<p><img decoding=\"async\" src=\"https:\/\/martinfowler.com\/articles\/exploring-gen-ai\/codex-failing_tests.png\" alt=\"Screenshot of the Codex error messages indicating that it couldn't run the tests.\" \/><\/p>\n<p>This specific mission, Haiven, truly has a scripted developer security internet, within the type of a fairly elaborate <a rel=\"nofollow\" target=\"_blank\" href=\"https:\/\/github.com\/tw-haiven\/haiven\/blob\/main\/.pre-commit-config.yaml\">.pre-commit configuration<\/a>. () It will be best if the agent may execute the complete pre-commit earlier than even making a pull request. Nevertheless, to run all of the steps, it will must run<\/p>\n<ul>\n<li>Node and yarn (to run UI exams and the frontend linter)<\/li>\n<li>Python and poetry (to run backend exams)<\/li>\n<li>Semgrep (for security-related static code evaluation)<\/li>\n<li>Ruff (Python linter)<\/li>\n<li>Gitleaks (secret scanner)<\/li>\n<\/ul>\n<p>\u2026and all of these must be out there in the fitting variations as nicely, in fact.<\/p>\n<p>Determining a clean expertise to spin up simply the fitting surroundings for an agent is vital for these agent merchandise, if you wish to actually run them \u201cwithin the background\u201d as an alternative of a developer machine. It isn&#8217;t a brand new drawback, and to an extent a solved drawback, in spite of everything we do that in CI pipelines on a regular basis. But it surely\u2019s additionally not trivial, and in the mean time my impression is that surroundings maturity continues to be a difficulty in most of those merchandise, and the consumer expertise to configure and take a look at the surroundings setups is as irritating, if no more, as it may be for CI pipelines.<\/p>\n<h3 id=\"solution-quality\">Resolution high quality<\/h3>\n<p>I ran the identical immediate 3 instances in OpenAI Codex, 1 time in Google\u2019s Jules, 2 instances regionally in Claude Code (which isn&#8217;t totally autonomous although, I wanted to manually say \u2018sure\u2019 to all the pieces). Though this was a comparatively easy job and answer, turns on the market have been high quality variations between the outcomes.<\/p>\n<p>Excellent news first, the brokers got here up with a working answer each time (leaving breaking regression exams apart, and to be sincere I didn\u2019t truly run each single one of many options to verify). I believe this job is an effective instance of the kinds and sizes of duties that GenAI brokers are already nicely positioned to work on by themselves. However there have been two elements that differed by way of high quality of the answer:<\/p>\n<ul>\n<li><strong>Discovery of current code that could possibly be reused:<\/strong> Within the log right here you\u2019ll discover that Codex discovered an current element, the \u201cdynamic information renderer\u201d, that already had performance for turning technical keys into human readable variations. Within the 6 runs I did, solely 2 instances did the respective agent discover this piece of code. Within the different 4, the brokers created a brand new file with a brand new perform, which led to duplicated code.<\/li>\n<li><strong>Discovery of a further place that ought to use this logic:<\/strong> The staff is at present engaged on a brand new characteristic that additionally shows class names to the consumer, in a dropdown. In one of many 6 runs, the agent truly found that and prompt to additionally change that place to make use of the brand new performance.<\/li>\n<\/ul>\n<div class=\"narrow\">\n<table>\n<thead>\n<tr>\n<th style=\"text-align: left\">Discovered the reusable code<\/th>\n<th style=\"text-align: left\">Went the additional mile and located the extra place the place it needs to be used<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"text-align: left\">Sure<\/td>\n<td style=\"text-align: left\">Sure<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">Sure<\/td>\n<td style=\"text-align: left\">No<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">No<\/td>\n<td style=\"text-align: left\">Sure<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">No<\/td>\n<td style=\"text-align: left\">No<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">No<\/td>\n<td style=\"text-align: left\">No<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align: left\">No<\/td>\n<td style=\"text-align: left\">No<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>I put these outcomes right into a desk as an instance that in every job given to an agent, we&#8217;ve got a number of dimensions of high quality, of issues that we need to \u201cgo proper\u201d. Every agent run can \u201cgo fallacious\u201d in a single or a number of of those dimensions, and the extra dimensions there are, the much less possible it&#8217;s that an agent will get all the pieces achieved the best way we wish it.<\/p>\n<h3 id=\"sunk-cost-fallacy\"><strong>Sunk value fallacy<\/strong><\/h3>\n<p>I\u2019ve been questioning &#8211; let\u2019s say a staff makes use of background brokers for this kind of job, the varieties of duties which are type of small, and neither necessary nor pressing. Haiven is an internal-facing software, and has solely two builders assigned in the mean time, so this kind of beauty repair is definitely thought-about low precedence because it takes developer capability away from extra necessary issues. When an agent solely type of succeeds, however not totally &#8211; by which conditions would a staff discard the pull request, and by which conditions would they make investments the time to get it the final 20% there, despite the fact that spending capability on this had been deprioritised? It makes me marvel in regards to the tail finish of unprioritised effort we&#8217;d find yourself with.<\/p>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"<p>Up to now few weeks, a number of \u201cautonomous background coding brokers\u201d have been launched. Supervised coding brokers: Interactive chat brokers which are pushed and steered by a developer. Create code regionally, within the IDE. Instrument examples: GitHub Copilot, Windsurf, Cursor, Cline, Roo Code, Claude Code, Aider, Goose, \u2026 Autonomous background coding brokers: Headless brokers [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":3291,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[56],"tags":[617,3112,2516,1256],"class_list":["post-3289","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-software","tag-agents","tag-autonomous","tag-codex","tag-coding"],"_links":{"self":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts\/3289","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3289"}],"version-history":[{"count":1,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts\/3289\/revisions"}],"predecessor-version":[{"id":3290,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/posts\/3289\/revisions\/3290"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=\/wp\/v2\/media\/3291"}],"wp:attachment":[{"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3289"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3289"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/techtrendfeed.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3289"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}<!-- This website is optimized by Airlift. Learn more: https://airlift.net. Template:. Learn more: https://airlift.net. Template: 69d9690a190636c2e0989534. Config Timestamp: 2026-04-10 21:18:02 UTC, Cached Timestamp: 2026-06-15 09:46:41 UTC -->