Zolo × Qloo:學會品味的機器幽靈
Zolo Qloo — The Ghost That Learned to Taste
Zolo × Qloo 是一個對話式文化探索智能體,會把用戶喜愛的藝人、電影、書籍、電視節目或播客交由 Qloo 搜尋及分析文化關聯,再以結果卡片呈現可核實的項目。系統使用 Llama 3.3 70B(FP8)規劃意圖及解釋證據,明確禁止模型自行生成推薦;每張結果卡均來自 Qloo。探索模組以開源方式提供,並設有對話記憶、語音輸入及朗讀功能。
Entry for the Hacktoberfest Open-Source AI Challenge, Week 4: "Ghost in the Machine" — submitted on Día de los Muertos.
Try it live: https://zolo-qloo-hackathon.eddyflores100.workers.dev/taste
Taste is the part of us that outlives us
Día de los Muertos is when the living set out photos and candles for the dead and remember what they loved. It is the right week to admit something about taste: it is the most personal thing we have, and it does not end with us. The songs play, the movies get rediscovered, the books change hands. Preferences outlive their owners and keep shaping what everyone finds next.
That is the séance this project performs. You tell a machine one thing you love — and the machine answers with real, verifiable connections drawn from the recorded affinities of millions of listeners, watchers and readers. Many of the people whose taste shaped that answer are gone. Their preferences are still in the graph, still pointing the living toward the next thing to love. That is a ghost in the machine in the most literal sense I know: the accumulated taste of the past, animating a recommendation engine, speaking back to you in your browser.
What I built
Zolo × Qloo is a conversational cultural discovery agent. You type or dictate a favorite — an artist, movie, book, TV show or podcast — and where you want to travel from it. Then:
-
Workers AI (the open-weight
@cf/meta/llama-3.3-70b-instruct-fp8-fast) extracts the discovery intent as strict JSON, or asks a clarifying question in your language. It can also hold a follow-up conversation with the last six messages. - Qloo Search resolves your favorite to a real entity — and shows you the matched seed name so you can check it before trusting the trail.
- Qloo Insights walks the cultural graph from that entity and returns the audience affinities — real entities, displayed as result cards.
- Zolo reads the summary aloud (browser speech), and offers category follow-up buttons: from Radiohead to movies, from Spirited Away to books, from The Bear to artists.
One rule is carved into the system prompt and I want to quote it exactly: "No recommendations: those must come from Qloo." The model plans intent and explains evidence; only Qloo-returned entities become result cards. The generative ghost is allowed to listen and translate — it is not allowed to invent.
The verified run from 2026-10-28: "I love Radiohead. Find me movies." → seed Radiohead, eight real films, including Children of Men, Being John Malkovich, Moon and Adaptation. I re-ran it live today while writing this post; same trail, same provenance badges (Qloo Search ✓ → Qloo Insights ✓).
The ghost that was already in the machine
Full disclosure, because the judges can read the README anyway: Zolo existed before this challenge. It is my standing virtual assistant — a pre-existing agent persona with its own codebase. For the challenge window (repo created 2026-10-29, module verified 2026-10-28), I built the ghost a new sense: a standalone, independent Cloudflare Worker module that adds cultural discovery — intent planning, Qloo search and insights, conversation memory, dictation and spoken playback, manual category controls, a surprise prompt, and reproducible tests. The pre-existing assistant was not created during the event; the discovery module was, and that is what this entry is.
That is my reading of the theme, honestly held: the ghost in the machine is not the new code you write — it is the agent that was already there, waiting for its next faculty. This week, the ghost learned to taste.
Why open-source AI matters for this project
The only generative component runs on an open-weight model (Llama 3.3 70B, FP8, served by Cloudflare Workers AI). For a discovery agent, that matters more than it sounds:
- The most dangerous component is auditable. An intent planner is exactly where a closed recommender would quietly insert its own suggestions. Here you can read the planner's contract in the repo: strict JSON, a clarify route when intent is ambiguous, and the explicit prohibition on generating recommendations. Open weights + open prompt + open orchestration = the claims are checkable, not vibes.
- Grounding over generation. Open-source AI culture taught me the discipline this project runs on: the model summarizes evidence, it never becomes the evidence. Every card you see is a Qloo entity with provenance badges. If the model misbehaves, the cards stay honest and the summary is bounded at 320 tokens.
- The whole chain is inspectable: an 85-line Worker, fixture-based tests, redacted errors, server-side secrets. Nothing about the behavior is hidden behind a proprietary recommendation layer.
Open innovation note: the Qloo hackathon harness was available for this event; this project deliberately calls the API directly with its own orchestration, so the interesting parts are all in the open.
Engineering details worth admitting
- Intent history is bounded (last 6 messages, 700 chars each) and model calls are time-boxed (14s) — a chatty ghost does not become an expensive ghost.
- Rate limiting is best-effort per isolate (12 req/min/IP); the API key never reaches the browser; errors are redacted and a provider outage produces an error message, never invented recommendations.
- Search resolves an exact-name match or the first candidate; ambiguity is surfaced to you ("Check the match before trusting the trail").
- Tests cover orchestration, structured model output, invalid input, missing configuration, cross-origin behavior and redacted errors, using fixture upstream responses — no live API needed to run the suite.
Limitations
Affinity is evidence about audiences, not a prediction of your behavior. Availability varies across category pairs, and a misparsed intent is always possible — which is why the clarify route exists. No taste profile is saved; history lives in tab memory. The model summary is supplementary and bounded.
Links
- Live demo: https://zolo-qloo-hackathon.eddyflores100.workers.dev/taste
- Source (MIT): https://github.com/alicelabs-llc/zolo-qloo-agent
- Qloo hackathon submission: https://devpost.com/software/zolo-x-qloo-good-taste-travels
This Día de los Muertos, light a candle for your favorites: tell the machine about them, and follow where the dead and the living point next.
來源:DEV Community · dev.to
