<?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: 左长</title>
    <description>The latest articles on DEV Community by 左长 (@_8def5737f8730de95bc297).</description>
    <link>https://dev.to/_8def5737f8730de95bc297</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%2F4153405%2F71530cff-0325-48d0-a2fa-a20cf30bae08.png</url>
      <title>DEV Community: 左长</title>
      <link>https://dev.to/_8def5737f8730de95bc297</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/_8def5737f8730de95bc297"/>
    <language>en</language>
    <item>
      <title>Before You Pay for an AI Tool, Check These Five Things</title>
      <dc:creator>左长</dc:creator>
      <pubDate>Thu, 01 Oct 2026 10:44:40 +0000</pubDate>
      <link>https://dev.to/_8def5737f8730de95bc297/before-you-pay-for-an-ai-tool-check-these-five-things-31p0</link>
      <guid>https://dev.to/_8def5737f8730de95bc297/before-you-pay-for-an-ai-tool-check-these-five-things-31p0</guid>
      <description>&lt;p&gt;Most AI tool roundups answer one question: &lt;em&gt;what does this tool do?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;That is the easy question. The expensive one is what happens after you pay - and almost nobody writes that down.&lt;/p&gt;

&lt;p&gt;Here are the five checks I run before subscribing to anything. Ten minutes, and they have saved me more than any discount code.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The price at your usage level, not the entry tier
&lt;/h2&gt;

&lt;p&gt;Pricing pages open with the cheapest tier and a small asterisk. The number that matters is the one you will actually be billed.&lt;/p&gt;

&lt;p&gt;Work out your real usage first - seats, tokens, minutes of transcription, renders - then find that row of the table. A plan that looks like $12/month is regularly $60 once you cross the included quota. If a vendor will not publish an overage rate, treat that as the answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. What breaks when the free tier ends
&lt;/h2&gt;

&lt;p&gt;Many tools are generous until they are not. Before paying, check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is the free tier a trial that expires, or a permanent free plan that is throttled?&lt;/li&gt;
&lt;li&gt;Does the throttle hit a limit you will cross in a normal week?&lt;/li&gt;
&lt;li&gt;Can you keep the work you made on the free tier?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Whether you can get your data out
&lt;/h2&gt;

&lt;p&gt;The single most useful line on any listing is the export format.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CSV or JSON export: good.&lt;/li&gt;
&lt;li&gt;API access to your own data: better.&lt;/li&gt;
&lt;li&gt;Contact support to request an export: that is a hostage situation with extra steps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the answer is not in the docs, that tells you something too.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. What you lose when you stop paying
&lt;/h2&gt;

&lt;p&gt;Downgrades are rarely clean. Some tools keep your data read-only. Some delete it after 30 days. Some keep billing for seats you thought you removed.&lt;/p&gt;

&lt;p&gt;Search the docs for downgrade, cancel and data retention before you buy - not after.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Whether the listing is current
&lt;/h2&gt;

&lt;p&gt;This market replaces its own top ten roughly every quarter. A review from eighteen months ago is describing a different product. Check the last-updated date on anything you read, including this post.&lt;/p&gt;




&lt;p&gt;None of this is exotic. It is the boring half of the decision, and it is the half most directories skip, because feature lists are easier to write than pricing tables.&lt;/p&gt;

&lt;p&gt;I maintain &lt;a href="https://www.haiai123.com/en" rel="noopener noreferrer"&gt;haiai123&lt;/a&gt;, an independent directory of 1,487 AI tools across 17 categories. Every listing records which step of a workflow the tool replaces, what it costs per month at typical usage, and how you get your data out. Alongside the directory the site publishes model capability, API usage and AI app popularity leaderboards, each labelled with its data source and refresh date.&lt;/p&gt;

&lt;p&gt;If you run a sixth check before you subscribe, I would like to hear it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>saas</category>
      <category>tools</category>
    </item>
    <item>
      <title>Wiring an LLM API Into a Product: 8 Things That Decide Your Bill</title>
      <dc:creator>左长</dc:creator>
      <pubDate>Thu, 01 Oct 2026 06:19:45 +0000</pubDate>
      <link>https://dev.to/_8def5737f8730de95bc297/wiring-an-llm-api-into-a-product-8-things-that-decide-your-bill-1gjn</link>
      <guid>https://dev.to/_8def5737f8730de95bc297/wiring-an-llm-api-into-a-product-8-things-that-decide-your-bill-1gjn</guid>
      <description>&lt;p&gt;Wiring an LLM API into a product looks like a two-day job. The first version usually is. The part that takes longer is everything around the call itself, and that is where the money leaks.&lt;/p&gt;

&lt;p&gt;This is the checklist I would hand someone who is about to put a model behind a real feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Count output tokens, not just input
&lt;/h2&gt;

&lt;p&gt;Teams budget with the input price, then get an invoice that is several times higher. Output tokens usually cost multiples of input tokens, and chatty assistants produce far more output than input.&lt;/p&gt;

&lt;p&gt;Two habits fix this: cap &lt;code&gt;max_tokens&lt;/code&gt; per call, and log input and output counts separately from day one. A single combined number hides the line you actually need to watch.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Make retries explicit and cheap
&lt;/h2&gt;

&lt;p&gt;A malformed response still costs tokens. If your client retries three times by default, a broken prompt is billed four times.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set an explicit retry count, not the library default.&lt;/li&gt;
&lt;li&gt;Only retry on transport errors and rate limits, not on every exception.&lt;/li&gt;
&lt;li&gt;Validate the shape of the response before you use it, so you retry less.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. Turn on prompt caching if your prompt has a stable prefix
&lt;/h2&gt;

&lt;p&gt;If every request carries the same system prompt, tool definitions and documentation, you may be paying for it repeatedly. Providers that support prefix caching charge less for the repeated part. This is usually the single largest line item you can cut without touching quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Decide what happens when the model is slow before it is slow
&lt;/h2&gt;

&lt;p&gt;Streaming helps perceived speed but makes errors harder to handle: you have already sent half an answer when the connection drops. Pick a rule now - either you stream and buffer for the client, or you do not stream and hold a timeout budget.&lt;/p&gt;

&lt;p&gt;Write the fallback down: smaller model, cached answer, or an honest "try again". "Nothing" is also a choice, just an expensive one.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Version your prompt like code
&lt;/h2&gt;

&lt;p&gt;Prompts change behaviour in ways that are invisible in a diff. Keep them in files, review them, and record which version produced which request. When quality drops, the first question is always "what changed", and you want an answer that is not a guess.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Build a tiny eval set before you tune anything
&lt;/h2&gt;

&lt;p&gt;Twenty real examples with expected properties beat a hundred vibes. You do not need a framework. A JSON file and a script that prints a pass rate is enough to stop you from shipping a regression because it read better in a demo.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Track cost per feature, not cost per account
&lt;/h2&gt;

&lt;p&gt;An account that uses chat heavily and one that runs a nightly batch job are not comparable. Attribute spend to the feature that caused it. That is the number that tells you whether a feature is worth keeping.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Have an exit
&lt;/h2&gt;

&lt;p&gt;Models change price, get deprecated, or get worse. Keep the call behind one interface, and keep the prompt portable. If swapping providers is a two-week project, that is a business risk, not an engineering preference.&lt;/p&gt;

&lt;h2&gt;
  
  
  The short version
&lt;/h2&gt;

&lt;p&gt;Cap your output, retry on purpose, cache the prefix, budget the timeout, version the prompt, measure per feature, and keep the door open.&lt;/p&gt;

&lt;p&gt;I keep pricing and capability notes for the models I use at &lt;a href="https://www.haiai123.com/en/rankings/models/week" rel="noopener noreferrer"&gt;haiai123&lt;/a&gt; - 1,487 tools across 17 categories, with the data source and refresh date printed on every table.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>How I Screen an AI Coding Agent Before Letting It Near My Repo</title>
      <dc:creator>左长</dc:creator>
      <pubDate>Thu, 01 Oct 2026 02:34:30 +0000</pubDate>
      <link>https://dev.to/_8def5737f8730de95bc297/how-i-screen-an-ai-coding-agent-before-letting-it-near-my-repo-40h3</link>
      <guid>https://dev.to/_8def5737f8730de95bc297/how-i-screen-an-ai-coding-agent-before-letting-it-near-my-repo-40h3</guid>
      <description>&lt;p&gt;Every week another "autonomous AI coding agent" launches, and every week someone I know lets it loose on a production repository, then spends the evening reviewing a 900-line diff that touches files nobody asked it to touch.&lt;/p&gt;

&lt;p&gt;The fix isn't a better benchmark table. It's a cheap trial.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 20-minute trial
&lt;/h2&gt;

&lt;p&gt;Pick one function you know well - ideally slightly messy, with a couple of edge cases - and give the agent exactly one instruction:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Add input validation to &lt;code&gt;parseConfig&lt;/code&gt; and a test that covers the empty-string and null cases. Don't change anything else."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then watch four things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Did it ask anything?&lt;/strong&gt; A good agent asks when the requirement is ambiguous. A bad one invents a spec.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Did the diff stay in scope?&lt;/strong&gt; One function and one test file means one function and one test file.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Did it actually run the test?&lt;/strong&gt; Not "the test should pass" - running it and showing output.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;What did it do when the test failed?&lt;/strong&gt; Stopping and reporting beats thrashing for six minutes.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Six things worth checking before you commit to a tool
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Plan before edit.&lt;/strong&gt; You want to see the intended change list before anything is written to disk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Permission scoping.&lt;/strong&gt; Can it run shell commands? Which ones? Can it read &lt;code&gt;.env&lt;/code&gt; files, SSH keys, or your cloud credentials? A sandbox or an approval prompt isn't friction - it's the whole safety model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Blast radius.&lt;/strong&gt; How many files does a typical task touch? An agent that "helpfully" reformats your project while fixing a bug is worse than useless in a team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Failure behaviour.&lt;/strong&gt; Retry loops that quietly change the goal are the single most expensive failure mode. You want loud, early, specific failure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Context strategy.&lt;/strong&gt; Does it index the repository, or only see the files you mention? This decides whether it will follow your existing patterns or happily introduce a second HTTP client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Cost per completed task.&lt;/strong&gt; Token pricing tells you almost nothing. Divide your monthly spend by merged pull requests.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I stopped caring about
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Which model is inside.&lt;/strong&gt; The wrapper, the context management, and the permission model matter more than the logo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark scores.&lt;/strong&gt; Coding benchmarks mostly measure single-shot answers to self-contained puzzles. Your repository is neither.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The word "agentic".&lt;/strong&gt; It's a marketing term until you've seen it handle a failing test.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Where I keep the shortlist
&lt;/h2&gt;

&lt;p&gt;Anything that passes the trial goes on a short list with a note about what it's good at: refactors, tests, glue code, migrations. I keep the longer teaching version of this checklist - the one with the exact prompts - at &lt;a href="https://www.haiai123.com/en/blog/how-to-choose-an-ai-coding-agent-beginner-checklist" rel="noopener noreferrer"&gt;haiai123's beginner guide to choosing an AI coding agent&lt;/a&gt;, and I check the &lt;a href="https://www.haiai123.com/en/rankings/coding" rel="noopener noreferrer"&gt;coding leaderboard&lt;/a&gt; before any of it to see how the underlying models are moving.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rule that actually keeps quality up
&lt;/h2&gt;

&lt;p&gt;Treat the agent as a very fast junior developer who has never read your codebase conventions and forgets everything overnight. You wouldn't merge a junior's branch without reading it, and you wouldn't let one run &lt;code&gt;rm -rf&lt;/code&gt; unsupervised. The agent changes the speed of writing code - not the standard for shipping it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>devtools</category>
    </item>
  </channel>
</rss>
