Oregami
Repositories/oxedyne/daimond

oxedyne/daimond/www/guide/chats-and-diamonds.html

26.7 KiB, 1 run

created by r2519314175:1155, which is this file's identity for as long as the history lasts, whatever it is later renamed to

download · who wrote it · its history

1<!DOCTYPE html>
2<html lang="en" data-guide-locale="en" data-guide-locales="en de es fr ja ko pt-BR zh-Hans">
3<head>
4<meta charset="UTF-8">
5<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6<title>Chats &amp; Diamonds — Daimond guide</title>
7<link rel="icon" type="image/svg+xml" href="../assets/daimond_mark.svg">
8<link rel="stylesheet" href="../css/variables.css">
9<link rel="stylesheet" href="../css/guide.css">
10<script src="frame.js"></script>
11<script src="search-index.js"></script>
12<script src="search.js"></script>
13</head>
14<body>
15
16<header class="site-head">
17 <div class="site-head-inner">
18 <a class="brand" href="index.html" aria-label="Daimond guide, home">
19 <img class="wordmark wm-dark" src="../assets/daimond_word.svg" alt="Daimond" translate="no">
20 <img class="wordmark wm-light" src="../assets/daimond_word_dark.svg" alt="Daimond" translate="no">
21 <span class="brand-sub">Guide</span>
22 </a>
23 <nav class="site-nav" aria-label="Guide pages">
24 <a href="index.html">Getting started</a>
25 <a href="interface.html">The interface</a>
26 <a href="models.html">Models &amp; credits</a>
27 <a href="chats-and-diamonds.html" aria-current="page">Chats &amp; Diamonds</a>
28 <a href="capps.html">Capps</a>
29 <a href="email-web-files.html">Email, Web &amp; files</a>
30 <a href="accounts.html">Accounts</a>
31 <a href="sync.html">Cross-device sync</a>
32 <a href="spending.html">Spending</a>
33 <a href="machine-operations.html">Machine Operations</a>
34 <a href="social.html">Social</a>
35 </nav>
36 </div>
37</header>
38
39<main>
40 <h1>Chats &amp; Diamonds</h1>
41 <p class="lede">A chat is a conversation with the daimon. A Diamond is a durable container for a pursuit, holding what you have worked out about a piece of work so that later work starts from it. Here: starting and reading chats, the turn controls, folding a chat into a Diamond, the workspace a Diamond works in, attaching files to either, and organising what you accumulate.</p>
42
43 <h2 id="s1">Starting and returning to a chat</h2>
44 <p>Choose <span class="ui">New chat</span>, the <strong>+</strong> beside <strong>Chats</strong> in the rail. Type in the box at the bottom of the centre panel and send with <span class="ui">➤</span>. Every chat you start is listed under <strong>Chats</strong>, newest first; click one to bring it back to the centre. A new chat starts on your default model, and the selector in its header changes the model for that chat alone.</p>
45
46 <p>A chat tile carries a <span class="ui">×</span>, and the <span class="ui">⋯</span> on the <strong>Chats</strong> head carries <span class="ui">Delete all chats</span>. Neither asks: both move chats to the <strong>Trash</strong>, where they can be brought back. The questions have moved to the two acts that cannot be undone, which are both in that panel.</p>
47
48 <p>While an answer is arriving you can keep typing. A message sent then is <strong>queued</strong> rather than lost: it appears under the thread as a dashed bubble and goes as its own turn the moment the answer finishes. Click a queued bubble to take it back into the box and change it, or its <span class="ui">×</span> to drop it. Pressing <span class="ui">■</span> to stop the answer hands anything queued behind it back to you, unsent. Stopping means stopping.</p>
49
50 <h2 id="s2">Reading a long conversation</h2>
51 <p>A conversation grows quickly, so the chat header carries controls to keep it readable, at the top-right of the centre panel. Two more sit in the composer bar beside <span class="ui">➤</span>.</p>
52
53 <div class="cards">
54 <div class="card">
55 <h3 id="s3">Steps</h3>
56 <p>The <span class="ui">Steps</span> button shows or hides the tool steps in the thread, the work the agent did between your message and its answer. Hide them to read the conversation; show them to see what it did.</p>
57 </div>
58 <div class="card">
59 <h3 id="s4">Collapse</h3>
60 <p>The <span class="ui">−</span> button collapses every answer, leaving what you asked. It is the quickest way to skim a long thread, and it is how you start picking turns to fold.</p>
61 </div>
62 <div class="card">
63 <h3 id="s5">Jump back</h3>
64 <p><strong>The chevron up</strong> beside the send button jumps back to your last message. Press it again to walk back through the ones before it.</p>
65 </div>
66 <div class="card">
67 <h3 id="s6">Jump to the end</h3>
68 <p><strong>The chevron down</strong> returns to the bottom of the chat and starts the walk again, so the next jump back goes to your last message instead of carrying on from where you had got to.</p>
69 </div>
70 <div class="card">
71 <h3 id="s7">Concise</h3>
72 <p>A standing toggle asking for short answers in this chat. It is a skill and not a hidden instruction: what it asks for is a file in your workspace you can read and edit.</p>
73 </div>
74 <div class="card">
75 <h3 id="s8">Permission mode</h3>
76 <p>A word beside the model saying what Daimond does without asking. Covered on <a href="machine-operations.html">Machine Operations</a>.</p>
77 </div>
78 </div>
79
80 <figure class="shot" data-shot="chat-turns">
81 <img alt="A chat with answers collapsed, showing the questions asked, and the turn-selection controls in the header." src="shots/chat-turns.png" loading="lazy">
82 <figcaption>Collapsing the answers leaves what you asked, and turns on the controls for selecting turns to fold.</figcaption>
83 </figure>
84
85 <h2 id="s9">Folding a chat into a Diamond</h2>
86 <p>When a conversation has worked something out, you fold it: keep what you learnt, drop the back-and-forth that produced it. What you fold into is a <strong>Diamond</strong>, and two units make it up:</p>
87 <ul>
88 <li><strong>A fold</strong> is one improvement, a single step forward.</li>
89 <li><strong>A crystal</strong> is what the folds have accumulated: the shape of the work, the steps in their order, and the checks you found the hard way. A Diamond is a crystal together with the chain of folds that produced it.</li>
90 </ul>
91
92 <h3 id="s10">Selecting turns and folding them</h3>
93 <p>Collapse the thread with <span class="ui">−</span>, then pick the turns worth keeping. A row of controls appears in the header: <span class="ui">Select all</span>, <span class="ui">Deselect all</span> and <span class="ui">Fold selected</span>, which folds the chosen turns into the Diamond. Fold a step you have <em>adopted</em> and not a passing remark: folding keeps what you learnt, not the transcript.</p>
94
95 <div class="note"><strong>Nothing is absorbed on its own.</strong> A crystal never grows in the background: you choose the turns that are offered, and the fold itself is a proposal. The agent rewrites the crystal and shows you the result, which you accept or reject. A crystal only changes because you said so.</div>
96
97 <figure class="shot" data-shot="diamond-fold">
98 <img alt="The Diamond command surface shown in place of the chat, with controls to steer and fold the method." src="shots/diamond-fold.png" loading="lazy">
99 <figcaption>Selecting a Diamond shows its command surface in place of the chat, where you steer and fold the method.</figcaption>
100 </figure>
101
102 <h2 id="s11">Working a Diamond</h2>
103 <p>Diamonds are listed above your chats in the rail; add one with the <strong>+</strong> beside <strong>Diamonds</strong>. Selecting one replaces the chat in the centre with its command surface, a compact view where you steer the work and fold further improvements into it. You can tell which face the panel is showing without reading it: on a Diamond it takes the Daimond mark beside the name and squares its corners, against the rounded corners of everything else on screen.</p>
104
105 <p>A Diamond has <strong>two faces</strong>, and a switch in the header moves between them. <span class="ui">Crystal</span> is what the Diamond knows. <span class="ui">Chat</span> is its own conversation, which persists like any other and carries a <span class="ui">Fold</span> button, because folding is done mid-flow rather than while configuring something. Pick a chat in the rail and the ordinary conversation returns, as it does whenever the stage would otherwise be empty.</p>
106
107 <h3 id="s12">What a Diamond does, and what it does not</h3>
108 <p>A Diamond retains; on its own it does not run. Nothing executes a crystal: there is no workflow engine and no chain from one Diamond to another. Returning to a Diamond does not set it going, and neither does leaving it alone. A Diamond you have not automated answers when you prompt it and at no other time — which is what its panel says when you look: <em>Nothing set. This Diamond answers when you prompt it and at no other time.</em></p>
109
110 <p>So <em>picking it up again</em> means steering it again with everything it has learnt already in hand. The crystal is prose, which is what a model reads best, and it is handed to the daimon when you work the Diamond and to every worker dispatched from it. What you worked out once reaches the work again without you retyping it, or remembering that you should.</p>
111
112 <p>The one way a Diamond acts without you is the one you set up yourself, described next.</p>
113
114 <h2 id="s13">Triggered actions</h2>
115 <p>A <strong>triggered action</strong> is a standing arrangement for a Diamond to do something <em>without being asked</em>. You write it, you switch it on, and from then on the Diamond acts when the thing you named happens. It is the only part of Daimond that spends money with nobody at the keyboard, so it is worth reading this section before you set one.</p>
116
117 <p>They live under <span class="ui">When this Diamond acts</span> on a Diamond's crystal. <span class="ui">Add an action</span> makes one; a pulldown selects it for editing when there is more than one. Two things can set an action off:</p>
118 <ul>
119 <li><strong>Minutes of my activity.</strong> A timer that only counts while you are actually working. A tab left open overnight counts none of them, so a Diamond set to thirty minutes fires after half an hour of your work, not half an hour of wall clock.</li>
120 <li><strong>Mail arriving.</strong> Mail landing in a folder you name, in a mailbox you have already set up. Nothing fires until there is mail.</li>
121 </ul>
122
123 <p>Each action carries two pieces of writing. The <strong>instruction</strong> is what the Diamond is asked to do when it fires, and it is sent every time. The <strong>context</strong> is background it needs the first time only: it goes in front of the first instruction and then stops going, until you change it, at which point it is sent once more. That is what changing it means.</p>
124
125 <p>Actions are ordinary files. They sit in the Diamond's own directory as <strong translate="no">triggers.json</strong>, in the open, where you can read them in the Workspace panel and where the Diamond itself can read and edit them with the file tools it already has. Nothing about them is hidden from you or from it.</p>
126
127 <h3 id="s14">The play, the pause and the light</h3>
128 <p>Every triggered action wears the same three-part control the rest of the app uses: a <strong>play</strong>, a <strong>pause</strong> and a round <strong>light</strong>. The Diamond carries one that speaks for all of its actions, and the <span class="ui">Everything</span> row at the top of the rail carries one that speaks for the whole app.</p>
129
130 <p><strong>The light says whether anything is going to happen on its own.</strong> Not whether you have pressed pause — whether something is actually armed and free to fire:</p>
131 <ul>
132 <li><strong>Red.</strong> Nothing here will act by itself — because you have set nothing up, or because what is here is switched off, held, or missing something it cannot fire without.</li>
133 <li><strong>Amber.</strong> Some of what is set up will act, and some is held.</li>
134 <li><strong>Green.</strong> Everything that is set up will act.</li>
135 </ul>
136
137 <p>A Diamond you have not automated therefore shows <strong>red</strong>, and so does the <span class="ui">Everything</span> row on a fresh account. That is not a warning. It is the honest answer to "is anything running by itself?", and on a new account the answer is no.</p>
138
139 <p>The two buttons follow the light, so you never have to work out which one would do something:</p>
140 <ul>
141 <li>Red: <strong>play</strong> is live and <strong>pause</strong> is greyed. There is nothing running to stop.</li>
142 <li>Amber: <strong>both</strong> are live. You can release what is held or hold the rest.</li>
143 <li>Green: <strong>pause</strong> is live and <strong>play</strong> is greyed. There is nothing held to release.</li>
144 </ul>
145
146 <div class="note"><strong>An action that cannot fire is not counted.</strong> An action switched on but missing its mailbox, its folder or its instruction would never go off, so the light does not report it as though it would. Fill in what it is missing and the light changes on its own.</div>
147
148 <p>Pressing pause on a Diamond holds every action under it; pressing it on the <span class="ui">Everything</span> row holds the lot. Nothing is spent by a held action — it is refused before the turn starts, so a pause costs nothing but the wait. Amber can only be arrived at, never set: there is no button that makes a light amber, which is what stops the colour from meaning whatever somebody last clicked.</p>
149
150 <p>The same light rides on your mailboxes, and it reads the same way. A mailbox whose folders you refresh by hand is <strong>red</strong>: pressing refresh yourself is not automation, it is you. Give a folder an interval and it goes green.</p>
151
152 <h2 id="s15">The crystal and its history</h2>
153 <p>The crystal is two real files in the Diamond's own directory: <strong translate="no">crystal.json</strong>, what the Diamond knows, and <strong translate="no">crystal.html</strong>, the page that draws it. That directory is always in the Diamond's workspace, so both can be opened in the Workspace panel, read, and edited by hand. It is not inside the folder you have open as your workspace, though: a Diamond is kept in the browser's own storage, apart from your work.</p>
154
155 <p>Every write snapshots a version, so a crystal has a history and nothing is written over. The history lists every version, newest first, each with what produced it:</p>
156 <ul>
157 <li><span class="ui">View</span>: read that version.</li>
158 <li><span class="ui">Restore</span>: make that version current again.</li>
159 <li><span class="ui">Delta</span>: see the raw input a fold consumed, the material the agent was given to reduce.</li>
160 </ul>
161
162 <div class="note"><strong>Restore is not destructive.</strong> The text that was current is kept in the history first, so restoring an older version adds to the history rather than replacing it. A restore you did not mean can itself be undone.</div>
163
164 <h2 id="s16">Artefacts</h2>
165 <p>A Diamond also keeps track of what its work touched: the files written and the pages opened while you were working on it. None of it is yours to record. Daimond already notes every tool an agent uses, so the list is read off what happened, and gathered at the moment you accept a fold.</p>
166
167 <p>Files that were only <em>read</em> are left out on purpose. An agent may open forty files looking for one thing, and all forty listed would bury the one that mattered. What is kept is what the work produced, and the pages you asked to see.</p>
168
169 <p>When a Diamond has any, a line above the steer box says how many. Clicking it opens the list, where each entry does three things:</p>
170 <ul>
171 <li><strong>The name</strong> opens it: a file in the Doc panel, a page in the Web panel.</li>
172 <li><strong>The small arrow</strong> puts a reference to it in the steer box, so you can say "redo the figures in this one" without typing out the path.</li>
173 <li><strong>The cross</strong> removes it, if it does not belong to this Diamond after all.</li>
174 </ul>
175
176 <div class="note">A file you have since renamed or deleted <strong>says so</strong> when you try to open it, rather than quietly doing nothing. A list of dead links that pretends otherwise is worse than no list.</div>
177
178 <h2 id="s17">The workspace of a Diamond</h2>
179 <p>A Diamond has a <strong>workspace</strong>: the files and folders you keep with it. You put them there. A daimon cannot add to its own workspace, so it works with what it has been given and asks you when it needs more.</p>
180
181 <p><strong>It is a view of your files, not a box holding them.</strong> Nothing is copied when you attach something: the file stays where it is and the Diamond points at it. Attach the same folder to two Diamonds and there is still one folder, and an edit made through either is the file the other reads. Taking something out of a Diamond's workspace only detaches it; the file itself is untouched, and only a deliberate delete removes it. The word <em>workspace</em> invites you to expect a copy, and there is none.</p>
182
183 <p>A Diamond also has a directory of its own, always in its workspace and always writable, so its daimon has somewhere to work before you have attached anything; the crystal lives there. A folder can be attached to be <strong>consulted rather than edited</strong>, which lets a daimon read it and refuses every write. And the <a href="email-web-files.html">Workspace</a> panel shows either all your files or only the ones this Diamond holds, whichever suits the work in front of you.</p>
184
185 <h3 id="s18">Attaching, with the paperclip</h3>
186 <p>The <strong>📎</strong> on every row of the Workspace panel (on files as much as folders) and in the Doc panel's header reads <span class="ui">Attach to current focus</span>. One control, whose effect follows what is in focus and not which row it sits on. With nothing in focus it is not offered at all.</p>
187 <ul>
188 <li><strong>A Diamond is in focus.</strong> The file or folder joins that Diamond's workspace and stays until you take it off. Its daimon may then open it.</li>
189 <li><strong>An ordinary chat is in focus.</strong> The attachment is for the <em>next turn only</em>, shown in a footer above the box that clears when the turn is sent.</li>
190 </ul>
191 <p>Each attachment carries one of two states, toggled on its tile. <strong>Note</strong> says the path is worth knowing about, and costs a few tokens. <strong>Read</strong> says the contents are wanted now, and a file can run to thousands. Note is where an attachment starts, being much the cheaper: a default that spends your money unasked would be the wrong one.</p>
192 <p>Either way the text it generates (<em>Note …</em>, or <em>Read … in full.</em>) is written into the box in front of your message, to edit or delete before sending. A prompt the app writes and hides is a prompt nobody can argue with.</p>
193 <p>The footer carries a <strong>+</strong> for attaching several things without leaving what you are reading, and a toggle between the tile <span class="ui">Stack</span> and rows of larger <span class="ui">Icons</span>. Past six tiles (four when the window is short) it scrolls instead of growing, so the composer stays put. An attachment made in a workspace that is not the open one says where it lives rather than reading as an empty folder, and is left out of the generated text: a path a model cannot open buys a turn spent apologising.</p>
194
195 <h3 id="s19">What a daimon can open</h3>
196 <p><strong>A daimon can only open the files in its Diamond's workspace.</strong> Nothing outside it is readable or writable, by the daimon or by any worker it dispatches. This is no instruction in a prompt that a model may or may not honour: the check sits in the compiled code, at the one door every file tool passes through, and that code is in the published bundle, which is built reproducibly. So it is a claim you can check and not one to take on trust.</p>
197
198 <p>What it does not cover belongs in the same breath. It settles what a daimon can reach, not where what it reads ends up: whatever it opens goes to your model provider with the rest of the turn. It does guard against an agent that has been talked into something: a turn that has just read a stranger's instructions in a page or an email, and gone looking on their behalf, still reaches nothing outside this workspace. It is no guard against a provider misusing what you send it, or a build that is not the one we published; those are answered by <a href="accounts.html">what leaves the browser</a> and the <a href="interface.html">sealed record of every build</a>.</p>
199
200 <h2 id="s20">Dispatching workers</h2>
201 <p>Some tasks want work done and not merely recorded. For those the Diamond's daimon dispatches a <strong>worker agent</strong>. Each worker runs in its own context with the workspace file tools, and is given the standing instructions and this Diamond's crystal. That crystal is the whole of what it knows about your pursuit: a worker cannot see your conversation, so the task it is handed must say everything else it needs.</p>
202
203 <p>Up to <strong>eight</strong> workers run at once; the rest queue. The daimon dispatches them and its turn ends there, without receiving their output. Each reports a summary, and you fold the ones worth keeping in by hand, which is what keeps the choice of what enters a crystal yours. Live runs appear in the <strong>Agents</strong> panel in the dock.</p>
204
205 <h3 id="s21">Holding and stopping agents</h3>
206 <p>The Agents panel header carries three controls that act on <em>every</em> agent at once, and the same three ride on each tile so you can act on one:</p>
207 <ul>
208 <li><strong>Pause</strong> <span class="ui">⏸</span>: hang up what is running and hold the queue. A running agent keeps what it had produced; a waiting one does not start. Nothing new launches until you resume. This is the brake for a fan-out spending faster than you meant.</li>
209 <li><strong>Resume</strong> <span class="ui">▶</span>: continue every paused agent from where it left off, picking up its own work instead of starting over, so a pause costs nothing but the wait.</li>
210 <li><strong>Stop</strong> <span class="ui">✕</span>: end agents outright. Each keeps what it managed to do, as a stopped tile; <span class="ui">Clear finished agents</span> removes them. The instant kill switch.</li>
211 </ul>
212 <p>Each tile shows its <strong>cost as it runs</strong>, the tokens and dollars accruing live rather than only at the end, so you can see the spend while deciding whether to hold it. Under the header a line reads how many agents are <strong>running, paused and queued</strong>, which makes the size and the cost of a fan-out legible at a glance. The measures Daimond takes on its own are on the <a href="spending.html">Spending</a> page.</p>
213
214 <p>A wider brake sits on the <span class="ui">Everything</span> row at the top of the rail. It pauses and resumes all of it at once: every Diamond, every chat, the workers, the mailboxes and any page being fetched for you. A paused thing refuses a turn before it starts, so nothing is spent.</p>
215
216 <p>Two limits hold. A worker cannot dispatch another worker, so delegation goes one level and stops. And one Diamond is steered at a time, so no second Diamond works away while your back is turned.</p>
217
218 <h2 id="s22">Tags</h2>
219 <p>Diamonds accumulate, so they can be tagged. A tag is a short label you choose, edited from <span class="ui">Tags</span> on a Diamond's crystal. Four are suggested to start from (<strong>person</strong>, <strong>project</strong>, <strong>topic</strong> and <strong>org</strong>), but Daimond imposes no taxonomy, and you can type whatever suits your work.</p>
220
221 <p>What you type is tidied: a tag is lowercased, trimmed and deduplicated, with up to <strong>8</strong> tags on a Diamond and <strong>24</strong> characters in each. Tags are stored in the Diamond's own meta, on this device, like everything else.</p>
222
223 <p>The editor shows two boxes: the tags <strong>on this Diamond</strong>, and <strong>all your tags</strong> underneath. The <span class="ui">×</span> on a chip in the upper box takes that tag off this Diamond and returns it to the pool below, where one click puts it back. The <span class="ui">×</span> in the lower box is a different act: it deletes the tag itself, from every Diamond filed under it. That one asks first, and says how many Diamonds it will change. The four starter suggestions carry no <span class="ui">×</span>, being always offered.</p>
224
225 <div class="note"><strong>Tags are inert, and that is the point of them.</strong> A tag is your filing system and nothing else. It is never sent to a model, it never enters the crystal, and it never changes what any agent does. Tagging a Diamond <em>urgent</em> changes nothing about how it is treated.</div>
226
227 <p>In the rail, <span class="ui">Filter by tag</span> opens the tags you can narrow by, with the count of them on the button. Click a tag to show only Diamonds carrying it; click it again to hide them instead. With more than one chosen, <span class="ui">All</span> and <span class="ui">Any</span> decide how they combine, and <span class="ui">Clear</span> empties the filter. There is no separate search box: a Diamond is found by what it is filed under, and two ways of narrowing one short list is one more than it needs. The list is ordered by most recently touched, so what you last worked on sits at the top.</p>
228
229 <h2 id="s23">The Trash</h2>
230 <p>Deleting a chat or a Diamond does not destroy it. It is <strong>trashed</strong>: still stored, still synced, out of the rail, out of the graph and the tag filter, and out of every daimon's reach, listed in the <strong>Trash</strong> panel in the dock with a Restore button beside it. It is kept <strong>thirty days</strong> and then destroyed, and each row says the date.</p>
231
232 <p>Because the act can be taken back, nothing asks before it. The two questions live where they are true instead: <span class="ui">Delete permanently</span> on one item, and <span class="ui">Empty trash</span>, which names the count. Both are irreversible and both go from every device. A dialog in front of a reversible act teaches people to click through dialogs, and then the irreversible one is clicked through too.</p>
233
234 <div class="note"><strong>The reversal travels.</strong> Trashed on one device is trashed on all of them, and restored on one is restored on all of them, whichever order the two devices act in and whichever order their parcels arrive. A device that was away for six weeks works out the same retention date from the same stamp when it comes back. A backup carries the trash with it, so restoring an old one cannot un-delete what you deleted since, nor re-delete what you have restored.</div>
235
236 <div class="next">
237 <a href="models.html">&larr; Models &amp; credits</a>
238 <a href="capps.html">Next: Capps &rarr;</a>
239 </div>
240</main>
241
242<footer class="site-foot">
243 <span>Daimond runs in your browser. Nothing here is sent to us.</span>
244 <nav aria-label="Guide pages">
245 <a href="index.html">Getting started</a>
246 <a href="interface.html">Interface</a>
247 <a href="models.html">Models</a>
248 <a href="chats-and-diamonds.html">Chats &amp; Diamonds</a>
249 <a href="capps.html">Capps</a>
250 <a href="email-web-files.html">Email, Web &amp; files</a>
251 <a href="accounts.html">Accounts</a>
252 <a href="sync.html">Cross-device sync</a>
253 <a href="spending.html">Spending</a>
254 <a href="machine-operations.html">Machine Operations</a>
255 <a href="social.html">Social</a>
256 </nav>
257</footer>
258</body>
259</html>