个人 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.