ZH version is available. Content is displayed in original English for accuracy.
Left pane is one long draft. Right pane is a stack of replies. Pause for ~350ms and it fires a normal streaming chat completion with the whole draft. Type again and it aborts the last request if that reply never produced text; if it did, that bubble stays and a new one stacks. Bubbles never rewrite. Enter is a newline.
That is overlapping unary streams, not a duplex socket. Same shape as ghost-text, pointed at a conversation instead of a code line. The bit that took the work is the hold: do not fire on "and N" while someone is still typing "and NASA".
git clone https://github.com/scalattice/dont-hit-send.git cd dont-hit-send export SCALATTICE_API_KEY=slt_... # or OPENAI_API_KEY + OPENAI_BASE_URL ./run.sh # http://127.0.0.1:8766
Stdlib Python, MIT, key stays on your machine. Defaults to Scalattice OpenAI-compat; any host that speaks /v1/chat/completions works from Settings or env.
Browser demo on our inference platform (sign-in after a short try): https://scalattice.com/dont-hit-send/
Why've we built this? The conventional AI chat interface is overdone and lacks innovation, I've personally been building agentic software for a while now and feel a lack of innovation in the interactivity. This is a step towards trialling some different inference interfaces!

Discussion (1 Comments)Read Original on HackerNews
It's painful to contemplate how you thought this wasn't an absolutely terrible idea.
Sending, processing, and responding to "not the thing I want you to respond to because I'm not done composing my query yet" is really not the way to go. But congratulations on burning more of the sky for fun while creating a worse human experience?