Draw a model's thinking as markdown
A model reasons in the same headings, lists and fenced code it answers in, so plain text put rows of hashes and asterisks around the working the reader opened the card to read. The card now draws `MarkdownText`, live while the block is still open so a delta costs a parse of its last block rather than of the whole reasoning, and the words answer the card's own tap through `LocalMarkdownTap` the way a memory note's do. A settled block is warmed with the rest of a page; an open one deliberately is not, since warming a prefix per delta is a parse of the block per delta held for ever. Echo's `/think` fixture is markdown now, because a fixture of flat prose exercises none of this. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3dbf04f5ec
commit
53fc59a946
4 files changed
+33
-11
No files matched your search
@@ -941,10 +941,19 @@ impl EchoDriver {
|
||||
if let Some(think) = think {
|
||||
let started = std::time::Instant::now();
|
||||
for remaining in (1..=think.as_secs()).rev() {
|
||||
// Markdown, because the card draws it as markdown and a
|
||||
// fixture of flat prose exercises none of that: a heading, a
|
||||
// list, a fence and some inline code are what a model's
|
||||
// working actually looks like.
|
||||
send(Event::Thinking {
|
||||
delta: format!(
|
||||
"Considering what to echo back, {remaining}s of it left. \
|
||||
The reply is the message, which took some working out.\n\n"
|
||||
"## Considering what to echo back\n\n\
|
||||
`{remaining}s` of it left, and the plan is:\n\n\
|
||||
- read the message\n\
|
||||
- say it back, *exactly*\n\n\
|
||||
```rust\n\
|
||||
let reply = message.clone();\n\
|
||||
```\n\n"
|
||||
),
|
||||
});
|
||||
tokio::time::sleep(Duration::from_secs(1)).await;
|
||||
|
||||
Reference in new issue
Block a user