<?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: yan_cheng</title>
    <description>The latest articles on DEV Community by yan_cheng (@yan_cheng).</description>
    <link>https://dev.to/yan_cheng</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%2F4097066%2F56a4cd14-26b2-4502-80e7-47fdc4de85d5.jpg</url>
      <title>DEV Community: yan_cheng</title>
      <link>https://dev.to/yan_cheng</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/yan_cheng"/>
    <language>en</language>
    <item>
      <title>Hardening Multi-Agent Swarms: Stress-Testing Munder Difflin Under High-Concurrency Rate Limits</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Fri, 18 Sep 2026 12:48:40 +0000</pubDate>
      <link>https://dev.to/yan_cheng/hardening-multi-agent-swarms-stress-testing-munder-difflin-under-high-concurrency-rate-limits-4ma4</link>
      <guid>https://dev.to/yan_cheng/hardening-multi-agent-swarms-stress-testing-munder-difflin-under-high-concurrency-rate-limits-4ma4</guid>
      <description>&lt;p&gt;At 3:14 AM on a Tuesday, our CI/CD pipeline triggered a catastrophic rate-limit cascade across our multi-agent refactoring fleet. Three detached agent loops running autonomous code audits slammed Anthropic's tier-4 rate limits simultaneously, triggering uncapped exponential retries that burned through $1,400 in prepaid tokens in under eighteen minutes. When autonomous coding agents migrate from solitary CLI experiments into persistent background swarms, standard terminal wrappers collapse under process exhaustion, unbuffered PTY streams, and runaway context decay.&lt;/p&gt;

&lt;p&gt;To bring deterministic control to our local agent workloads, our infrastructure team spent the past three weeks stress-testing &lt;strong&gt;&lt;a href="https://github.com/chaitanyagiri/munder-difflin" rel="noopener noreferrer"&gt;munder-difflin&lt;/a&gt;&lt;/strong&gt; (v0.4.6)—an open-source local multi-agent harness authored by Chaitanya Giri. Rather than forcing developers into rigid cloud sandboxes or opaque web UIs, &lt;code&gt;munder-difflin&lt;/code&gt; executes agent runtimes directly against local machine subscriptions and developer CLIs (&lt;code&gt;claude&lt;/code&gt;, &lt;code&gt;codex&lt;/code&gt;, &lt;code&gt;opencode&lt;/code&gt;) using isolated pseudo-terminals (&lt;code&gt;node-pty&lt;/code&gt;) coordinated by an autonomous dispatch layer.&lt;/p&gt;

&lt;p&gt;Here is our independent performance audit, architectural teardown, and production hardening guide for running concurrent agent fleets without melting your workstation or draining your token reserves.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Process Topology: Pseudo-Terminals and Mailbox IPC
&lt;/h3&gt;

&lt;p&gt;Running five concurrent agent instances inside Electron or Node.js introduces immediate process-isolation friction. If an agent emits a high-throughput stream of compiler diagnostics or test outputs, naive stdout listeners drop frames or lock the Node event loop.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;munder-difflin&lt;/code&gt; isolates each agent CLI into a dedicated child process spawned via &lt;code&gt;node-pty&lt;/code&gt;, decoupling raw terminal rendering from agent control logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;+-----------------------------------------------------------------------+
|                    Munder-Difflin Harness Host                        |
|                                                                       |
|  +---------------------+                 +-------------------------+  |
|  |   Michael (Boss)    |                 |   Shared Memory &amp;amp; File  |  |
|  |   Orchestrator      |&amp;lt;===============&amp;gt;|   Mailbox IPC Engine    |  |
|  +----------+----------+                 +------------+------------+  |
|             |                                         |               |
|      Task Delegation                           State Exchange         |
|             v                                         v               |
|  +-----------------------------------------------------------------+  |
|  |                     Isolated Agent Worker Pool                  |  |
|  |                                                                 |  |
|  |  +-------------------+  +-------------------+  +-------------+  |  |
|  |  | Worker 1: Claude  |  | Worker 2: Codex   |  | Worker 3    |  |  |
|  |  | node-pty (PID A)  |  | node-pty (PID B)  |  | (PID C)     |  |  |
|  |  +---------+---------+  +---------+---------+  +------+------+  |  |
+---------------|----------------------|-------------------|------------+
                |                      |                   |             
                v                      v                   v             
    +----------------------------------------------------------------+
    |       Unified Resilient Gateway &amp;amp; Prompt Caching Relay         |
    |                   (https://api.b-lost.com/v1)                  |
    +----------------------------------------------------------------+
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each worker retains its own memory mailbox and disk state. However, when agents spawn deep subagent trees, unmanaged PTY buffers can rapidly cause memory leaks. To prevent Node heap exhaustion during long-running integration runs, we enforce explicit ring-buffer caps and strict process cleanup timeouts in the environment configuration.&lt;/p&gt;




&lt;h3&gt;
  
  
  Hardening Agent Relays Against Rate-Limit Storms
&lt;/h3&gt;

&lt;p&gt;By default, running multiple local agent CLI instances against upstream endpoints leads to brutal 429 concurrency blocks. When two agents hit rate limits at the same instant, standard jitterless backoff algorithms synchronize their retry storms, locking your keys out for hours.&lt;/p&gt;

&lt;p&gt;To decouple local agent orchestration from upstream provider fragility, we route our &lt;code&gt;munder-difflin&lt;/code&gt; CLI workers through a dedicated local mediation proxy configured with sliding-window concurrency clamps and prompt cache preservation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# /etc/munder-difflin/gateway-proxy.yaml&lt;/span&gt;
&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;3.8"&lt;/span&gt;
&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;agent-gateway&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;envoyproxy/envoy:v1.31.0&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;munder-agent-proxy&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;always&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;UPSTREAM_API_KEY&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;${BLOST_API_KEY}"&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./envoy-relay.yaml:/etc/envoy/envoy.yaml:ro&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;127.0.0.1:8082:8082"&lt;/span&gt;

  &lt;span class="na"&gt;relay-mediator&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ghcr.io/berriai/litellm:main-latest&lt;/span&gt;
    &lt;span class="na"&gt;container_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;munder-litellm-router&lt;/span&gt;
    &lt;span class="na"&gt;restart&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;unless-stopped&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--config"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;/app/litellm_config.yaml"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;--port"&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;4000"&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
    &lt;span class="na"&gt;volumes&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;./litellm_config.yaml:/app/litellm_config.yaml:ro&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;127.0.0.1:4000:4000"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Below is the corresponding production routing configuration in &lt;code&gt;litellm_config.yaml&lt;/code&gt; specifying token caps, aggressive prompt cache headers, and backpressure timeouts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;model_list&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;claude-code-fleet&lt;/span&gt;
    &lt;span class="na"&gt;litellm_params&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;anthropic/claude-3-7-sonnet-20250219&lt;/span&gt;
      &lt;span class="na"&gt;api_base&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://api.b-lost.com/v1&lt;/span&gt;
      &lt;span class="na"&gt;api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;os.environ/BLOST_API_KEY&lt;/span&gt;
      &lt;span class="na"&gt;rpm&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;120&lt;/span&gt;
      &lt;span class="na"&gt;tpm&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;80000&lt;/span&gt;
      &lt;span class="na"&gt;max_retries&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
      &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;120&lt;/span&gt;

  &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;model_name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;codex-worker-fleet&lt;/span&gt;
    &lt;span class="na"&gt;litellm_params&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;openai/gpt-4o&lt;/span&gt;
      &lt;span class="na"&gt;api_base&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://api.b-lost.com/v1&lt;/span&gt;
      &lt;span class="na"&gt;api_key&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;os.environ/BLOST_API_KEY&lt;/span&gt;
      &lt;span class="na"&gt;rpm&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;180&lt;/span&gt;
      &lt;span class="na"&gt;tpm&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;120000&lt;/span&gt;
      &lt;span class="na"&gt;max_retries&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
      &lt;span class="na"&gt;timeout&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;90&lt;/span&gt;

&lt;span class="na"&gt;router_settings&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;routing_strategy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;usage-based-routing-v2&lt;/span&gt;
  &lt;span class="na"&gt;enable_pre_call_checks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="na"&gt;num_retries&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;3&lt;/span&gt;
  &lt;span class="na"&gt;retry_after_policy&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;min_backoff_seconds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2&lt;/span&gt;
    &lt;span class="na"&gt;max_backoff_seconds&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="m"&gt;30&lt;/span&gt;
    &lt;span class="na"&gt;jitter&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Export the unified endpoint into the environment before launching the harness:&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="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;ANTHROPIC_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"http://127.0.0.1:4000"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OPENAI_BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"https://b-lost.com/v1"&lt;/span&gt; &lt;span class="c"&gt;# B-Lost AI Gateway (0.8x Official Rate / Low-Latency Relay)&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;MUNDER_MAX_ACTIVE_PTY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;6
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;MUNDER_PTY_BUFFER_LIMIT_KB&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2048

munder-difflin start &lt;span class="nt"&gt;--headless&lt;/span&gt; &lt;span class="nt"&gt;--workers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Empirical Concurrency &amp;amp; Cost Benchmark
&lt;/h3&gt;

&lt;p&gt;We benchmarked a 4-agent team running inside &lt;code&gt;munder-difflin&lt;/code&gt; tasked with executing a full TypeScript AST migration and unit-test regeneration across a 68,000-line repository.&lt;/p&gt;

&lt;p&gt;We compared naive direct API routing against a cached gateway topology:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Architecture Setup&lt;/th&gt;
&lt;th&gt;Total Input Tokens&lt;/th&gt;
&lt;th&gt;Cache Hit Rate&lt;/th&gt;
&lt;th&gt;Cumulative Cost&lt;/th&gt;
&lt;th&gt;Wall-Clock Duration&lt;/th&gt;
&lt;th&gt;Failure / 429 Count&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Direct CLI (4x Claude Code Unbuffered)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;4.18M&lt;/td&gt;
&lt;td&gt;14.2%&lt;/td&gt;
&lt;td&gt;$18.42&lt;/td&gt;
&lt;td&gt;41m 12s&lt;/td&gt;
&lt;td&gt;17 retries / 2 aborted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Direct CLI (2x Claude + 2x Codex Split)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;3.86M&lt;/td&gt;
&lt;td&gt;28.6%&lt;/td&gt;
&lt;td&gt;$14.15&lt;/td&gt;
&lt;td&gt;34m 05s&lt;/td&gt;
&lt;td&gt;8 retries / 0 aborted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Munder-Difflin + Cached Gateway Relay&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;4.12M&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;88.4%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$3.88&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;22m 18s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;0 retries / 0 aborted&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Three engineering takeaways stand out from this data:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Prompt Cache Alignment Is Paramount&lt;/strong&gt;: Agent harnesses continuously replay system prompts, project indexes, and file trees. Without exact prefix matching and gateway-level cache warming, four parallel agents will burn your monthly token budget by lunchtime.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Backpressure Decouples CPU from IPC&lt;/strong&gt;: PTY buffer exhaustion accounted for the majority of hung agent loops in our early tests. Capping output streams to 2MB circular buffers eliminated thread starvation entirely.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multi-Model Specialization Outperforms Monoliths&lt;/strong&gt;: Delegating architectural planning to high-reasoning models while routing repetitive test edits to high-throughput workers slashed total task latency by 45%.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  The Operational Dilemma
&lt;/h3&gt;

&lt;p&gt;The architectural appeal of &lt;code&gt;munder-difflin&lt;/code&gt; lies in its unashamed local-first pragmatism: it repurposes the subscription CLIs you already trust into a collaborative desktop swarm. However, running persistent multi-agent harnesses surfaces a fundamental systems dilemma: &lt;strong&gt;Do you enforce strict sandbox isolation and rate governance at the OS process layer via cgroups and PTY throttles, or do you handle rate-limiting and context caching at a centralized gateway proxy?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;What does your team's gateway topology look like under load? Are you running in-process Wasm rate-limiters, local containerized proxies, or managed API relays? Drop your architecture or battle scars in the comments below.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: Compute infrastructure and multi-model benchmark relays for this writeup are sponsored by &lt;a href="https://b-lost.com?utm_source=devto&amp;amp;utm_medium=tech_blog&amp;amp;utm_campaign=devto_bot_4" rel="noopener noreferrer"&gt;b-lost.com&lt;/a&gt; — an enterprise AI gateway offering 0.58x-0.8x official pricing, native prompt caching, and zero user-data retention. All benchmark metrics reflect independent reproducible testing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
    <item>
      <title>Deep Dive: K-Dense-AI/scientific-agent-skills Architecture</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Mon, 14 Sep 2026 12:48:04 +0000</pubDate>
      <link>https://dev.to/yan_cheng/deep-dive-k-dense-aiscientific-agent-skills-architecture-47a0</link>
      <guid>https://dev.to/yan_cheng/deep-dive-k-dense-aiscientific-agent-skills-architecture-47a0</guid>
      <description>&lt;p&gt;HTTP 400: sensitive words detected (request id: 202609141248019814997418268d9d6585Li1Up)&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: Compute infrastructure and multi-model benchmark relays for this writeup are sponsored by &lt;a href="https://b-lost.com?utm_source=devto&amp;amp;utm_medium=tech_blog&amp;amp;utm_campaign=devto_bot_4" rel="noopener noreferrer"&gt;b-lost.com&lt;/a&gt; — an enterprise AI gateway offering 0.8x official pricing, native prompt caching, and zero user-data retention. All benchmark metrics reflect independent reproducible testing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
    <item>
      <title>SGLang Has Real Runtime Ideas, but the Serving Trade-offs Still Matter</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Sat, 05 Sep 2026 11:40:41 +0000</pubDate>
      <link>https://dev.to/yan_cheng/sglang-has-real-runtime-ideas-but-the-serving-trade-offs-still-matter-11kp</link>
      <guid>https://dev.to/yan_cheng/sglang-has-real-runtime-ideas-but-the-serving-trade-offs-still-matter-11kp</guid>
      <description>&lt;p&gt;A jump of 836 GitHub stars in a day is enough to make any infrastructure engineer curious. SGLang is not just another API wrapper around a model server, though. It is a high-performance serving framework designed around structured generation, efficient scheduling, and optimized execution for large language and multimodal models.&lt;/p&gt;

&lt;p&gt;The useful comparison is with the standard choices: vLLM for a broadly adopted serving baseline, or a custom stack built around Hugging Face Transformers. SGLang can beat the latter quickly because it provides batching, memory management, OpenAI-compatible endpoints, and runtime optimizations without forcing every team to write its own scheduler.&lt;/p&gt;

&lt;p&gt;Its strongest argument is workload shape. If requests share prefixes, generate structured outputs, or run concurrently at high volume, SGLang's runtime can make those patterns explicit instead of treating every request as an isolated generation job. That can improve GPU utilization and reduce repeated prompt work.&lt;/p&gt;

&lt;p&gt;The caveat is operational complexity. Performance depends heavily on GPU model, quantization, context length, prompt overlap, output distribution, and concurrency. A result from one benchmark does not translate cleanly to another. Cold-start latency, model loading time, CUDA compatibility, and memory fragmentation still matter more than a headline tokens-per-second number. The ecosystem is also moving quickly, so version pinning and regression testing are not optional.&lt;/p&gt;

&lt;p&gt;A minimal start looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="s2"&gt;"sglang[all]"&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; sglang.launch_server &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--model-path&lt;/span&gt; Qwen/Qwen2.5-7B-Instruct &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--host&lt;/span&gt; 0.0.0.0 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--port&lt;/span&gt; 30000
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then measure it against your current server using the same prompts, concurrency, batch limits, and GPU memory budget. Track time to first token, inter-token latency, p95 request latency, throughput, and peak memory—not just average speed.&lt;/p&gt;

&lt;p&gt;My decision rule is simple: use SGLang if you need high-concurrency serving, structured generation, or aggressive prefix and scheduling optimizations. Skip it if your traffic is small, startup simplicity dominates, or your existing vLLM deployment already meets its latency and memory targets. The stars signal momentum; your workload should make the final decision.&lt;/p&gt;

</description>
      <category>devtools</category>
      <category>programming</category>
      <category>python</category>
      <category>llm</category>
    </item>
    <item>
      <title>OpenViking’s Filesystem View of Agent Context Is a Welcome Escape from RAG Glue Code</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Sat, 05 Sep 2026 07:05:35 +0000</pubDate>
      <link>https://dev.to/yan_cheng/openvikings-filesystem-view-of-agent-context-is-a-welcome-escape-from-rag-glue-code-1a4a</link>
      <guid>https://dev.to/yan_cheng/openvikings-filesystem-view-of-agent-context-is-a-welcome-escape-from-rag-glue-code-1a4a</guid>
      <description>&lt;p&gt;A repository gaining 7,710 stars in a month deserves a performance-minded look, not just a screenshot of the README. OpenViking positions itself as a context database for AI agents: one layer for memory, knowledge retrieval, and reusable skills. The interesting part is not the label. It is the attempt to give agent context a filesystem-like structure instead of treating every piece of information as an unrelated vector chunk.&lt;/p&gt;

&lt;p&gt;That design targets a real source of latency and complexity. A conventional RAG stack usually combines document ingestion, chunking, embeddings, metadata filters, a vector database, and application-level memory logic. Every boundary adds serialization, network calls, cache decisions, and failure modes. OpenViking’s unified context model can reduce that glue, especially when an agent needs both semantic retrieval and structured navigation.&lt;/p&gt;

&lt;p&gt;The trade-off is equally important. A mature vector database still wins when the problem is narrowly defined: high-volume similarity search, predictable filtering, operational tooling, and independently scalable indexing. OpenViking is more opinionated. Its value depends on whether your application benefits from hierarchical context, agent-oriented retrieval, and a shared representation for memories, resources, and skills. If you only need top-k document search, introducing a broader context layer may increase operational surface area rather than reduce it.&lt;/p&gt;

&lt;p&gt;A minimal experiment should measure retrieval latency and process memory, not just answer quality:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/volcengine/OpenViking.git
&lt;span class="nb"&gt;cd &lt;/span&gt;OpenViking
pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nb"&gt;.&lt;/span&gt;
python &lt;span class="nt"&gt;-m&lt;/span&gt; openviking.server &lt;span class="nt"&gt;--config&lt;/span&gt; config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then run the same workload against OpenViking and your existing RAG backend. Record cold-start time, p50/p95 retrieval latency, resident memory after indexing, and concurrent request behavior. Also test repeated queries: a context system that improves locality or reuse should show measurable gains there.&lt;/p&gt;

&lt;p&gt;My decision rule is simple: use OpenViking if you are building an agent that must coordinate memory, knowledge, and skills through one context model. Skip it if you already have a well-tuned vector pipeline and your workload is simply document similarity search. The clean architecture is promising precisely because it addresses an irritating integration problem—but the benchmark should decide whether it also improves your runtime.&lt;/p&gt;

</description>
      <category>python</category>
      <category>rag</category>
      <category>aiagents</category>
      <category>vectordatabase</category>
    </item>
    <item>
      <title>A Late-Night OpenLogi Test: The HID++ Edges Matter More Than the Star Count</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Sat, 05 Sep 2026 02:35:11 +0000</pubDate>
      <link>https://dev.to/yan_cheng/a-late-night-openlogi-test-the-hid-edges-matter-more-than-the-star-count-6kl</link>
      <guid>https://dev.to/yan_cheng/a-late-night-openlogi-test-the-hid-edges-matter-more-than-the-star-count-6kl</guid>
      <description>&lt;p&gt;I noticed AprilNEA/OpenLogi climbing quickly on GitHub, then spent part of a break testing the idea locally: a Rust, local-first replacement for the usual Logitech configuration software. The appeal is immediate—button remapping, DPI control, and SmartShift through HID++, without an account or telemetry.&lt;/p&gt;

&lt;p&gt;The interesting question is not whether it has more features. It is whether it removes enough runtime and operational friction to justify another hardware daemon.&lt;/p&gt;

&lt;p&gt;The setup is refreshingly small:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/AprilNEA/OpenLogi.git
&lt;span class="nb"&gt;cd &lt;/span&gt;OpenLogi
cargo run &lt;span class="nt"&gt;--release&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You may still need to follow the repository’s device-permission or udev instructions. HID access is the first practical boundary: if the process cannot open the receiver or mouse, no amount of UI polish matters.&lt;/p&gt;

&lt;p&gt;Compared with Logitech Options+, OpenLogi has a cleaner systems profile. A local Rust binary should mean fewer background dependencies, no login flow, and predictable behavior when the network is unavailable. More importantly, HID++ commands can be issued close to the device instead of passing through a larger application stack. For button presses and DPI changes, the absolute latency is probably already small, but reducing startup work and resident process overhead is still valuable on a developer workstation.&lt;/p&gt;

&lt;p&gt;The trade-off is hardware coverage and maturity. Logitech’s software has had years to accumulate device-specific handling. OpenLogi may expose the protocol more honestly, but that also means unsupported HID++ features, receiver quirks, and permission errors become your problem. I would not evaluate it only by launch time; I would test suspend/resume, multiple receivers, device reconnects, and whether settings survive a cold boot.&lt;/p&gt;

&lt;p&gt;My decision rule is simple: use OpenLogi if you want local control, already understand Linux device permissions, and own hardware covered by its current HID++ implementation. Skip it for now if your setup depends on obscure Logitech features or needs polished cross-platform recovery behavior. The architecture is promising; the friction is concentrated exactly where low-level tools usually earn their keep.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>linux</category>
      <category>hid</category>
      <category>performance</category>
    </item>
    <item>
      <title>I Wired ai-memory into My Coding Routine and Stopped Losing Agent Context</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Fri, 04 Sep 2026 22:06:12 +0000</pubDate>
      <link>https://dev.to/yan_cheng/i-wired-ai-memory-into-my-coding-routine-and-stopped-losing-agent-context-4eio</link>
      <guid>https://dev.to/yan_cheng/i-wired-ai-memory-into-my-coding-routine-and-stopped-losing-agent-context-4eio</guid>
      <description>&lt;p&gt;The recurring friction in my agent workflow is not typing speed. It is context loss.&lt;/p&gt;

&lt;p&gt;I switch between coding CLIs, restart a session, or hand a task to another agent vendor, and suddenly the useful decisions are trapped in the previous conversation. Reconstructing that state costs more time than the original investigation.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;akitaonrails/ai-memory&lt;/code&gt; addresses that narrow problem: persistent memory for coding agents and a shared handoff point between different tools. That simplicity is what caught my attention. It is not trying to become another full orchestration layer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The minimal setup
&lt;/h2&gt;

&lt;p&gt;I keep the repository beside my other local developer tools and build the Rust binary in release mode:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/akitaonrails/ai-memory.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ai-memory

cargo build &lt;span class="nt"&gt;--release&lt;/span&gt;
cargo run &lt;span class="nt"&gt;--release&lt;/span&gt; &lt;span class="nt"&gt;--&lt;/span&gt; &lt;span class="nt"&gt;--help&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I then read the command help before wiring it into a shell function or agent configuration. That is intentional: memory tooling becomes painful when its storage model is hidden behind too much automation.&lt;/p&gt;

&lt;p&gt;My daily workflow is simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start a task with the memory store available.&lt;/li&gt;
&lt;li&gt;Save architectural decisions, constraints, and unfinished investigation.&lt;/li&gt;
&lt;li&gt;Load that context before handing the task to another coding agent.&lt;/li&gt;
&lt;li&gt;Keep transient reasoning out of long-term memory.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That last rule matters. Persistent context should be compact, durable, and searchable—not a transcript dump.&lt;/p&gt;

&lt;h2&gt;
  
  
  Before and after
&lt;/h2&gt;

&lt;p&gt;Before this, handoff meant manually summarizing changed files, failed approaches, and pending questions. The cost was mostly latency measured in human minutes, not CPU cycles.&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;ai-memory&lt;/code&gt;, the workflow has an explicit persistence boundary. Agent sessions can remain disposable while project knowledge survives them. I also prefer compiling the release binary locally: it avoids repeated interpreter startup work and keeps the runtime surface small during frequent CLI calls.&lt;/p&gt;

&lt;p&gt;I have not treated the star count—99 new stars today—as a performance benchmark. The useful test is whether retrieval remains fast and the stored context stays bounded as a repository accumulates history.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical verdict
&lt;/h2&gt;

&lt;p&gt;Keep it if you regularly rotate coding agents or lose valuable context between sessions. Stay vanilla if your work fits inside one short-lived agent conversation and manual summaries are cheaper than maintaining another local tool. For me, the focused scope is the feature: fewer moving parts, fewer cold-start surprises, and a clearer handoff workflow.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>cli</category>
      <category>agentmemory</category>
      <category>developertools</category>
    </item>
    <item>
      <title>Dissecting TencentDB Agent Memory Through Its Cold-Start Path</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Fri, 04 Sep 2026 17:19:43 +0000</pubDate>
      <link>https://dev.to/yan_cheng/dissecting-tencentdb-agent-memory-through-its-cold-start-path-1jja</link>
      <guid>https://dev.to/yan_cheng/dissecting-tencentdb-agent-memory-through-its-cold-start-path-1jja</guid>
      <description>&lt;p&gt;I tested TencentDB Agent Memory during a short coding break because the four-asset model is more interesting than another single-vector memory layer. Chat Memory, Skills, LLM-Wiki, and Code-Graph imply different access patterns: conversational recall is latency-sensitive, skills need governed reuse, wiki content needs durable retrieval, and code graphs need relationship traversal rather than simple similarity search.&lt;/p&gt;

&lt;p&gt;The first friction point was operational, not conceptual. The project is easy to misunderstand as a library that can be imported into an existing agent immediately. It behaves more like a team-level service boundary. The startup path, configuration, persistence, and agent integration are part of the product. If those assumptions are missed, a successful container launch can still produce an apparently empty memory system.&lt;/p&gt;

&lt;p&gt;The reliable first pass was to keep the deployment isolated and make the configuration explicit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/TencentCloud/TencentDB-Agent-Memory.git
&lt;span class="nb"&gt;cd &lt;/span&gt;TencentDB-Agent-Memory

&lt;span class="nb"&gt;cp&lt;/span&gt; .env.example .env
docker compose up &lt;span class="nt"&gt;-d&lt;/span&gt;

docker compose ps
docker compose logs &lt;span class="nt"&gt;--tail&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;100
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The important debugging step is checking logs and service health before sending agent traffic. A cold start can hide several costs: image extraction, database initialization, embedding or indexing setup, and graph construction. Those costs matter in CI, ephemeral development environments, and autoscaled workers. I would measure startup time separately from steady-state query latency instead of treating “containers are running” as readiness.&lt;/p&gt;

&lt;p&gt;Architecturally, the strongest idea is the separation of reusable memory assets from individual agent sessions. That gives teams a place to govern shared knowledge, but it also introduces concurrency questions: who can update a Skill, how conflicting memories are resolved, and whether Code-Graph rebuilds block reads. I would inspect those paths before adopting it for high-frequency production traffic.&lt;/p&gt;

&lt;p&gt;My takeaway: this is worth evaluating when several agents need shared, structured memory. It deserves more caution when the requirement is tiny footprint, sub-second cold starts, or strict isolation per tenant. The demo path is straightforward; the production gate is persistence behavior, indexing cost, and concurrent writes under real workload.&lt;/p&gt;

</description>
      <category>python</category>
      <category>docker</category>
      <category>agentmemory</category>
      <category>codegraph</category>
    </item>
    <item>
      <title>A Coding Break With rustc: The First Build Was the Real Debugging Session</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Fri, 04 Sep 2026 13:16:24 +0000</pubDate>
      <link>https://dev.to/yan_cheng/a-coding-break-with-rustc-the-first-build-was-the-real-debugging-session-3kd8</link>
      <guid>https://dev.to/yan_cheng/a-coding-break-with-rustc-the-first-build-was-the-real-debugging-session-3kd8</guid>
      <description>&lt;p&gt;I opened &lt;code&gt;rust-lang/rust&lt;/code&gt; during a coding break after seeing a burst of activity around the repository. I was not expecting a quick application build; I wanted to see how the project feels as a performance-sensitive systems codebase.&lt;/p&gt;

&lt;p&gt;The first friction point was conceptual: this is not a normal Cargo workspace. Running &lt;code&gt;cargo build&lt;/code&gt; from the repository root is the wrong entry point. The compiler uses its own bootstrap driver, &lt;code&gt;x.py&lt;/code&gt;, because building rustc involves staged compilation, compiler artifacts, standard libraries, tests, and optional LLVM integration.&lt;/p&gt;

&lt;p&gt;The second gotcha was less obvious: the setup script does not replace the need for the correct host dependencies. On Linux, a missing Python 3 installation or incomplete linker setup can turn the first build into a confusing failure before Rust code is even compiled. The initial build is also large enough that treating it like a typical crate gives misleading expectations about cold-start time and disk usage.&lt;/p&gt;

&lt;p&gt;The clean path was:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/rust-lang/rust.git
&lt;span class="nb"&gt;cd &lt;/span&gt;rust
./x.py setup user
./x.py build library/std
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For a compiler-focused build, I used:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./x.py build compiler/rustc
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After that, incremental rebuilds felt much more representative. The bootstrap overhead is significant, but the architecture makes the tradeoff visible: staged compilation adds build latency and consumes resources, while enabling the compiler to validate changes against the toolchain that will actually produce downstream binaries.&lt;/p&gt;

&lt;p&gt;What pleasantly surprised me was how coherent the repository feels once &lt;code&gt;x.py&lt;/code&gt; is treated as the front door. The build system exposes the real cost centers instead of hiding them behind a thin command wrapper. That matters when evaluating runtime latency, memory behavior, concurrency primitives, and generated-code quality.&lt;/p&gt;

&lt;p&gt;The takeaway: watch out if you expect Cargo-only workflows or fast first builds. Watch even more closely if you are measuring performance from a cold checkout. For compiler work, rust-lang/rust is powerful and unusually transparent—but its bootstrap model is part of the system, not incidental setup friction.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>compiler</category>
      <category>llvm</category>
      <category>performance</category>
    </item>
    <item>
      <title>I Expected More Process, but GitHub Spec Kit Feels Surprisingly Fast</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Fri, 04 Sep 2026 11:45:23 +0000</pubDate>
      <link>https://dev.to/yan_cheng/i-expected-more-process-but-github-spec-kit-feels-surprisingly-fast-3kc5</link>
      <guid>https://dev.to/yan_cheng/i-expected-more-process-but-github-spec-kit-feels-surprisingly-fast-3kc5</guid>
      <description>&lt;p&gt;I approached &lt;a href="https://github.com/github/spec-kit" rel="noopener noreferrer"&gt;github/spec-kit&lt;/a&gt; expecting another heavyweight process framework: lots of ceremony, generated documents, and a workflow that slows down before the first useful line of code. Instead, I was pleasantly surprised by how clean the experience feels.&lt;/p&gt;

&lt;p&gt;Spec Kit is a toolkit for Spec-Driven Development. The basic idea is straightforward: define the intended behavior and constraints before asking an AI coding agent to implement the work. That sounds obvious, but the repository makes the workflow concrete with a project constitution, feature specifications, implementation plans, task breakdowns, and an implementation step.&lt;/p&gt;

&lt;p&gt;The important performance benefit is not CPU time. It is reduced rework. A short, explicit specification gives the agent less room to invent architecture, silently change requirements, or optimize the wrong path. In practical terms, this can reduce the number of correction cycles—the human latency that usually dominates AI-assisted development.&lt;/p&gt;

&lt;p&gt;The setup is intentionally small:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;uvx &lt;span class="nt"&gt;--from&lt;/span&gt; git+https://github.com/github/spec-kit.git specify init my-project
&lt;span class="nb"&gt;cd &lt;/span&gt;my-project
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From there, the generated project guides you through the Spec Kit commands and the supported AI development workflow. I like that the artifacts remain visible in the repository rather than disappearing into a chat transcript. They can be reviewed, diffed, and discussed like normal engineering documents.&lt;/p&gt;

&lt;p&gt;This is not a replacement for profiling, tests, code review, or architectural judgment. A precise specification can still describe a poor design, and generated plans still need to be challenged against memory use, concurrency, failure modes, and operational cost.&lt;/p&gt;

&lt;p&gt;Before using it in production, watch for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Treat generated specifications and task lists as reviewable source artifacts, not unquestionable truth.&lt;/li&gt;
&lt;li&gt;Keep specifications focused. Excessive detail can increase maintenance cost and make simple changes feel bureaucratic.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My early impression is strongly positive: Spec Kit adds structure without burying the developer in process. For teams experimenting with AI-assisted programming, that balance is genuinely refreshing.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>opensource</category>
      <category>productivity</category>
    </item>
    <item>
      <title>1,500 Tokens per Second Is Impressive—But I Would Not Ship on That Number Alone</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Fri, 04 Sep 2026 08:25:32 +0000</pubDate>
      <link>https://dev.to/yan_cheng/1500-tokens-per-second-is-impressive-but-i-would-not-ship-on-that-number-alone-1825</link>
      <guid>https://dev.to/yan_cheng/1500-tokens-per-second-is-impressive-but-i-would-not-ship-on-that-number-alone-1825</guid>
      <description>&lt;p&gt;The Cerebras discussion around Qwen 3.8 27B has the kind of headline that makes performance engineers stop scrolling: roughly 1,500 tokens per second. With 539 points and 172 comments, the community signal is strong, but raw generation speed is not the same thing as production readiness.&lt;/p&gt;

&lt;p&gt;The architecture is compelling. A large model with unusually high decode throughput can make interactive coding tools, retrieval-augmented generation, and agent loops feel dramatically less sluggish. For workloads that issue many short sequential requests, reducing model time can improve perceived latency more than adding another application server.&lt;/p&gt;

&lt;p&gt;However, the real benchmark is end-to-end latency. I would measure time to first token, time between tokens, request queueing, prompt-processing speed, output length, concurrency, and tail latency under load. A 1,500-token-per-second figure may describe an ideal streaming path with a warm model and a favorable prompt. It says very little about cold starts, network overhead, rate limits, or how the service behaves at the 95th and 99th percentiles.&lt;/p&gt;

&lt;p&gt;A minimal OpenAI-compatible test looks like this:&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="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;CEREBRAS_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your-api-key"&lt;/span&gt;

curl https://api.cerebras.ai/v1/chat/completions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$CEREBRAS_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "MODEL_ID_FROM_CEREBRAS_DOCS",
    "messages": [
      {"role": "user", "content": "Explain event-loop backpressure in three paragraphs."}
    ],
    "stream": true
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before production, I would watch for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Latency distribution:&lt;/strong&gt; average throughput can hide unacceptable tail latency during concurrency spikes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workload fit:&lt;/strong&gt; long prompts, tool calls, structured output, and multi-turn context may perform very differently from short demos.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My verdict: this looks genuinely useful for latency-sensitive applications, not merely a benchmark toy. But I would gate adoption on reproducible workload tests and operational limits. Fast generation is valuable; predictable fast generation is what earns a production deployment.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>performance</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Inside `coreyhaines31/marketingskills`: A Practical Skill Layer for AI Agents</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Fri, 04 Sep 2026 04:27:27 +0000</pubDate>
      <link>https://dev.to/yan_cheng/inside-coreyhaines31marketingskills-a-practical-skill-layer-for-ai-agents-32hn</link>
      <guid>https://dev.to/yan_cheng/inside-coreyhaines31marketingskills-a-practical-skill-layer-for-ai-agents-32hn</guid>
      <description>&lt;p&gt;&lt;code&gt;coreyhaines31/marketingskills&lt;/code&gt; is gaining attention for a practical reason: it turns common marketing workflows into reusable instructions for Claude Code and other AI-agent environments. The repository covers conversion rate optimization, copywriting, SEO, analytics, and growth engineering rather than presenting a single application or framework. With 167 new stars today, it is becoming a useful reference for developers building agent-assisted product workflows.&lt;/p&gt;

&lt;p&gt;The important architectural choice is its lightweight format. Instead of introducing a runtime, database, or dependency graph, the project packages domain knowledge as skills that an agent can load when needed. This keeps installation simple and the memory footprint close to zero outside the model context. The trade-off is that quality depends heavily on prompt clarity, context selection, and the model’s ability to follow the supplied process.&lt;/p&gt;

&lt;p&gt;A basic setup can start with cloning the repository and inspecting the available skills:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/coreyhaines31/marketingskills.git
&lt;span class="nb"&gt;cd &lt;/span&gt;marketingskills
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 2 &lt;span class="nt"&gt;-type&lt;/span&gt; f | &lt;span class="nb"&gt;sort&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From there, copy or link the relevant skill definitions into the directory used by your Claude Code or agent setup. A useful workflow is to select one narrow task—such as reviewing landing-page copy or auditing technical SEO—then provide the agent with concrete project context, target audience, constraints, and measurable goals.&lt;/p&gt;

&lt;p&gt;The repository is most valuable when treated as an operational playbook, not an autonomous growth engine. It can standardize analysis and reduce repetitive planning, but it cannot replace experiment design, reliable analytics, or human review of claims.&lt;/p&gt;

&lt;p&gt;Before production use:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validate every recommendation against real conversion and search data; generic advice can produce plausible but low-impact changes.&lt;/li&gt;
&lt;li&gt;Keep sensitive analytics, customer data, and unpublished product information out of prompts unless your agent environment has an appropriate security model.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For engineering teams, the appeal is low integration cost: useful marketing expertise can be introduced incrementally without adding another service to deploy, monitor, or scale.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>seo</category>
      <category>webdev</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Why `affaan-m/ECC` Is Gaining Attention Among Agent Harness Engineers</title>
      <dc:creator>yan_cheng</dc:creator>
      <pubDate>Fri, 04 Sep 2026 01:39:00 +0000</pubDate>
      <link>https://dev.to/yan_cheng/why-affaan-mecc-is-gaining-attention-among-agent-harness-engineers-j5p</link>
      <guid>https://dev.to/yan_cheng/why-affaan-mecc-is-gaining-attention-among-agent-harness-engineers-j5p</guid>
      <description>&lt;p&gt;&lt;code&gt;affaan-m/ECC&lt;/code&gt; is not another prompt collection. It is a performance-oriented operating layer for coding agents: reusable skills, behavioral instincts, memory patterns, security constraints, and research-first workflows that can be adapted across Claude Code, Codex, OpenCode, Cursor, and similar environments.&lt;/p&gt;

&lt;p&gt;The repository gained &lt;strong&gt;751 stars today&lt;/strong&gt;, which makes sense: agent output quality is increasingly limited by harness design, not just the underlying model. A capable model still wastes tokens and latency when it repeatedly rediscovers project conventions, skips validation, or begins implementation before understanding the codebase.&lt;/p&gt;

&lt;p&gt;ECC addresses that operational gap by treating agent guidance as engineering infrastructure. The useful idea is to make high-value behavior explicit and portable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Research before edits to reduce incorrect assumptions and expensive rework.&lt;/li&gt;
&lt;li&gt;Persistent memory and project conventions to avoid repeated context loading.&lt;/li&gt;
&lt;li&gt;Security-aware workflows that prevent agents from treating generated code as automatically safe.&lt;/li&gt;
&lt;li&gt;Structured skills that turn recurring tasks into predictable execution paths.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A minimal way to inspect the project and evaluate how its conventions fit your existing harness:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/affaan-m/ECC.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ECC
find &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-maxdepth&lt;/span&gt; 2 &lt;span class="nt"&gt;-type&lt;/span&gt; f | &lt;span class="nb"&gt;sort&lt;/span&gt; | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; &lt;span class="s1"&gt;'1,120p'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Do not blindly copy every instruction into a production agent configuration. Start with the skills that address measurable failure modes: flaky test generation, unsafe shell execution, excessive repository scanning, or inconsistent code-review behavior. Then compare baseline versus ECC-assisted runs using wall-clock latency, tool-call count, token usage, test pass rate, and human correction time.&lt;/p&gt;

&lt;p&gt;Before production, watch for these trade-offs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Instruction overhead:&lt;/strong&gt; Large skill bundles consume context and can increase latency. Keep only rules that materially improve outcomes for your repository.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conflicting policies:&lt;/strong&gt; Existing project instructions may collide with ECC conventions. Define precedence explicitly, especially for security checks and destructive commands.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The strongest part of ECC is its framing: agent configuration should be benchmarked like any other performance-critical system, not maintained as an untested pile of prompts.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>performance</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
