-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBuilding-FredAgent-System.dc.html
More file actions
206 lines (191 loc) · 21.3 KB
/
Copy pathBuilding-FredAgent-System.dc.html
File metadata and controls
206 lines (191 loc) · 21.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="color-scheme" content="light">
<title>Fred Agent System · Fred Yang</title>
<meta name="description" content="Trace how Fred Agent turns existing agent capability into real-life outcomes.">
<link rel="icon" href="./favicon.png" type="image/png" sizes="512x512">
<link rel="apple-touch-icon" href="./favicon.png">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="anonymous">
<link href="https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght@9..144,400;9..144,500;9..144,600&family=Caveat:wght@500;600&family=IBM+Plex+Mono:wght@400;500&family=Noto+Serif+SC:wght@400;500;600&family=Noto+Sans+SC:wght@400;500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="./site-nav.css?v=20260715-13">
<link rel="stylesheet" href="./fred-agent.css?v=20260721-2">
<script src="./support.js"></script>
<script src="./fred-agent.js?v=20260721-1" defer></script>
</head>
<body>
<a class="skip-link util" href="#main-content">Skip to content</a>
<x-dc>
<div class="fa-page" data-screen-label="fred-agent-system">
<header class="site-shell-header">
<div class="site-header-row">
<a class="site-identity" href="index.html" aria-label="Fred Yang,弗雷德。继续写,继续造。返回首页"><span class="site-identity-copy"><span class="site-identity-names"><span class="site-identity-name site-identity-name--en">Fred Yang</span><span class="site-identity-name site-identity-name--zh" lang="zh">弗雷德</span></span><span class="site-identity-tag" lang="zh">继续写,继续造</span><span class="site-identity-stickers" aria-hidden="true"><img class="site-identity-sticker site-identity-sticker--ghost" src="./assets/identity-sticker-ghost.png" srcset="./assets/identity-sticker-ghost@2x.png 2x" alt=""><img class="site-identity-sticker site-identity-sticker--blob" src="./assets/identity-sticker-blob.png" srcset="./assets/identity-sticker-blob@2x.png 2x" alt=""></span></span></a>
<div class="site-header-status">system map · 04 paths</div>
</div>
<nav class="site-index" aria-label="Primary navigation">
<a class="site-home" href="index.html" aria-label="Home — 首页"><img class="site-home-object" src="./assets/sticker-peek.png" alt="" aria-hidden="true"><span class="site-nav-label"><span class="en">home</span></span></a>
<a class="site-tab site-tab--writing" href="Writing.dc.html" aria-label="Writing — 在写"><span class="site-nav-object site-nav-book"></span><span class="site-nav-label"><span class="en">writing</span></span></a>
<a class="site-tab site-tab--building" href="Building.dc.html" aria-label="Building — 在造" aria-current="page"><span class="site-nav-object site-nav-laptop"></span><span class="site-nav-label"><span class="en">building</span></span></a>
<a class="site-tab site-tab--shooting" href="Gallery.dc.html" aria-label="Shooting — 在拍"><span class="site-nav-object site-nav-camera" aria-hidden="true"></span><span class="site-nav-label"><span class="en">shooting</span></span></a>
<a class="site-tab site-tab--about" href="About.dc.html" aria-label="About — 关于"><span class="site-nav-object site-nav-frame"></span><span class="site-nav-label"><span class="en">about</span></span></a>
</nav>
</header>
<div class="fa-project-strip">
<div class="fa-project-strip-inner">
<a class="fa-back" href="Building.dc.html">← Building board</a>
<nav class="fa-project-nav" aria-label="Fred Agent chapters">
<ul class="fa-project-nav-list">
<li><a href="Building-FredAgent.dc.html">Overview</a></li>
<li><a href="Building-FredAgent-System.dc.html" aria-current="page">System</a></li>
<li><a href="Building-FredAgent-Principles.dc.html">Principles</a></li>
<li><a href="Building-FredAgent-Components.dc.html">Components</a></li>
<li><a href="Building-FredAgent-Demos.dc.html">Demos</a></li>
</ul>
</nav>
</div>
</div>
<main id="main-content" class="fa-stage fa-rise">
<div class="fa-breadcrumb"><a href="Building-FredAgent.dc.html">Fred Agent</a><span>/</span><span>System</span></div>
<header class="fa-hero fa-hero--single" aria-labelledby="page-title">
<div>
<div class="fa-eyebrow">System overview · enablement in layers</div>
<h1 id="page-title" class="fa-title fa-title--compact display">From existing capability<br>to real <span class="fa-title-mark">opportunity</span></h1>
<p class="fa-deck">Agents can already reason and act. Fred Agent gives that ability somewhere to go.</p>
<div class="fa-hero-meta"><span>04 real-life outcomes</span><span>04 workflow protocols</span><span>05 atomic handles</span><span>01 policy module</span></div>
</div>
</header>
<section class="fa-section" aria-labelledby="outside-in-title">
<div class="fa-section-head">
<div class="fa-section-index">01 / outcomes<strong>What becomes possible</strong></div>
<div>
<h2 id="outside-in-title" class="fa-section-title display">The capability was there. The opportunity was missing.</h2>
<p class="fa-section-intro">Enablement means opening four practical doors into real life.</p>
</div>
</div>
<div class="fa-capability-grid">
<article class="fa-card fa-card--signature fa-card--wash-wheat fa-reveal"><div class="fa-card-kicker">Presence</div><h3>Arrive when the obligation exists</h3><p>Wake by clock, sunlight, condition, or one future moment.</p></article>
<article class="fa-card fa-card--signature fa-card--wash-blue fa-reveal"><div class="fa-card-kicker">Reach</div><h3>Enter the interfaces life still uses</h3><p>Call, message, email, observe, and preserve a result.</p></article>
<article class="fa-card fa-card--signature fa-reveal"><div class="fa-card-kicker">Continuity</div><h3>Carry work across sessions</h3><p>Share one Notion workspace with the human for co-authoring, while canonical task state lets any new agent or session resume without relying on model memory.</p></article>
<article class="fa-card fa-card--signature fa-card--wash-peach fa-reveal"><div class="fa-card-kicker">Recovery</div><h3>Recover after execution failure</h3><p>Preserve the retry, attempt a bounded fix, and tell the human only when action is still needed.</p></article>
</div>
</section>
<section class="fa-section" aria-labelledby="map-title">
<div class="fa-section-head">
<div class="fa-section-index">02 / composition<strong>Trace the system</strong></div>
<div>
<h2 id="map-title" class="fa-section-title display">Atomic handles → workflow protocols → real-life outcomes</h2>
<p id="map-help" class="fa-section-intro">Hover or focus to trace a path. Click any module to lock the path and open its concise explainer; click again or press Escape to close it.</p>
</div>
</div>
<div class="system-map-shell" data-system-map>
<div class="system-map-toolbar">
<p>Fred Agent is the enablement environment around these paths—not another peer node.</p>
<button class="system-map-clear" type="button" data-map-clear>Clear path</button>
</div>
<div class="system-map" role="group" aria-labelledby="map-title" aria-describedby="map-help">
<section class="map-layer" aria-labelledby="use-case-layer">
<h3 id="use-case-layer" class="map-layer-label">Real-life outcomes</h3>
<div class="map-grid">
<button class="map-node map-node--outcome" type="button" data-node-id="u-intake" data-layer="use-case" data-layer-label="Real-life outcome" data-title="Process something I dropped from my phone" data-summary="Stage the messy input, understand it, do the work, and preserve the result before advancing the cursor." data-uses="Enabled by: Discord Intake · Sundial · Outreach · Media Understanding · Notion Gateway" data-rails="time state evidence" aria-pressed="false"><svg class="map-node-icon" viewBox="0 0 32 32" aria-hidden="true"><rect x="9" y="4" width="14" height="24" rx="3"></rect><path d="M13 8h6M14.5 24h3M5 14l3 3-3 3"></path></svg><span class="map-node-kicker">Outcome 01</span><strong>Process something from my phone</strong></button>
<button class="map-node map-node--outcome" type="button" data-node-id="u-contact" data-layer="use-case" data-layer-label="Real-life outcome" data-title="Call me only when the decision cannot wait" data-summary="A blocking, time-sensitive decision can ring the phone. Everything else waits in a written digest." data-uses="Enabled by: Contact Operator · Outreach · Whoami" data-rails="attention state evidence" aria-pressed="false"><svg class="map-node-icon" viewBox="0 0 32 32" aria-hidden="true"><path d="M10 7c1-1 3-1 4 0l2 4c.5 1 .2 2-.6 2.8l-2 1.5c1.4 3 3.7 5.3 6.7 6.7l1.5-2c.7-.8 1.8-1.1 2.8-.6l4 2c1 .6 1 3 0 4-1.4 1.4-3.5 2-5.5 1.5C13.4 24.5 7.5 18.6 5.1 9.2 4.6 7.2 5.2 5.1 6.6 3.7"></path><path d="M21 7c2.2.6 3.9 2.3 4.5 4.5M21 3c4.4.8 7.1 3.5 8 8"></path></svg><span class="map-node-kicker">Outcome 02</span><strong>Call only when it cannot wait</strong></button>
<button class="map-node map-node--outcome" type="button" data-node-id="u-house" data-layer="use-case" data-layer-label="Real-life outcome" data-title="Tell me whether the house needs attention" data-summary="Check the scene when the obligation matters, compare it with the local rule, and send only the useful verdict." data-uses="Enabled by: Trash Patrol · Sundial · Smart-home adapter · Outreach" data-rails="time attention evidence" aria-pressed="false"><svg class="map-node-icon" viewBox="0 0 32 32" aria-hidden="true"><path d="M4 15 16 5l12 10v12H9V15"></path><path d="m15 21 3 3 6-7"></path></svg><span class="map-node-kicker">Outcome 03</span><strong>Know whether the house needs attention</strong></button>
<button class="map-node map-node--outcome" type="button" data-node-id="u-recovery" data-layer="use-case" data-layer-label="Real-life outcome" data-title="Tell me what failed and what happens next" data-summary="Preserve retry state, attempt a bounded repair, leave evidence, and return with a clear next step." data-uses="Enabled by: Unattended Recovery · Outreach · durable state" data-rails="state attention evidence" aria-pressed="false"><svg class="map-node-icon" viewBox="0 0 32 32" aria-hidden="true"><path d="M26 11a11 11 0 1 0 1 8"></path><path d="m26 5 .3 6-6 .2M16 10v7l4 2"></path></svg><span class="map-node-kicker">Outcome 04</span><strong>Know what failed and what comes next</strong></button>
</div>
</section>
<section class="map-layer" aria-labelledby="workflow-layer">
<h3 id="workflow-layer" class="map-layer-label">Composite workflow protocols</h3>
<div class="map-grid map-grid--workflows">
<button class="map-node map-node--workflow" type="button" data-node-id="p-intake" data-layer="workflow" data-layer-label="Composite workflow" data-title="Discord Intake" data-summary="A scheduled protocol for staging new messages, understanding attachments, performing the requested action, preserving the result, and advancing a durable cursor safely." data-uses="Used by: phone capture and asynchronous intake" data-rails="time state evidence" aria-pressed="false"><span class="map-node-kicker">Protocol</span><strong>Discord Intake</strong></button>
<button class="map-node map-node--workflow" type="button" data-node-id="p-contact" data-layer="workflow" data-layer-label="Composite workflow" data-title="Contact Operator" data-summary="An escalation policy that decides whether a human should be called now or receive a digest later." data-uses="Used by: unattended workflows with blocking decisions" data-rails="attention state evidence" aria-pressed="false"><span class="map-node-kicker">Protocol</span><strong>Contact Operator</strong></button>
<button class="map-node map-node--workflow" type="button" data-node-id="p-trash" data-layer="workflow" data-layer-label="Composite workflow" data-title="Trash Patrol" data-summary="A bounded household protocol combining solar timing, a camera capture, local collection rules, a short verdict, and cleanup." data-uses="Used by: curbside trash-bin checks" data-rails="time attention evidence" aria-pressed="false"><span class="map-node-kicker">Protocol</span><strong>Trash Patrol</strong></button>
</div>
<button class="map-node map-node--workflow map-node--crosscut" type="button" data-node-id="p-recovery" data-layer="workflow" data-layer-label="Cross-cutting workflow protocol" data-title="Headless Recovery" data-summary="A guarded response path around any unattended execution: preserve state, record evidence, report concisely, and dispatch one bounded investigation or repair." data-uses="Cross-cuts: every scheduled or headless execution" data-rails="state attention evidence" aria-pressed="false"><span class="map-node-kicker">Cross-cutting protocol · wraps every execution</span><strong>Headless Recovery</strong></button>
</section>
<section class="map-layer" aria-labelledby="capability-layer">
<h3 id="capability-layer" class="map-layer-label">Atomic handles + policy</h3>
<div class="map-grid map-grid--capabilities">
<button class="map-node" type="button" data-node-id="c-sundial" data-layer="capability" data-layer-label="Atomic handle" data-title="Sundial" data-summary="Makes time addressable through cron, solar, condition-gated, and one-time triggers." data-uses="Used by: Discord Intake · Trash Patrol" data-rails="time state" aria-pressed="false"><span class="map-node-kicker">Time</span><strong>Sundial</strong></button>
<button class="map-node" type="button" data-node-id="c-outreach" data-layer="capability" data-layer-label="Atomic handle" data-title="Outreach" data-summary="Makes calls, messages, email, Discord, and channel history available without owning workflow policy." data-uses="Used by: Discord Intake · Contact Operator · Trash Patrol · Unattended Recovery" data-rails="attention evidence" aria-pressed="false"><span class="map-node-kicker">Reach</span><strong>Outreach</strong></button>
<button class="map-node" type="button" data-node-id="c-notion" data-layer="capability" data-layer-label="Atomic handle" data-title="Notion Gateway" data-summary="Gives agents a schema-aware path into the same durable workspace the human uses." data-uses="Used by: Discord Intake · Unattended Recovery" data-rails="state evidence" aria-pressed="false"><span class="map-node-kicker">State</span><strong>Notion Gateway</strong></button>
<button class="map-node" type="button" data-node-id="c-media" data-layer="capability" data-layer-label="Atomic handle" data-title="Media Understanding" data-summary="Makes the content of attached audio, video, images, and files readable when a workflow needs it." data-uses="Used by: Discord Intake" data-rails="state evidence" aria-pressed="false"><span class="map-node-kicker">Perception</span><strong>Media Understanding</strong></button>
<button class="map-node" type="button" data-node-id="c-home" data-layer="capability" data-layer-label="Atomic handle" data-title="Smart-home adapter" data-summary="Exposes one bounded piece of physical state to the workflow that needs it." data-uses="Used by: Trash Patrol" data-rails="time evidence" aria-pressed="false"><span class="map-node-kicker">Physical state</span><strong>Smart-home adapter</strong></button>
<button class="map-node map-node--policy" type="button" data-node-id="c-whoami" data-layer="capability" data-layer-label="Policy and context" data-title="Whoami" data-summary="A privacy-aware router that reveals only the category of personal context needed for the current task." data-uses="Composed by: Contact Operator and other personalized workflows" data-rails="attention state" aria-pressed="false"><span class="map-node-kicker">Policy</span><strong>Whoami</strong></button>
</div>
</section>
<span class="map-edge" data-from="c-sundial" data-to="p-intake" aria-hidden="true"></span>
<span class="map-edge" data-from="c-outreach" data-to="p-intake" aria-hidden="true"></span>
<span class="map-edge" data-from="c-notion" data-to="p-intake" aria-hidden="true"></span>
<span class="map-edge" data-from="c-media" data-to="p-intake" aria-hidden="true"></span>
<span class="map-edge" data-from="p-intake" data-to="u-intake" aria-hidden="true"></span>
<span class="map-edge" data-from="c-outreach" data-to="p-contact" aria-hidden="true"></span>
<span class="map-edge" data-from="c-whoami" data-to="p-contact" aria-hidden="true"></span>
<span class="map-edge" data-from="p-contact" data-to="u-contact" aria-hidden="true"></span>
<span class="map-edge" data-from="c-sundial" data-to="p-trash" aria-hidden="true"></span>
<span class="map-edge" data-from="c-home" data-to="p-trash" aria-hidden="true"></span>
<span class="map-edge" data-from="c-outreach" data-to="p-trash" aria-hidden="true"></span>
<span class="map-edge" data-from="p-trash" data-to="u-house" aria-hidden="true"></span>
<span class="map-edge" data-from="p-recovery" data-to="u-intake" aria-hidden="true"></span>
<span class="map-edge" data-from="p-recovery" data-to="u-contact" aria-hidden="true"></span>
<span class="map-edge" data-from="p-recovery" data-to="u-house" aria-hidden="true"></span>
<span class="map-edge" data-from="p-recovery" data-to="u-recovery" aria-hidden="true"></span>
<div class="map-rails" aria-label="Cross-cutting rails">
<span class="map-rail" data-rail-id="time">Time</span>
<span class="map-rail" data-rail-id="state">State</span>
<span class="map-rail" data-rail-id="attention">Attention</span>
<span class="map-rail" data-rail-id="evidence">Evidence</span>
</div>
</div>
<div id="map-detail" class="map-detail" role="region" aria-live="polite" aria-atomic="true">
<div class="map-detail-label" data-detail-label>Module explainer</div>
<div>
<h3 data-detail-title>Click any module</h3>
<p data-detail-summary>A locked selection explains what the module owns and where it participates.</p>
<div class="map-detail-meta" data-detail-meta>Click or tap toggles · Escape clears</div>
</div>
</div>
<noscript><p class="fa-footnote">The four compositions are also described below: Discord Intake, Contact Operator, Trash Patrol, and Unattended Recovery.</p></noscript>
</div>
</section>
<section class="fa-section" aria-labelledby="rails-title">
<div class="fa-section-head">
<div class="fa-section-index">03 / operations<strong>Before it runs alone</strong></div>
<div>
<h2 id="rails-title" class="fa-section-title display">Every unattended workflow must answer four operational questions.</h2>
<p class="fa-section-intro">The handles explain what a workflow can do. These decisions define when it acts, what survives, when it interrupts, and how anyone can reconstruct the result.</p>
</div>
</div>
<div class="fa-rail-grid">
<article class="fa-card fa-card--label fa-reveal"><h3>01 · Time</h3><p>Name the trigger, active window, timeout, and condition for staying asleep.</p></article>
<article class="fa-card fa-card--label fa-reveal"><h3>02 · State</h3><p>Name the canonical record, checkpoint, and exact point at which work is complete.</p></article>
<article class="fa-card fa-card--label fa-reveal"><h3>03 · Attention</h3><p>Separate silent recovery, written digest, and the rare decision worth an interruption.</p></article>
<article class="fa-card fa-card--label fa-reveal"><h3>04 · Evidence</h3><p>Keep enough receipts to prove the side effect, retry safely, and explain cleanup.</p></article>
</div>
</section>
<section class="fa-section fa-section--tight" aria-labelledby="not-title">
<div class="fa-section-head">
<div class="fa-section-index">04 / boundary<strong>What it is not</strong></div>
<div>
<h2 id="not-title" class="fa-section-title display">A growing environment, not a universal autonomous agent.</h2>
<div class="fa-copy" style="margin-top:24px">
<p>Fred Agent is not a foundation model, a personality around one provider, or a catalog of API wrappers. It is not proof that every personal workflow should be automated.</p>
<p>It makes selected parts of life legible and actionable to a general-purpose agent.</p>
</div>
</div>
</div>
</section>
<nav class="fa-page-nav" aria-label="Fred Agent chapter navigation">
<a href="Building-FredAgent.dc.html"><span>← Previous</span><strong>Overview</strong></a>
<a href="Building-FredAgent-Principles.dc.html"><span>Next →</span><strong>Design Principles</strong></a>
</nav>
<footer class="fa-footer">
<span>Fred Agent · active system · 2025—now</span>
<div class="fa-footer-links"><a href="Building.dc.html">Building board</a><a href="https://github.com/fyang0507" target="_blank" rel="noopener noreferrer">Public GitHub ↗</a></div>
</footer>
</main>
</div>
</x-dc>
</body>
</html>