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

推荐订阅源

WordPress大学
WordPress大学
Microsoft Azure Blog
Microsoft Azure Blog
aimingoo的专栏
aimingoo的专栏
Vercel News
Vercel News
U
Unit 42
L
LangChain Blog
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Cloudflare Blog
F
Fortinet All Blogs
小众软件
小众软件
I
InfoQ
P
Proofpoint News Feed
D
DataBreaches.Net
Martin Fowler
Martin Fowler
H
Help Net Security
T
Tailwind CSS Blog
N
Netflix TechBlog - Medium
有赞技术团队
有赞技术团队
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
B
Blog RSS Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
B
Blog

Hacker News: Show HN

PurrrrrFocus: Pomodoro Timer App - App Store Workflow Engine — Multi-Step Orchestration for Bun RapidPhoto: Pro Photo Editor App - App Store GitHub - DheerG/swarms: Achieve extraordinary results with claude code across a variety of tasks SPICE simulation → oscilloscope → verification with Claude Code — Lucas Gerads Show HN: VCoding – A 5 MB native Windows IDE with no dynamic dependencies Show HN: LLMs don't hallucinate because they're bad at math, it's the format GitHub - Agent-FM/agentfm-core: AgentFM is a peer-to-peer network that turns everyday computers into a decentralized AI supercomputer. AgentFM lets you run massive AI workloads directly across a global mesh of idle CPUs and GPUs. Show HN: Tracking Top US Science Olympiad Alumni over Last 25 Years GitHub - Potarix/agent-hub: One place to talk to all your agents Show HN: Runtime security for AI agents(injection,tool abuse, data exfiltration) GitHub - dubeyKartikay/lazyspotify: Terminal Spotify client for macOS and Linux GitHub - the-banana-tool/king-louie: Easy to use GUI Personal AI Assistant. Win/Linux/Mac. Show HN I made my vacation rental bookable by AI agents–no Airbnb, 0% commission GitHub - basteez/jsf-autoreload: maven plugin to enable hot reload on jsf projects uvm32/hosts/host-gdbstub at main · ringtailsoftware/uvm32 GitHub - labsai/EDDI: Config-driven engine that turns JSON into production-grade AI agents. Multi-agent orchestration, 12+ LLM providers, MCP/A2A protocols, RAG, persistent memory, and enterprise compliance (EU AI Act, GDPR, HIPAA). Built on Quarkus. GitHub - glitchnsec/fortyone-oss: AI Executive Assistant Platform Quickstart | Alien GitHub - muxshed/shed: One stream in, or many. Every destination, simultaneously. No cloud middleman, no per-channel fees, no limits. GitHub - ocrbase-hq/ocrbase: 📄 PDF/IMG ->.MD/JSON Document OCR API for PaddleOCR and GLMOCR. Self-hostable. GitHub - impactjo/home-memory: MCP server that lets your AI assistant remember everything about your home. GitHub - Sets88/dbcls: DbCls is a powerful terminal database client that supports various databases GitHub - neptun2000/heor-agent-mcp GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh RollQuation: Math Puzzles - Apps on Google Play GitHub - dropbox/witchcraft Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis GitHub - opentalon/opentalon: OpenTalon is an open-source platform built from the ground up in Go as a robust alternative to OpenClaw LinkedIn™ 职位抓取工具 - Chrome 应用商店
GitHub - ichbinsoftware/clinky: A visual and sonic surfac...
ichbinsoftwa · 2026-05-12 · via Hacker News: Show HN

clinky

clinky — thinking made visible

npm version license node version

A visual and sonic surface for AI thinking. Works with claude, copilot, and codex. The name: cli + thinking = clinky.

Not a chat interface. Not a document. A living map of how a thought unfolds — branches, choices, narrowings, dead ends, resolutions — rendered as something you'd want to look at and listen to.

Demo

clinky-anim

Live replays at clinky-demo.ichbinsoftware.com — install locally to run your own prompts.

Install

npm install -g @ichbinsoftware/clinky

Then run:

clinky               # default: claude backend, port 4243
clinky --open        # also opens the browser for you

Open http://localhost:4243 in your browser (substitute your --port if you changed it). Pick a mode, type a question, press think.

Flags

clinky --open                        # also opens the browser for you
clinky --agent copilot               # use GitHub Copilot CLI
clinky --agent codex                 # use OpenAI Codex CLI
clinky --model claude-opus-4-7       # override the default model for the chosen agent
clinky --port 4244                   # change port
clinky --record                      # save every session to ~/.clinky/sessions/
clinky --verbose                     # log every node arrival to stderr

Recorded sessions are listed at /api/sessions. Replay any via /api/replay/<id> — append ?speed= (default 4×, 0 = instant) to control playback rate.

?agent= and ?model= on any URL override the defaults for that request — use them from /inspect to make a new request with a different backend or model without restarting.

Requirements

  • Node 18+
  • At least one agent backend installed and authenticated:
    • claude (default) — npm i -g @anthropic-ai/claude-code
    • copilotnpm install -g @github/copilot
    • codexnpm i -g @openai/codex

A note on capabilities

The CLI agents are general-purpose AI tools with file access, Bash, and OS-level integrations. clinky's system prompt constrains them to emit thought nodes, but a prompt like "write a CLI that gets weather based on location" may still cause the agent to reach for GPS, calendar, or filesystem. On macOS this triggers permission dialogs — you can deny them; clinky itself only needs network access. Keep prompts conceptual ("how would I design a weather CLI?") to stay in pure thinking mode.

Running from source

git clone https://github.com/ichbinsoftware/clinky
cd clinky
node server.js

Open http://localhost:4243 in your browser (substitute your --port if you changed it). Same flags as the published CLI.

How it works

  1. User types a prompt and presses think
  2. Server spawns the selected agent with a system prompt instructing it to emit thought nodes via Bash tool calls (one echo '{...}' per thought)
  3. Each Bash invocation arrives in real time — no waiting for the full response
  4. Server extracts JSON from the Bash output, classifies topics, assigns colors + notes
  5. Nodes stream to the browser via SSE
  6. Each mode renders the node as a visual element with a synthesized sound

The Bash commands are never executed. The call is a delivery mechanism — the server parses JSON out of the command string and discards it. Bash is used because it's universal across all three backends and provides a real-time tool_use event the instant the model invokes it, before output is ready. The model is asked to batch 3–4 thoughts per call for speed.

The thought node

{
  "id": 12,
  "topic": "channels",
  "type": "choice",
  "text": "for most launches: one owned + one paid",
  "confidence": 0.75,
  "stance": "claiming",
  "refs": [9, 10, 11],
  "rel": "synthesizes",
  "because": [9, 10, 11],
  "heat": 0.4
}
  • types: claim, branch, choice, dead-end, aside, resolution
  • stance: exploring | claiming | questioning | conceding
  • rel: supports | contradicts | synthesizes | refines | questions | supersedes (required when refs is set)
  • because: array of prior ids, or "external" / "prior" (required on claim, choice, resolution)
  • heat: 0–1 — reserved for unexpected or consequential moves

Each response carries 4–8 topics, each assigned a stable color and a pentatonic note for the session.

Server-stamped on every node: batch_id, batch_position, elapsed_ms, incoming_refs_count (how many later thoughts reference this one — delivered via a separate graph SSE event).

The relational fields turn the stream into a reasoning trace rather than a list. Open /inspect during any session for live coverage of the fields.

The reflection

At the end of every session the model emits one final type: "reflection" node — a single sentence of meta-commentary on its own thinking. It surfaces in the reading-pane essay panel as a closing block, not on the canvas.

The 31 modes

Field & Canvas — painting, mark-making, gesture

Mode What happens
marko rothko-style horizontal color bands; height = weight, edges bleed
splatter pollock-style action painting — wandering lines + droplets per thought
ink sumi-e brush strokes on cream paper; ink bleeds, then holds
concrete concrete poetry — text arranges itself as shapes
mycelium fungal network — nodes glow, hyphae grow, tendrils probe

Sky & Cosmos — expansive, mythic, open

Mode What happens
galaxy spiral arms rotating; thoughts as stars drifting outward
constellation stars cluster by topic and auto-connect; click two stars to draw your own line

Physics & Emergence — forces, motion, simulation

Mode What happens
gravity physics sim — same-topic shapes attract, all repel
antmin swarm of creatures flock by topic; click to scatter
conway game of life — each thought seeds a cell pattern
bounce thoughts drop and bounce off topic platforms; sound on impact
tracer swimmers leave trails; drag to create currents
snowfall branching crystals drift down and accumulate
loop spinning rings of light, one per topic, points orbit

Grid & Geometry — built forms, sequences, regular grids

Mode What happens
luminaria arrows on a grid; particles follow them in loops
sequencer 16-step grid sequencer; rows = topics, columns = beats
loom weaving — warp fixed, weft rows are thoughts
subway transit map — each topic a coloured line, thoughts are stations
clockwork meshing gears — each topic a gear, thoughts pulse the rotation
city isometric city grows — topics are districts, confidence is height

Data & Structure — analytical diagrams, signal forms

Mode What happens
attention pairwise weight matrix between thoughts
dendrogram hierarchical cluster tree, bottom-up
waveform oscilloscope trace, one lane per topic, type-specific bursts
chord circular arc diagram with chords connecting same-topic pairs

Frame & Chart — strategy-deck and workshop-wall diagrams

Mode What happens
mindmap radial Buzan-style mindmap from a central prompt hub
stickies wall of tilted, drop-shadowed Post-its packed in rows
swot 2×2 strategic grid mapped from thought type
fishbone Ishikawa cause-and-effect diagram
pyramid Minto answer-first 4-tier pyramid
matrix impact × confidence scatter plot with named quadrants
journey customer-journey emotion curve across five phases

Sound

A Web Audio synthesis engine — no samples, no files. Each session plays as a piece of music whose structure mirrors the thinking.

Aesthetic (picked per mode): one of ambient, classical, jazz, industrial, techno, videogame. Each carries its own waveforms, envelopes, voicings, FX (reverb / delay / distortion), and key palette. Ambient is wide pads with long reverb; videogame is square-wave chiptune; industrial is sawtooth + crunch; classical is detuned triangle in a hall.

Session key is hashed from the prompt — the same prompt always plays in the same key. Each topic gets a stable note within that key, so the same topic always sounds the same across the session.

Stance shapes the articulation of every thought:

Stance How it plays
claiming staccato + forte
exploring legato
questioning held fermata
conceding soft decrescendo

Rel between thoughts plays as a two-note interval:

Rel Interval
supports perfect 5th
contradicts tritone
synthesizes major 3rd
refines minor 2nd
questions augmented 4th
supersedes octave

Heat (unexpected / consequential flag) boosts velocity and reverb send. Because grounds the thought from below: internal lays a pedal tone, external plays off-stage with extra reverb and pan, prior detunes flat to suggest a memory. Some aesthetics also run a rhythmic bed underneath the harmony.

Controls

Button What it does
▶ think send the prompt, start streaming
■ stop cancel mid-stream
⏸ pause freeze the animation
sound toggle sound on/off
↓ save save canvas as PNG (2× upscale, prompt + timestamp overlaid)
↺ clear reset canvas and state
read open the reading pane (after session completes)

Pressing think clears the canvas first, then streams the new session. Use clear to wipe back to an empty canvas without starting one.

Hover any element to see the thought behind it. Click to isolate a topic; click again to release. The hub/centre/spine of any radial mode is a reset handle.

Architecture

browser (31 mode pages + /inspect)
  ↑ SSE: status, topics, batch, node, graph, usage, done, error
  ↑ Web Audio: per-thought synthesized tones
  │
server.js
  ├─ GET /                → mode picker
  ├─ GET /<mode>          → mode page
  ├─ GET /inspect         → diagnostic stream viewer
  ├─ GET /api/think?prompt=&mode=&model=&effort=&agent=  → SSE stream
  ├─ GET /api/sessions    → list recorded sessions
  └─ GET /api/replay/<id>?speed=&mode=  → replay a recorded session

agents/ (one file per backend)
  ├─ shared.js     ← SYSTEM_PROMPT, extractAndEmitNodes, runWithProvider
  ├─ claude.js     ← spawns claude --output-format stream-json
  ├─ copilot.js    ← spawns copilot --output-format json
  └─ codex.js      ← spawns codex exec --json

Every mode is a class extending Mode (/public/mode.js). The base class owns canvas setup, resize, chrome, SSE lifecycle, RAF loop. Each mode implements draw() and overrides hooks (onNode, onClear, onDone).

Backend comparison

claude copilot codex
Real-time hook tool_use (Bash) tool.execution_start (bash) item.started (command_execution)
Node source command string command string stdout at item.completed
Usage event full token + cost premiumRequests only input/output/cache tokens
Default model claude-sonnet-4-6 claude-sonnet-4.6 gpt-5.4
Node timing streaming streaming per-batch

Any model name passes through — no allowlist, new models work automatically. Effort: low | medium | high (default) | xhigh | max.

No server dependencies

Server uses Node built-ins only (http, fs, path, url, child_process). Client is vanilla JS + Canvas API + Web Audio API. No npm packages, no bundler, no build step.

Influences

  • Electroplankton (Toshio Iwai, Nintendo DS) — playful, no goal, sound and visual inseparable
  • Brian Eno — generative systems that produce music reflecting real structure
  • Edward Tufte — information density without clutter
  • Conway's Game of Life — emergent complexity from simple rules
  • Mark Rothko — color as weight, presence without form

License

MIT