個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證A terminal UI that is one value: agents write it, rewrite it live and read it back
翻譯準備中
取自儲存庫 README
正在載入完整 README。 以下為已儲存的摘錄。
A terminal UI that is one value. An agent writes it as JSON, rewrites it live a piece at a
time, and reads back exactly what it drew. Data streams from your commands straight to the screen,
never through the model.
Status: prototype. It works and it's fast, but the format will change. The plan is in
docs/PLAN.md. Milestones are on the fictty blog; the
start of the story is on the Thought Control dev blog:
the experiment,
the landscape and
why it's its own project.檢視完整 README ↗A terminal UI that is one value. An agent writes it as JSON, rewrites it live a piece at a time, and reads back exactly what it drew. Data streams from your commands straight to the screen, never through the model.
Status: prototype. It works and it's fast, but the format will change. The plan is in docs/PLAN.md. Milestones are on the fictty blog; the start of the story is on the Thought Control dev blog: the experiment, the landscape and why it's its own project.
Agents are good at deciding what a screen should show and bad at being the screen. When an agent has to answer every keystroke itself, the UI is as slow as the model. fictty splits the work:
It sits between caretline, the text-editing engine, and apps like Thought Control: apps describe screens, fictty runs them.
One line fetches fictty into ~/.fictty and opens a tour of it: ten short chapters, each with
something to play with and a quest, from a screen and its JSON side by side to a notebook of
linked pages, an agent driving the screen while you watch, and a firehose of updates. It builds main if you have Rust, and
otherwise runs the latest release's binary (macOS and Linux):
curl -fsSL https://fictty.com/try.sh | sh
To drive it from a second terminal, open the Agents chapter (or the Agent app) and click a command (or select it and
press Enter): it's copied ready to paste, and it sets that terminal up so fictty reaches the
showcase. tour.sh there has an agent drive the whole thing. … | sh -s -- <tag or commit> runs a
given version, each in its own folder and store.
From a checkout:
examples/showcase/play.sh # the tour, then the apps: notes, a ledger, a live market, a gallery
examples/showcase/tour.sh # in another terminal: watch an agent drive it
Or by hand:
cargo build --release
export PATH="$PWD/target/release:$PATH"
fictty run examples/stress/ticker.json # one terminal: a ticker streaming 500 updates a second
fictty push examples/stress/plasma.json # another terminal: the whole UI swaps in one frame
fictty patch header node.json # replace one node by id
fictty key j j # type, like a person
fictty screen # read back the frame as text
fictty get --state # read back everything, as JSON
fictty render examples/tasks.json --size 100x30 # no terminal at all
The demos in examples/ cover stress tests, a live finance dashboard driven by a scripted "analyst", and a pixel tour. docs/guide.md walks through each one.
A UI is one JSON value:
{
"root": {"type": "row", "children": [
{"type": "table", "id": "tasks", "title": "Open tasks", "bind": "tasks",
"columns": [{"title": "task", "value": "{text}"}, {"title": "due", "value": "{due}", "size": 11}],
"keys": {"x": {"run": ["thc", "done", "{id}"]}}},
{"type": "text", "bind": "@tasks", "text": "{text}\n\ndue {due}"}
]},
"data": {
"tasks": {"cmd": ["thc", "q", "status:open", "--json"], "path": "items", "every": 3}
}
}
when shows a node while a condition holds, so dialogs and responsive panes are data too.fictty::App::new(ui).host(my_app).run()). @tasks binds the row
selected in tasks.fictty put key file --if-rev 12). Editors are caretline.variant and a tone; themes
(loaded with --themes, switched with a key) decide the colours.update that returns effects, a
pure view. That's what makes reading back, replay and (soon) history possible.Release build, a 170×52 terminal, one machine: about 6,000 whole-UI pushes a second from one client while drawing about 108 fps; 1,000 patches a second with every frame under 1 ms; a 50,000-row list replaced 20 times a second draws in 0.18 ms. The full table is in the guide.
On terminals that speak the kitty graphics protocol (Ghostty, kitty, WezTerm), fictty draws cards under the text, anti-aliased plots, SVG filled from data and images, and falls back to cells everywhere else. Guidance for agents: components first, SVG for anything custom, PNG only for real bitmaps, and animate the data, not the pictures.
MIT. See LICENSE.