<?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: Wolf Zhang</title>
    <description>The latest articles on DEV Community by Wolf Zhang (@zxhwolfe).</description>
    <link>https://dev.to/zxhwolfe</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%2F4100441%2F0c34a9fa-e278-4ec1-b58e-4885203f65e4.jpg</url>
      <title>DEV Community: Wolf Zhang</title>
      <link>https://dev.to/zxhwolfe</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zxhwolfe"/>
    <language>en</language>
    <item>
      <title>A five-minute test for any RAG assistant: two documents with conflicting dates</title>
      <dc:creator>Wolf Zhang</dc:creator>
      <pubDate>Sat, 12 Sep 2026 11:08:30 +0000</pubDate>
      <link>https://dev.to/zxhwolfe/a-five-minute-test-for-any-rag-assistant-two-documents-with-conflicting-dates-hb3</link>
      <guid>https://dev.to/zxhwolfe/a-five-minute-test-for-any-rag-assistant-two-documents-with-conflicting-dates-hb3</guid>
      <description>&lt;p&gt;Every RAG demo looks great with clean inputs. The failure mode that matters in production is quieter: the system answering fluently from the wrong evidence, or inventing the missing piece, and nobody noticing because the output &lt;em&gt;reads&lt;/em&gt; fine.&lt;/p&gt;

&lt;p&gt;A regression suite with fixed questions (LLM-as-judge grading, retrieval-vs-generation failure tagging) is worth building — but it has a blind spot: it measures the cases you thought to ask. Here is a five-minute manual test that complements it.&lt;/p&gt;

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

&lt;p&gt;Write two synthetic documents about the same event:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Document A&lt;/strong&gt; (older): "The policy change takes effect on March 1. Applies to the Standard plan only."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Document B&lt;/strong&gt; (current): "The policy change takes effect on March 15. Applies to all plans."&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Upload both, then ask questions whose correct answer depends on which document is current:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;"When does the policy change take effect?" — should cite Document B.&lt;/li&gt;
&lt;li&gt;"Does it apply to the Basic plan?" — only answerable from Document B, and only if the tool tells you which document it used.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What to check
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Current source citation.&lt;/strong&gt; Does the answer cite Document B, or blend the two dates into something plausible?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Missing-fact honesty.&lt;/strong&gt; Ask about something neither document covers ("who approved the change?"). A good system says it is not in the documents. A bad one interpolates a name.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Access boundaries.&lt;/strong&gt; If the tool supports per-user or per-file permissions, remove Document B and re-ask. The answer should degrade honestly, not silently fall back to Document A as if it were still authoritative.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The step most people skip
&lt;/h2&gt;

&lt;p&gt;Swap the dates and re-run: now Document A says March 15 and Document B says March 1. If the tool was passing by memorizing file order or filenames, it fails now. A system that genuinely resolves currency survives the swap.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters more than accuracy scores
&lt;/h2&gt;

&lt;p&gt;The failures this test catches are generation-side failures that &lt;em&gt;look&lt;/em&gt; correct — fluent answer, wrong provenance. They are invisible in retrieval metrics and dangerous in real workflows (meeting notes, policy Q&amp;amp;A, client research), where a confident wrong date costs more than an honest "not found".&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I use it
&lt;/h2&gt;

&lt;p&gt;I maintain a small public collection of open-source knowledge-base and RAG candidates (RAGFlow, AnythingLLM, and others) and run this test across them as a first-pass filter before anything deeper:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://useaistation.com/githubai/collections/enterprise-knowledge/" rel="noopener noreferrer"&gt;https://useaistation.com/githubai/collections/enterprise-knowledge/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Free to browse, no sign-in or install. It is a discovery aid — not a benchmark and not a license audit; passing this test is necessary, never sufficient.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Disclosure: I build AI Open Source Radar, the site hosting the collection linked above. This article was prepared with AI assistance; the test method is the point, and it works with any RAG tool you already use.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>rag</category>
      <category>testing</category>
      <category>llm</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Why I separated live discovery from the AI chat box</title>
      <dc:creator>Wolf Zhang</dc:creator>
      <pubDate>Sat, 29 Aug 2026 15:32:58 +0000</pubDate>
      <link>https://dev.to/aiworkstation/why-i-separated-live-discovery-from-the-ai-chat-box-12c9</link>
      <guid>https://dev.to/aiworkstation/why-i-separated-live-discovery-from-the-ai-chat-box-12c9</guid>
      <description>&lt;p&gt;Most AI workspaces start with the same useful primitive: a chat box. I kept one in AI Workstation because it is still the fastest interface for many research and writing tasks.&lt;/p&gt;

&lt;p&gt;But while using the product for day-to-day work, I found two questions that did not belong in a general chat flow:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What current topic is worth researching today?&lt;/li&gt;
&lt;li&gt;Which open-source AI project is worth evaluating now?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Both questions depend on live evidence. They also have different failure modes from ordinary drafting. A model can produce a fluent answer while using stale memory, mixing project identities, overlooking a license, or treating popularity as proof of quality.&lt;/p&gt;

&lt;p&gt;That led me to split AI Workstation into three layers: a general workspace, public discovery Radars, and installable Agent Skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 1: the workspace
&lt;/h2&gt;

&lt;p&gt;The main &lt;a href="https://useaistation.com/" rel="noopener noreferrer"&gt;AI Workstation&lt;/a&gt; handles everyday knowledge work: questions, links, documents, images, drafting, proofreading, reusable templates, and exports.&lt;/p&gt;

&lt;p&gt;The point is not to hide every operation behind one large prompt. It is to keep routine work accessible while letting tasks that need current data move into a more explicit flow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 2: public Radars for live discovery
&lt;/h2&gt;

&lt;p&gt;The first Radar is &lt;a href="https://useaistation.com/topic-radar/" rel="noopener noreferrer"&gt;Global Topic Radar&lt;/a&gt;. It is designed for creators and editors who need current candidates rather than generic content ideas. It keeps the topic lane, freshness, market context, evidence state, and original sources visible.&lt;/p&gt;

&lt;p&gt;The second is &lt;a href="https://useaistation.com/githubai/" rel="noopener noreferrer"&gt;Open-Source AI Radar&lt;/a&gt;. It is designed for developers and researchers comparing active AI projects. It presents dated rankings, categories, collections, and project cards with direct links to upstream repositories. Stars, forks, licenses, languages, and practical summaries are treated as research inputs.&lt;/p&gt;

&lt;p&gt;The important design choice is what the Radars do &lt;strong&gt;not&lt;/strong&gt; claim:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A topic score is not a prediction that a post will go viral.&lt;/li&gt;
&lt;li&gt;Project popularity is not a security audit or a quality guarantee.&lt;/li&gt;
&lt;li&gt;A generated summary does not replace the upstream repository or license text.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The Radars are intentionally usable without signing in. A visitor can inspect the current data before deciding whether the workflow is useful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Layer 3: Agent Skills as research contracts
&lt;/h2&gt;

&lt;p&gt;Discovery and research are different jobs. A Radar can show a promising lead, but an Agent still needs rules for what to do next.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://useaistation.com/topic-intelligence/" rel="noopener noreferrer"&gt;Topic Intelligence&lt;/a&gt; turns one current Radar item into a structured content brief. The output includes research questions, &lt;code&gt;must_verify&lt;/code&gt;, &lt;code&gt;avoid_claims&lt;/code&gt;, and visual requirements. Those fields matter more to me than a long generated script because they expose the work that remains uncertain.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://useaistation.com/ai-open-source-intelligence/" rel="noopener noreferrer"&gt;AI Open Source Intelligence&lt;/a&gt; handles the open-source side. It resolves project identity, examines license evidence, builds comparison matrices, and plans candidate stacks under explicit constraints. It also exposes nine read-only MCP tools so an Agent can retrieve public Radar data without executing code from third-party repositories.&lt;/p&gt;

&lt;p&gt;Both Skills are open source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/zxhwolfe-dev/aiworkstation-topic-intelligence" rel="noopener noreferrer"&gt;Topic Intelligence on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/zxhwolfe-dev/aiworkstation-open-source-intelligence" rel="noopener noreferrer"&gt;AI Open Source Intelligence on GitHub&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They can be inspected as normal repositories with &lt;code&gt;SKILL.md&lt;/code&gt;, scripts, references, Agent metadata, and release assets. The goal is to make the operating contract reviewable before installation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why not let the model decide everything?
&lt;/h2&gt;

&lt;p&gt;A model is very good at organizing a bounded set of material. It is much less reliable as an invisible authority for freshness, identity, provenance, or legal interpretation.&lt;/p&gt;

&lt;p&gt;Separating the layers makes failures easier to see:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If discovery is stale, inspect the Radar data and source timestamps.&lt;/li&gt;
&lt;li&gt;If a project was confused with a similarly named repository, inspect identity resolution.&lt;/li&gt;
&lt;li&gt;If a claim is not ready to publish, it should remain in &lt;code&gt;must_verify&lt;/code&gt; instead of being smoothed into confident prose.&lt;/li&gt;
&lt;li&gt;If an integration needs to read public data, keep it read-only rather than giving it execution privileges by default.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is also why I do not describe the system as a one-click content factory. Topic selection and early research happen here. Script review, asset production, publishing, and platform performance belong to later workflows, and performance is not something the Radar can guarantee.&lt;/p&gt;

&lt;h2&gt;
  
  
  The trade-off
&lt;/h2&gt;

&lt;p&gt;The product is less dramatic to explain when each component has a narrow job. There is no single button that claims to discover a trend, verify every fact, generate production assets, publish the result, and predict its reach.&lt;/p&gt;

&lt;p&gt;The benefit is that the boundaries are inspectable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the workspace handles general work;&lt;/li&gt;
&lt;li&gt;the Radars surface current leads and sources;&lt;/li&gt;
&lt;li&gt;the Skills structure repeatable Agent-side research;&lt;/li&gt;
&lt;li&gt;the user keeps final judgment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That separation is the central idea behind AI Workstation today. I would especially value feedback from people building Agent workflows: which parts of live discovery should stay outside the model, and which research checks should be enforced as part of the Skill contract?&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This article was drafted with AI assistance and reviewed, revised, and published by the builder. Product claims and links were checked against the current public pages before publication.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>ai</category>
      <category>agents</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
