惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
B
Blog
T
The Blog of Author Tim Ferriss
J
Java Code Geeks
腾讯CDC
D
Docker
G
Google Developers Blog
D
DataBreaches.Net
雷峰网
雷峰网
Blog — PlanetScale
Blog — PlanetScale
S
SegmentFault 最新的问题
The Cloudflare Blog
有赞技术团队
有赞技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
量子位
美团技术团队
aimingoo的专栏
aimingoo的专栏
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Engineering at Meta
Engineering at Meta
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

Hacker News - Newest: "AI"

AI can't read an investor deck AI as an attorney? Student uses ChatGPT, Gemini to sue UW over alleged racial discrimination Hacking MCP Servers in AI Systems – The Rug Pull: Tool Changes After Approval GitHub - MeepCastana/KubeezCut: Free Web based video editor Can AI judge journalism? A Thiel-backed startup says yes, even if it risks chilling whistleblowers Coming soon: 10 Things That Matter in AI Right Now DARPA built an AI to fact-check enemy weapons claims What explains heterogeneity in AI adoption? When AI Meets Muscle: Context-Aware Electrical Stimulation Promises a New Way to Guide Human Movements - Department of Computer Science AI Changed How We Build. It Did Not Change What Matters. Linux rules on using AI-generated code - Copilot is OK, but humans must take 'full responsibility for the… Meta spins up AI version of Mark Zuckerberg to engage with employees Code Mode: Let Your AI Write Programs, Not Just Call Tools | TanStack Blog GitHub - Delavalom/graft: Go framework for building AI agents. Type-safe tools, multi-provider (OpenAI, Anthropic, Gemini, Bedrock), zero vendor SDKs. India's TCS tops estimates, says new AI models did not dent services demand Gen Z's fading AI hype Strong feeling: we are in a folded AI reality GitHub - machinarii/total-recall-catalog: A reference catalog of latest knowledge retrieval, memory & RAG systems GitHub - mensfeld/code-on-incus: Give each AI agent its own isolated machine with root, Docker, and systemd. Active defense detects and stops threats automatically.. Quantization, LoRA, and the 8% Problem: Benchmarking Local LLMs for Production AI Iran war: We spoke to the man making Lego-style AI videos that experts say are powerful propaganda Powell, Bessent discussed Anthropic's Mythos AI cyber threat with major U.S. banks GitHub - immartian/bellamem: Persistent belief-graph memory for AI agents. Retrieves decisive context by importance — not recency, not RAG, not /compact. recursive-mode: The Repo-Native Operating System for AI Engineering After the attack on Sam Altman's home, will AI CEO's go on the offensive? The biggest advance in AI since the LLM Opus 4.6 vs GPT 5.4 One Prompt Unity World Generation Test “AI polls” are fake polls Client Challenge Can AI be a 'child of God'? Inside Anthropic's meeting with Christian leaders
GitHub - ron3899/aftercode: Turn your daily AI coding ses...
Rontwtw · 2026-06-17 · via Hacker News - Newest: "AI"

Aftercode

Turn your daily AI coding sessions into personalized learning podcasts.

Aftercode connects to your coding-agent workflow (Claude Code, Codex, Cursor, …), figures out the deeper technical topics behind what you built and debugged that day, and generates a short two-speaker podcast episode — in Hebrew or English — that teaches you the concepts behind the code you shipped. Listen and browse them in a clean web playlist.

Turn vibe coding into real learning.

Open source (MIT OR Apache-2.0), CLI-first, self-hostable.

Demo

Aftercode demo

Watch with sound (full-quality MP4)

How it works

aftercode episode
   │  auto-detect your coding-agent session (Claude Code / Codex / Cursor) →
   │    your prompts + what the agent did/explained
   │  + the real git diff (the Redis client, RabbitMQ config, new deps it added)
   │  scan for secrets, apply ignore rules, redact, cap size
   ▼
backend pipeline
   normalize → extract topics → detect knowledge gaps → rank →
   write two-speaker script (Hebrew or English) → TTS per segment
   (ElevenLabs or OpenAI) → concat + silence gaps → MP3 → store → episode
   ▼
web UI
   playlist · filter by topic · play through your episodes · transcript + quiz

Repository layout

crates/aftercode-core    shared types (session context, episode, audio)
crates/aftercode-server  Axum API backend + generation pipeline + serves the web UI
crates/aftercode-cli     the `aftercode` CLI
web/                     React + Vite web UI (playlist, filters, player)
migrations/              SQLite schema (auto-applied on startup)
docs/                    PRD, self-hosting, architecture, design specs

Install

You need: Docker (runs the backend + web UI) and Rust (for the aftercode CLI — it must run natively to read your local coding-agent session files). That's it — no database, no Node.

Copy-paste these four commands:

# 1. Get the code
git clone https://github.com/ron3899/aftercode && cd aftercode

# 2. Start the backend + web UI  →  http://localhost:8080
#    (first run builds the image once, ~5 min; after that it's instant)
docker compose up -d

# 3. Install the CLI
cargo install --path crates/aftercode-cli

# 4. Log in (opens your browser → click Approve)
aftercode login

Now open http://localhost:8080 to browse episodes, and run aftercode episode in any project. Step 2 works with no API keys (mock mode) so you can try it immediately.

For real episodes, create a .env in the repo with your keys, then docker compose up -d again:

LLM_PROVIDER=openai
OPENAI_API_KEY=sk-...
TTS_PROVIDER=openai        # voice via OpenAI tts-1; or set TTS_PROVIDER=elevenlabs + its keys

Port 8080 taken? Run PORT=9000 docker compose up -d and use that port everywhere.

Use it inside your coding agent

The CLI auto-detects your current session from whatever agent you used, so the simplest workflow is: finish a chunk of work, then make the episode.

  • In the terminal (any agent): aftercode episode --language en (or he). It reads the latest Cursor, Claude Code, or Codex session for that repo automatically.
  • Ask the agent to do it for you. Since the agent has a terminal, just tell it:

    "Run aftercode episode --language en to turn what we just did into a podcast."

  • Claude Code / Codex (CLI agents): run it right after your session in the same folder — detection finds the transcript. If you ran from a different folder, hand the transcript in directly: aftercode episode --transcript - (pipe a transcript) — never fails detection.
  • Cursor / Windsurf (editor agents): open the editor's terminal in your project and run aftercode episode; it reads Cursor's live session for that workspace.

Run aftercode preview first to see which agent + session was detected and exactly what will be sent.

Run everything from source (no Docker)

Requires Rust + Node.

cd web && npm install && npm run build && cd ..   # build the UI (served at /)
cp .env.example .env                              # add keys, or leave mock to try
cargo run -p aftercode-server                     # first run prints a login token + URL
cargo install --path crates/aftercode-cli
aftercode login && cd your-project && aftercode episode --language en

Web UI

The backend serves a React app at / (built from web/dist):

  • Playlist — your episodes with a persistent bottom player that plays through the current filtered list (prev/next = your queue).
  • Filter by topic (chips) + language + search — instant.
  • Episode detail — player, topics, key takeaways, quiz, full host/expert transcript.
  • Responsive (mobile + desktop). Sign in reuses the CLI approve flow — no token paste.

Dev with hot reload: cd web && npm run dev (Vite on :5173, talks to the backend; set VITE_API_BASE in web/.env). Rebuild for production with npm run build.

Auth

aftercode login (no arg) opens <backend>/cli/authorize; click Approve and the token is captured automatically — for the CLI via a localhost loopback, for the web UI via a browser redirect (no copy-paste). aftercode login <token> and seed-user remain for scripts/CI; aftercode status validates the token against the backend.

Local-approval performs no identity check — it's for trusted localhost/self-host only. A public/multi-user deployment needs a real OAuth provider (not yet built). This build is effectively single-user: any signed-in user sees all episodes.

Reliable session capture

Episodes are built from your agent session + the git diff. Aftercode auto-detects the session from Claude Code / Codex / Cursor on-disk storage (Cursor reads its live SQLite WAL), but detection can miss (e.g. a run from a subfolder). Two safeguards:

  • Hand the transcript in directly: your-transcript | aftercode episode --transcript - (accepts a Claude Code .jsonl, simple {"role","text"} JSONL, or plain text) — skips disk auto-detection.
  • Thin-episode guardrail: if no session conversation is captured, episode refuses (so you never get an episode about a lone package-lock.json). Override with --allow-thin. Run aftercode preview first to see what was collected and which agent was detected.

Configuration

All secrets/config via env (see .env.example and docs/SELF_HOSTING.md):

  • DATABASE_URL — SQLite, default sqlite://aftercode.db?mode=rwc (auto-created + migrated)
  • LLM_PROVIDERanthropic (default, claude-opus-4-8) / openai / mock; ANTHROPIC_API_KEY / OPENAI_API_KEY
  • TTS_PROVIDERelevenlabs (default) / openai / mock
    • ElevenLabs: ELEVENLABS_API_KEY, ELEVENLABS_HOST_VOICE_ID, ELEVENLABS_EXPERT_VOICE_ID
    • OpenAI: OPENAI_TTS_MODEL (default gpt-4o-mini-tts), OPENAI_TTS_VOICE_HOST, OPENAI_TTS_VOICE_EXPERT
  • BLOB_STORElocalfs (default) / s3 (+ S3_BUCKET); audio served at /static/episodes/<id>.mp3
  • APP_PUBLIC_URL, BIND_ADDR, WEB_DIST (path to the built web app)

LLM providers are pluggable behind a trait; topic + script stages use structured JSON output. The script is written in the episode's language (Hebrew keeps tech terms in English, the way Israeli devs speak).

Privacy

Aftercode sends your agent-session transcript (prompts + agent messages + the commands/edits it ran) and the git diff hunks — never full source files, .env, secrets, or ignored paths. A regex secret scanner redacts anything that looks like a key/token before upload, payload size is capped, and aftercode preview shows exactly what would be sent.

Status

  • Phase 1 (done): Rust CLI + API backend — session capture, topic/script generation, TTS, audio assembly, episode storage. Browser login.
  • Phase 2 (done): React + Vite web UI — playlist, topic filter, player, episode detail.
  • Phase 3 (planned): real OAuth/multi-user, auto-daily generation, download/share, private RSS, editor extensions. See docs/superpowers/specs.

License

Licensed under either of MIT (LICENSE-MIT) or Apache-2.0 (LICENSE-APACHE) at your option.