<?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: Bobo Yang</title>
    <description>The latest articles on DEV Community by Bobo Yang (@yangbobo2021).</description>
    <link>https://dev.to/yangbobo2021</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4093070%2F8d08cf12-9c7b-4d6e-8976-42d1dc0fc556.png</url>
      <title>DEV Community: Bobo Yang</title>
      <link>https://dev.to/yangbobo2021</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yangbobo2021"/>
    <language>en</language>
    <item>
      <title>One Project, Three AI Conversations: Why I Put DSH, Codex, and Claude Together</title>
      <dc:creator>Bobo Yang</dc:creator>
      <pubDate>Mon, 24 Aug 2026 23:55:58 +0000</pubDate>
      <link>https://dev.to/yangbobo2021/one-project-three-ai-conversations-why-i-put-dsh-codex-and-claude-together-5eek</link>
      <guid>https://dev.to/yangbobo2021/one-project-three-ai-conversations-why-i-put-dsh-codex-and-claude-together-5eek</guid>
      <description>&lt;p&gt;I did not bring Codex and Claude Code into DeepSeek Harness because either tool&lt;br&gt;
was disappointing. I did it because each is useful, and I no longer wanted my&lt;br&gt;
day to be organized around their separate applications.&lt;/p&gt;

&lt;p&gt;A normal task can start as a requirements discussion in DSH, move to Codex when&lt;br&gt;
the change becomes implementation-heavy, then end in Claude Code for an&lt;br&gt;
independent review. Files and a terminal sit in two more windows. A few hours&lt;br&gt;
later, the hard part is often not the code. It is remembering which window owns&lt;br&gt;
the conclusion that matters.&lt;/p&gt;

&lt;p&gt;I wanted to invert that arrangement: keep the project in place and choose the&lt;br&gt;
tool for the task.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk7rc06an9oeppheomz64.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fk7rc06an9oeppheomz64.gif" alt="Codex, Claude Code, Files, and Terminal running in DSH" width="720" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DSH is the front door, not the only answer
&lt;/h2&gt;

&lt;p&gt;Native DSH conversations remain useful. Routine questions, short jobs, and work&lt;br&gt;
already handled well by the installed DSH stack do not need another agent. When&lt;br&gt;
a task reaches a capability limit, however, leaving the project workspace and&lt;br&gt;
rebuilding context in another application is a poor handoff.&lt;/p&gt;

&lt;p&gt;With the plugins installed, a new DSH session can use the native mode, Codex, or&lt;br&gt;
Claude Code. DSH still owns the session, workspace, and interface. A Codex&lt;br&gt;
session is driven by a Codex App Server Thread; a Claude session is driven by&lt;br&gt;
the Claude Agent SDK. These are not generic API replies wearing different&lt;br&gt;
labels. Each backend keeps its own execution model and conversation continuity.&lt;/p&gt;

&lt;p&gt;The useful change is not merely two extra menu entries. Sessions still belong&lt;br&gt;
to a project. Requirements, implementation, review, and verification for one&lt;br&gt;
repository can live under one Workspace group instead of being recalled by&lt;br&gt;
application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cost and quality are not a binary choice
&lt;/h2&gt;

&lt;p&gt;"Which agent is strongest?" is rarely the question I need to answer during a&lt;br&gt;
working day. The practical question is which backend this task deserves.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A routine question that should take ten minutes can begin in native DSH.&lt;/li&gt;
&lt;li&gt;A change that requires repeated file edits, commands, and test repair can use
a Codex session.&lt;/li&gt;
&lt;li&gt;An independent review, a second design angle, or a difficult analysis can use
a Claude Code session.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is not a permanent division of labor or a model leaderboard. Subscription&lt;br&gt;
terms, model versions, task shape, and team habits all affect cost and quality.&lt;br&gt;
One entry point preserves the choice: inexpensive work does not need the most&lt;br&gt;
expensive route, and important work does not have to accept a weaker result to&lt;br&gt;
save a small amount.&lt;/p&gt;

&lt;h2&gt;
  
  
  What works today
&lt;/h2&gt;

&lt;p&gt;The published plugins currently provide:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Codex and Claude Code choices in DSH's new-session mode menu;&lt;/li&gt;
&lt;li&gt;continued Codex Threads and Claude Sessions across their respective DSH turns;&lt;/li&gt;
&lt;li&gt;DSH input, history, approvals, and tool presentation;&lt;/li&gt;
&lt;li&gt;a Workbench host for the Files side view and Terminal bottom view;&lt;/li&gt;
&lt;li&gt;a project working directory attached to the session.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Codex and Claude plugins install independently and do not require Relay&lt;br&gt;
Events:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/yangbobo2021/relay-dsh-plugin-codex" rel="noopener noreferrer"&gt;relay-dsh-plugin-codex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yangbobo2021/relay-dsh-plugin-claude" rel="noopener noreferrer"&gt;relay-dsh-plugin-claude&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/yangbobo2021/Relay/blob/codex/relay-foundation/docs/dsh-plugins.md" rel="noopener noreferrer"&gt;All Relay DSH plugins&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What has not happened yet
&lt;/h2&gt;

&lt;p&gt;The user still decides which agent should take a task and creates the sessions&lt;br&gt;
separately. The system does not yet compress a DSH conversation and hand it to&lt;br&gt;
Codex automatically. It does not ask Claude to review a Codex implementation&lt;br&gt;
when the implementation finishes. A shared interface is not the same thing as&lt;br&gt;
multi-agent orchestration.&lt;/p&gt;

&lt;p&gt;What has changed is the boundary. Projects, user-facing sessions, and execution&lt;br&gt;
backends are no longer one inseparable choice. That is a prerequisite for later&lt;br&gt;
coordination: a task can belong to a project, an agent can be selected, and a&lt;br&gt;
future Relay event or handoff has a clear destination.&lt;/p&gt;

&lt;p&gt;I prefer to treat the current release as a useful project workbench, not a grand&lt;br&gt;
multi-agent diagram. Today it reduces application switching, organizes sessions,&lt;br&gt;
and lets cost and quality guide backend choice. Automated coordination can earn&lt;br&gt;
its place after a real end-to-end loop exists.&lt;/p&gt;

&lt;p&gt;The next article opens the Codex plugin: who starts App Server, how one DSH&lt;br&gt;
session binds to a Thread, and why the integration is not simply a shell call to&lt;br&gt;
&lt;code&gt;codex&lt;/code&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>opensource</category>
      <category>claude</category>
      <category>openai</category>
    </item>
  </channel>
</rss>
