{"id":16,"date":"2025-01-02T05:48:00","date_gmt":"2025-01-02T05:48:00","guid":{"rendered":"https:\/\/codegenblog.kinsta.cloud\/?p=16"},"modified":"2025-08-27T12:10:18","modified_gmt":"2025-08-27T12:10:18","slug":"act-via-code","status":"publish","type":"post","link":"https:\/\/codegen.com\/blog\/act-via-code\/","title":{"rendered":"Act via Code"},"content":{"rendered":"\n<p>Two and a half years since the launch of the GPT-3 API, code assistants have emerged as potentially the premier use case of LLMs. The rapid adoption of AI-powered IDEs and prototype builders isn\u2019t surprising\u2014code is structured, deterministic, and rich with patterns, making it an ideal domain for machine learning. Developers actively working with tools like Cursor (myself included) have an exhilarating yet uncertain sense that the field of software engineering is approaching an inflection point.<\/p>\n\n\n\n<p>Yet there\u2019s a striking gap between understanding and action for today\u2019s code assistants. When provided proper context, frontier LLMs can analyze massive enterprise codebases and propose practical paths towards sophisticated, large-scale improvements. But implementing changes that impact more than a small set of files with modern AI assistants is fundamentally infeasible. The good news is that for focused, file-level changes, we\u2019ve found real success: AI-powered IDEs (<a href=\"https:\/\/codeium.com\/windsurf\">Windsurf<\/a>, <a href=\"https:\/\/www.cursor.com\/\">Cursor<\/a>) are transforming how developers write and review code, while chat-based assistants are revolutionizing how we bootstrap and prototype new applications (via tools like <a href=\"https:\/\/v0.dev\/\">v0<\/a>, <a href=\"https:\/\/lovable.dev\/\">lovable.dev<\/a>, and <a href=\"https:\/\/bolt.new\/\">bolt.new<\/a>).<\/p>\n\n\n\n<p>However, there\u2019s a whole class of critical engineering tasks that remain out of reach\u2014tasks that are fundamentally programmatic and deal with codebase structure at scale. Much of modern engineering effort is directed towards eliminating tech debt, managing migrations, analyzing dependency graphs, enforcing type coverage, and other global concerns. Today\u2019s AI assistants can propose solutions but lack the mechanisms to execute them. The intelligence is there, but it\u2019s trapped in your IDE\u2019s text completion window.<\/p>\n\n\n\n<p>The bottleneck isn\u2019t intelligence\u2014it\u2019s tooling. The solution is giving AI systems the ability to programmatically interact with codebases through code execution environments. These environments are the most expressive tools we can offer agents, enabling composition, abstraction, and systematic manipulation of complex systems. By combining code execution with custom APIs for large-scale operations, we unlock new high-value use cases.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-beating-minecraft-with-code-execution\"><strong>Beating Minecraft with Code Execution<\/strong><\/h2>\n\n\n\n<p>In mid-2023, a research project called <a href=\"https:\/\/voyager.minedojo.org\">Voyager<\/a> solved Minecraft, performing several multiples better than prior SOTA. This success wasn\u2019t about raw intelligence\u2014it was about providing a more expressive action space: code.<\/p>\n\n\n\n<p>GPT-4, when allowed to write and execute JavaScript programs through a clean API, could craft high-level behaviors and reuse learned \u201caction programs\u201d across tasks. This enabled skill accumulation, experience recall, and systematic reuse.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>\u201cWe opt to use code as the action space instead of low-level motor commands because programs can naturally represent temporally extended and compositional actions\u2026\u201d<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-code-is-an-ideal-action-space\"><strong>Code is an Ideal Action Space<\/strong><\/h2>\n\n\n\n<p>Letting AI act through code rather than atomic commands yields a step change in capability. In software engineering, this means expressing assistant behavior through code that manipulates codebases.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Implement `grep` via for loops and if statements\nfor function in codebase.functions:\n    if 'Page' in function.name:\n        function.move_to_file('\/pages\/' + function.name + '.tsx')<\/code><\/pre>\n\n\n\n<p>This paradigm brings multiple advantages:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>API-Driven Extensibility<\/strong>: Agents can use any operation exposed via a clean API.<\/li>\n\n\n\n<li><strong>Programmatic Efficiency<\/strong>: Batch operations across large codebases are fast and systematic.<\/li>\n\n\n\n<li><strong>Composability<\/strong>: Agents can chain simple operations to form more complex ones.<\/li>\n\n\n\n<li><strong>Constrained Action Space<\/strong>: APIs act as guardrails, preventing invalid actions.<\/li>\n\n\n\n<li><strong>Objective Feedback<\/strong>: Errors provide clear debugging signals.<\/li>\n\n\n\n<li><strong>Natural Collaboration<\/strong>: Code is human-readable and reviewable.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-code-manipulation-programs\"><strong>Code Manipulation Programs<\/strong><\/h2>\n\n\n\n<p>To match how developers think about code, agents need high-level APIs, not raw AST surgery. We\u2019re building a framework that reflects actual engineering intuition and abstracts over common edge cases, while preserving correctness.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Access to high-level semantic operations\nfor component in codebase.jsx_components:\n    if len(component.usages) == 0:\n        component.rename(component.name + 'Page')<\/code><\/pre>\n\n\n\n<p>This isn\u2019t string substitution. The framework understands structure: React hierarchies, type systems, usage graphs. It enables both rapid analysis and safe edits.<\/p>\n\n\n\n<p>We\u2019re also extending this interface to systems outside the repo: AWS, Datadog, and CI\/CD platforms. This is the path to <strong>autonomous software engineering<\/strong>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-codegen-is-now-oss\"><strong>Codegen is now OSS<\/strong><\/h2>\n\n\n\n<p>We\u2019re excited to release <a href=\"https:\/\/github.com\/codegen-sh\/codegen\">Codegen<\/a> as open source under <a href=\"https:\/\/github.com\/codegen-sh\/codegen\/blob\/develop\/LICENSE\">Apache 2.0<\/a> and build out this vision with the developer community. <a href=\"https:\/\/clickup.com\/brain\/agents\/codegen\">Schedule a demo<\/a> or join our <a href=\"https:\/\/community.codegen.com\">Slack community<\/a> to share ideas and feedback.<\/p>\n\n\n\n<p>\u2014 Jay Hack, Founder<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Two and a half years since the launch of the GPT-3 API, code assistants have emerged as potentially the premier use case of LLMs. The rapid adoption of AI-powered IDEs and prototype builders isn\u2019t surprising\u2014code is structured, deterministic, and rich with patterns, making it an ideal domain for machine learning. Developers actively working with tools [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4,8],"tags":[],"class_list":["post-16","post","type-post","status-publish","format-standard","hentry","category-ai-software-development","category-engineering-insights"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Act via Code - The Codegen Blog<\/title>\n<meta name=\"description\" content=\"Explore the impact of AI code assistants on software engineering. Discover how they help analyze complex codebases effectively.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/codegen.com\/blog\/act-via-code\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Act via Code\" \/>\n<meta property=\"og:description\" content=\"Explore the impact of AI code assistants on software engineering. Discover how they help analyze complex codebases effectively.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/codegen.com\/blog\/act-via-code\/\" \/>\n<meta property=\"og:site_name\" content=\"The Codegen Blog\" \/>\n<meta property=\"article:published_time\" content=\"2025-01-02T05:48:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-27T12:10:18+00:00\" \/>\n<meta name=\"author\" content=\"Codegen Technical Staff\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@codegen\" \/>\n<meta name=\"twitter:site\" content=\"@codegen\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Codegen Technical Staff\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/act-via-code\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/act-via-code\\\/\"},\"author\":{\"name\":\"Codegen Technical Staff\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#\\\/schema\\\/person\\\/d11d8bf8745420c643fcb0f3213aa92f\"},\"headline\":\"Act via Code\",\"datePublished\":\"2025-01-02T05:48:00+00:00\",\"dateModified\":\"2025-08-27T12:10:18+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/act-via-code\\\/\"},\"wordCount\":638,\"publisher\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#organization\"},\"articleSection\":[\"AI &amp; Software Development\",\"Engineering Insights\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/act-via-code\\\/\",\"url\":\"https:\\\/\\\/codegen.com\\\/blog\\\/act-via-code\\\/\",\"name\":\"Act via Code - The Codegen Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#website\"},\"datePublished\":\"2025-01-02T05:48:00+00:00\",\"dateModified\":\"2025-08-27T12:10:18+00:00\",\"description\":\"Explore the impact of AI code assistants on software engineering. Discover how they help analyze complex codebases effectively.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/act-via-code\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/codegen.com\\\/blog\\\/act-via-code\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/act-via-code\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/codegen.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Act via Code\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/codegen.com\\\/blog\\\/\",\"name\":\"The Codegen Blog\",\"description\":\"What we\u2019re building, how we\u2019re building it, and what we\u2019re learning along the way.\",\"publisher\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/codegen.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#organization\",\"name\":\"Codegen\",\"url\":\"https:\\\/\\\/codegen.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/codegenblog.kinsta.cloud\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Codegen_Lockup-Black-1024h-scaled.png\",\"contentUrl\":\"https:\\\/\\\/codegenblog.kinsta.cloud\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/Codegen_Lockup-Black-1024h-scaled.png\",\"width\":2560,\"height\":528,\"caption\":\"Codegen\"},\"image\":{\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/codegen\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/codegen.com\\\/blog\\\/#\\\/schema\\\/person\\\/d11d8bf8745420c643fcb0f3213aa92f\",\"name\":\"Codegen Technical Staff\",\"sameAs\":[\"https:\\\/\\\/codegenblog.kinsta.cloud\"],\"url\":\"https:\\\/\\\/codegen.com\\\/blog\\\/author\\\/cg-admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Act via Code - The Codegen Blog","description":"Explore the impact of AI code assistants on software engineering. Discover how they help analyze complex codebases effectively.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/codegen.com\/blog\/act-via-code\/","og_locale":"en_US","og_type":"article","og_title":"Act via Code","og_description":"Explore the impact of AI code assistants on software engineering. Discover how they help analyze complex codebases effectively.","og_url":"https:\/\/codegen.com\/blog\/act-via-code\/","og_site_name":"The Codegen Blog","article_published_time":"2025-01-02T05:48:00+00:00","article_modified_time":"2025-08-27T12:10:18+00:00","author":"Codegen Technical Staff","twitter_card":"summary_large_image","twitter_creator":"@codegen","twitter_site":"@codegen","twitter_misc":{"Written by":"Codegen Technical Staff","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/codegen.com\/blog\/act-via-code\/#article","isPartOf":{"@id":"https:\/\/codegen.com\/blog\/act-via-code\/"},"author":{"name":"Codegen Technical Staff","@id":"https:\/\/codegen.com\/blog\/#\/schema\/person\/d11d8bf8745420c643fcb0f3213aa92f"},"headline":"Act via Code","datePublished":"2025-01-02T05:48:00+00:00","dateModified":"2025-08-27T12:10:18+00:00","mainEntityOfPage":{"@id":"https:\/\/codegen.com\/blog\/act-via-code\/"},"wordCount":638,"publisher":{"@id":"https:\/\/codegen.com\/blog\/#organization"},"articleSection":["AI &amp; Software Development","Engineering Insights"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/codegen.com\/blog\/act-via-code\/","url":"https:\/\/codegen.com\/blog\/act-via-code\/","name":"Act via Code - The Codegen Blog","isPartOf":{"@id":"https:\/\/codegen.com\/blog\/#website"},"datePublished":"2025-01-02T05:48:00+00:00","dateModified":"2025-08-27T12:10:18+00:00","description":"Explore the impact of AI code assistants on software engineering. Discover how they help analyze complex codebases effectively.","breadcrumb":{"@id":"https:\/\/codegen.com\/blog\/act-via-code\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/codegen.com\/blog\/act-via-code\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/codegen.com\/blog\/act-via-code\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/codegen.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Act via Code"}]},{"@type":"WebSite","@id":"https:\/\/codegen.com\/blog\/#website","url":"https:\/\/codegen.com\/blog\/","name":"The Codegen Blog","description":"What we\u2019re building, how we\u2019re building it, and what we\u2019re learning along the way.","publisher":{"@id":"https:\/\/codegen.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/codegen.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/codegen.com\/blog\/#organization","name":"Codegen","url":"https:\/\/codegen.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/codegen.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/Codegen_Lockup-Black-1024h-scaled.png","contentUrl":"https:\/\/codegenblog.kinsta.cloud\/wp-content\/uploads\/2025\/07\/Codegen_Lockup-Black-1024h-scaled.png","width":2560,"height":528,"caption":"Codegen"},"image":{"@id":"https:\/\/codegen.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/codegen"]},{"@type":"Person","@id":"https:\/\/codegen.com\/blog\/#\/schema\/person\/d11d8bf8745420c643fcb0f3213aa92f","name":"Codegen Technical Staff","sameAs":["https:\/\/codegenblog.kinsta.cloud"],"url":"https:\/\/codegen.com\/blog\/author\/cg-admin\/"}]}},"_links":{"self":[{"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/posts\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/comments?post=16"}],"version-history":[{"count":2,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/posts\/16\/revisions"}],"predecessor-version":[{"id":21773,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/posts\/16\/revisions\/21773"}],"wp:attachment":[{"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/media?parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/categories?post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codegen.com\/blog\/wp-json\/wp\/v2\/tags?post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}