<?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: zu</title>
    <description>The latest articles on DEV Community by zu (@zu).</description>
    <link>https://dev.to/zu</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%2F1153036%2F59a598da-ed13-41c5-87cc-86a78c26eb3a.jpeg</url>
      <title>DEV Community: zu</title>
      <link>https://dev.to/zu</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zu"/>
    <language>en</language>
    <item>
      <title>Elegant Writing - Open-Sourcing Two of My Article-Writing Skills</title>
      <dc:creator>zu</dc:creator>
      <pubDate>Mon, 29 Jun 2026 11:26:37 +0000</pubDate>
      <link>https://dev.to/zu/elegant-writing-open-sourcing-two-of-my-article-writing-skills-382o</link>
      <guid>https://dev.to/zu/elegant-writing-open-sourcing-two-of-my-article-writing-skills-382o</guid>
      <description>&lt;h1&gt;
  
  
  A Faster Way to Write in the AI Era—and the New Problems It Creates
&lt;/h1&gt;

&lt;p&gt;LLMs have delivered an enormous productivity boost. I now use Codex for most of my day-to-day tasks, and writing is no exception. As general-purpose language models, LLMs are naturally good at working with text. But while they make writing more convenient, they also introduce new problems. In my own writing process, two issues have stood out:&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%2Fmwpbhatq2avmqgeo75ck.png" 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%2Fmwpbhatq2avmqgeo75ck.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  1. LLM-generated sentences, structures, and grammar are highly repetitive—in short, they sound like AI
&lt;/h2&gt;

&lt;p&gt;Around 80% of the explainer content I come across from smaller creators on Douyin has a very obvious AI-generated feel. It makes the content unpleasant to listen to and quickly gives the impression that the script has no personal point of view. The first impression is that the creator is not professional. If you publish content, this is a serious problem.&lt;/p&gt;

&lt;p&gt;This matters even more when you are new to AI, have not yet developed strong editorial judgment, and are using it to generate technical talks, speeches, or spoken scripts. You need to consider the setting. Delivering an obviously AI-written script in public is deeply awkward. (Imagine imitating Doubao's speaking style at a formal event 😂.) The most common patterns I notice today are the unmistakable styles associated with GPT and Doubao.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Creating illustrations is far more cumbersome than using an LLM to help write the article itself
&lt;/h2&gt;

&lt;p&gt;There are already many AI image-generation tools and models, but design is itself a creative discipline and requires some expertise. I tried several Skills designed to help illustrate articles, but none matched what I wanted. The problem came down to two requirements:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Automatically identify the right places for illustrations based on the article's meaning.&lt;/li&gt;
&lt;li&gt;Quickly propose illustration types, styles, and visual treatments that fit the article, while making them easy to edit and fine-tune at any time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solving these two problems greatly reduces the mental overhead of adding illustrations.&lt;/p&gt;

&lt;p&gt;To address these issues in my daily writing, I created two Skills and open-sourced them on GitHub. After using them for some time, they have proven to be close to what I wanted and have significantly shortened my writing process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stars are welcome.&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  1. zu-article-image-skill: An Editable Visual Illustration Skill for Long-Form Articles
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; &lt;a href="https://github.com/wwenj/zu-article-image-skill" rel="noopener noreferrer"&gt;github.com/wwenj/zu-article-image-skill&lt;/a&gt;&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%2Ffile.ljcdn.com%2Fnebula%2F88f052b7a4a14056b0388dc0d816200f_1782196812612.png" 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%2Ffile.ljcdn.com%2Fnebula%2F88f052b7a4a14056b0388dc0d816200f_1782196812612.png" alt="zu-article-image-skill logo" width="512" height="512"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;/p&gt;
&lt;h1&gt;zu-article-image-skill&lt;/h1&gt;

&lt;h2&gt;
  
  
  Core Design
&lt;/h2&gt;

&lt;p&gt;This Skill solves only two problems:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Where an illustration should appear&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What the illustration should look like&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It separates the workflow into two layers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Prompt layer:&lt;/strong&gt; Based on the article's structure, insert inspectable and editable illustration pre-rendering Prompt tags into the article.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Image-generation layer:&lt;/strong&gt; After the user confirms them, generate images from those Prompts, save them to &lt;code&gt;imgs/&lt;/code&gt;, and insert the image references back into their original positions.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The article's Markdown file is the single source of truth. The Skill does not create planning documents, separate Prompt files, task JSON, or additional state files.&lt;/p&gt;

&lt;h2&gt;
  
  
  Technical Design
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Intermediate Tags
&lt;/h3&gt;

&lt;p&gt;The first run only writes hidden tags. It does not generate images immediately:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&amp;lt;!-- article-illustration id="01-agent-runtime" preset="process-flow" type="flowchart" style="sketch-notes" palette="macaron" ratio="16:9" alt="Agent execution flow"
Create a horizontal flowchart for a technical article that helps readers understand how an Agent request moves from input to output.

Layout: A five-stage flow from left to right, with generous whitespace throughout.
Content: User input, Router, Planner, Executor, Validator, and final answer.
Style: A sketch-notes, hand-drawn educational infographic with a warm paper background and black hand-drawn lines.
Palette: macaron. Use light blue for system modules, mint green for successful output, and coral red only for risk warnings.
Text: Use only short Chinese labels, with large, clearly readable text.
Aspect: 16:9.
--&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Skill generates an intermediate image description Prompt and inserts it directly into the source article as a placeholder. The Prompt can then evolve alongside the article, effectively serving as the image's “source code” within the draft. Once all editing and fine-tuning are complete, the images can be generated in one batch and inserted into the article.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Built-In Style System
&lt;/h3&gt;

&lt;p&gt;The Agent automatically selects styles using the rules in &lt;code&gt;references/&lt;/code&gt;, although users can also specify or modify them.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;Count&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;preset&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;8&lt;/td&gt;
&lt;td&gt;Common scenario combinations, such as knowledge diagrams, architecture diagrams, flowcharts, and comparisons&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;type&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Information structure: &lt;code&gt;infographic&lt;/code&gt;, &lt;code&gt;flowchart&lt;/code&gt;, &lt;code&gt;comparison&lt;/code&gt;, &lt;code&gt;framework&lt;/code&gt;, &lt;code&gt;scene&lt;/code&gt;, &lt;code&gt;timeline&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;style&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Visual language: hand-drawn, blueprint, vector, whiteboard, editorial, poster, and warm scenes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;palette&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Color semantics: soft educational, technical blue, balanced, monochrome ink, two-color poster, and warm&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  3. Illustration Style Previews
&lt;/h3&gt;

&lt;p&gt;All examples use a “Markdown article illustration workflow” as their theme and are generated with the built-in &lt;code&gt;style&lt;/code&gt; options.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;tbody&gt;
&lt;tr&gt;
    &lt;td width="50%"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffile.ljcdn.com%2Fnebula%2F5ac2c67c4c414b208e6255c3bff5557d_1782196824967.jpeg" alt="sketch-notes style preview" width="640" height="360"&gt;&lt;br&gt;
      &lt;strong&gt;sketch-notes&lt;/strong&gt;&lt;br&gt;
      A hand-drawn educational infographic style for explaining concepts, tutorials, and processes.
    &lt;/td&gt;
    &lt;td width="50%"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffile.ljcdn.com%2Fnebula%2F62f4cd6edf7b40059926a56fec03f832_1782196824180.jpeg" alt="blueprint style preview" width="640" height="360"&gt;&lt;br&gt;
      &lt;strong&gt;blueprint&lt;/strong&gt;&lt;br&gt;
      A technical blueprint style for architecture, system boundaries, and data flows.
    &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td width="50%"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffile.ljcdn.com%2Fnebula%2Fd108cb95d4354c01ac8c377a7b628fc4_1782196833271.jpeg" alt="vector-illustration style preview" width="640" height="360"&gt;&lt;br&gt;
      &lt;strong&gt;vector-illustration&lt;/strong&gt;&lt;br&gt;
      A flat vector style for solution comparisons and knowledge cards.
    &lt;/td&gt;
    &lt;td width="50%"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffile.ljcdn.com%2Fnebula%2Ff26a73faa893414a9af4897d38b14fdc_1782196824556.jpeg" alt="ink-notes style preview" width="640" height="360"&gt;&lt;br&gt;
      &lt;strong&gt;ink-notes&lt;/strong&gt;&lt;br&gt;
      A whiteboard note style for methodologies, frameworks, and shifts in thinking.
    &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td width="50%"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffile.ljcdn.com%2Fnebula%2F9bb9ecc2d8f9482298a4f635e5509382_1782196824367.jpeg" alt="editorial style preview" width="640" height="360"&gt;&lt;br&gt;
      &lt;strong&gt;editorial&lt;/strong&gt;&lt;br&gt;
      A magazine infographic style for data, metrics, and report summaries.
    &lt;/td&gt;
    &lt;td width="50%"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffile.ljcdn.com%2Fnebula%2F96eefecb4ba1437bbbaab040fbb1c693_1782196824767.jpeg" alt="screen-print style preview" width="640" height="360"&gt;&lt;br&gt;
      &lt;strong&gt;screen-print&lt;/strong&gt;&lt;br&gt;
      A screen-printed poster style for strong viewpoints and symbolic hero visuals.
    &lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td width="50%"&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Ffile.ljcdn.com%2Fnebula%2Fb0209df03c8946a097cb4e468e3b6733_1782196833461.jpeg" alt="warm style preview" width="640" height="360"&gt;&lt;br&gt;
      &lt;strong&gt;warm&lt;/strong&gt;&lt;br&gt;
      A gentle narrative illustration style for personal experiences and light metaphors.
    &lt;/td&gt;
    &lt;td width="50%"&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  4. State Machine
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;scripts/article_tags.py&lt;/code&gt; handles deterministic scanning and insertion:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;scan&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Parse tags, validate attributes, and report the status and save path of each image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;sync&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;When an image exists, insert &lt;code&gt;![alt](imgs/{id}.png)&lt;/code&gt; after its tag&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;State definitions:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;State&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;needs_generation&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The tag exists, but &lt;code&gt;imgs/{id}.png&lt;/code&gt; does not&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;needs_insertion&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The image exists, but its reference has not yet been inserted into the article&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;complete&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Both the image file and image reference exist&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;error&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;The tag is invalid, an ID is duplicated, or an image reference is duplicated&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Usage
&lt;/h2&gt;

&lt;p&gt;Plan the illustrations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Use zu-article-image-skill to plan illustrations for article.md
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;After the first run, the Skill summarizes the placement, purpose, and style of each illustration. At this point, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Confirm that it should continue generating the images.&lt;/li&gt;
&lt;li&gt;Manually edit the Prompt tags in the article.&lt;/li&gt;
&lt;li&gt;Ask it to switch to another preset or style and regenerate the Prompts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After confirmation, generate and insert the images:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Generate images from the existing `article-illustration` tags in the article.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Best Suited For
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Chinese technical articles, tutorials, opinion pieces, and project retrospectives&lt;/li&gt;
&lt;li&gt;Markdown drafts that need flowcharts, architecture diagrams, concept diagrams, or comparisons&lt;/li&gt;
&lt;li&gt;Writers who want to maintain illustration Prompts directly inside the article instead of splitting them into separate configuration files&lt;/li&gt;
&lt;/ul&gt;

&lt;h1&gt;
  
  
  2. zu-article-polisher-skill: Precisely Removing the “AI Feel” from Chinese Writing
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; &lt;a href="https://github.com/wwenj/zu-article-polisher-skill" rel="noopener noreferrer"&gt;github.com/wwenj/zu-article-polisher-skill&lt;/a&gt;&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%2Ffile.ljcdn.com%2Fnebula%2Fd8230dd8b9d04b2aa34ddb2663c9e378_1782197012933.png" 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%2Ffile.ljcdn.com%2Fnebula%2Fd8230dd8b9d04b2aa34ddb2663c9e378_1782197012933.png" alt="zu-article-polisher-skill logo" width="640" height="640"&gt;&lt;/a&gt;&lt;br&gt;
  &lt;/p&gt;
&lt;h1&gt;zu-article-polisher-skill&lt;/h1&gt;

&lt;p&gt;zu-article-polisher-skill is designed for Chinese technical writing. Its goal is to dismantle the templated scaffolding commonly found in AI-generated content while preserving the author's original judgments, facts, and technical boundaries. The result should read more like it was written by a real, experienced engineer.&lt;/p&gt;

&lt;p&gt;It is suitable for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chinese technical articles, long-form opinion pieces, and WeChat Official Account drafts&lt;/li&gt;
&lt;li&gt;Spoken scripts, speeches, and presentations&lt;/li&gt;
&lt;li&gt;Editing AI-generated drafts and checking them before publication&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Core Capabilities
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Remove the “AI Feel” from Chinese Writing
&lt;/h3&gt;

&lt;p&gt;It identifies and addresses common signs of AI-generated Chinese writing, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Formulaic openings and fake questions&lt;/li&gt;
&lt;li&gt;Classic GPT-style negative parallel constructions such as &lt;code&gt;不是...而是...&lt;/code&gt; (“not...but...”) and &lt;code&gt;不仅仅是...更是...&lt;/code&gt; (“not only...but more importantly...”)&lt;/li&gt;
&lt;li&gt;Three-part structures, forced lists, and lists of bold subheadings&lt;/li&gt;
&lt;li&gt;Empty attempts at profundity and forced summaries at the end of sentences&lt;/li&gt;
&lt;li&gt;Marketing language, white-paper language, and industry jargon&lt;/li&gt;
&lt;li&gt;Vague attribution and claims backed by no source&lt;/li&gt;
&lt;li&gt;Excessive balance and formulaic sections on challenges and future prospects&lt;/li&gt;
&lt;li&gt;Leftover chat responses and model disclaimers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  2. Preserve the Author's Real Judgment
&lt;/h3&gt;

&lt;p&gt;The Skill prioritizes the author's own opinions, experience, and technical caveats. It does not invent years, numbers, examples, sources, user feedback, or more aggressive claims simply to make the writing sound more natural.&lt;/p&gt;

&lt;p&gt;When editing technical opinion pieces, it takes particular care to preserve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Explicit judgments&lt;/li&gt;
&lt;li&gt;Engineering boundaries&lt;/li&gt;
&lt;li&gt;Real constraints involving cost, permissions, stability, evaluation, migration, and maintenance&lt;/li&gt;
&lt;li&gt;Existing facts and attribution of opinions in the source text&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. Rebuild the Article's Structure
&lt;/h3&gt;

&lt;p&gt;It first extracts the article's actual argument, then rewrites the paragraphs around that argument instead of merely swapping in synonyms.&lt;/p&gt;

&lt;p&gt;Common changes include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Turning fake questions into declarative statements&lt;/li&gt;
&lt;li&gt;Removing empty setup and repetitive conclusions&lt;/li&gt;
&lt;li&gt;Reordering paragraphs so that the core argument appears earlier&lt;/li&gt;
&lt;li&gt;Keeping the outline, body headings, and section numbering in sync&lt;/li&gt;
&lt;li&gt;Tightening titles, lists, tables, and Markdown formatting&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4. Support Pre-Publication Checks
&lt;/h3&gt;

&lt;p&gt;The repository includes a helper script:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;python3 zu-article-polisher/scripts/check_article_style.py &amp;lt;markdown-file&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The script only identifies potential issues; it does not rewrite the article automatically. It can check for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mismatches between the outline and body headings&lt;/li&gt;
&lt;li&gt;Non-sequential section numbering&lt;/li&gt;
&lt;li&gt;Fixed AI phrasing and formulaic structures&lt;/li&gt;
&lt;li&gt;Inconsistent capitalization of technical terms&lt;/li&gt;
&lt;li&gt;Overuse of bold text, blank-line issues, trailing whitespace, and other Markdown problems&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;It includes a large collection of common AI-generated sentence patterns for matching&lt;/strong&gt;, which is the most effective approach. You cannot expect AI to reliably detect its own AI writing style.&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%2Ft0ot9afm6nfiu9ace22o.png" 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%2Ft0ot9afm6nfiu9ace22o.png" width="800" height="616"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When to Use It
&lt;/h2&gt;

&lt;p&gt;Once the article's overall structure is mostly complete and you no longer need AI to substantially rewrite or generate its content, you can use this Skill to polish the entire article.&lt;/p&gt;

&lt;h1&gt;
  
  
  Project Link
&lt;/h1&gt;

&lt;p&gt;&lt;strong&gt;Stars are welcome!!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; &lt;a href="https://github.com/wwenj/zu-article-polisher-skill" rel="noopener noreferrer"&gt;github.com/wwenj/zu-article-polisher-skill&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project:&lt;/strong&gt; &lt;a href="https://github.com/wwenj/zu-article-image-skill" rel="noopener noreferrer"&gt;github.com/wwenj/zu-article-image-skill&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Original Content Notice
&lt;/h2&gt;

&lt;p&gt;This is an original article. If you republish it, please credit the author and link to the original article. The illustrations were generated with AI. Follow my WeChat Official Account for more articles.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Content Creation Self-Discipline Statement
&lt;/h2&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%2Fezfjesbdxonv10fqa89o.png" 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%2Fezfjesbdxonv10fqa89o.png" alt="AI Content Creation Self-Discipline Statement" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>agents</category>
      <category>agentskills</category>
      <category>vibecoding</category>
      <category>ai</category>
    </item>
    <item>
      <title>Stop Optimizing RAG - The LLM Wiki Knowledge Base for Agents</title>
      <dc:creator>zu</dc:creator>
      <pubDate>Mon, 29 Jun 2026 08:44:38 +0000</pubDate>
      <link>https://dev.to/zu/stop-optimizing-rag-the-llm-wiki-knowledge-base-for-agents-f4p</link>
      <guid>https://dev.to/zu/stop-optimizing-rag-the-llm-wiki-knowledge-base-for-agents-f4p</guid>
      <description>&lt;h2&gt;
  
  
  Introduction: A Common Knowledge Base Trap in Agent Development
&lt;/h2&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%2Fpblns887h74vklrm3pba.png" 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%2Fpblns887h74vklrm3pba.png" width="800" height="601"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By 2026, the conversation around RAG knowledge bases has changed. Many developers have grown skeptical of using RAG to build knowledge bases for Agents, as Agent engineering moves toward more precise context management.&lt;/p&gt;

&lt;p&gt;When the idea of RAG-powered Agent knowledge bases first gained traction, many teams and leaders became obsessed with dumping every long, outdated legacy document in the company into a knowledge base. They expected RAG retrieval to breathe new life into those documents—or assumed that feeding all existing internal documentation into RAG would allow an Agent to quickly understand internal problems and reduce the burden on engineers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traditional RAG is not well suited to serving directly as an Agent's core external knowledge layer.&lt;/strong&gt; This should be obvious.&lt;/p&gt;

&lt;p&gt;Even when an Agent needs a knowledge base, it needs one that is highly semantic—not merely a retrieval-oriented system like RAG.&lt;/p&gt;

&lt;p&gt;Many of the technical applications of Agents are still being explored, so no conclusion can cover every business scenario. But a few simple observations are already clear:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;For both companies and individuals, only a small portion of their documentation contains genuinely valuable information. Low-value material does not become valuable simply because it is handed to an LLM.&lt;/li&gt;
&lt;li&gt;The combination of a powerful knowledge base and an all-purpose Agent is appealing, but helping an LLM understand new knowledge through context requires considerable care. RAG retrieval is too crude compared with actual task execution.&lt;/li&gt;
&lt;li&gt;Leading LLMs already possess sufficiently broad and deep general knowledge. If an Agent product only works after constantly “connecting it to new knowledge,” its use case and product boundaries probably have not been thought through.&lt;/li&gt;
&lt;li&gt;Scenarios in which an Agent depends on large amounts of external knowledge will inevitably remain niche.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Treating large-scale external knowledge and better RAG retrieval as the main path to improving Agent capabilities delivers poor efficiency, user experience, and cost-effectiveness.&lt;/strong&gt; Unless the use case strongly depends on it, investing heavily in this direction is generally not worthwhile.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Evolution of Knowledge Base Technologies for Agents
&lt;/h2&gt;

&lt;p&gt;RAG knowledge base technology has evolved from fixed-size chunking to semantic chunking and graph-based knowledge organization. More recently, Karpathy's LLM Wiki has introduced a path distinct from traditional RAG: let AI read and organize the material in advance, then continuously maintain a structured, interconnected Markdown knowledge base.&lt;/p&gt;

&lt;p&gt;This article examines the evolution of RAG knowledge bases in Agent scenarios, as well as the LLM Wiki concept that is gradually entering the field of Agent engineering.&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%2Fnrgdvr0sfcmwb4zpp8zw.png" 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%2Fnrgdvr0sfcmwb4zpp8zw.png" alt="The evolution of knowledge base technologies for Agents" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Outline
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Traditional RAG: Fixed Chunking and One-Dimensional Retrieval&lt;/li&gt;
&lt;li&gt;Advanced Semantic RAG: Late Chunking and Parent-Child Decoupling&lt;/li&gt;
&lt;li&gt;Graph RAG: Graph-Enhanced Knowledge Organization and Reasoning&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Key Point:&lt;/strong&gt; The Limit of RAG—Finding Material Rather Than Understanding Knowledge&lt;/li&gt;
&lt;li&gt;LLM Wiki: From Stateless Retrieval to Stateful, Continuous LLM Compilation&lt;/li&gt;
&lt;li&gt;Karpathy's Three-Layer LLM Wiki Design&lt;/li&gt;
&lt;li&gt;Building a Personal Knowledge Base with LLM Wiki&lt;/li&gt;
&lt;li&gt;Building an Enterprise Agent Knowledge Base with LLM Wiki&lt;/li&gt;
&lt;li&gt;Where LLM Wiki Works Best&lt;/li&gt;
&lt;li&gt;Limitations of LLM Wiki&lt;/li&gt;
&lt;li&gt;A Comparison of Knowledge Base Technologies for Agents&lt;/li&gt;
&lt;li&gt;Production Architecture: A Layered Hybrid Approach&lt;/li&gt;
&lt;li&gt;Final Thought 1: Why Is RAG Alone Unsuitable for Agents?&lt;/li&gt;
&lt;li&gt;Final Thought 2: How Should You Choose the Right Technology?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Traditional RAG: Fixed Chunking and One-Dimensional Retrieval
&lt;/h2&gt;

&lt;p&gt;Traditional RAG is essentially stateless “coarse filtering and hard concatenation.” The system mechanically divides long documents into physical chunks of a fixed character or token length, maps them into a high-dimensional geometric space using an Embedding model, and then performs nearest-neighbor retrieval based on vector similarity.&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Mechanisms
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sliding Window:&lt;/strong&gt; Adjacent text chunks overlap—typically by 10% to 20%—to mitigate semantic breaks at chunk boundaries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Similarity Calculation:&lt;/strong&gt; Geometric metrics such as cosine similarity are used to match the user's query vector against chunk vectors in the knowledge base.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Limitations and Pain Points for Agents
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Fragmented information and unclear pronoun references:&lt;/strong&gt; Mechanical chunking can easily separate complete causal relationships from their contextual entities. As a result, an Agent may retrieve noisy passages filled with words such as “it” or “the company,” without a clear referent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Semantic isolation across documents:&lt;/strong&gt; Each document is encoded independently by the Embedding model. Complex references, comparisons, and evolutionary relationships between Document A and Document B cannot be represented by isolated geometric points in vector space.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hallucinations caused by mechanical assembly:&lt;/strong&gt; During retrieval, the Top-K isolated chunks are often joined with line breaks and little else, destroying the logical structure of the original language. When an Agent encounters conflicting fragments or information from different points in time, it can easily lose logical coherence.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&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%2F4lv4w98npmotxpq2ewd5.png" 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%2F4lv4w98npmotxpq2ewd5.png" alt="The failure chain of traditional RAG" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Semantic RAG: Late Chunking and Parent-Child Decoupling
&lt;/h2&gt;

&lt;p&gt;To preserve as much semantic completeness as possible within an individual document—without changing the underlying vector retrieval architecture—RAG systems began introducing preprocessing enhancements and structural decoupling.&lt;/p&gt;

&lt;p&gt;Common approaches include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Parent-Child Documents:&lt;/strong&gt; Use small chunks for retrieval, then restore the larger parent block after a match to avoid overly fragmented context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic Chunking:&lt;/strong&gt; Split content at semantic boundaries instead of mechanically using a fixed length.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Late Chunking:&lt;/strong&gt; Encode the long document as a whole before dividing it, allowing each chunk to retain more global context.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contextual Retrieval:&lt;/strong&gt; Before indexing, use a lightweight LLM to add context to each chunk, such as its section, referenced entities, and position in the document.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Limitations and Pain Points for Agents
&lt;/h3&gt;

&lt;p&gt;These approaches clearly improve retrieval quality within a single document, but the overall architecture still revolves around chunks. They mitigate the semantic loss caused by chunking, but they do not truly solve cross-document knowledge relationships or long-term knowledge accumulation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Graph RAG: Graph-Enhanced Knowledge Organization and Reasoning
&lt;/h2&gt;

&lt;p&gt;To overcome the physical isolation of intersecting knowledge across documents, Graph RAG moves knowledge organization from unstructured text retrieval toward structured knowledge reasoning.&lt;/p&gt;

&lt;p&gt;Graph RAG expands the representation of knowledge from one-dimensional points into a network topology. During ingestion, it applies LLM capabilities upfront, restructuring the entire document collection into a logical network of entities (Nodes) and relationships (Edges).&lt;/p&gt;

&lt;h3&gt;
  
  
  Core Mechanisms
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Entity and relationship extraction:&lt;/strong&gt; Use an LLM to read documents in batches and extract entities and their relationships.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community detection and group summaries:&lt;/strong&gt; Cluster the graph, then generate high-level summaries for each knowledge community.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Hybrid retrieval:&lt;/strong&gt; Use community summaries for global questions, while expanding context along entity relationships and vector results for local questions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Limitations and Pain Points for Agents
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Write amplification and high indexing costs:&lt;/strong&gt; During ingestion, large numbers of LLM calls are required for extraction and summarization, resulting in high token consumption and write latency.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Error compounding:&lt;/strong&gt; If the LLM hallucinates a relationship during offline extraction, that error becomes embedded in the graph and continues to contaminate subsequent retrieval.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Graph RAG is effective at representing explicit entity relationships and cross-document paths, but the graph itself remains an intermediate representation produced by a one-time extraction process. It can help an Agent follow relationships to locate knowledge, but it does not naturally organize every reading, Q&amp;amp;A, and synthesis result into knowledge pages that can be directly read, edited, and reviewed.&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%2Fvvdra4t8w29fmg3lrxvp.png" 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%2Fvvdra4t8w29fmg3lrxvp.png" alt="Graph RAG ingestion flow and risks" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key Point: The Limit of RAG—Finding Material Rather Than Understanding Knowledge
&lt;/h2&gt;

&lt;p&gt;Looking at these approaches together reveals a clear pattern. From fixed chunking to semantic chunking, parent-child documents, Late Chunking, Contextual Retrieval, and finally Graph RAG, the engineering becomes increasingly complex while optimizing for essentially the same goal:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;How can we find potentially relevant material in an external knowledge base and feed it to an LLM?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The primary problem being solved is knowledge selection, not knowledge formation.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;RAG remains highly useful for simple factual Q&amp;amp;A, long-tail material, and infrequently accessed documents. But promoting it to the core external knowledge layer of an Agent creates a mismatch. When an Agent accesses a knowledge base, it needs semantic context that can be used directly in the current task—not several passages that merely look similar.&lt;/p&gt;

&lt;p&gt;The context an Agent needs should resemble &lt;strong&gt;material provided on demand by someone who understands the business&lt;/strong&gt;: someone who knows the scenario behind the question, which sources are genuinely relevant, and which outdated conclusions, implicit assumptions, or conflicting information could affect the current decision. Ordinary RAG rarely provides this kind of context. It usually returns a set of fragments selected by an algorithm.&lt;/p&gt;

&lt;p&gt;Context should consist of high-quality, high-precision semantic prompts—not a pile of undifferentiated text.&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%2Ftq4ynt1p6w37ttrqiiy0.png" 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%2Ftq4ynt1p6w37ttrqiiy0.png" alt="The limit of RAG" width="800" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The shared limitations of the preceding approaches can be summarized in three layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Traditional RAG&lt;/strong&gt; treats the knowledge base as a search engine. It can locate material, but it cannot turn that material into knowledge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Semantic RAG&lt;/strong&gt; makes retrieval smarter, but it still searches for material on demand at query time. Complexity continues to accumulate around chunking, retrieval, ranking, context length, and query rewriting.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Graph RAG&lt;/strong&gt; reaches the relationship layer and works well for cross-document relationships and global summaries. But graph structures, vectors, metadata, and community summaries are still fundamentally designed to answer the question: “How can we select better material?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is the ceiling of the RAG approach: &lt;strong&gt;it keeps trying to use retrieval algorithms to compensate for knowledge that has never truly been understood or organized.&lt;/strong&gt; No matter how complex the relationship graph becomes, it cannot fully carry integrated semantics.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Agents Actually Need Is Organized Knowledge
&lt;/h3&gt;

&lt;p&gt;The valuable knowledge in an Agent's context often comes from conclusions supported by several documents, disagreements recorded in meeting notes, constraints hidden in legacy system documentation, implicit lessons from incident reports, and the tradeoffs among all of them.&lt;/p&gt;

&lt;p&gt;Before this material is suitable for an Agent's context, it must first be read, interpreted, compressed, connected, and revised.&lt;/p&gt;

&lt;p&gt;Multiple knowledge sources amplify the problem. New material appears; old material expires; sources contradict one another. Old conclusions must be updated, new information merged, conflicts marked, and relationships discovered in a Q&amp;amp;A session may also deserve to be preserved. These are no longer retrieval problems. They are &lt;strong&gt;knowledge management problems&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Knowledge itself must be organized, interpreted, compressed, connected, and continuously revised in advance.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This is why I believe LLM Wiki deserves separate attention. It shifts the focus away from “how to retrieve chunks” and changes the basic unit of the knowledge base from fragments waiting to be recalled into Wiki pages that can be read, linked, edited, and evolved. At present, this appears to be an effective direction for future Agent knowledge bases.&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%2F4or4tyvf220ur30gb31n.png" 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%2F4or4tyvf220ur30gb31n.png" alt="On-demand retrieval versus continuous knowledge accumulation" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  LLM Wiki: From Stateless Retrieval to Stateful, Continuous LLM Compilation
&lt;/h2&gt;

&lt;p&gt;The core idea of LLM Wiki can be summarized as follows: &lt;strong&gt;compile knowledge in advance to reduce ad hoc chunk retrieval for every question.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It treats multiple source documents as “source code” (Raw Sources), then uses an LLM to continuously compile them into a highly structured network of Markdown knowledge pages connected by bidirectional links (Backlinks). The system moves from stateless retrieval to stateful knowledge maintenance, and the knowledge base continues to evolve as new material arrives.&lt;/p&gt;

&lt;p&gt;When you add an article, a book excerpt, a PDF, or a meeting record, the LLM proactively reads it, extracts key concepts, creates or updates pages, adds links, marks conflicts, and records the changes.&lt;/p&gt;

&lt;p&gt;The knowledge base therefore grows richer as more material is added. Relationships and synthesis have already been completed in advance. When a question is asked later, the AI encounters an organized knowledge system instead of having to assemble fragments from raw sources on the fly.&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%2Fdixdffk7n9msojdfhb5w.png" 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%2Fdixdffk7n9msojdfhb5w.png" alt="The continuous maintenance loop of LLM Wiki" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is only one fundamental principle: &lt;strong&gt;Agents need knowledge that has already been understood and organized. This work has traditionally centered on the human mind rather than pure engineering. If it is to be automated, the LLM must be at the center.&lt;/strong&gt; The right direction is to consider how an LLM can take over the cognitive work, rather than designing increasingly complex engineering systems as substitutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Karpathy's Three-Layer LLM Wiki Design
&lt;/h2&gt;

&lt;p&gt;Karpathy's LLM Wiki design can be divided into three simple layers: &lt;code&gt;raw&lt;/code&gt;, &lt;code&gt;wiki&lt;/code&gt;, and &lt;code&gt;schema&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Raw: The Source Material Layer
&lt;/h3&gt;

&lt;p&gt;This layer contains original files such as PDFs, web articles, meeting notes, text files, and Markdown documents. They are the source of truth. The AI may read them, but should not modify them. This preserves the original material so that any questionable Wiki content can later be checked against its source.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Wiki: The AI-Generated and AI-Maintained Knowledge Base
&lt;/h3&gt;

&lt;p&gt;This layer is a collection of Markdown files, including home pages, index pages, concept pages, entity pages, topic summaries, and comparison pages. Links connect these pages into a knowledge network that humans can understand and modify.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Schema: The Knowledge Base Rules
&lt;/h3&gt;

&lt;p&gt;One example is &lt;code&gt;CLAUDE.md&lt;/code&gt; in Claude Code. It tells the LLM:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What the knowledge base is for.&lt;/li&gt;
&lt;li&gt;How its directory structure is organized.&lt;/li&gt;
&lt;li&gt;How new material should be processed.&lt;/li&gt;
&lt;li&gt;How pages should be formatted.&lt;/li&gt;
&lt;li&gt;Where to look first when answering questions.&lt;/li&gt;
&lt;li&gt;How to cite sources.&lt;/li&gt;
&lt;li&gt;How to handle uncertain information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together, these layers form the core LLM Wiki architecture: &lt;code&gt;Sources → Wiki → Schema&lt;/code&gt;. When a new document arrives, the LLM acts as a knowledge bookkeeper, reads the source in full, and directly rewrites, merges, or corrects existing Wiki pages.&lt;/p&gt;

&lt;p&gt;At retrieval time, the system can move away from relying entirely on geometric vector matching and instead use model-driven navigation (Index-Driven Navigation). A lightweight index distilled from the Wiki pages is first provided to a long-context Agent. The Agent then uses linguistic reasoning to determine its own navigation path and read the exact Wiki pages or text blocks it needs.&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%2F95oig409pk7cwnlv6y74.png" 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%2F95oig409pk7cwnlv6y74.png" alt="The three-layer LLM Wiki architecture and data flow" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building a Personal Knowledge Base with LLM Wiki
&lt;/h2&gt;

&lt;p&gt;For personal use, building an LLM Wiki is not complicated. In fact, it can be remarkably simple. A common approach today is to use Obsidian—a Markdown renderer and knowledge management application—to manage local Markdown files, while local Agents such as Claude Code, Codex, or Cursor read and write files, organize source material, generate Wiki pages, and maintain links.&lt;/p&gt;

&lt;p&gt;A minimal structure is usually enough:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;wiki-project/
  raw/       # Original source material, read-only
  wiki/      # Knowledge pages organized by AI
  AGENTS.md  # Or CLAUDE.md, defining the maintenance rules
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When adding new material, place the original document in &lt;code&gt;raw&lt;/code&gt;, then ask the Agent to read and summarize it, split it into pages, create links, and update existing pages. Obsidian is only the browsing and management layer; underneath, the system remains a collection of Markdown files.&lt;/p&gt;

&lt;p&gt;There are many tutorials online, and you can also download an LLM Wiki skill to handle the entire process. It is unusually straightforward.&lt;/p&gt;

&lt;p&gt;However, unless you work with a large body of knowledge, a so-called personal knowledge base offers little practical value to most people. That does not mean it has no value at all—you can at least get an attractive knowledge graph and some emotional satisfaction from it.&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%2Fyioamhb45vfe2myjfp0q.png" 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%2Fyioamhb45vfe2myjfp0q.png" alt="Knowledge graph" width="800" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Building an Enterprise Agent Knowledge Base with LLM Wiki
&lt;/h2&gt;

&lt;p&gt;Enterprise Agents provide a stronger case for the practical value of LLM Wiki. But if you are looking for a general-purpose framework or a standard set of best practices, you may be disappointed. LLM Wiki is closer to a design philosophy than a standard framework that must be adopted.&lt;/p&gt;

&lt;p&gt;So far, it has not converged on a relatively uniform engineering implementation in the way GraphRAG has. The reason is simple: its core principle is not complicated—&lt;strong&gt;knowledge should be understood, organized, and maintained during the write phase&lt;/strong&gt;—and the implementation is highly specific to the business domain.&lt;/p&gt;

&lt;p&gt;This actually creates room for Agent developers. Many Agents do not need a generic, complex, and highly abstract LLM Wiki system. A more practical approach is to design a sufficiently small knowledge layer from scratch around the actual knowledge structure of the project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the Agent depends on SOPs, design the knowledge base around task workflows, rule boundaries, exception handling, and case pages.&lt;/li&gt;
&lt;li&gt;If the Agent depends on product knowledge, organize it around product modules, functional limitations, API contracts, user scenarios, and change records.&lt;/li&gt;
&lt;li&gt;If the Agent depends on research material, organize it around topic pages, paper pages, concept pages, evidence pages, and controversy pages.&lt;/li&gt;
&lt;li&gt;If the Agent depends on project context, organize it around architecture documentation, key decisions, directory boundaries, known issues, and current status.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, do not begin by researching which LLM Wiki frameworks you can integrate. First ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;What exactly does this Agent need to remember over the long term? How should that knowledge be organized into pages? When should it be updated, and who should validate it?&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Once those questions are answered, the implementation can remain lightweight. You can use Codex and Vibe Coding to create a directory structure, page templates, update rules, and validation scripts based on the project's actual needs. For example, retain only four core components—&lt;code&gt;sources/&lt;/code&gt;, &lt;code&gt;wiki/&lt;/code&gt;, &lt;code&gt;index.md&lt;/code&gt;, and &lt;code&gt;AGENTS.md&lt;/code&gt;—then define how new material is archived, how pages are updated, how sources are attributed, how conflicts are handled, and how outdated content is checked periodically.&lt;/p&gt;

&lt;p&gt;You can then design a retrieval workflow around the actual LLM Wiki structure. A common approach is to build a dedicated retrieval Agent that is tightly coupled to the current Wiki and invoke it as a sub-Agent within the main workflow.&lt;/p&gt;

&lt;p&gt;Not pursuing a large, all-encompassing system from the outset is one of the most basic principles of Agent development today.&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%2F34g5ioahhst3xwg18k7r.png" 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%2F34g5ioahhst3xwg18k7r.png" alt="An entry point for enterprise Agent Wiki design" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Where LLM Wiki Works Best
&lt;/h2&gt;

&lt;p&gt;LLM Wiki is not a universal knowledge base solution. It is best suited to scenarios where the knowledge is &lt;strong&gt;high-value, stable over time, repeatedly reused, and continuously revised&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Typical examples include long-term research topics, course materials, core SOPs, critical policies, customer interviews, product decisions, project retrospectives, and expert experience. For Agents, LLM Wiki works best as the core knowledge layer that holds task workflows, domain rules, product boundaries, key decisions, and high-value expert knowledge.&lt;/p&gt;

&lt;p&gt;Large volumes of rarely accessed material, historical logs, chat records, and archived documents remain better suited to conventional RAG or search systems as a fallback. They should not all be forced into an LLM Wiki.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations of LLM Wiki
&lt;/h2&gt;

&lt;p&gt;LLM Wiki still has clear boundaries.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The Scale Wall
&lt;/h3&gt;

&lt;p&gt;It is better suited to a small collection of high-value material. Karpathy's example was roughly on the order of 100 articles. Managing tens of thousands of pages requires more than Markdown files, local folders, and a long-context Agent; it demands more sophisticated infrastructure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If your product requires feeding a massive document collection into an LLM Wiki, I believe the product design itself is almost certainly flawed.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Low Compilation Throughput
&lt;/h3&gt;

&lt;p&gt;Every additional source may trigger a complex chain of LLM-driven rewrites, creating significant write amplification. This makes the approach unsuitable for high-frequency, real-time ingestion. Core knowledge is better consolidated on a schedule: spend a large number of tokens at once in exchange for higher Agent retrieval precision. If you require frequent writes, this is almost certainly the wrong scenario for LLM Wiki.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Input Quality Determines Output Quality
&lt;/h3&gt;

&lt;p&gt;If the source material is low-quality, outdated, or disorganized, the Wiki will inherit those problems. A small body of high-value knowledge should be curated for the Agent instead of consisting of raw human documentation. In practice, the volume is limited, so you can simply ask Codex to filter and organize it first.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. AI Makes Mistakes
&lt;/h3&gt;

&lt;p&gt;AI may misclassify information, connect concepts incorrectly, or omit important details. Human review therefore remains necessary, especially during the early stages of building the knowledge base. Wiki linting, consistency validation, citation checks, and read-only source material all help reduce these risks.&lt;/p&gt;

&lt;p&gt;Because the compiled Wiki remains human-readable, people can participate as needed and make straightforward corrections.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Comparison of Knowledge Base Technologies for Agents
&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;Traditional Vector RAG&lt;/th&gt;
&lt;th&gt;Advanced Semantic RAG (Late/Parent-Child)&lt;/th&gt;
&lt;th&gt;Graph RAG&lt;/th&gt;
&lt;th&gt;Compiled LLM Wiki&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Underlying mathematical or logical foundation&lt;/td&gt;
&lt;td&gt;Geometric distance in high-dimensional vector space&lt;/td&gt;
&lt;td&gt;Deep Attention integration and structural decoupling&lt;/td&gt;
&lt;td&gt;Graph topology and community clustering algorithms&lt;/td&gt;
&lt;td&gt;Linguistic navigation and structured Markdown&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Support for cross-document semantics&lt;/td&gt;
&lt;td&gt;Very poor; documents remain isolated&lt;/td&gt;
&lt;td&gt;Poor; still constrained by individual document boundaries&lt;/td&gt;
&lt;td&gt;Excellent; explicit logical connections form a knowledge network&lt;/td&gt;
&lt;td&gt;Excellent; offline LLM deduplication, merging, and bidirectional linking&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Elimination of pronoun and boundary noise&lt;/td&gt;
&lt;td&gt;Weak; semantic breaks are common&lt;/td&gt;
&lt;td&gt;Strong; achieved through context injection and parent-block restoration&lt;/td&gt;
&lt;td&gt;Moderate; depends on triple extraction accuracy&lt;/td&gt;
&lt;td&gt;Excellent; the LLM resolves and rewrites them during compilation&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Knowledge base construction cost (write)&lt;/td&gt;
&lt;td&gt;Very low; only Embedding encoding is required&lt;/td&gt;
&lt;td&gt;Relatively low; lightweight LLM-assisted labeling or long-text encoding&lt;/td&gt;
&lt;td&gt;Very high; requires extensive offline refinement with LLM tokens&lt;/td&gt;
&lt;td&gt;High; incremental writes cause significant write amplification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Retrieval determinism (read)&lt;/td&gt;
&lt;td&gt;Weak; depends on Top-K match quality&lt;/td&gt;
&lt;td&gt;Moderate; detailed recall improves substantially&lt;/td&gt;
&lt;td&gt;Strong; causal paths can be traced&lt;/td&gt;
&lt;td&gt;Strong; logical routing follows indexes and page structure&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Best-suited Agent scenarios&lt;/td&gt;
&lt;td&gt;Simple Q&amp;amp;A and inactive long-tail data&lt;/td&gt;
&lt;td&gt;Technically or legally structured manuals with clear, independent rules&lt;/td&gt;
&lt;td&gt;Relationship audits, multi-entity comparisons, and complex reasoning&lt;/td&gt;
&lt;td&gt;Core SOP preservation and high-value domain expert knowledge bases&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Production Architecture: A Layered Hybrid Approach
&lt;/h2&gt;

&lt;p&gt;A layered Hybrid architecture separates knowledge according to data value, scale, and query patterns. It does not expect one approach to simultaneously handle massive scale, write efficiency, fine-grained recall, and cross-document relationships.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Core knowledge layer: LLM Wiki&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Compile a manageable amount of high-value material—core business SOPs, critical policies, company-wide entity definitions, and expert knowledge—into a stateful Wiki. This becomes the Agent's core memory for decision-making.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Relationship graph layer: Graph RAG&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Organize documents involving multiple projects, financial reports, or strong causal relationships into a knowledge graph that supports complex, networked, cross-document reasoning.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Large-scale storage layer: Advanced Vector RAG&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use techniques such as Late Chunking, parent-child documents, and Contextual Retrieval for hundreds of millions of long-tail historical logs, past conversations, and infrequently accessed sources. The Agent can initiate vector retrieval when it needs specific details.&lt;/p&gt;

&lt;p&gt;These technologies solve problems at different levels: Vector RAG retrieves long-tail material, Graph RAG handles relationship paths, and LLM Wiki continuously compiles and reuses high-value knowledge.&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%2Fv3gxub2866xuvkul7wy3.png" 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%2Fv3gxub2866xuvkul7wy3.png" alt="A layered Hybrid knowledge base architecture for Agents" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thought 1: Why Is RAG Alone Unsuitable for Agents?
&lt;/h2&gt;

&lt;p&gt;RAG alone is unsuitable as an Agent's core knowledge base because its strengths are fundamentally misaligned with what an Agent requires from knowledge.&lt;/p&gt;

&lt;p&gt;LLMs already possess sufficiently broad and deep general knowledge. An Agent usually needs an external knowledge base in only two situations: when it needs deep domain knowledge, or when it needs internal knowledge absent from the model's training data. Both require highly precise knowledge.&lt;/p&gt;

&lt;p&gt;This creates a contradiction: &lt;strong&gt;RAG is good at vector retrieval across massive knowledge collections, but an Agent actually needs precise, executable semantic context.&lt;/strong&gt; Knowledge that is genuinely valuable to an Agent should usually be small and focused. If the volume is exceptionally large, it often means the collection contains a great deal of low-value material—or serves an unusually narrow use case.&lt;/p&gt;

&lt;p&gt;The limit of RAG is therefore clear. It can find potentially relevant material, but it cannot reliably guarantee that the material is complete, accurate, conflict-free, and aligned with the boundaries of the current task. Similarity retrieval is not understanding. A more sensible division of responsibilities is: &lt;strong&gt;use RAG as a fallback for long-tail material, while LLM Wiki or explicit context management carries the core knowledge.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thought 2: How Should You Choose the Right Technology?
&lt;/h2&gt;

&lt;p&gt;Doesn't a Hybrid architecture sound like the ultimate knowledge base solution? It seems to include everything and cover every concern.&lt;/p&gt;

&lt;p&gt;Hybrid architectures sound attractive and theoretically comprehensive. But as a business or technical leader, I still believe they are unsuitable for most scenarios—or simply too complex and redundant. &lt;strong&gt;Trying to accommodate every technology usually means you lack a clear direction for the design and development of your Agent.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As noted earlier, scenarios in which an Agent depends on large amounts of knowledge are already niche. Scenarios that simultaneously require three technologies in a Hybrid architecture are even more so. In most Agent architectures, the knowledge base should not carry too much weight. Start simple.&lt;/p&gt;

&lt;p&gt;In most cases, I believe a straightforward LLM Wiki is enough. Alternatively, connect a basic RAG retrieval system—it is better than nothing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Originality Statement
&lt;/h2&gt;

&lt;p&gt;This is an original article. When reposting, please credit the author and include a link to the original article. The illustrations were generated with AI. Follow my official account for more articles.&lt;/p&gt;

&lt;h2&gt;
  
  
  AI Transparency Statement for Content Creation
&lt;/h2&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%2F9l5f5ak4n7k7f5yehlr7.png" 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%2F9l5f5ak4n7k7f5yehlr7.png" alt="AI transparency statement for content creation" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rag</category>
      <category>agents</category>
      <category>llmwiki</category>
      <category>ai</category>
    </item>
    <item>
      <title>From Tailwind CSS to UnoCSS - Is Atomization Really the Savior of Frontend CSS</title>
      <dc:creator>zu</dc:creator>
      <pubDate>Mon, 04 Sep 2023 08:56:48 +0000</pubDate>
      <link>https://dev.to/zu/from-tailwind-css-to-unocss-is-atomization-really-the-savior-of-frontend-css-28in</link>
      <guid>https://dev.to/zu/from-tailwind-css-to-unocss-is-atomization-really-the-savior-of-frontend-css-28in</guid>
      <description>&lt;h2&gt;
  
  
  Write in front
&lt;/h2&gt;

&lt;p&gt;Looking back at the past and traversing the previous dynasties, CSS was also one of the three frontend swordsmen of that time, and it was very impressive. With the leapfrog transformation of the front-end, CSS seems to have become a bit unknown in modern front-end development.&lt;/p&gt;

&lt;p&gt;It has to be said that before seeing &lt;code&gt;UnoCSS&lt;/code&gt;, I had not even heard of the concept of atomized CSS (ashamed, ashamed), and had not followed CSS related content for a long time.&lt;/p&gt;

&lt;p&gt;The concept of atomized CSS itself and the design of Tailwind CSS and UnoCSS are relatively simple. Here, we mainly want to talk about whether atomized CSS is a perfect solution in modern front-end and the correct direction to solve CSS problems.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atomic CSS
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Atomic CSS is the approach to CSS architecture that favors small, single-purpose classes with names based on visual function.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It sounds great, but the final implementation method is super simple. The core is to preset a large number of class styles, and try to simplify and simplify these class styles as much as possible. During the development process, you can directly write the preset class names in the DOM to quickly implement the styles, without the need to write a lot of simple and boring CSS styles each time, as shown in the following code:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Pre set a set of class lists first
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.m-10&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.p-5&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nc"&gt;.text-red&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
 &lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;more&lt;/span&gt;&lt;span class="o"&gt;....&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt; Write the class name directly in the dom during encoding to quickly implement styles
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"m-10 p-5 text-red"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    dom
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The styles in the preset class list have certain patterns, and developers can quickly grasp them through learning and use the &lt;strong&gt;combination&lt;/strong&gt; of multiple classes in the dom to quickly achieve results&lt;/p&gt;

&lt;p&gt;😮😮，Does it look a bit familiar? (The dead &lt;strong&gt;Bootstrap&lt;/strong&gt; attacked me), so do you think this is cold rice stir fry or pragmatism?&lt;/p&gt;

&lt;h2&gt;
  
  
  Tailwind CSS Widely popular
&lt;/h2&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%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2F87686cf54d274a43b3249e3ec65c521b~tplv-k3u1fbpfcp-zoom-1.image" 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%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2F87686cf54d274a43b3249e3ec65c521b~tplv-k3u1fbpfcp-zoom-1.image" alt="Cover image for 4 Reasons why I start using Tailwind CSS in every project" width="1000" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Github in [tailwindcss]（ &lt;a href="https://github.com/tailwindlabs/tailwindcss" rel="noopener noreferrer"&gt;https://github.com/tailwindlabs/tailwindcss&lt;/a&gt; ）So far, there are already '70.8K' stars, At first, I couldn't believe it was so popular, with over six million downloads per week for NPM.&lt;/p&gt;

&lt;p&gt;Tailwind CSS advocates for allowing you to quickly build websites without leaving HTML, and has many very practical &lt;strong&gt;advantages&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extreme encapsulation of classes to maximize reusability&lt;/li&gt;
&lt;li&gt;Various customizable configurations that are easy to expand&lt;/li&gt;
&lt;li&gt;Clear unreferenced CSS styles during construction to address the issue of CSS redundancy in production environments&lt;/li&gt;
&lt;li&gt;Comfortable responsive development experience&lt;/li&gt;
&lt;li&gt;Functions, instructions, layouts, animations ....and so on&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It almost covers all the headaches and uncomfortable development experiences that developers encounter in their daily native CSS development, so it is indeed a very practical tool. Tailwind CSS really benefits front-end developers.&lt;/p&gt;

&lt;p&gt;Tailwind CSS can be used as a PostCSS plugin in the front-end construction toolchain in combination with other preprocessing methods to optimize CSS production products.&lt;/p&gt;

&lt;h2&gt;
  
  
  UnoCSS
&lt;/h2&gt;

&lt;p&gt;Tailwind CSS has been widely popular in the past few years, and in the past two years, 'UnoCSS' has stood out again. Here, we need to first praise the icon, text, and background color gradient linkage theme on the UnoCSS official website. &lt;br&gt;
It's cool!!&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%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2Fdaef020f92b6418d9d2c1d40c6a640eb~tplv-k3u1fbpfcp-zoom-1.image" 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%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2Fdaef020f92b6418d9d2c1d40c6a640eb~tplv-k3u1fbpfcp-zoom-1.image" alt="Cover image for UnoCSS, Vite + Vue3 easy setup" width="1000" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;According to the author of UnoCSS, &lt;strong&gt;UnoCSS is not meant to replace Tailwind CSS, but rather to integrate atomized CSS more perfectly in the business from another perspective&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The author of UnoCSS is a member of the Vite team, and I believe it is precisely because he, as a developer of Vite, has a high sensitivity to engineering construction that UnoCSS was created to integrate atomized CSS with front-end engineering to the extreme.&lt;/p&gt;

&lt;p&gt;So what did UnoCSS do&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;On demand generation&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;Generate the classes that the business truly uses, and use them in both development and production environments&lt;/li&gt;
&lt;li&gt;Compared to Tailwind CSS, which only clears unreferenced code during the production phase, UnoCSS also achieves faster performance through file monitoring and on-demand transmission during the development phase (although it's already fast, even faster is always an improvement)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&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%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2Febdc4b812eee4893b4481b76e238881e~tplv-k3u1fbpfcp-zoom-1.image" 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%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2Febdc4b812eee4893b4481b76e238881e~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20230803213902695" width="697" height="307"&gt;&lt;/a&gt;&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%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2F2a921234ca34420ea9ed187cb65eb6b5~tplv-k3u1fbpfcp-zoom-1.image" 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%2Fp3-juejin.byteimg.com%2Ftos-cn-i-k3u1fbpfcp%2F2a921234ca34420ea9ed187cb65eb6b5~tplv-k3u1fbpfcp-zoom-1.image" alt="image-20230803213919428" width="724" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Highly flexible&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;UnoCSS positions itself as a CSS engine rather than a framework, so it should have an inclusion relationship with Tailwind CSS. UnoCSS serves as the rulemaker, while Tailwind CSS can serve as a set of presets&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;UnocssPlugin&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@unocss/vite&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;PresetTachyons&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@unocss/preset-tachyons&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;PresetBootstrap&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@unocss/preset-bootstrap&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;PresetTailwind&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@unocss/preset-tailwind&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;PresetWindi&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@unocss/preset-windi&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;PresetAntfu&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;@antfu/oh-my-cool-unocss-preset&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;plugins&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="nc"&gt;UnocssPlugin&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;presets&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="c1"&gt;// PresetTachyons,&lt;/span&gt;
        &lt;span class="nx"&gt;PresetBootstrap&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="c1"&gt;// PresetTailwind,&lt;/span&gt;
        &lt;span class="c1"&gt;// PresetWindi,&lt;/span&gt;
        &lt;span class="c1"&gt;// PresetAntfu&lt;/span&gt;
        &lt;span class="c1"&gt;// 选择其中一个...或多个！&lt;/span&gt;
      &lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="p"&gt;})&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;/li&gt;
&lt;li&gt;
&lt;p&gt;Simplify class naming&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight html"&gt;&lt;code&gt;// Distinguish lengthy calss by type for easier reading and understanding
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-blue-400 hover:bg-blue-500 text-sm text-white font-mono font-light py-2 px-4 rounded border-2 border-blue-200 dark:bg-blue-500 dark:hover:bg-blue-600"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Button
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

// Change to
&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; 
  &lt;span class="na"&gt;bg=&lt;/span&gt;&lt;span class="s"&gt;"blue-400 hover:blue-500 dark:blue-500 dark:hover:blue-600"&lt;/span&gt;
  &lt;span class="na"&gt;text=&lt;/span&gt;&lt;span class="s"&gt;"sm white"&lt;/span&gt;
  &lt;span class="na"&gt;font=&lt;/span&gt;&lt;span class="s"&gt;"mono light"&lt;/span&gt;
  &lt;span class="na"&gt;p=&lt;/span&gt;&lt;span class="s"&gt;"y-2 x-4"&lt;/span&gt;
  &lt;span class="na"&gt;border=&lt;/span&gt;&lt;span class="s"&gt;"2 rounded blue-200"&lt;/span&gt;
&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  Button
&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;


&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In terms of custom rules, UnoCSS provides more flexible static and dynamic matching rules&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Further optimization of compilation (such as no longer parsing AST), resulting in a further increase in production build speed&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;UnoCSS is equivalent to building a higher-level engine, and in the future, new atomic CSS frameworks can also be compatible, saving you the difficulty of choosing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Atomized CSS is not the savior of modern front-end CSS
&lt;/h2&gt;

&lt;p&gt;The characteristics and usage methods of Tailwind CSS and UnoCSS are not the main focus of this article. You can refer to the official website for specific details. Here, we mainly want to discuss&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Will atomized CSS from Tailwind CSS or UnoCSS be the best practice for modern front-end solutions to CSS problems&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I think the answer is no&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;From my direct perception, atomized CSS is more like an auxiliary utility tool than a solution to CSS problems. As an auxiliary tool, it can indeed provide great help in certain business scenarios or stages of business development, but from the perspective of the entire complex and ever-changing front-end business scenario, its capabilities are limited.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The most intuitive result is that when the complexity of the business increases to a certain stage, the cost-effectiveness of atomized CSS will sharply decrease, resulting in HTML code redundancy, poor readability, and difficulty in maintenance, which will directly affect business development.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Especially now, both Vue's single file components and React's functional components inject some JS logic into HTML. If CSS logic also needs to be injected through class name combinations, it would be too confusing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;However, Vue or React's respective componentization design ideas can solve the problem of code redundancy through their respective componentization splitting, making it suitable for various simple and complex business scenarios, which is a complete set of best practices. Atomized CSS cannot do componentization splitting, so as business complexity increases, code redundancy will occur sooner or later, which directly limits the popularity of such frameworks, So it cannot serve as the fundamental solution to front-end CSS issues&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;From a design perspective, atomic CSS also seems to be out of place with the current mainstream of componentization and functional programming.&lt;/p&gt;

&lt;h3&gt;
  
  
  Applicable scenarios
&lt;/h3&gt;

&lt;p&gt;In some simple business scenarios, atomic CSS does have significant advantages, such as rapid development of responsive H5, low business complexity in the backend system, and simple official website pages.&lt;/p&gt;

&lt;p&gt;In some complex business scenarios, such as complex C-end business, large systems are no longer suitable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reference Article
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://antfu.me/posts/reimagine-atomic-css" rel="noopener noreferrer"&gt;Reimagine Atomic CSS&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>css</category>
      <category>react</category>
      <category>vue</category>
    </item>
    <item>
      <title>Hello world</title>
      <dc:creator>zu</dc:creator>
      <pubDate>Mon, 04 Sep 2023 08:28:53 +0000</pubDate>
      <link>https://dev.to/zu/hello-world-ibf</link>
      <guid>https://dev.to/zu/hello-world-ibf</guid>
      <description>&lt;p&gt;Hi,I am ZU.&lt;br&gt;
I come from China.&lt;br&gt;
Thank &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>vue</category>
    </item>
  </channel>
</rss>
