🌏 繁體中文版
Today's Highlight
Today, trending repos and new releases are saying the same thing: how to make agents burn fewer tokens. caveman cuts word count by talking (and reading) less, xerj skips reading files line by line in favor of an index, and Haystack moves old tool results into an external store instead of summarizing them away. Different paths, same destination — but each solution is cleaner than the last.
Trending Repos
JuliusBrussee/caveman ⭐ 112,360 (+530)
GitHub · Go · Apache-2.0
- What it is: A skill-plus-proxy combo that makes coding agents "talk like a caveman" and compresses logs, JSON and test output before the agent reads them, without touching the code itself.
- Why it matters: Version 4.0 splits the project into six parts, adding Auto (picks the model and reasoning effort automatically, 54% cheaper at the same score) and Blocks (the agent keeps the scripts it wrote and reruns them — one test run dropped from 397 tokens to 76). A paper from Adobe Research cites this repo, and JetBrains and Elastic Labs have each run independent A/B tests that corroborate the results.
- Stack: Go CLI plus an npm package, supporting 30+ agents including Claude Code, Codex, Gemini CLI and OpenCode
- Getting started: Low —
npx @caveman-ai/cli@latestinstalls it in one line, using your own Claude Pro/Max login and keys
debpalash/VoiceStudio ⭐ 68,575 (+3,027)
GitHub · Python · Open source
- What it is: An open-source, fully local ElevenLabs alternative covering voice cloning, voice design, video dubbing, dictation, transcription and audiobook creation, in 646 languages.
- Why it matters: It gained 3,027 stars today alone — the fastest climb of today's candidates. Running fully locally means voice data never leaves the machine, which matters for privacy-sensitive use cases like dubbing or recorded customer-service calls, and it fills a long-standing "local-only" gap in the open-source voice AI space.
- Stack: Python
- Getting started: Medium — running voice models locally usually needs a GPU; no public data yet on a hosted option
xerj-org/xerj ⭐ 5,432 (+725)
GitHub · Rust · Apache-2.0
- What it is: A local AI search index written in Rust. One command indexes an entire folder — code, docs, logs, PDFs — so agents search instead of reading files line by line; its interface is Elasticsearch-compatible, so existing clients work unchanged.
- Why it matters: Its flagship use case is "reference coding" — have the agent find the open-source implementation closest to the task at hand, index it, and reuse how that project solved the problem before writing new code. The author's controlled study cut output tokens 2.7x at the same 16/16 solve rate; community reports put everyday savings closer to 5x.
- Stack: Rust, a single static binary, wires into Claude Code/Cursor via MCP plus a skill in one command
- Getting started: Medium — it binds only to
127.0.0.1by default, but--insecuremode turns off TLS and API-key auth entirely; that's meant for one user on one dev machine, and production use needs to follow the documented trust boundary
lightseekorg/tokenspeed ⭐ 2,405 (+25)
GitHub · Python · Apache-2.0
- What it is: An LLM inference engine maintained by the non-profit LightSeek Foundation, with hardware and engineering support credited to NVIDIA and AMD, built for agentic workloads.
- Why it matters: Its architecture splits the control plane (a C++ finite-state machine that enforces safe KV-cache resource management at compile time) from the execution plane (Python, for fast iteration) — a design the PyTorch Foundation's ecosystem blog specifically called out. It isn't backed by any single commercial vendor, which is unusual in a field of vendor-driven inference engines.
- Stack: C++ control plane plus a Python execution plane, with a custom MLA kernel
- Getting started: Medium — built for production inference clusters, not a single-machine toy
Notable Releases
DSPy 3.4.1
- Key changes:
dspy.GEPAnow defaults to a structuredInstructionProposerthat calls the reflection LM through aJSONAdapter, keeping inputs likedspy.History, tool trajectories anddspy.Imagestructured instead of flattened into text;dspy.RLM's REPL can nowimport dspyitself and build sub-agents (Predict,ChainOfThought,ReActV2, or a nestedRLM) that share the parent'smax_llm_callsbudget. - Breaking changes: GEPA's reflection LM must now return JSON;
dspy.ReActV2signatures can no longer usehistoryortoolsas input field names; progress files saved on 3.4.0 with a nullScoreno longer load. - What it means for you: if you've optimized with GEPA, results may differ from 3.4.0 even with the same seed after upgrading — rerun your evaluation baseline before comparing.
Haystack v3.4.0
- Key changes: A new
ToolResultOffloadCompactor— when context compaction triggers, it doesn't summarize or drop old tool results; it writes them to an externalToolResultStoreand leaves a reference in their place, which the agent can read back in full with a dedicated read tool when needed. Haystack also adds official Python 3.15 support and drops Python 3.10, which is now past end-of-life. - Breaking changes: Several splitters changed how
page_numberis computed — a chunk spanning a page break now reports the page it starts on rather than the page it ends on, so documents containing form feeds need re-indexing to get correct page numbers;ChatMessage.from_openai_dict_formatnow raises aValueErroron image content referenced by URL or files referenced byfile_id, instead of silently dropping them. - What it means for you: if you display or store
page_numberanywhere, re-index documents with page breaks after upgrading; anywhere you forward OpenAI-format messages with URL-referenced images, switch to downloading and inlining them as base64 first.
Today's Takeaway
I used to think "saving tokens" meant shortening output or switching to a cheaper model. Watching xerj replace line-by-line grep with an index, and Haystack replace summarization with an external store, made it click: the cleaner move is to keep unnecessary things out of context in the first place, rather than cramming it full and then figuring out how to compress it back down.