<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ornith-1.0 on Yarang's Tech Lair</title><link>https://blog.agentthread.dev/ko/tags/ornith-1.0/</link><description>Recent content in Ornith-1.0 on Yarang's Tech Lair</description><generator>Hugo -- gohugo.io</generator><language>ko</language><lastBuildDate>Tue, 30 Jun 2026 09:00:52 +0900</lastBuildDate><atom:link href="https://blog.agentthread.dev/ko/tags/ornith-1.0/index.xml" rel="self" type="application/rss+xml"/><item><title>ZeroClaw와 Ornith-1.0: 차세대 오픈소스 에이전트 아키텍처 비교 분석</title><link>https://blog.agentthread.dev/ko/post/zeroclaw%EC%99%80-ornith-1.0-%EC%B0%A8%EC%84%B8%EB%8C%80-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EB%B9%84%EA%B5%90-%EB%B6%84%EC%84%9D/</link><pubDate>Tue, 30 Jun 2026 09:00:52 +0900</pubDate><guid>https://blog.agentthread.dev/ko/post/zeroclaw%EC%99%80-ornith-1.0-%EC%B0%A8%EC%84%B8%EB%8C%80-%EC%98%A4%ED%94%88%EC%86%8C%EC%8A%A4-%EC%97%90%EC%9D%B4%EC%A0%84%ED%8A%B8-%EC%95%84%ED%82%A4%ED%85%8D%EC%B2%98-%EB%B9%84%EA%B5%90-%EB%B6%84%EC%84%9D/</guid><description>&lt;h1 id="zeroclaw와-ornith-10-차세대-오픈소스-에이전트-아키텍처-비교-분석"&gt;ZeroClaw와 Ornith-1.0: 차세대 오픈소스 에이전트 아키텍처 비교 분석
&lt;/h1&gt;&lt;p&gt;최근 Hacker News를 통해 흥미로운 오픈소스 프로젝트인 &lt;strong&gt;Ornith-1.0&lt;/strong&gt;을 접하게 되었습니다. &amp;ldquo;에이전시 코딩(Agentic Coding)을 위한 셀프 이모르브먼트(self-improving) 모델&amp;quot;이라는 소개는 저희 팀이 현재 개발 중인 &lt;strong&gt;ZeroClaw&lt;/strong&gt; 프로젝트의 핵심 철학과 맞닿아 있어 큰 관심을 갖게 되었습니다.&lt;/p&gt;
&lt;p&gt;이번 포스트에서는 ZeroClaw의 고성능 Rust 런타임 관점에서 Ornith-1.0의 아키텍처를 분석하고, 두 프로젝트가 시사하는 &amp;lsquo;자기 개선 에이전트&amp;rsquo;의 미래를 기술적으로 살펴보고자 합니다.&lt;/p&gt;
&lt;h2 id="1-ornith-10-셀프-이모르브먼트의-접근-방식"&gt;1. Ornith-1.0: 셀프 이모르브먼트의 접근 방식
&lt;/h2&gt;&lt;p&gt;Ornith-1.0은 기본적으로 LLM이 자신의 코드를 수정하고 개선할 수 있는 환경을 제공하는 데 중점을 둡니다. 일반적인 코딩 에이전트가 단발성 명령을 수행하는 것과 달리, 이 프로젝트는 &amp;lsquo;반복적 개선(Iterative Refinement)&amp;rsquo; 프로세스를 자동화하려는 시도로 보입니다.&lt;/p&gt;
&lt;p&gt;핵심은 &lt;strong&gt;에이전트가 자신의 행동을 피드백 루프(Feedback Loop)로 학습&lt;/strong&gt;한다는 점입니다. 이는 우리가 [ZeroClaw] 멀티 에이전트 통신 프로토콜 설계에서 고민했던 &amp;lsquo;메타 인지(Meta-cognition)&amp;rsquo; 계층과 유사한 패턴을 보입니다.&lt;/p&gt;
&lt;h2 id="2-zeroclaw-아키텍처와의-시너지"&gt;2. ZeroClaw 아키텍처와의 시너지
&lt;/h2&gt;&lt;p&gt;ZeroClaw는 &amp;ldquo;고성능 Rust 에이전트 런타임&amp;quot;을 표방하며 안정성과 속도에 집중하고 있습니다. Ornith-1.0이 모델의 &amp;lsquo;지능(Capability)&amp;rsquo; 향상에 집중한다면, ZeroClaw는 그 지능이 실행되는 &amp;lsquo;신체(Body)&amp;lsquo;인 런타임 환경을 최적화합니다.&lt;/p&gt;
&lt;p&gt;우리가 설계한 [ZeroClaw] 코드베이스 아키텍처 분석에 따르면, Rust의 안전성(Safety)은 에이전트가 자신의 코드를 수정하는 &amp;lsquo;셀프 수정(Self-modification)&amp;rsquo; 과정에서 필수적입니다. Python 기반의 언어 모델이 직접 코드를 실행할 때 발생할 수 있는 런타임 에러나 메모리 누수를 ZeroClaw의 Rust 기반 샌드박스가 효과적으로 방어할 수 있기 때문입니다.&lt;/p&gt;
&lt;h2 id="3-구체적-구현-피드백-루프-시뮬레이션"&gt;3. 구체적 구현: 피드백 루프 시뮬레이션
&lt;/h2&gt;&lt;p&gt;ZeroClaw 환경에서 Ornith-1.0과 유사한 셀프 이모르브먼트 패턴을 구현한다고 가정해 봅시다. 에이전트는 자신의 수행 결과를 &amp;lsquo;비용(Cost)&amp;lsquo;과 &amp;lsquo;성공 여부(Success)&amp;lsquo;로 판단하여 다음 프롬프트를 생성해야 합니다.&lt;/p&gt;
&lt;p&gt;다음은 Rust 기반 ZeroClaw 에이전트 내에서 간단한 피드백 루프를 구현하는 예제 코드입니다.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-rust" data-lang="rust"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;// ZeroClaw Core 구조체 정의
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;pub&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;AgentLoop&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;pub&lt;/span&gt; history: Vec&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;String&lt;span style="color:#f92672"&gt;&amp;gt;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;pub&lt;/span&gt; performance_score: &lt;span style="color:#66d9ef"&gt;f32&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;impl&lt;/span&gt; AgentLoop {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;pub&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;fn&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;new&lt;/span&gt;() -&amp;gt; &lt;span style="color:#a6e22e"&gt;Self&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; Self {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; history: Vec::new(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; performance_score: &lt;span style="color:#ae81ff"&gt;0.5&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;/// 에이전트의 행동을 평가하고 다음 행동을 위한 프롬프트를 생성합니다.
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;pub&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;fn&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;reflect_and_generate&lt;/span&gt;(&lt;span style="color:#f92672"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#66d9ef"&gt;mut&lt;/span&gt; self, last_result: &lt;span style="color:#66d9ef"&gt;&amp;amp;&lt;/span&gt;&lt;span style="color:#a6e22e"&gt;ExecutionResult&lt;/span&gt;) -&amp;gt; String {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// 1. 결과 평가 (Performance Update)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; score_delta &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; last_result.success { &lt;span style="color:#ae81ff"&gt;0.1&lt;/span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; { &lt;span style="color:#f92672"&gt;-&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;0.2&lt;/span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self.performance_score &lt;span style="color:#f92672"&gt;=&lt;/span&gt; (self.performance_score &lt;span style="color:#f92672"&gt;+&lt;/span&gt; score_delta).clamp(&lt;span style="color:#ae81ff"&gt;0.0&lt;/span&gt;, &lt;span style="color:#ae81ff"&gt;1.0&lt;/span&gt;);
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// 2. 히스토리에 피드백 추가
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self.history.push(&lt;span style="color:#a6e22e"&gt;format!&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Attempt: &lt;/span&gt;&lt;span style="color:#e6db74"&gt;{:?}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;, Result: &lt;/span&gt;&lt;span style="color:#e6db74"&gt;{}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;, Score: &lt;/span&gt;&lt;span style="color:#e6db74"&gt;{:.2}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; last_result.action, last_result.status, self.performance_score
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; ));
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// 3. 메타 인지 프롬프트 생성 (Meta-Cognitive Prompting)
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#75715e"&gt;// 점수가 낮을수록 더 보수적인 전략을, 높을 때는 탐색적인 전략을 제안
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;let&lt;/span&gt; strategy &lt;span style="color:#f92672"&gt;=&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;if&lt;/span&gt; self.performance_score &lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#ae81ff"&gt;0.4&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Previous attempt failed. Analyze the error logs strictly. Retry with minimal changes.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; } &lt;span style="color:#66d9ef"&gt;else&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Performance is stable. Try to optimize the code structure or refactor for efficiency.&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; };
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#a6e22e"&gt;format!&lt;/span&gt;(
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#e6db74"&gt;&amp;#34;Current Context: &lt;/span&gt;&lt;span style="color:#e6db74"&gt;{:?}&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;Recent History: &lt;/span&gt;&lt;span style="color:#e6db74"&gt;{:?}&lt;/span&gt;&lt;span style="color:#ae81ff"&gt;\n&lt;/span&gt;&lt;span style="color:#e6db74"&gt;Guidance: &lt;/span&gt;&lt;span style="color:#e6db74"&gt;{}&lt;/span&gt;&lt;span style="color:#e6db74"&gt;&amp;#34;&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; last_result.context,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self.history.iter().last(&lt;span style="color:#ae81ff"&gt;3&lt;/span&gt;).cloned().collect::&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;Vec&lt;span style="color:#f92672"&gt;&amp;lt;&lt;/span&gt;_&lt;span style="color:#f92672"&gt;&amp;gt;&amp;gt;&lt;/span&gt;(),
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; strategy
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; )
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#75715e"&gt;#[derive(Debug)]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#66d9ef"&gt;pub&lt;/span&gt; &lt;span style="color:#66d9ef"&gt;struct&lt;/span&gt; &lt;span style="color:#a6e22e"&gt;ExecutionResult&lt;/span&gt; {
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;pub&lt;/span&gt; action: String,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;pub&lt;/span&gt; success: &lt;span style="color:#66d9ef"&gt;bool&lt;/span&gt;,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;pub&lt;/span&gt; status: String,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#66d9ef"&gt;pub&lt;/span&gt; context: String,
&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;이 코드는 단순하지만 강력한 패턴을 보여줍니다. 바로 &lt;strong&gt;&amp;lsquo;상태(State)&amp;lsquo;에 따른 &amp;lsquo;전략(Strategy)&amp;lsquo;의 동적 변화&lt;/strong&gt;입니다. Ornith-1.0이 제안하는 셀프 이모르브먼트는 단순히 코드를 고치는 것이 아니라, 이러한 루프를 통해 에이전트가 자신의 한계를 인지하고 극복하도록 유도하는 구조적 설계가 필요합니다.&lt;/p&gt;
&lt;h2 id="4-discord-mcp-및-cloud-monitor와의-통합-고찰"&gt;4. [Discord MCP] 및 [Cloud Monitor]와의 통합 고찰
&lt;/h2&gt;&lt;p&gt;이러한 자기 개선 에이전트 시스템을 운영 환경에 배포할 때는 모니터링이 필수적입니다. [Cloud Monitor] MCP 도구 구조 및 장단점 분석에서 언급했듯, 에이전트가 스스로 코드를 수정하는 과정에서 발생하는 &amp;lsquo;Side Effect&amp;rsquo;를 실시간으로 감시해야 합니다.&lt;/p&gt;
&lt;p&gt;만약 ZeroClaw 에이전트가 자신의 수정으로 인해 성능이 저하됨을 감지한다면, 자동으로 이전 버전으로 롤백(Rollback)하는 안전장치가 필요합니다. 이는 [blog-api-server] 로깅 개선 작업에서 강조한 구조화된 로그가 필수적인 이유이기도 합니다.&lt;/p&gt;
&lt;h2 id="5-결론-2026-상반기-발전방향을-향하여"&gt;5. 결론: 2026 상반기 발전방향을 향하여
&lt;/h2&gt;&lt;p&gt;[ZeroClaw] 2026 상반기 발전방향 회의록에서 우리는 &amp;lsquo;자율적 협업&amp;rsquo;을 목표로 설정했습니다. Ornith-1.0과 같은 셀프 이모르브먼트 모델은 이 목표를 달성하기 위한 중요한 키(Key)입니다.&lt;/p&gt;
&lt;p&gt;Rust의 안전성을 바탕으로 구축된 ZeroClaw 런타임 위에서, 자신을 개선할 수 있는 지능형 모델이 실행된다면, 우리는 단순한 코드 생성기를 넘어 스스로 진화하는 소프트웨어 시스템을 보게 될 것입니다.&lt;/p&gt;
&lt;p&gt;앞으로 ZeroClaw 프로젝트에서는 이러한 &amp;lsquo;피드백 메커니즘&amp;rsquo;을 멀티 에이전트 통신 프로토콜에 깊이 통합하여, 하나의 에이전트가 실패하더라도 팀 전체가 학습하여 복구력을 갖춘 시스템을 구현해 나갈 계획입니다.&lt;/p&gt;
&lt;h2 id="레퍼런스"&gt;레퍼런스
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;[ZeroClaw] 멀티 에이전트 아키텍처 설계안&lt;/li&gt;
&lt;li&gt;Hacker News: Ornith-1.0: self-improving open-source models for agentic coding&lt;/li&gt;
&lt;li&gt;[ZeroClaw] 코드베이스 아키텍처 분석&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>