<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Bruce Wong</title>
    <description>The latest articles on DEV Community by Bruce Wong (@brucewong001).</description>
    <link>https://dev.to/brucewong001</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3978960%2Fd77749d0-8e1a-460b-944d-520c01d5ec40.png</url>
      <title>DEV Community: Bruce Wong</title>
      <link>https://dev.to/brucewong001</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/brucewong001"/>
    <language>en</language>
    <item>
      <title>Microsoft Build 2026: Agent Harness Is About Making Agents Production-Ready</title>
      <dc:creator>Bruce Wong</dc:creator>
      <pubDate>Thu, 11 Jun 2026 08:28:19 +0000</pubDate>
      <link>https://dev.to/brucewong001/microsoft-build-2026-agent-harness-is-about-making-agents-production-ready-1alb</link>
      <guid>https://dev.to/brucewong001/microsoft-build-2026-agent-harness-is-about-making-agents-production-ready-1alb</guid>
      <description>&lt;p&gt;Microsoft Build 2026 had many AI announcements, but the one I found most meaningful was not another model or another Copilot UI.&lt;/p&gt;

&lt;p&gt;It was Agent Harness in Microsoft Agent Framework.&lt;/p&gt;

&lt;p&gt;My reading is simple: Microsoft is trying to move agent development from "the agent can run" to "the agent can survive production."&lt;/p&gt;

&lt;p&gt;That difference matters.&lt;/p&gt;

&lt;p&gt;Most agent demos look impressive because the happy path is short. A user asks, the model reasons, a tool is called, and the result comes back. But real agent workloads are messier:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the task runs for many steps&lt;/li&gt;
&lt;li&gt;context becomes too large&lt;/li&gt;
&lt;li&gt;the agent needs memory&lt;/li&gt;
&lt;li&gt;some tools require approval&lt;/li&gt;
&lt;li&gt;developers need traces&lt;/li&gt;
&lt;li&gt;multiple agents may need to collaborate&lt;/li&gt;
&lt;li&gt;generated code may need to execute safely&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are not side features. They are the execution layer of an agent system.&lt;/p&gt;

&lt;p&gt;Agent Harness is interesting because it makes that execution layer part of the framework default.&lt;/p&gt;

&lt;h1&gt;
  
  
  What Changed
&lt;/h1&gt;

&lt;p&gt;At a high level, creating a harness agent looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;agent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;create_harness_agent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;MyAgent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;max_context_window_tokens&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;128_000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The API change is small. The assumption change is not.&lt;/p&gt;

&lt;p&gt;The old assumption was: create an agent and let it call tools.&lt;/p&gt;

&lt;p&gt;The new assumption is: this agent may run for a long time, use many tools, need human approval, overflow context, delegate work, and require observability.&lt;/p&gt;

&lt;p&gt;Agent Harness includes built-in providers for things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;automatic context compaction&lt;/li&gt;
&lt;li&gt;file-based memory&lt;/li&gt;
&lt;li&gt;todo tracking&lt;/li&gt;
&lt;li&gt;plan vs. execute modes&lt;/li&gt;
&lt;li&gt;dynamic skill discovery&lt;/li&gt;
&lt;li&gt;background agents&lt;/li&gt;
&lt;li&gt;tool approval rules&lt;/li&gt;
&lt;li&gt;OpenTelemetry tracing&lt;/li&gt;
&lt;li&gt;web search and shell execution&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is why I do not see Agent Harness as just a feature list. I see it as a standardization move.&lt;/p&gt;

&lt;p&gt;Every serious agent platform eventually needs these capabilities. The question is whether each team builds them manually, or whether the framework provides strong defaults.&lt;/p&gt;

&lt;h1&gt;
  
  
  CodeAct: The Real Problem Is Not Tool Speed
&lt;/h1&gt;

&lt;p&gt;The first feature worth paying attention to is CodeAct with Hyperlight.&lt;/p&gt;

&lt;p&gt;Traditional tool calling usually works like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;LLM -&amp;gt; choose tool
Tool -&amp;gt; return result
LLM -&amp;gt; choose next tool
Tool -&amp;gt; return result
LLM -&amp;gt; choose next tool
...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is fine for simple tasks. But it becomes expensive when the work is procedural.&lt;/p&gt;

&lt;p&gt;Imagine an agent needs to calculate total order value across users:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;list users&lt;/li&gt;
&lt;li&gt;get orders for each user&lt;/li&gt;
&lt;li&gt;get discount for each order&lt;/li&gt;
&lt;li&gt;get tax rate by region&lt;/li&gt;
&lt;li&gt;calculate the final total&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In traditional tool calling, the model may need many turns just to walk through a loop.&lt;/p&gt;

&lt;p&gt;CodeAct changes this by letting the model generate code once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;call_tool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;list_users&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;user&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;users&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;orders&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;call_tool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;get_orders&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;user_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;order&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;orders&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;discount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;call_tool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;get_discount&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;order_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;tax&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;call_tool&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;get_tax_rate&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;region&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;region&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="n"&gt;total&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;order&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;amount&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;discount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="n"&gt;tax&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;total&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important improvement is not that the tools execute faster.&lt;/p&gt;

&lt;p&gt;The improvement is that the system reduces model-to-tool round trips.&lt;/p&gt;

&lt;p&gt;Microsoft's example showed more than 50% latency reduction and more than 60% token reduction for a multi-step workflow. The exact number will vary, but the pattern is very useful: when the task is procedural, let the model express the procedure as code and let the runtime execute it.&lt;/p&gt;

&lt;p&gt;This is closer to how developers work. If I need to repeat an operation across many records, I do not want to manually reason through every iteration. I write a small script.&lt;/p&gt;

&lt;p&gt;CodeAct gives agents that same execution pattern.&lt;/p&gt;

&lt;h1&gt;
  
  
  Hyperlight Does Not Remove Tool Governance
&lt;/h1&gt;

&lt;p&gt;CodeAct uses Hyperlight to run generated code in an isolated micro-VM. That is important because model-generated code should not run directly in the host environment.&lt;/p&gt;

&lt;p&gt;But I think the security boundary needs to be stated clearly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CodeAct sandboxing protects the host from unsafe generated code. It does not automatically make your tools safe.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your tool can send an email, delete a file, update a database, approve a refund, or trigger a deployment, the sandbox is not enough. You still need tool-level permissions, approval policies, and auditability.&lt;/p&gt;

&lt;p&gt;In other words:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Sandbox protects code execution.
Approval protects business actions.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confusing these two would be dangerous in production.&lt;/p&gt;

&lt;h1&gt;
  
  
  Handoff: Multi-Agent Workflow Should Not Always Be a Pipeline
&lt;/h1&gt;

&lt;p&gt;The second feature I found important is Handoff.&lt;/p&gt;

&lt;p&gt;Many multi-agent examples are built as a fixed pipeline:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Planner -&amp;gt; Implementer -&amp;gt; Reviewer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That works for some development workflows. But many real service workflows are not linear.&lt;/p&gt;

&lt;p&gt;Think about customer support:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Coordinator
  -&amp;gt; Refund Agent
  -&amp;gt; Shipping Agent
  -&amp;gt; Technical Support Agent
  -&amp;gt; back to Coordinator if needed
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The right next step depends on the conversation.&lt;/p&gt;

&lt;p&gt;This is where Handoff is useful. Developers define the participants and topology, while agents can decide when to transfer control.&lt;/p&gt;

&lt;p&gt;A simplified structure looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;workflow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nc"&gt;HandoffBuilder&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;customer_support&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;participants&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="n"&gt;coordinator&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;refund&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;shipping&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;tech&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set_coordinator&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;coordinator&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;with_interaction_mode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;autonomous&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;with_termination_condition&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;should_terminate&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The point is not simply "multiple agents."&lt;/p&gt;

&lt;p&gt;The point is runtime routing.&lt;/p&gt;

&lt;p&gt;A coordinator can route to a specialist. A specialist can finish the task, ask for more information, or hand control back. The workflow can end early when the condition is met.&lt;/p&gt;

&lt;p&gt;That is very different from forcing every request through the same fixed sequence.&lt;/p&gt;

&lt;h1&gt;
  
  
  My Takeaway
&lt;/h1&gt;

&lt;p&gt;For me, the most important message from Agent Harness is this:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Production agents need an execution layer, not just a reasoning model.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That execution layer includes context management, memory, approvals, tracing, code execution, and multi-agent routing.&lt;/p&gt;

&lt;p&gt;CodeAct improves single-agent efficiency by reducing unnecessary model turns.&lt;/p&gt;

&lt;p&gt;Handoff improves multi-agent collaboration by allowing dynamic runtime routing.&lt;/p&gt;

&lt;p&gt;Agent Harness brings these ideas into the Microsoft Agent Framework as default infrastructure.&lt;/p&gt;

&lt;p&gt;This is why I think Agent Harness matters. It is not the most visually exciting Build 2026 announcement, but it may be one of the most practical ones for developers building real agent systems.&lt;/p&gt;

&lt;p&gt;The next phase of agent development will not be defined only by smarter models. It will also be defined by better execution infrastructure.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>microsoft</category>
      <category>news</category>
    </item>
    <item>
      <title>GitHub Copilot CLI: Your AI Coding Partner in the Terminal</title>
      <dc:creator>Bruce Wong</dc:creator>
      <pubDate>Thu, 11 Jun 2026 08:22:45 +0000</pubDate>
      <link>https://dev.to/brucewong001/github-copilot-cli-your-ai-coding-partner-in-the-terminal-2jg5</link>
      <guid>https://dev.to/brucewong001/github-copilot-cli-your-ai-coding-partner-in-the-terminal-2jg5</guid>
      <description>&lt;h1&gt;
  
  
  1. What is Copilot CLI?
&lt;/h1&gt;

&lt;p&gt;In February 2026, GitHub officially released Copilot CLI to General Availability (GA). It is not a command-line port of the VS Code plugin, but a standalone, terminal-native AI coding agent.&lt;/p&gt;

&lt;p&gt;GitHub's positioning is clear:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Copilot CLI has grown from a terminal assistant into a full agentic development environment—one that plans, builds, reviews, and remembers across sessions, all without leaving the terminal."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;All Copilot subscribers can use it (Free/Pro/Business/Enterprise) at no extra cost.&lt;/p&gt;




&lt;h1&gt;
  
  
  2. How is it different from VS Code Copilot?
&lt;/h1&gt;

&lt;p&gt;This is the most confusing part. Many people think CLI is just "Copilot from VS Code moved to the terminal." It is not.&lt;/p&gt;

&lt;h2&gt;
  
  
  2.1 Positioning differences
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Dimension&lt;/th&gt;
&lt;th&gt;VS Code Copilot&lt;/th&gt;
&lt;th&gt;Copilot CLI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Runtime&lt;/td&gt;
&lt;td&gt;Inside the IDE&lt;/td&gt;
&lt;td&gt;Terminal / command line&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Interaction&lt;/td&gt;
&lt;td&gt;Inline editor completions, side Chat&lt;/td&gt;
&lt;td&gt;Full-screen terminal chat&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Core strength&lt;/td&gt;
&lt;td&gt;Real-time coding assistance&lt;/td&gt;
&lt;td&gt;Complex task planning &amp;amp; execution&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context switching&lt;/td&gt;
&lt;td&gt;Within the IDE&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No need to leave the terminal&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  2.2 Feature comparison
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;VS Code Copilot&lt;/th&gt;
&lt;th&gt;Copilot CLI&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Code completion&lt;/td&gt;
&lt;td&gt;✅ Real-time inline&lt;/td&gt;
&lt;td&gt;❌ Not the main focus&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent mode&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Yes, and more powerful&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Multi-step complex tasks&lt;/td&gt;
&lt;td&gt;✅ Supported&lt;/td&gt;
&lt;td&gt;✅ Better suited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Git operations&lt;/td&gt;
&lt;td&gt;⚠️ Limited&lt;/td&gt;
&lt;td&gt;✅ Native integration&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GitHub.com operations (PR/Issue)&lt;/td&gt;
&lt;td&gt;⚠️ Requires browser switch&lt;/td&gt;
&lt;td&gt;✅ Direct operations&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Plan Mode (plan first, then execute)&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Shift+Tab, more complete&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cross-session memory&lt;/td&gt;
&lt;td&gt;✅ Yes&lt;/td&gt;
&lt;td&gt;✅ Stronger Repository Memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CI/CD integration&lt;/td&gt;
&lt;td&gt;❌ Difficult&lt;/td&gt;
&lt;td&gt;✅ -p programmatic calls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Shell command execution&lt;/td&gt;
&lt;td&gt;⚠️ Indirect&lt;/td&gt;
&lt;td&gt;✅ Native support&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  2.3 One-sentence summary
&lt;/h2&gt;

&lt;p&gt;VS Code Copilot is "your co-pilot while coding" — real-time completions, quick explanations, single-file refactoring.&lt;/p&gt;

&lt;p&gt;Copilot CLI is "a full-stack engineer that works independently" — you can say "refactor this entire module," go do something else, and it reports back when done.&lt;/p&gt;




&lt;h1&gt;
  
  
  3. When to use CLI vs VS Code?
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Scenarios for VS Code Copilot&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Daily coding with real-time completions&lt;/li&gt;
&lt;li&gt;Quick refactoring within a single file&lt;/li&gt;
&lt;li&gt;Explaining selected code functionality&lt;/li&gt;
&lt;li&gt;Reviewing and confirming changes directly in the editor&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Scenarios for Copilot CLI&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Complex multi-step tasks: creating complete features, cross-file changes&lt;/li&gt;
&lt;li&gt;DevOps / automation: generating CI/CD configs, Terraform scripts&lt;/li&gt;
&lt;li&gt;GitHub operations: bulk PR management, code reviews, issue creation&lt;/li&gt;
&lt;li&gt;Background tasks: long-running code analysis, security scans&lt;/li&gt;
&lt;li&gt;Pure terminal environments: SSH remote servers, Docker containers, WSL&lt;/li&gt;
&lt;li&gt;Scripted integration: embedding AI capabilities into automation workflows&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  4. Copilot CLI's three killer features
&lt;/h1&gt;

&lt;h2&gt;
  
  
  4.1 Cloud Delegation (&amp;amp;)
&lt;/h2&gt;

&lt;p&gt;The most unique feature. Prefix your prompt with &amp;amp; to push the task to the GitHub Cloud Agent:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Runs remotely on GitHub Actions runners&lt;/li&gt;
&lt;li&gt;Automatically creates a copilot/ branch and Draft PR&lt;/li&gt;
&lt;li&gt;Continues even if you shut down your local machine&lt;/li&gt;
&lt;li&gt;Perfect for long-running tasks (code analysis, large-scale refactoring)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In contrast, Autopilot Mode (--autopilot) runs locally, is visible in real time, but stops if your local machine shuts down.&lt;/p&gt;

&lt;h2&gt;
  
  
  4.2 Programmatic Mode (-p)
&lt;/h2&gt;

&lt;p&gt;Ideal for integration into scripts and automation workflows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Single-shot call, great for script integration&lt;/span&gt;
copilot &lt;span class="nt"&gt;-p&lt;/span&gt; &lt;span class="s2"&gt;"Show me this week's commits and summarize them"&lt;/span&gt; &lt;span class="nt"&gt;--allow-tool&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;'shell(git)'&lt;/span&gt;

&lt;span class="c"&gt;# Pipe input&lt;/span&gt;
./script-outputting-options.sh | copilot 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Value: Can be integrated into CI/CD, cron jobs, and shell scripts.&lt;/p&gt;

&lt;h2&gt;
  
  
  4.3 Plan Mode — plan first, then execute
&lt;/h2&gt;

&lt;p&gt;Press Shift+Tab to enter Plan Mode. Copilot will:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Analyze your request&lt;/li&gt;
&lt;li&gt;Ask clarifying questions&lt;/li&gt;
&lt;li&gt;Build a structured implementation plan&lt;/li&gt;
&lt;li&gt;Wait for your confirmation before coding&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Value: Avoids the "AI blindly changes code" problem by communicating requirements first.&lt;/p&gt;




&lt;h1&gt;
  
  
  5. Installation and quick start
&lt;/h1&gt;

&lt;h2&gt;
  
  
  5.1 Installation
&lt;/h2&gt;

&lt;p&gt;这是提取出来的 Markdown 表格内容：&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Platform&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;macOS&lt;/td&gt;
&lt;td&gt;brew install copilot-cli&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Linux&lt;/td&gt;
&lt;td&gt;brew install copilot-cli or curl -fsSL &lt;a href="https://gh.io/copilot-install" rel="noopener noreferrer"&gt;https://gh.io/copilot-install&lt;/a&gt; | bash&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Windows&lt;/td&gt;
&lt;td&gt;winget install GitHub.Copilot&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;npm&lt;/td&gt;
&lt;td&gt;npm install -g @github/copilot&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;需要我帮你保存成 .md 文件吗？如果要的话，文件名和路径有偏好吗？&lt;br&gt;
Article content&lt;/p&gt;

&lt;h2&gt;
  
  
  5.2 Authentication
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;copilot
/login 
## 5.3 Quick start
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# 1. Enter your project directory&lt;/span&gt;
&lt;span class="nb"&gt;cd &lt;/span&gt;my-project

&lt;span class="c"&gt;# 2. Start interactive mode&lt;/span&gt;
copilot

&lt;span class="c"&gt;# 3. Initialize custom instructions (helps Copilot understand your stack)&lt;/span&gt;
/init
&lt;span class="c"&gt;# Generates .github/copilot-instructions.md with project context&lt;/span&gt;

&lt;span class="c"&gt;# 4. Start building&lt;/span&gt;
&lt;span class="s2"&gt;"Create a React component for user authentication"&lt;/span&gt;

&lt;span class="c"&gt;# 5. Run in the background (non-blocking terminal)&lt;/span&gt;
&amp;amp; &lt;span class="s2"&gt;"Analyze all security vulnerabilities in this codebase"&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h1&gt;
  
  
  Reference resources
&lt;/h1&gt;

&lt;p&gt;Official docs:&lt;a href="https://docs.github.com/copilot/how-tos/copilot-cli/cli-getting-started" rel="noopener noreferrer"&gt;https://docs.github.com/copilot/how-tos/copilot-cli/cli-getting-started&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Best practices:&lt;a href="https://docs.github.com/copilot/how-tos/copilot-cli/cli-best-practices" rel="noopener noreferrer"&gt;https://docs.github.com/copilot/how-tos/copilot-cli/cli-best-practices&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Command reference:&lt;a href="https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-command-reference" rel="noopener noreferrer"&gt;https://docs.github.com/en/copilot/reference/copilot-cli-reference/cli-command-reference&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Slash command cheat sheet:&lt;a href="https://github.blog/ai-and-ml/github-copilot/a-cheat-sheet-to-slash-commands-in-github-copilot-cli/" rel="noopener noreferrer"&gt;https://github.blog/ai-and-ml/github-copilot/a-cheat-sheet-to-slash-commands-in-github-copilot-cli/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Product page:&lt;a href="https://github.com/features/copilot/cli" rel="noopener noreferrer"&gt;https://github.com/features/copilot/cli&lt;/a&gt;&lt;/p&gt;

</description>
      <category>githubcopilot</category>
      <category>copilotcli</category>
      <category>aicoding</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
