跳到正文
DEV Community· daniel·· 4 小時前AI 評分50

我不再替專案改名字,現在交由 AI 智能體處理

I gave up naming my projects. My agents do it now.

AI 導讀

namematch 讓用戶貼上 GitHub 儲存庫連結或 .md 檔案,回答幾條問題後,由 AI 智能體為專案建議名稱、檢查網域是否可用,並按對話內容修改名稱。它由 6 個 Mastra 智能體組成,使用 Gemma 4 31B 和 Gemma 4 26B;程式碼已開源,用戶亦可透過 Ollama 在本機執行 Gemma。

正文

This is a submission for the Hacktoberfest Open-Source AI Challenge Week 3: Slow and Steady

What I Built

I SUCK at naming things. Every project of mine ends up with a placeholder name. If I want a seriously good name, I often spend a lot of time thinking of it and sometimes still cannot come up with anything nice >_<

So I built namematch. Paste a GitHub repo link (or a .md file), answer a few quick questions, and a team of AI agents comes up with names, checks if the domains are free, and lets you chat to tweak them. It currently checks .tech, .com, .dev, .app and .ai.

It's for people who love building. Developers, non-technical makers, vibe coders, LITERALLY anyone :). The time you save on naming should go into the product and the code instead.

Demo

Live: namematch.tech

The domain is only a few days old, so some networks (like my school wifi) still block it. If it doesn't load, try mobile data or another wifi, or use the backup link: nammit.onrender.com

Code

namematch

Live: https://namematch.tech

Paste your project, get name ideas, and see which domains are free.

What it does

You paste a GitHub repo link or a .md file and answer a few quick questions. A team of AI agents then suggests names for your project and checks if the domains are available (.com, .dev, .app, .tech, .ai). Then you chat with it to refine the names, as many rounds as you like.

This app is for developers who have built something and got stuck on what to call it. The vibe is playful and plain-spoken: a colorful, chunky UI, short answers, and a live log that shows what each agent is doing.

How it works

Architecture

Six agents, each with one job:

  • Supervisor: reads your project, pre-fills the questions, plans which namers to use, and picks the best 5 names.
  • Professional namer: credible, brandable names…

How I Built It

Architecture

namematch is a team of 6 Mastra agents, all running on Gemma 4:

Agent Job
Supervisor Reads your project, pre-fills the questions, picks which namers to use, picks the final names
3 namers Professional || Short & cool || Random & fun. Only the ones the Supervisor picks run
Domain checker If a name is taken, suggests a variant
Feedback Reads your chat and tweaks the names

3 Mastra workflows in src/mastra/workflows to run the steps:

  • analyze-project.ts: analyze the input project
  • generate-names.ts: generate names (namers run in parallel)
  • refine-names.ts: refine the names based on feedback

=> Workflows decide the steps and the agents make the creative calls. I didn't let agents call each other, because plain workflow code is more predictable and I wasn't sure how reliable Gemma is at multi-step tool calling.

  • Gemma 4 31B runs the Supervisor and Feedback agent.
  • Gemma 4 26B runs the namers and the Domain checker, since it's faster. Every agent returns JSON that gets checked with zod, with one retry if it's wrong.

Domain checks aren't actually an agent. They're plain code that asks the registries directly (RDAP), so they're fast and always right about being taken or available.

The rest: Hono server, React + Vite UI, hosted on Render, traced with Sentry.

Why Does Open Innovation Matter?

Bring your own namers. The code is open and the namers are just Mastra agents. Add one in your own style (puns, Latin roots, whatever you always go for), register it, and it joins the team. A closed naming tool can't do that.

Gemma isn't stuck in one place. I run it on Google's free tier. Great, until it isn't: the free tier caps tokens per minute, and my early runs kept failing with "the namers didn't come up with any names". My retries were all firing inside the same rate-limit window. The fix was to wait as long as Google says.

=> But the weights are open, so the same agents can also run on your own machine with Ollama, with no cap. (I haven't tested that mode yet, so it's "possible", not "proven".)

Domain checks use open data. RDAP is the registries' own public lookup. No API key, no paid domain API.

Note. my hosted app sends your project description to Google’s API. But since Gemma is open-weight, you can run namematch with Gemma on your own laptop through Ollama, so your description never leaves your machine (setup in the repo README)

The Lazy Payoff

Naming takes hours of thinking. I'd rather spend those hours making the product and the code quality better.

But honestly, it's not instant. A round takes about a minute or two on the free tier, and having a good name for your app might take a few rounds of chatting. But talking to an agent beats staring at a blank page and checking domains one by one. It's a lot more comfortable I assure :)

How I use Sentry to reduce the agent's latency

I added Sentry right after the first full run. Every run is a trace: the workflow, each agent, each model call and each domain lookup. For every call I can see:

  • how long it took
  • tokens in and out
  • errors and retries

Cost shows $0, because Gemma has no price in Sentry and I'm on the free tier, so I tracked tokens instead.

Before

Tip: click any screenshot to see it in full quality.

All runs

Click to open the trace details
Naming run
Feedback run

  • Generating names took almost 5 minutes (4.65 to 4.82 min) and 16K to 18K tokens.
  • A feedback round took 2 to 4 minutes.
  • With the analyze step, one round of naming took about 8 to 10 minutes.

(The top 3 rows in the list are my first runs after the fix. You can already see the drop: 2.44 min, 6.1K tokens.)

Inside the traces:

  • The namers were slow. Each namer call took 1.35 to 1.80 minutes and 4.2K to 6.1K tokens, just to return a handful of names. The names themselves are a few hundred tokens of JSON. The rest was thinking.
  • The domain checker was even worse. In the feedback run it took 1.95 minutes and 5.6K tokens to suggest a few name variants.
  • The domain lookups were fine. They're plain code, and tiny next to the model calls.
  • The free tier threw 500 errors. Each one added a retry.

Without per-call token counts, I would have blamed Google or the domain lookups.

The fix: turn the thinking down

Gemma 4 only accepts two thinking settings: "minimal" (off) and "high" (on, the default). Anything in between returns an error. On one namer call:

  • thinking on: 79 s, about 3,300 thinking tokens
  • thinking off: 5 s, zero

So:

  • Thinking off: the namers, the domain checker, the Supervisor's analyze step.
  • Thinking on: the Supervisor's plan and pick, and Feedback. Turning it off there let weaker names through.

After

Tip: click any screenshot to see it in full quality.

All runs

Click to open the trace details
Naming run
Feedback run

  • Namer: 6.9 s and 727 tokens (was 1.35 to 1.80 min and 4.2K to 6.1K).
  • Domain checker: about 3 s and under 500 tokens (was 1.95 min and 5.6K).
  • Feedback call: 1.2 min and 2.2K tokens (was 1.92 min and 3.8K).
  • No errors in the latest runs.
Before After
Analyze 1.2 to 1.8 min 7 to 33 s
Generate names 4.7 to 4.8 min 1.4 to 2.7 min
Tokens per generate 16K to 18K 3.6K
Feedback round 2.2 to 3.9 min 42 s to 1.3 min
Tokens per feedback 2.8K to 9.4K 1.7K to 2.6K

One round of naming went from about 8 to 10 minutes down to 2 to 5.

What's still slow: the Supervisor, because I kept thinking on there. In the after generate trace, its plan and pick take 2.5 of the 2.71 minutes. Its time also jumps around a lot on the free tier: in the before trace, the same two steps took 1.3 minutes. That's the trade I chose: a bit slower, better names.

ABSOLUTE CINEMA ✋🗿🤚: I used my own app to rename itself :)

Round 1 Round 7
round 1 round 7

Click either screenshot to see it in full quality.

The original name was Nammit, "name it" said fast. At the end I ran the app on its own repo, with only .tech turned on, so every green pill was a name I could actually claim.

It took seven rounds of chatting. The first names were very literal, then they got invented, then I slightly tweaked it toward two-word pairings that sound good as "dot tech". In round 7 it handed me NamePicker, NameFinder, NameChoice, NameSelect and NameMatch, all with a free .tech.

So Nammit is now namematch (yes, lowercase), live at namematch.tech. I guided it a lot. That's the point of the chat.

Prize Categories

Best Use of Mastra: 6 agents, 3 workflows

Best Use of Sentry Agent Tracing: traces for every agent and model call, used to cut latency

Best Use of a .tech Domain: namematch.tech, named by the app itself

Best Use of Gemma: Gemma 4 31B and 26B power every agent

Best Use of Render: hosts the whole app, agents and UI

來源:DEV Community · dev.to