clew-code 0.2.4 → 0.2.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. package/README.md +264 -292
  2. package/dist/clew-dev.js +5118 -2840
  3. package/dist/main.js +2358 -2133
  4. package/docs/_config.yml +1 -1
  5. package/docs/architecture.html +145 -166
  6. package/docs/architecture.th.html +2 -23
  7. package/docs/commands.html +1 -22
  8. package/docs/commands.th.html +1 -22
  9. package/docs/configuration.html +145 -166
  10. package/docs/configuration.th.html +2 -23
  11. package/docs/css/styles.css +22 -0
  12. package/docs/daemon.html +128 -160
  13. package/docs/daemon.th.html +2 -30
  14. package/docs/features/bridge-mode.html +98 -98
  15. package/docs/features/bridge-mode.th.html +1 -1
  16. package/docs/features/evals.html +181 -181
  17. package/docs/features/evals.th.html +1 -1
  18. package/docs/features/searxng-search.html +150 -150
  19. package/docs/features/searxng-search.th.html +1 -1
  20. package/docs/features/sentry-setup.html +156 -156
  21. package/docs/features/sentry-setup.th.html +1 -1
  22. package/docs/index.html +298 -333
  23. package/docs/index.th.html +1 -36
  24. package/docs/installation.html +103 -124
  25. package/docs/installation.th.html +2 -23
  26. package/docs/internals/growthbook-ab-testing.html +112 -112
  27. package/docs/internals/growthbook-ab-testing.th.html +1 -1
  28. package/docs/internals/hidden-features.html +147 -147
  29. package/docs/internals/hidden-features.th.html +1 -1
  30. package/docs/js/main.js +78 -7
  31. package/docs/loop.html +180 -0
  32. package/docs/loop.th.html +226 -0
  33. package/docs/mcp.html +246 -157
  34. package/docs/mcp.th.html +156 -60
  35. package/docs/models.html +1 -22
  36. package/docs/models.th.html +1 -22
  37. package/docs/peer.html +235 -0
  38. package/docs/peer.th.html +279 -0
  39. package/docs/permission-model.html +101 -122
  40. package/docs/permission-model.th.html +2 -23
  41. package/docs/plugins.html +101 -122
  42. package/docs/plugins.th.html +2 -23
  43. package/docs/providers.html +117 -138
  44. package/docs/providers.th.html +2 -23
  45. package/docs/quick-start.html +92 -120
  46. package/docs/quick-start.th.html +1 -29
  47. package/docs/research-memory.html +79 -111
  48. package/docs/research-memory.th.html +2 -30
  49. package/docs/skills.html +116 -137
  50. package/docs/skills.th.html +2 -23
  51. package/docs/taste.html +96 -29
  52. package/docs/taste.th.html +193 -54
  53. package/docs/tools.html +169 -190
  54. package/docs/tools.th.html +2 -23
  55. package/docs/troubleshooting.html +105 -126
  56. package/docs/troubleshooting.th.html +2 -23
  57. package/package.json +2 -2
@@ -4,7 +4,7 @@
4
4
  <meta charset="UTF-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
6
  <title>Taste — Clew Code</title>
7
- <meta name="description" content="รันไทม์การเรียนรู้ความชอบในเครื่องสำหรับ Clew — สัญญาณ accept/reject, กฎสัญลักษณ์, และการปรับแต่ง bandit">
7
+ <meta name="description" content="ระบบเรียนรู้ preference แบบ local-first สำหรับ Clew Code — accept/reject signals, symbolic rules, bandit optimization">
8
8
  <link rel="preconnect" href="https://fonts.googleapis.com">
9
9
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
10
  <link href="https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600;700&family=Noto+Sans+Thai:wght@400;500;600;700&display=swap" rel="stylesheet">
@@ -12,35 +12,7 @@
12
12
  <link rel="icon" type="image/svg+xml" href="./assets/clew.svg">
13
13
  </head>
14
14
  <body>
15
- <header class="header">
16
- <div class="header-inner">
17
- <a href="index.th.html" class="logo">
18
- <span>Clew Code</span>
19
- </a>
20
- <nav class="header-nav">
21
- <a href="index.th.html">หน้าแรก</a><a href="index.th.html#features">ฟีเจอร์</a><a href="index.th.html#commands">คำสั่ง</a><a href="quick-start.th.html" class="active">เอกสาร</a><a href="https://github.com/JonusNattapong/ClewCode" target="_blank">GitHub</a>
22
- <div class="lang-wrap">
23
- <button class="lang-btn">🌐</button>
24
- <div class="lang-menu">
25
- <a href="../readme/README.zh.md">中文</a>
26
- <a href="../readme/README.th.md">ไทย</a>
27
- <a href="../readme/README.ja.md">日本語</a>
28
- <a href="../readme/README.ko.md">한국어</a>
29
- <a href="../readme/README.es.md">Español</a>
30
- <a href="../readme/README.fr.md">Français</a>
31
- <a href="../readme/README.de.md">Deutsch</a>
32
- <a href="../readme/README.pt.md">Português</a>
33
- <a href="../readme/README.vi.md">Tiếng Việt</a>
34
- <a href="../readme/README.id.md">Bahasa Indonesia</a>
35
- <a href="../readme/README.ru.md">Русский</a>
36
- <a href="../readme/README.hi.md">हिन्दी</a>
37
- <a href="taste.html">English</a>
38
- </div>
39
- </div>
40
- </nav>
41
- <button class="menu-btn" id="menuToggle" aria-label="เปิด/ปิดเมนู"><span></span><span></span><span></span></button>
42
- </div>
43
- </header>
15
+ <header class="header"></header>
44
16
  <div class="app">
45
17
  <aside class="sidebar" id="sidebar"></aside>
46
18
  <div class="sidebar-overlay" id="sidebarOverlay"></div>
@@ -48,44 +20,211 @@
48
20
  <main class="content">
49
21
  <div class="breadcrumbs"><a href="index.th.html">หน้าแรก</a><span class="sep">/</span><span>Taste</span></div>
50
22
  <h1>Taste</h1>
51
- <p class="section-subtitle">รันไทม์การเรียนรู้ความชอบในเครื่องสำหรับ Clew Code</p>
23
+ <p class="section-subtitle">ระบบเรียนรู้ preference แบบ local-first — จากสัญญาณ accept/reject/edit/lint/test สู่กฎที่ปรับแต่งได้</p>
24
+
25
+ <p>Taste เรียนรู้สไตล์โค้ดของคุณจากสัญญาณ accept, reject, edit, test, lint และกฎที่ผู้ใช้กำหนด มันรวมกฎสัญลักษณ์, การให้คะแนน preference เชิงความหมาย, และ contextual bandit optimization เพื่อปรับให้ Clew ตอบสนองตรงตามความต้องการของคุณ</p>
26
+
27
+ <p>มัน<strong>ไม่ได้</strong> fine-tune LLM — การเรียนรู้ทั้งหมดเป็น local, online, และ preference-based</p>
28
+
29
+ <h2>เทคนิคและหลักการ</h2>
30
+
31
+ <h3>เหตุใดต้องใช้ Preference Learning แทนที่จะใช้ Prompt เพียงอย่างเดียว?</h3>
32
+ <p>CLAUDE.md และ system prompt กำหนดกฎแบบ static — ใช้ได้ดีสำหรับกฎที่คุณรู้ล่วงหน้า แต่<strong>ไม่สามารถปรับตัวตาม feedback จริง</strong>ได้:</p>
33
+ <ul>
34
+ <li><strong>คุณไม่รู้ทุกกฎล่วงหน้า</strong> — บางทีคุณอาจไม่รู้ด้วยซ้ำว่าตัวเองชอบ pattern แบบไหนจนกว่าจะเห็นผลลัพธ์</li>
35
+ <li><strong>กฎเปลี่ยนตามโปรเจค</strong> — React project กับ Python library มีสไตล์ต่างกันโดยสิ้นเชิง</li>
36
+ <li><strong>มนุษย์สื่อสาร preference ได้ไม่สมบูรณ์</strong> — "เขียนโค้ดให้ดี" ไม่ใช่ instruction ที่ชัดเจนพอสำหรับ LLM</li>
37
+ </ul>
38
+ <p>Taste เรียนรู้จาก<em>พฤติกรรม</em>ของคุณแทน — ถ้าคุณ accept output ที่ใช้ <code>const</code> แทน <code>let</code> บ่อยๆ มันจะเรียนรู้ ถ้าคุณ reject หรือแก้ไข มันจะลดน้ำหนัก</p>
39
+
40
+ <h3>Online Feedback Loop — ไม่ใช่ Batch Training</h3>
41
+ <p>Taste ใช้<strong>online learning</strong> — เรียนรู้ทันทีจากทุก interaction:</p>
42
+ <pre><code>User interaction ──► Signal collector ──► Reward model (+1.0 / -1.0 / +0.4)
43
+
44
+
45
+ Rule confidence update
46
+
47
+ ┌───────────────┼───────────────┐
48
+ ▼ ▼ ▼
49
+ Confidence ↑ Confidence ↓ Decay if unused
50
+ (accept/ (reject/edit) (30 day half-life)
51
+ test pass)</code></pre>
52
+
53
+ <h3>Multi-Signal Reward Model</h3>
54
+ <p>ไม่ใช่แค่ accept/reject — ใช้หลายสัญญาณประกอบกัน:</p>
55
+ <div class="table-wrap">
56
+ <table>
57
+ <tr><th>สัญญาณ</th><th>Reward</th><th>เหตุผล</th></tr>
58
+ <tr><td>Accept</td><td>+1.0</td><td>ผู้ใช้พอใจ — สัญญาณบวกแรงที่สุด</td></tr>
59
+ <tr><td>Reject</td><td>-1.0</td><td>ผู้ใช้ปฏิเสธ — สัญญาณลบแรงที่สุด</td></tr>
60
+ <tr><td>Edit (small)</td><td>-0.3</td><td>แก้ไขเล็กน้อย — เกือบพอใจ</td></tr>
61
+ <tr><td>Edit (large)</td><td>-0.7</td><td>แก้ไขเยอะ — output ห่างจากที่ต้องการ</td></tr>
62
+ <tr><td>Test pass</td><td>+0.4</td><td>โค้ดถูกต้องทางเทคนิค</td></tr>
63
+ <tr><td>Test fail</td><td>-0.6</td><td>โค้ดมี bug</td></tr>
64
+ <tr><td>Lint pass</td><td>+0.2</td><td>ตรงตาม style convention</td></tr>
65
+ <tr><td>Tool result OK</td><td>+0.3</td><td>เลือกใช้ tool ถูกต้อง</td></tr>
66
+ </table>
67
+ </div>
68
+
69
+ <h3>Contextual Bandit — เลือกกลยุทธ์ตามบริบท</h3>
70
+ <p>ไม่ใช่ทุกงานต้องการสไตล์เดียวกัน — refactor เน้น architecture, bug fix เน้น safety:</p>
71
+ <ul>
72
+ <li><strong>ε-greedy bandit 6 แขน</strong> — minimal, strict_style, architecture_first, test_first, safety_first, refactor_heavy</li>
73
+ <li><strong>Context features</strong> — วิเคราะห์ task context แล้วเลือกแขนที่ให้ reward สูงสุดในอดีต</li>
74
+ <li><strong>Exploration vs exploitation</strong> — ε โอกาสสุ่มลองแขนใหม่ (explore), 1-ε เลือกที่รู้ว่าดี (exploit) — default ε = 0.1</li>
75
+ <li><strong>ทำไมต้อง bandit?</strong> — กฎ "use const" อาจขัดกับ "minimal changes" ในบางบริบท Bandit ช่วย balance หลาย objective</li>
76
+ </ul>
77
+
78
+ <h3>Three-Tier Rule Engine</h3>
79
+ <p>ไม่ใช่ทุกกฎที่สำคัญเท่ากัน — แบ่งเป็น 3 ระดับตาม confidence:</p>
80
+ <ul>
81
+ <li><strong>Tier 1 — Symbolic (≥ 0.85)</strong> — <em>block</em> การแก้ไขที่ไม่ตรง: เช่น "ห้ามใช้ <code>any</code>" → block + แจ้งเหตุผล</li>
82
+ <li><strong>Tier 2 — Prompt Injection (≥ 0.55)</strong> — ใส่ใน system prompt เป็น <code>&lt;clew_taste&gt;</code> block (max 8 rules)</li>
83
+ <li><strong>Tier 3 — Scored (&lt; 0.55)</strong> — ใช้ neural scorer (Jaccard/TF-IDF) เทียบ relevance แต่ไม่ inject</li>
84
+ </ul>
85
+
86
+ <h3>Auto-Learn — AI วิเคราะห์ Codebase</h3>
87
+ <p><code>TasteCodebaseAnalyzer</code> อ่าน .editorconfig, biome.json, tsconfig.json, สุ่ม 20 source files, git log 50 commits → ส่งให้ fast model วิเคราะห์ → หา patterns → เสนอเป็น suggestion ให้ผู้ใช้ accept/reject</p>
88
+
89
+ <h3>Decay — ป้องกัน Stale Rules</h3>
90
+ <ul>
91
+ <li><strong>Half-life decay</strong> — confidence ลดลงครึ่งทุก 30 วันถ้าไม่ใช้</li>
92
+ <li><strong>Cooldown</strong> — หลัง reject → cooldown 30 นาทีก่อนเสนอใหม่</li>
93
+ <li><strong>ทำไม?</strong> — โปรเจคเปลี่ยน, สไตล์ทีมเปลี่ยน, toolchain upgrade — กฎเก่าอาจไม่เกี่ยวข้องแล้ว</li>
94
+ </ul>
95
+
96
+ <h3>Privacy-First</h3>
97
+ <p>ทุกอย่าง local — ไม่ส่งข้อมูลไป cloud, event log เป็น append-only JSONL, export/import เกิดเมื่อผู้ใช้สั่งเท่านั้น</p>
52
98
 
53
- <p>Taste เรียนรู้สไตล์การเขียนโค้ดของคุณจากสัญญาณ accept, reject, edit, test, lint และกฎที่ผู้ใช้กำหนด มันรวมกฎสัญลักษณ์, การให้คะแนนความชอบเชิงความหมาย, และการปรับแต่ง contextual bandit เพื่อปรับผลลัพธ์ของ Clew ให้ตรงกับความชอบของคุณ</p>
99
+ <h2>สิ่งที่ระบบเรียนรู้</h2>
100
+ <ul>
101
+ <li><strong>Code style</strong> — formatting, naming conventions, preferred patterns</li>
102
+ <li><strong>Architecture</strong> — module structure, dependency direction, layering</li>
103
+ <li><strong>Tooling</strong> — preferred build tools, linters, test frameworks</li>
104
+ <li><strong>Testing</strong> — test style, coverage expectations, mocking patterns</li>
105
+ <li><strong>Naming</strong> — variable, function, and class naming conventions</li>
106
+ <li><strong>Security</strong> — safe patterns vs unsafe patterns</li>
107
+ <li><strong>Performance</strong> — efficient algorithms, caching, resource management</li>
108
+ <li><strong>UI patterns</strong> — component structure, state management, styling approach</li>
109
+ <li><strong>Workflow</strong> — commit style, review preferences, deployment habits</li>
110
+ </ul>
54
111
 
55
- <h2>สิ่งที่มันเรียนรู้</h2>
112
+ <h2>สิ่งที่ Taste ไม่ทำ</h2>
56
113
  <ul>
57
- <li><strong>สไตล์โค้ด</strong> การจัดรูปแบบ, หลักการตั้งชื่อ, รูปแบบที่ชอบ</li>
58
- <li><strong>สถาปัตยกรรม</strong> โครงสร้างโมดูล, ทิศทาง dependencies, การแบ่งชั้น</li>
59
- <li><strong>เครื่องมือ</strong> build tools, linters, test frameworks ที่ชอบ</li>
60
- <li><strong>การทดสอบ</strong> สไตล์การทดสอบ, ความคาดหวังความครอบคลุม, รูปแบบ mocking</li>
61
- <li><strong>การตั้งชื่อ</strong> — หลักการตั้งชื่อตัวแปร, ฟังก์ชัน, และคลาส</li>
62
- <li><strong>ความปลอดภัย</strong> — รูปแบบที่ปลอดภัย vs ไม่ปลอดภัย</li>
114
+ <li>ไม่ fine-tune หรือแก้ไข base LLM</li>
115
+ <li>ไม่ส่งข้อมูลไปยัง remote services</li>
116
+ <li>ไม่ block การแก้ไขโดยไม่แสดงเหตุผล</li>
117
+ <li>ไม่แทนที่ memory, skills, หรือ CLAUDE.md</li>
63
118
  </ul>
64
119
 
120
+ <h2>สถาปัตยกรรม</h2>
121
+ <pre><code> ╔══════════════════════════════════════════════════════════════════════════════╗
122
+ ║ TASTE — PREFERENCE LEARNING RUNTIME ║
123
+ ╚══════════════════════════════════════════════════════════════════════════════╝
124
+
125
+ ┌──────────────────────────┐
126
+ │ USER INTERACTION │
127
+ │ accept / reject / edit │
128
+ │ test pass / lint signal │
129
+ └────────────┬─────────────┘
130
+
131
+ ┌─────────────────────────────┼─────────────────────────────┐
132
+ │ │ │
133
+ ▼ ▼ ▼
134
+ ┌───────────────┐ ┌───────────────┐ ┌───────────────┐
135
+ │ AcceptReject │ │ DiffSignal │ │EditDistance │
136
+ │ Tracker │ │ Extractor │ │ Reward │
137
+ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘
138
+ │ │ │
139
+ └──────────────────────────┼───────────────────────────┘
140
+
141
+
142
+ ┌─────────────────────┐
143
+ │ TasteSignalCollector │
144
+ │ (unified event hub) │
145
+ └──────────┬──────────┘
146
+
147
+
148
+ ┌─────────────────────┐
149
+ │ TasteRewardModel │
150
+ │ signal → reward map │
151
+ └──────────┬──────────┘
152
+
153
+ ┌───────────────┼───────────────┐
154
+ │ │ │
155
+ ▼ ▼ ▼
156
+ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐
157
+ │TasteBandit │ │AutoLearn │ │TasteDecay │
158
+ │ε-greedy (6 │ │Engine │ │confidence ↓ │
159
+ │strategy arms)│ │pattern→rule │ │over time │
160
+ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘
161
+ │ │ │
162
+ │ ┌───────────┘ │
163
+ │ │ │
164
+ ▼ ▼ │
165
+ ┌──────────────────┐ │
166
+ │ TasteRuntime │◄────────────────────┘
167
+ │ (orchestrator) │
168
+ └────────┬─────────┘
169
+
170
+ ┌─────────────┼─────────────┬──────────────────┐
171
+ │ │ │ │
172
+ ▼ ▼ ▼ ▼
173
+ ┌─────────┐ ┌──────────┐ ┌──────────────┐ ┌────────────────┐
174
+ │Symbolic │ │Neural │ │PromptInjector│ │ TasteEventLog │
175
+ │Engine │ │Scorer │ │injects │ │ append-only │
176
+ │compile │ │Jaccard/ │ │&lt;clew_taste&gt; │ │ JSONL │
177
+ │rules→ │ │TF-IDF │ │block (max 8 │ │ │
178
+ │check │ │relevance │ │rules) │ │ │
179
+ └────┬────┘ └────┬─────┘ └──────┬───────┘ └────────────────┘
180
+ │ │ │
181
+ ▼ │ ▼
182
+ ┌─────────┐ │ ┌────────────────┐
183
+ │validate │ │ │ SYSTEM PROMPT │
184
+ │Edit() │ └────►│ (taste block) │
185
+ │block if │ │ │
186
+ │conf ≥ │ │ → AI adapts │
187
+ │0.85 │ │ output style │
188
+ └─────────┘ └────────────────┘
189
+
190
+
191
+ ═══ CODEBASE AUTO-LEARN ═══
192
+
193
+ Codebase ──► TasteCodebaseAnalyzer ──► PatternDetector ──► AutoLearnEngine
194
+ (อ่าน conventions) (ค้นหา patterns) (สร้าง rules)
195
+
196
+
197
+ TasteProfileStore
198
+ .clew/taste/profile.json</code></pre>
199
+
65
200
  <h2>คำสั่ง</h2>
66
- <table>
67
- <tr><th>คำสั่ง</th><th>คำอธิบาย</th></tr>
68
- <tr><td><code>/taste</code></td><td>เปิดเมนูแบบโต้ตอบ (นำทางด้วยลูกศร)</td></tr>
69
- <tr><td><code>/taste status</code></td><td>แสดงสถานะ</td></tr>
70
- <tr><td><code>/taste learn &lt;rule&gt;</code></td><td>เพิ่มกฎด้วยตนเอง</td></tr>
71
- <tr><td><code>/taste forget &lt;id&gt;</code></td><td>ลบกฎตาม ID</td></tr>
72
- <tr><td><code>/taste profile</code></td><td>แสดงโปรไฟล์ทั้งหมดพร้อมกฎ</td></tr>
73
- <tr><td><code>/taste on</code></td><td>เปิดใช้งาน taste</td></tr>
74
- <tr><td><code>/taste off</code></td><td>ปิดใช้งาน taste</td></tr>
75
- </table>
201
+ <div class="table-wrap">
202
+ <table>
203
+ <tr><th>คำสั่ง</th><th>คำอธิบาย</th></tr>
204
+ <tr><td><code>/taste</code></td><td>เปิดเมนู interactive</td></tr>
205
+ <tr><td><code>/taste status</code></td><td>แสดงสถานะ</td></tr>
206
+ <tr><td><code>/taste profile</code></td><td>แสดง rules ทั้งหมด</td></tr>
207
+ <tr><td><code>/taste learn &lt;rule&gt;</code></td><td>เพิ่ม rule เอง</td></tr>
208
+ <tr><td><code>/taste forget &lt;id&gt;</code></td><td>ลบ rule</td></tr>
209
+ <tr><td><code>/taste suggest</code></td><td>ดูข้อเสนอจาก auto-learn</td></tr>
210
+ <tr><td><code>/taste accept &lt;id&gt;</code></td><td>ยอมรับ suggestion</td></tr>
211
+ <tr><td><code>/taste reject &lt;id&gt;</code></td><td>ปฏิเสธ suggestion</td></tr>
212
+ </table>
213
+ </div>
76
214
 
77
215
  <h2>ความเป็นส่วนตัว</h2>
78
216
  <ul>
79
- <li>ข้อมูล taste ทั้งหมดอยู่ในเครื่องโดยค่าเริ่มต้น</li>
80
- <li>โปรไฟล์และบันทึกเหตุการณ์ถูกเก็บใน <code>.clew/taste/</code> หรือ <code>~/.clew/taste/</code></li>
81
- <li>ไม่มีข้อมูลถูกส่งไปยังบริการระยะไกล</li>
217
+ <li>ข้อมูล taste ทั้งหมดอยู่ local</li>
218
+ <li>โปรไฟล์และ event log ใน <code>.clew/taste/</code> หรือ <code>~/.clew/taste/</code></li>
219
+ <li>ไม่ส่งข้อมูลไป cloud หรือ training</li>
220
+ <li>Export/import เกิดเมื่อผู้ใช้สั่งเท่านั้น</li>
82
221
  </ul>
83
222
 
84
223
  <footer class="footer">
85
- <span>Clew Code v0.2.4 โอเพนซอร์ส</span>
224
+ <span>Clew Code — Open Source</span>
86
225
  <div class="footer-links">
87
226
  <a href="https://github.com/JonusNattapong/ClewCode">GitHub</a>
88
- <a href="https://github.com/JonusNattapong/ClewCode/issues">ปัญหา</a>
227
+ <a href="https://github.com/JonusNattapong/ClewCode/issues">Issues</a>
89
228
  </div>
90
229
  </footer>
91
230
  </main>