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
|
<svg xmlns="http://www.w3.org/2000/svg" width="1200" height="680" viewBox="0 0 1200 680" font-family="DejaVu Sans, Verdana, sans-serif">
<defs>
<linearGradient id="gBg" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#FFFFFF"/><stop offset="100%" stop-color="#EEF2FA"/></linearGradient>
<linearGradient id="gBlue" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#E3F2FD"/><stop offset="100%" stop-color="#BBDEFB"/></linearGradient>
<linearGradient id="gBlue2" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#E1F5FE"/><stop offset="100%" stop-color="#B3E5FC"/></linearGradient>
<linearGradient id="gPurple" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#F3E5F5"/><stop offset="100%" stop-color="#E1BEE7"/></linearGradient>
<linearGradient id="gYellow" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#FFFDE7"/><stop offset="100%" stop-color="#FFF9C4"/></linearGradient>
<linearGradient id="gGrey" x1="0" y1="0" x2="0" y2="1"><stop offset="0%" stop-color="#ECEFF1"/><stop offset="100%" stop-color="#CFD8DC"/></linearGradient>
<filter id="shadow" x="-30%" y="-30%" width="160%" height="160%"><feDropShadow dx="2" dy="3" stdDeviation="4" flood-color="#000000" flood-opacity="0.25"/></filter>
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#37474F"/></marker>
<marker id="arrowGrey" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#78909C"/></marker>
<marker id="arrowOrange" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse"><path d="M0,0 L10,5 L0,10 z" fill="#EF6C00"/></marker>
</defs>
<rect x="0" y="0" width="1200" height="680" fill="url(#gBg)"/>
<text x="600.0" y="38" text-anchor="middle" font-size="25" font-weight="700" fill="#1A237E">demos/gemma-coder — how the agent works</text>
<text x="600.0" y="61" text-anchor="middle" font-size="14" font-style="italic" fill="#546E7A">one request, one tool call per reply, done only when gopls, gofmt, the build and the tests agree</text>
<path d="M220,200 L300,200" fill="none" stroke="#37474F" stroke-width="2.2" marker-end="url(#arrow)"/>
<path d="M540,200 L900,200" fill="none" stroke="#37474F" stroke-width="2.2" marker-end="url(#arrow)"/>
<path d="M420,270 L420,370" fill="none" stroke="#37474F" stroke-width="2.2" marker-end="url(#arrow)"/>
<path d="M540,430 L600,430" fill="none" stroke="#37474F" stroke-width="2.2" marker-end="url(#arrow)"/>
<path d="M820,430 L880,430" fill="none" stroke="#37474F" stroke-width="2.2" marker-end="url(#arrow)"/>
<path d="M1030,330 L1030,260" fill="none" stroke="#37474F" stroke-width="2.2" marker-end="url(#arrow)"/>
<path d="M1030,600 L1030,635 L710,635 L710,490" fill="none" stroke="#EF6C00" stroke-width="2.2" stroke-dasharray="6,4" marker-end="url(#arrowOrange)"/>
<path d="M1030,140 L1030,100 L130,100 L130,140" fill="none" stroke="#37474F" stroke-width="2.2" marker-end="url(#arrow)"/>
<g filter="url(#shadow)"><rect x="40" y="140" width="180" height="120" rx="16" fill="url(#gBlue)" stroke="#1565C0" stroke-width="2"/></g>
<text x="130.0" y="180.0" text-anchor="middle" font-size="22">🧑</text>
<text x="130.0" y="203.0" text-anchor="middle" font-size="16" font-weight="700" fill="#0D47A1">User</text>
<text x="130.0" y="221.0" text-anchor="middle" font-size="11.5" fill="#0D47A1">describes what they want</text>
<text x="130.0" y="238.0" text-anchor="middle" font-size="11.5" fill="#0D47A1">terminal · -tui · editor</text>
<g filter="url(#shadow)"><rect x="300" y="140" width="240" height="130" rx="16" fill="url(#gPurple)" stroke="#6A1B9A" stroke-width="3"/></g>
<text x="420.0" y="176.5" text-anchor="middle" font-size="22">⚖️</text>
<text x="420.0" y="199.5" text-anchor="middle" font-size="16" font-weight="700" fill="#4A148C">Directive or Inquiry?</text>
<text x="420.0" y="217.5" text-anchor="middle" font-size="11.5" fill="#4A148C">Gemma 4 26B-A4B · thinking on</text>
<text x="420.0" y="234.5" text-anchor="middle" font-size="11.5" fill="#4A148C">add / fix / create → act</text>
<text x="420.0" y="251.5" text-anchor="middle" font-size="11.5" fill="#4A148C">explain / review → read only</text>
<rect x="478.4" y="128" width="71.6" height="24" rx="12" fill="#6A1B9A"/>
<text x="514.1999999999999" y="144" text-anchor="middle" font-size="11.5" font-weight="700" fill="#FFFFFF">★ triage</text>
<g filter="url(#shadow)"><rect x="900" y="140" width="260" height="120" rx="16" fill="url(#gBlue2)" stroke="#0277BD" stroke-width="2"/></g>
<text x="1030.0" y="180.0" text-anchor="middle" font-size="22">💬</text>
<text x="1030.0" y="203.0" text-anchor="middle" font-size="16" font-weight="700" fill="#01579B">Final answer</text>
<text x="1030.0" y="221.0" text-anchor="middle" font-size="11.5" fill="#01579B">files changed · go test: ok</text>
<text x="1030.0" y="238.0" text-anchor="middle" font-size="11.5" fill="#01579B">how to run it · in your language</text>
<g filter="url(#shadow)"><rect x="300" y="370" width="240" height="120" rx="16" fill="url(#gBlue2)" stroke="#0277BD" stroke-width="2"/></g>
<text x="420.0" y="410.0" text-anchor="middle" font-size="22">🔍</text>
<text x="420.0" y="433.0" text-anchor="middle" font-size="16" font-weight="700" fill="#01579B">Research</text>
<text x="420.0" y="451.0" text-anchor="middle" font-size="11.5" fill="#01579B">go.mod · git ls-files · read_file</text>
<text x="420.0" y="468.0" text-anchor="middle" font-size="11.5" fill="#01579B">lsp definition / references</text>
<g filter="url(#shadow)"><rect x="600" y="370" width="220" height="120" rx="16" fill="url(#gBlue2)" stroke="#0277BD" stroke-width="2"/></g>
<text x="710.0" y="410.0" text-anchor="middle" font-size="22">🔧</text>
<text x="710.0" y="433.0" text-anchor="middle" font-size="16" font-weight="700" fill="#01579B">Act</text>
<text x="710.0" y="451.0" text-anchor="middle" font-size="11.5" fill="#01579B">edit_file / write_file</text>
<text x="710.0" y="468.0" text-anchor="middle" font-size="11.5" fill="#01579B">one file per call</text>
<rect x="880" y="330" width="300" height="270" rx="10" fill="#FAFAFA" fill-opacity="0.7" stroke="#90A4AE" stroke-width="2" stroke-dasharray="7,5"/>
<text x="1030.0" y="352" text-anchor="middle" font-size="13" font-style="italic" font-weight="700" fill="#607D8B">Validate · asked after EVERY edit</text>
<g filter="url(#shadow)"><rect x="900" y="368" width="260" height="44" rx="12" fill="url(#gGrey)" stroke="#455A64" stroke-width="2"/></g>
<text x="1030.0" y="395.0" text-anchor="middle" font-size="13" font-weight="700" fill="#263238">1 · lsp diagnostics — 0/54 runs</text>
<g filter="url(#shadow)"><rect x="900" y="422" width="260" height="44" rx="12" fill="url(#gGrey)" stroke="#455A64" stroke-width="2"/></g>
<text x="1030.0" y="449.0" text-anchor="middle" font-size="13" font-weight="700" fill="#263238">2 · gofmt -l . — 3/18 runs</text>
<g filter="url(#shadow)"><rect x="900" y="476" width="260" height="44" rx="12" fill="url(#gGrey)" stroke="#455A64" stroke-width="2"/></g>
<text x="1030.0" y="503.0" text-anchor="middle" font-size="13" font-weight="700" fill="#263238">3 · go build ./...</text>
<g filter="url(#shadow)"><rect x="900" y="530" width="260" height="44" rx="12" fill="url(#gGrey)" stroke="#455A64" stroke-width="2"/></g>
<text x="1030.0" y="557.0" text-anchor="middle" font-size="13" font-weight="700" fill="#263238">4 · go test ./...</text>
<rect x="227.0" y="216.0" width="66" height="24" rx="5" fill="#FFFFFF"/>
<text x="260" y="232.5" text-anchor="middle" font-size="12.5" font-weight="700" fill="#263238">request</text>
<rect x="628.1" y="180.0" width="183.79999999999998" height="40" rx="5" fill="#FFFFFF"/>
<text x="720" y="197" text-anchor="middle" font-size="12.5" font-weight="700" fill="#263238">Inquiry</text>
<text x="720" y="213" text-anchor="middle" font-size="10.5" fill="#78909C">read-only: no file changed</text>
<rect x="380.0" y="308.0" width="80" height="24" rx="5" fill="#FFFFFF"/>
<text x="420" y="324.5" text-anchor="middle" font-size="12.5" font-weight="700" fill="#263238">Directive</text>
<rect x="1060.0" y="283.0" width="80" height="24" rx="5" fill="#FFFFFF"/>
<text x="1100" y="299.5" text-anchor="middle" font-size="12.5" font-weight="700" fill="#263238">all green</text>
<rect x="700.4" y="623.0" width="339.2" height="24" rx="5" fill="#FFFFFF"/>
<text x="870" y="639.5" text-anchor="middle" font-size="12.5" font-weight="700" fill="#263238">a step fails → fix the cause, run it again</text>
<rect x="433.20000000000005" y="88.0" width="293.59999999999997" height="24" rx="5" fill="#FFFFFF"/>
<text x="580" y="104.5" text-anchor="middle" font-size="12.5" font-weight="700" fill="#263238">the result, verified in this session</text>
<text x="420" y="530" text-anchor="middle" font-size="12" fill="#455A64" font-style="italic">same failure 3× → stop, re-read the request,</text>
<text x="420" y="548" text-anchor="middle" font-size="12" fill="#455A64" font-style="italic">list the assumptions, change approach</text>
<text x="420" y="590" text-anchor="middle" font-size="12" fill="#455A64" font-style="italic">Commit only when asked — then without asking back</text>
<text x="420" y="608" text-anchor="middle" font-size="12" fill="#455A64" font-style="italic">(stage only the named files, own message, git status)</text>
</svg>
|