autonomous-flow-daemon 1.1.0 โ 1.9.0
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.
- package/CHANGELOG.md +85 -46
- package/LICENSE +21 -21
- package/README-ko.md +282 -0
- package/README.md +282 -337
- package/mcp-config.json +10 -10
- package/package.json +14 -6
- package/src/adapters/index.ts +370 -159
- package/src/cli.ts +162 -57
- package/src/commands/benchmark.ts +187 -0
- package/src/commands/correlate.ts +180 -0
- package/src/commands/dashboard.ts +404 -0
- package/src/commands/diagnose.ts +56 -14
- package/src/commands/doctor.ts +243 -0
- package/src/commands/evolution.ts +190 -0
- package/src/commands/fix.ts +158 -138
- package/src/commands/hooks.ts +136 -0
- package/src/commands/lang.ts +41 -41
- package/src/commands/mcp.ts +129 -0
- package/src/commands/plugin.ts +110 -0
- package/src/commands/restart.ts +14 -0
- package/src/commands/score.ts +276 -208
- package/src/commands/start.ts +155 -96
- package/src/commands/stats.ts +103 -0
- package/src/commands/status.ts +157 -0
- package/src/commands/stop.ts +68 -49
- package/src/commands/suggest.ts +211 -0
- package/src/commands/sync.ts +567 -21
- package/src/commands/vaccine.ts +177 -0
- package/src/constants.ts +32 -8
- package/src/core/boast.ts +280 -265
- package/src/core/config.ts +49 -49
- package/src/core/correlation-engine.ts +265 -0
- package/src/core/db.ts +145 -46
- package/src/core/discovery.ts +65 -65
- package/src/core/evolution.ts +215 -0
- package/src/core/federation.ts +129 -0
- package/src/core/hologram/engine.ts +71 -0
- package/src/core/hologram/fallback.ts +11 -0
- package/src/core/hologram/go-extractor.ts +203 -0
- package/src/core/hologram/incremental.ts +227 -0
- package/src/core/hologram/py-extractor.ts +132 -0
- package/src/core/hologram/rust-extractor.ts +244 -0
- package/src/core/hologram/ts-extractor.ts +406 -0
- package/src/core/hologram/types.ts +27 -0
- package/src/core/hologram.ts +73 -243
- package/src/core/hook-manager.ts +259 -0
- package/src/core/i18n/messages.ts +309 -266
- package/src/core/immune.ts +8 -123
- package/src/core/locale.ts +88 -88
- package/src/core/log-rotate.ts +33 -0
- package/src/core/log-utils.ts +38 -0
- package/src/core/lru-map.ts +61 -0
- package/src/core/notify.ts +74 -66
- package/src/core/plugin-manager.ts +225 -0
- package/src/core/rule-engine.ts +287 -0
- package/src/core/rule-suggestion.ts +127 -0
- package/src/core/semantic-diff.ts +432 -0
- package/src/core/telemetry.ts +94 -0
- package/src/core/vaccine-registry.ts +212 -0
- package/src/core/validator-generator.ts +224 -0
- package/src/core/workspace.ts +28 -0
- package/src/core/yaml-minimal.ts +176 -0
- package/src/daemon/client.ts +78 -37
- package/src/daemon/event-batcher.ts +108 -0
- package/src/daemon/guards.ts +13 -0
- package/src/daemon/http-routes.ts +376 -0
- package/src/daemon/mcp-handler.ts +575 -0
- package/src/daemon/mcp-subscriptions.ts +81 -0
- package/src/daemon/mesh.ts +51 -0
- package/src/daemon/server.ts +655 -504
- package/src/daemon/types.ts +121 -0
- package/src/daemon/workspace-map.ts +104 -0
- package/src/platform.ts +60 -39
- package/src/version.ts +15 -0
- package/README.ko.md +0 -306
package/CHANGELOG.md
CHANGED
|
@@ -1,46 +1,85 @@
|
|
|
1
|
-
# Changelog
|
|
2
|
-
|
|
3
|
-
All notable changes to **afd** are documented in this file.
|
|
4
|
-
|
|
5
|
-
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
6
|
-
Versioning follows [Semantic Versioning](https://semver.org/).
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## [1.
|
|
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
|
-
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to **afd** are documented in this file.
|
|
4
|
+
|
|
5
|
+
Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
|
|
6
|
+
Versioning follows [Semantic Versioning](https://semver.org/).
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## [1.5.0] - 2026-04-02 โ "Trust-Builder"
|
|
11
|
+
|
|
12
|
+
> The immune system now speaks. Three pillars that make afd's defenses visible, self-improving, and smarter.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **Hologram L1 โ Import-Based Semantic Compression**
|
|
17
|
+
- New optional `contextFile` parameter on `afd_hologram` MCP tool and `/hologram` HTTP endpoint
|
|
18
|
+
- `extractImportedSymbols()` function: regex fast-path parsing of named imports, default imports, and namespace imports from the context file
|
|
19
|
+
- L1 filtering in `generateHologram()`: directly imported symbols receive full type signatures; non-imported exports are reduced to name-only stubs with guide text `// details omitted โ read directly if needed`
|
|
20
|
+
- Namespace imports (`import * as X`) trigger full L0 hologram (safe default, no false filtering)
|
|
21
|
+
- Silent fallback to L0 when `contextFile` is missing, unreadable, or yields zero import results
|
|
22
|
+
- Compression target: 85%+ with contextFile (vs ~80% L0 baseline)
|
|
23
|
+
- L1 is MCP/HTTP path only โ S.E.A.M hot path remains L0 to protect the 270ms budget
|
|
24
|
+
|
|
25
|
+
- **Antibody Passive Defense โ Mistake History Injection**
|
|
26
|
+
- New `mistake_history` SQLite table: `file_path`, `mistake_type`, `description` (max 200 chars), `antibody_id`, `timestamp`
|
|
27
|
+
- Indexes on `file_path` and `timestamp` for sub-millisecond query performance
|
|
28
|
+
- Write-through cache: `mistakeCache: Map<string, MistakeEntry[]>` loaded on daemon startup, updated on every insert
|
|
29
|
+
- Per-file cap of 5 most recent entries enforced at write time
|
|
30
|
+
- 30-day TTL purge on daemon startup (consistent with `telemetry` table pattern)
|
|
31
|
+
- Direct DB insert on auto-heal events (not via HTTP POST): records `mistake_type` from `symptom.patternType` and `description` from `symptom.title`
|
|
32
|
+
- New GET `/mistake-history?file=<path>` HTTP endpoint (returns max 5 entries, most recent first)
|
|
33
|
+
- `pastMistakes` field injected into `afd diagnose --format a2a` output on both the healthy path (proactive warning) and the auto-heal path (reactive)
|
|
34
|
+
- `pastMistakes` is omitted entirely when no history exists (zero token overhead)
|
|
35
|
+
- Path normalization: `file_path` stored with forward slashes (cross-platform safe)
|
|
36
|
+
|
|
37
|
+
- **HUD Defense Counter + Reasons**
|
|
38
|
+
- `/mini-status` endpoint enhanced with `total_defenses: number` and `defense_reasons: string[]` (in-memory only, no DB query โ always under 200ms)
|
|
39
|
+
- `defense_reasons` derived from in-memory `state.autoHealLog` (capped at 100 entries), returning up to 3 most recent unique `mistake_type` values
|
|
40
|
+
- Status bar format: `[afd] {N}๊ฑด ๋ฐฉ์ด ({reason1}, {reason2}, ...)` when defenses exist; `[afd] ON` when none
|
|
41
|
+
- Existing `healed_count` and `last_healed` fields preserved for backward compatibility
|
|
42
|
+
|
|
43
|
+
### Fixed
|
|
44
|
+
|
|
45
|
+
- **Windows path normalization in `assertInsideWorkspace()`**: backslash (`\`) separators in Windows paths are now normalized to forward slashes before workspace boundary checks, fixing false-positive "outside workspace" errors on Windows
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## [1.0.0] - 2026-03-31 โ "The Immortal Flow"
|
|
50
|
+
|
|
51
|
+
> [afd] ๐ก๏ธ AI agent deleted '.claudeignore' | ๐ฉน Self-healed in 184ms | Context preserved.
|
|
52
|
+
|
|
53
|
+
**Zero-config immunity for your AI development flow.**
|
|
54
|
+
|
|
55
|
+
### Phase 1โ3: Core S.E.A.M Engine & Magic 5 Commands
|
|
56
|
+
|
|
57
|
+
- Introduced the **S.E.A.M Cycle** (Scan โ Evaluate โ Act โ Monitor) as the central execution loop
|
|
58
|
+
- Implemented the **Magic 5 Commands**: `start`, `stop`, `score`, `fix`, `sync`
|
|
59
|
+
- Built `src/core/db.ts`: WAL-mode SQLite for sub-100ms file event persistence
|
|
60
|
+
- Built `src/core/hologram.ts`: AST-based skeleton extraction for token-efficient AI handoff
|
|
61
|
+
- Built `src/core/immune.ts`: Immune tolerance heuristics โ suppression logic for noisy events
|
|
62
|
+
- Implemented `src/daemon/server.ts` and `src/daemon/client.ts`: Unix socket IPC for daemon โ CLI communication
|
|
63
|
+
- Chokidar-backed file watcher with 100ms debounce in `src/daemon/server.ts`
|
|
64
|
+
|
|
65
|
+
### Phase 4โ5: Multilingual UI & Status Line Integration
|
|
66
|
+
|
|
67
|
+
- Added bilingual terminal UI (EN/KO) with chalk-based color output
|
|
68
|
+
- Integrated **Status Line** hook injection for Claude Code, Cursor, and Copilot adapters
|
|
69
|
+
- Added adapter layer (`src/adapters/`) for ecosystem-specific configuration
|
|
70
|
+
- Published `README.md` (English) and `README.ko.md` (Korean) with full documentation
|
|
71
|
+
|
|
72
|
+
### Phase 6aโ6b: Suppression Safety โ Double-Tap & Mass-Event Logic
|
|
73
|
+
|
|
74
|
+
- Added **Double-Tap suppression**: prevents re-triggering the same file within the cooldown window
|
|
75
|
+
- Added **Mass-Event suppression**: drops bulk filesystem events (threshold: โฅ 5 files / 500ms) to prevent runaway AI calls
|
|
76
|
+
- Added configurable `suppressionCooldownMs` and `massEventThreshold` / `massEventWindowMs`
|
|
77
|
+
- Full E2E safety suite: 9 tests across suppression scenarios โ all green
|
|
78
|
+
- Published `docs/06-suppression-safety-audit.md` and `docs/05-release-audit.md`
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## [0.1.0] - 2026-01-01 โ Initial prototype
|
|
83
|
+
|
|
84
|
+
- Project scaffold with Bun runtime
|
|
85
|
+
- Basic CLI skeleton and daemon concept
|
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 dotori
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 dotori
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README-ko.md
ADDED
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://capsule-render.vercel.app/api?type=soft&color=auto&height=200§ion=header&text=afd&fontSize=90" alt="afd" />
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h3 align="center">AI ์์ด์ ํธ๋ฅผ ์ํ ํฌ๋ช
ํ ์ํธ์</h3>
|
|
6
|
+
<p align="center"><strong>์๊ฐ ์น์ ํ๊ฒฝ + ํ ํฐ 84% ์ ๊ฐ. AI๊ฐ ํ์ผ์ ๋ ๋ ค๋จน์ด๋ 184ms ์์ ์์๋ณต๊ตฌ.</strong></p>
|
|
7
|
+
|
|
8
|
+
<p align="center">
|
|
9
|
+
<a href="https://github.com/dotoricode/autonomous-flow-daemon">
|
|
10
|
+
<img src="demo.gif" width="850" alt="afd demo" style="border-radius: 12px; box-shadow: 0 20px 40px rgba(0,0,0,0.4);">
|
|
11
|
+
</a>
|
|
12
|
+
</p>
|
|
13
|
+
|
|
14
|
+
<p align="center">
|
|
15
|
+
<img src="https://img.shields.io/badge/version-1.6.0-blue?style=flat-square" alt="version" />
|
|
16
|
+
<a href="https://www.npmjs.com/package/autonomous-flow-daemon"><img src="https://img.shields.io/npm/v/autonomous-flow-daemon?style=flat-square&logo=npm&color=cb0000" alt="npm" /></a>
|
|
17
|
+
<img src="https://img.shields.io/badge/runtime-Bun-f472b6?style=flat-square&logo=bun" alt="Bun" />
|
|
18
|
+
<img src="https://img.shields.io/badge/license-MIT-green?style=flat-square" alt="MIT" />
|
|
19
|
+
<img src="https://img.shields.io/badge/built%20for-Claude%20Code-7c3aed?style=flat-square" alt="Claude Code" />
|
|
20
|
+
</p>
|
|
21
|
+
|
|
22
|
+
<p align="center">
|
|
23
|
+
<a href="README.md">English</a>
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## ์ซ์๊ฐ ์ฆ๋ช
ํ๋ค
|
|
29
|
+
|
|
30
|
+
| ์ํฉ | afd ์์ด | afd ์์ผ๋ฉด |
|
|
31
|
+
|:-----|:---------|:----------|
|
|
32
|
+
| AI๊ฐ `.claudeignore` ์ญ์ | **30๋ถ** ์๋ ๋ณต๊ตฌ | **0.2์ด** ์๋ ์น์ |
|
|
33
|
+
| Hook ํ์ผ ์ค์ผ | ํ
์ฌ์ฃผ์
, ์ธ์
์ฌ์์ | **๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฌด์ ์๋ฆฌ** |
|
|
34
|
+
| `git checkout`์ผ๋ก ์ด๋ฒคํธ 50๊ฐ ํญ๋ฐ | AI ํญ์ฃผ ์์ | **ํญ์ฃผ ์ต์ ๊ธฐ ์ฆ์ ๊ฐ์
** |
|
|
35
|
+
| ๋์ฉ๋ ํ์ผ 8๊ฐ ์ฝ๊ธฐ (114KB) | **~28,600 ํ ํฐ** ์๋น | **~4,600 ํ ํฐ** (84% ์ ์ฝ) |
|
|
36
|
+
| ์ธ์
ํ ํฐ ์์ฐ | ์ปจํ
์คํธ ์๋์ฐ ์์ญ | **์ฝ๋๋ฒ ์ด์ค ์ค์บ๋น ~60,900 ํ ํฐ ์ ์ฝ** |
|
|
37
|
+
|
|
38
|
+
> `CPU 0.1% ๋ฏธ๋ง` | `RAM ~40MB` | `์ ์ฒด ์น์ ์ฌ์ดํด 270ms` | ์๋์ง๋ ๋ชจ๋ฅด๊ฒ ๋์ํ๋ค.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## ๋ช
๋ น์ด ํ๋๋ก ๋
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
npx @dotoricode/afd start
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
๋์ด๋ค. ๋ฐ๋ชฌ ๋จ๊ณ , ํ
๊ฝํ๊ณ , MCP ๋ฑ๋ก๊น์ง ์์์ ํ๋ค.
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
$ afd start
|
|
52
|
+
Daemon started (pid 4812, port 52413)
|
|
53
|
+
Smart Discovery: Watching 7 AI-context targets
|
|
54
|
+
Hook injected into .claude/hooks.json
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## ๋ฌธ์
|
|
60
|
+
|
|
61
|
+
Claude Code, Cursor, Windsurf โ AI ์์ด์ ํธ๋ ๊ฐ๋ ฅํ์ง๋ง ์์ด ๊ฑฐ์น ๋ค. `.claudeignore`๋ ๋ฆฌ๊ณ , `hooks.json` ์ค์ผ์ํค๊ณ , `.cursorrules` ํต์งธ๋ก ๋ฐ์ด๋ฒ๋ฆฐ๋ค. ์์์ฑ ๋๋ ์ด๋ฏธ ๋ฆ์๋ค. ์ฝ๋ฉ ๋ฉ์ถ๊ณ , ์์ธ ํ์
ํ๊ณ , ์๋ ๋ณต๊ตฌ. **30๋ถ ์ฆ๋ฐ. ํ๋ก์ฐ ๋ฆฌ์
.**
|
|
62
|
+
|
|
63
|
+
์ฝ๋ ์ฝ์ ๋๋ง๋ค? ์์ค ํ์ผ ์ ์ฒด๋ฅผ ์ปจํ
์คํธ ์๋์ฐ์ ๊ทธ๋ฅ ๋๋ ค๋ฐ๋๋ค. **ํ์๋ ์๋ ํจ์ ๋ณธ๋ฌธ์ ์์ฒ ํ ํฐ์ด ์ฆ๋ฐํ๋ค.**
|
|
64
|
+
|
|
65
|
+
## ํด๊ฒฐ์ฑ
|
|
66
|
+
|
|
67
|
+
`afd`๋ ๋์ ์ ๋ณด์ด๋ ๋ฐฑ๊ทธ๋ผ์ด๋ ๋ฐ๋ชฌ์ด๋ค. ํต์ฌ ํ์ผ์ ํญ์ ๊ฐ์ํ๊ณ , ์ค์ผ์ 184ms ์์ ์กฐ์ฉํ ๋๋๋ฆฐ๋ค. AI ์์ด์ ํธํํ
๋ ์๋ณธ ์์ค ๋์ ํ์
์ค์ผ๋ ํค๋ง ๋๊ธด๋ค โ ํ์ํ ๊ตฌ์กฐ ์ ๋ณด๋ฅผ 1/16 ๋น์ฉ์. ์ค์๋ ๋์น์ฑ๊ธฐ ์ ์ ์ฒ๋ฆฌ๋๋ค. ์ผ๋ถ๋ฌ ์ง์ด ๊ฑด ๊ทธ๋ฅ ๋๋ค. ์ค์ ํ ๊ฒ๋ ์๊ณ , ์ ๊ฒฝ ์ธ ๊ฒ๋ ์๋ค.
|
|
68
|
+
|
|
69
|
+
---
|
|
70
|
+
|
|
71
|
+
## v1.6.0 ์ฃผ์ ์
๋ฐ์ดํธ
|
|
72
|
+
|
|
73
|
+
| ๊ธฐ๋ฅ | ๋ณ๊ฒฝ ๋ด์ฉ |
|
|
74
|
+
|:-----|:---------|
|
|
75
|
+
| **Tree-sitter AST ์์ง** | TypeScript ์ปดํ์ผ๋ฌ๋ฅผ Tree-sitter๋ก ๊ต์ฒด โ ๋ค๊ตญ์ด ํ๋ก๊ทธ๋จ ์ง์ (TS/JS ์์ ์ง์, Python/Go/Rust ํด๋ฐฑ) |
|
|
76
|
+
| **์ค์๊ฐ HUD ROI ์ ๊ดํ** | ์์
ํ๋ ๋์ ์ํ ๋ฐ์์ ์ธ์
๋จ์ ํ ํฐ ์ ์ฝ๋์ ์ค์๊ฐ ํ์ธ |
|
|
77
|
+
| **์ด๋ฒคํธ ๋ฐฐ์นญ** | 300ms ๋๋ฐ์ด์ค + ์ค๋ณต ์ ๊ฑฐ โ ๊ธ๊ฒฉํ ํ์ผ ๋ณ๊ฒฝ์ผ๋ก ์ธํ ์ด๋ฒคํธ ํญํ ์ฐจ๋จ |
|
|
78
|
+
| **ํ
๋งค๋์ ** | ๋ฉํฐ ์ค๋ ์ค์ผ์คํธ๋ ์ด์
โ ๋ค๋ฅธ ํ
์ ๊ณต์์ ๊น๋ํ๊ฒ ๊ณต์กด |
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## ํต์ฌ ๊ธฐ๋ฅ
|
|
83
|
+
|
|
84
|
+
| ๊ธฐ๋ฅ | ์ค๋ช
|
|
|
85
|
+
|:-----|:-----|
|
|
86
|
+
| **S.E.A.M ์๊ฐ ์น์ ** | ํ์ผ ์ญ์ /์ค์ผ ๊ฐ์ง ํ 270ms ์ด๋ด ๋ณต๊ตฌ |
|
|
87
|
+
| **ํ๋ก๊ทธ๋จ ์์ถ** | AI ์์ด์ ํธ์๊ฒ MCP๋ก 70-96% ๊ฐ๋ฒผ์ด ํ์ผ ์ค์ผ๋ ํค ์ ๊ณต |
|
|
88
|
+
| **์ค๋งํธ ๋ฆฌ๋** | `afd_read` โ ์์ฉ๋ ์๋ณธ, ๋์ฉ๋ ์๋ ์์ถ, ๋ผ์ธ ๋ฒ์ ์กฐํ ์ง์ |
|
|
89
|
+
| **์ํฌ์คํ์ด์ค ๋งต** | `afd://workspace-map` โ ์ ์ฒด ํ์ผ ํธ๋ฆฌ + ์ต์คํฌํธ ์๊ทธ๋์ฒ๋ฅผ ํ ๋ฒ์ |
|
|
90
|
+
| **Import ์ธ์ L1** | ์ํฌํธ๋ ์ฌ๋ณผ๋ง ์ ์ฒด ์๊ทธ๋์ฒ ์ ๊ณต (์ ์ฝ 85%+) |
|
|
91
|
+
| **๋๋ธ ํญ ํด๋ฆฌ์คํฑ** | ํ ๋ฒ ์ญ์ = ์น์ , 30์ด ๋ด ์ฌ์ญ์ = ์๋๋ก ์ธ์ |
|
|
92
|
+
| **๋ฐฑ์ ๋คํธ์ํฌ** | `afd sync`๋ก ํ์ต๋ ํญ์ฒด๋ฅผ ํ๋ก์ ํธ ๊ฐ ์ด์ |
|
|
93
|
+
| **์๊ฐ ์งํ** | ๊ฒฉ๋ฆฌ๋ ์คํจ ์ฌ๋ก๊ฐ ์๋์ผ๋ก ์๋ฐฉ ๊ท์น์ด ๋จ |
|
|
94
|
+
| **์ค์ ์ด๋ ฅ** | ํ์ผ ํธ์ง ์ PreToolUse ํ
์ด ๊ณผ๊ฑฐ ์ค์๋ฅผ ๊ฒฝ๊ณ ๋ก ์ฃผ์
|
|
|
95
|
+
| **HUD ์นด์ดํฐ** | ์ํ ๋ฐ์ ๋ฐฉ์ด ํ์ + ํ ํฐ ์ ์ฝ๋ ์ค์๊ฐ ํ์ |
|
|
96
|
+
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## ํ ํฐ ์ ์ฝ โ ์ค์ธก ๋ฐ์ดํฐ
|
|
100
|
+
|
|
101
|
+
ํ๋ก๊ทธ๋จ ์์คํ
์ afd๊ฐ ์ ๊ณตํ๋ ๊ฐ์ฅ ํฐ ๊ฐ์น๋ค. ์ค์ ์ธ์
์์ ์ธก์ ํ ๋ฐ์ดํฐ:
|
|
102
|
+
|
|
103
|
+
### ์ธ์
์ค๋
์ท
|
|
104
|
+
|
|
105
|
+
| ์งํ | ์์น |
|
|
106
|
+
|:-----|:-----|
|
|
107
|
+
| ํ๋ก๊ทธ๋จ ์์ฒญ | 55๊ฐ ํ์ผ ๋ถ์ |
|
|
108
|
+
| ๋์ ํ์ผ ์ด ํฌ๊ธฐ | ~290 KB (55๊ฐ, ํ๊ท 5.3 KB) |
|
|
109
|
+
| ์๋ณธ ํ ํฐ ๋น์ฉ | ~72,500 ํ ํฐ |
|
|
110
|
+
| ํ๋ก๊ทธ๋จ ์์ถ ํ | ~11,600 ํ ํฐ |
|
|
111
|
+
| **์ ์ฝ๋ ํ ํฐ** | **~60,900 ํ ํฐ (84% ๊ฐ์)** |
|
|
112
|
+
|
|
113
|
+
### ์ค์ผ์ผ ํจ๊ณผ
|
|
114
|
+
|
|
115
|
+
```
|
|
116
|
+
์ธ์
์ ์ฒด ํ ํฐ (ctx ~15%): ~150,000 โโโโโโโโโโโโโโโโ
|
|
117
|
+
ํ๋ก๊ทธ๋จ์ผ๋ก ์ ์ฝ: ~60,900 โโโโโโโโโโโโโโโโ (์ธ์
์ 41%)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
ctx 50% ๋์ด๊ฐ๋ฉด ํ์ผ ์ฝ๊ธฐ๊ฐ ํ ํฐ์ ๋ค ์ก์๋จน๋๋ค. ํ๋ก๊ทธ๋จ ์์ด ์์ค ํ์ผ 55๊ฐ ์ค์บํ๋ฉด ~72.5K ํ ํฐ์ด ๋ ์๊ฐ๋ค. ํ๋ก๊ทธ๋จ์ผ๋ก๋ **ํ์ผ ํ๋๋น ์๋ ๋น์ฉ์ 16%** โ ๋ฐ๋ณต ์ฝ๊ธฐ๊ฐ ์์ผ์๋ก ๊ฒฉ์ฐจ๊ฐ ๋ฒ์ด์ง๋ค.
|
|
121
|
+
|
|
122
|
+
### 3๋จ๊ณ ํ ํฐ ๋ค์ด์ดํธ
|
|
123
|
+
|
|
124
|
+
| ๋ ์ด์ด | ๋๊ตฌ | ์ ์ฝ๋ฅ | ๋ฐฉ์ |
|
|
125
|
+
|:-------|:-----|:-------|:-----|
|
|
126
|
+
| **L0 ํ๋ก๊ทธ๋จ** | `afd_hologram` | 80%+ | ํจ์ ๋ณธ๋ฌธ ์ ๊ฑฐ, ํ์
์๊ทธ๋์ฒ๋ง ์ ์ง |
|
|
127
|
+
| **L1 ํ๋ก๊ทธ๋จ** | `afd_hologram` + `contextFile` | 85%+ | ์ํฌํธ๋ ์ฌ๋ณผ๋ง ์ ์ฒด ์๊ทธ๋์ฒ ์ ๊ณต |
|
|
128
|
+
| **์ค๋งํธ ๋ฆฌ๋** | `afd_read` | ์๋ | 10KB ๋ฏธ๋ง ์๋ณธ, 10KB ์ด์ ์๋ ํ๋ก๊ทธ๋จ |
|
|
129
|
+
| **์ํฌ์คํ์ด์ค ๋งต** | `afd://workspace-map` | N/A | ์ ์ฒด ํ๋ก์ ํธ ๊ตฌ์กฐ๋ฅผ ํ ๋ฒ์ |
|
|
130
|
+
|
|
131
|
+
---
|
|
132
|
+
|
|
133
|
+
<details>
|
|
134
|
+
<summary><b>S.E.A.M ๋์ ์๋ฆฌ (๋ด๋ถ ๊ตฌ์กฐ)</b></summary>
|
|
135
|
+
|
|
136
|
+
๋ชจ๋ ํ์ผ ์ด๋ฒคํธ๋ ๋ค ๋จ๊ณ๋ฅผ ๊ฑฐ์น๋ค:
|
|
137
|
+
|
|
138
|
+
```mermaid
|
|
139
|
+
graph LR
|
|
140
|
+
S["Sense<br/><i>ํ์ผ ๋ณ๊ฒฝ ๊ฐ์ง</i>"] --> E["Extract<br/><i>์ฆ์ ๋ถ์</i>"]
|
|
141
|
+
E --> A["Adapt<br/><i>ํญ์ฒด ์ ํ</i>"]
|
|
142
|
+
A --> M["Mutate<br/><i>JSON-Patch ์ ์ฉ</i>"]
|
|
143
|
+
M -->|"ํ์ต"| S
|
|
144
|
+
style S fill:#3b82f6,color:#fff,stroke:none
|
|
145
|
+
style E fill:#f59e0b,color:#fff,stroke:none
|
|
146
|
+
style A fill:#10b981,color:#fff,stroke:none
|
|
147
|
+
style M fill:#ef4444,color:#fff,stroke:none
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
| ๋จ๊ณ | ๋์ | ์๋ |
|
|
151
|
+
|:-----|:-----|:-----|
|
|
152
|
+
| **Sense** | Chokidar๊ฐ `add`, `change`, `unlink` ์ด๋ฒคํธ ๊ฐ์ง | < 10ms |
|
|
153
|
+
| **Extract** | ํ๋ก๊ทธ๋จ(ํ์
์ค์ผ๋ ํค) ์์ฑ + ์ํ ๊ฒ์ฌ | < 5ms |
|
|
154
|
+
| **Adapt** | ์ฆ์์ ๋ง๋ ํญ์ฒด ๋งค์นญ, ์ค์ผ ํ์ผ ๊ฒฉ๋ฆฌ | < 1ms |
|
|
155
|
+
| **Mutate** | RFC 6902 JSON-Patch๋ก ํ์ผ ๋ณต๊ตฌ | < 25ms |
|
|
156
|
+
|
|
157
|
+
> ์ ์ฒด ์ฌ์ดํด: ํ์ผ ์ญ์ ๋ถํฐ ์์ ๋ณต๊ตฌ๊น์ง **270ms ๋ฏธ๋ง**.
|
|
158
|
+
|
|
159
|
+
</details>
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## ๋ช
๋ น์ด
|
|
164
|
+
|
|
165
|
+
| ๋ช
๋ น์ด | ์ญํ |
|
|
166
|
+
|:-------|:-----|
|
|
167
|
+
| `afd start` | ๋ฐ๋ชฌ ์์ + ์ค๋งํธ ๋์ค์ปค๋ฒ๋ฆฌ + ํ
์ฃผ์
+ MCP ๋ฑ๋ก |
|
|
168
|
+
| `afd stop` | ๊ต๋ ์์ฝ ๋ฆฌํฌํธ + ์ ์ ์ข
๋ฃ (`--clean`์ผ๋ก ํ
/MCP ์ ๊ฑฐ) |
|
|
169
|
+
| `afd score` | ์งํ ๋ฐ ํ๋ก๊ทธ๋จ ๋ฉํธ๋ฆญ ํฌํจ ์ํ ๋์๋ณด๋ |
|
|
170
|
+
| `afd fix` | ํ๋ก๊ทธ๋จ ์ปจํ
์คํธ ํฌํจ ์ฆ์ ์ง๋จ + ํญ์ฒด ํ์ต |
|
|
171
|
+
| `afd sync` | ๋ฐฑ์ ํ์ด๋ก๋ ๋ด๋ณด๋ด๊ธฐ/๊ฐ์ ธ์ค๊ธฐ (`--push`, `--pull`, `--remote <url>`) |
|
|
172
|
+
| `afd restart` | ์ ์ง + ์์ ์์ปค๋งจ๋ |
|
|
173
|
+
| `afd status` | ๋น ๋ฅธ ์ํ ํ์ธ โ ๋ฐ๋ชฌ, ํ
, MCP, ๋ฐฉ์ด ์ด๋ ฅ |
|
|
174
|
+
| `afd doctor` | ์๋ ์์ ๊ถ๊ณ ํฌํจ ์ข
ํฉ ์ํ ๋ถ์ |
|
|
175
|
+
| `afd evolution` | ๊ฒฉ๋ฆฌ ์คํจ ๋ถ์ + ์๋ฐฉ ๊ท์น ์์ฑ |
|
|
176
|
+
| `afd mcp install` | ํ๋ก์ ํธ + ๊ธ๋ก๋ฒ ์ค์ ์ MCP ์๋ฒ ๋ฑ๋ก |
|
|
177
|
+
| `afd vaccine` | ์ปค๋ฎค๋ํฐ ํญ์ฒด ๋ชฉ๋ก ์กฐํ, ๊ฒ์, ์ค์น, ๋ฐฐํฌ |
|
|
178
|
+
| `afd lang` | ํ์ ์ธ์ด ์ ํ (`afd lang ko` / `afd lang en`) |
|
|
179
|
+
|
|
180
|
+
---
|
|
181
|
+
|
|
182
|
+
<details>
|
|
183
|
+
<summary><b>๊ณ ๊ธ ๊ธฐ๋ฅ</b></summary>
|
|
184
|
+
|
|
185
|
+
### ๋๋ธ ํญ ํด๋ฆฌ์คํฑ
|
|
186
|
+
|
|
187
|
+
`afd`๋ **์ค์**์ **์๋**๋ฅผ ๊ตฌ๋ถํ๋ค:
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
$ rm .claudeignore # ์ฒซ ๋ฒ์งธ ํญ -> afd๊ฐ ๋ฌด์์ผ๋ก ์น์
|
|
191
|
+
$ rm .claudeignore # 30์ด ๋ด ์ฌ์ญ์ -> "์๋ํ ๊ฒ์ด๊ตฐ."
|
|
192
|
+
[afd] ํญ์ฒด IMM-001 ํด๋ฉด ์ ํ. ๋๋ธ ํญ ๊ฐ์ง. ๊ฐ์
์ค๋จ.
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
| ์๋๋ฆฌ์ค | ๋์ |
|
|
196
|
+
|:---------|:-----|
|
|
197
|
+
| ๋จ์ผ ์ญ์ (์ค์) | ์๋ ์น์ + ์ฒซ ํญ ๊ธฐ๋ก |
|
|
198
|
+
| 30์ด ๋ด ์ฌ์ญ์ (์๋) | ํญ์ฒด ํด๋ฉด ์ ํ, ์ญ์ ์กด์ค |
|
|
199
|
+
| 1์ด ๋ด 3ํ ์ด์ ์ญ์ (git checkout) | ๋๊ท๋ชจ ์ด๋ฒคํธ ๊ฐ์ง, ์ ์ฒด ์ต์ ์ผ์ ํด์ |
|
|
200
|
+
|
|
201
|
+
### ๋ฐฑ์ ๋คํธ์ํฌ
|
|
202
|
+
|
|
203
|
+
```bash
|
|
204
|
+
afd sync # .afd/global-vaccine-payload.json์ผ๋ก ๋ด๋ณด๋ด๊ธฐ
|
|
205
|
+
afd sync --push # ์๊ฒฉ์ผ๋ก ๋ฐฑ์ ํธ์
|
|
206
|
+
afd sync --pull # ์๊ฒฉ์์ ๋ฐฑ์ ํ
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
์ ๋ ๊ฒฝ๋ก๋ ์ํฌ๋ฆฟ๋ ์์ด ๊น๋ํ๊ฒ ์ ์ ๋ผ ์์ด์ ์ด๋๋ ๊ฐ๋ค ์ธ ์ ์๋ค.
|
|
210
|
+
|
|
211
|
+
### ์๊ฐ ์งํ
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
afd evolution
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
๊ฒฉ๋ฆฌ๋ ์คํจ ์ฌ๋ก๋ฅผ ๋ถ์ํด `afd-lessons.md`์ ์๋ฐฉ ๊ท์น์ ์์ฑํ๋ค. AI ์์ด์ ํธ๋ ๋ฉด์ญ ํต์ฌ ํ์ผ ํธ์ง ์ ์ด ํ์ผ์ ์ฐธ์กฐ โ ๊ณผ๊ฑฐ์ ์คํจ๊ฐ ๋ฏธ๋์ ๋ฐฉํจ๊ฐ ๋๋ค.
|
|
218
|
+
|
|
219
|
+
</details>
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## MCP ์ค์
|
|
224
|
+
|
|
225
|
+
`afd`๋ 4๊ฐ์ MCP ๋๊ตฌ์ 1๊ฐ์ ๋ฆฌ์์ค๋ฅผ ์ ๊ณตํ๋ค:
|
|
226
|
+
|
|
227
|
+
| MCP ๋๊ตฌ | ์ญํ |
|
|
228
|
+
|:---------|:-----|
|
|
229
|
+
| `afd_read` | ์ค๋งํธ ํ์ผ ๋ฆฌ๋ โ ์์ฉ๋ ์๋ณธ, ๋์ฉ๋ ์๋ ํ๋ก๊ทธ๋จ, ๋ผ์ธ ๋ฒ์ ์ง์ |
|
|
230
|
+
| `afd_hologram` | TS/JS ํ์ผ์ ํ ํฐ ํจ์จ์ ์ธ ํ์
์ค์ผ๋ ํค (80%+ ์ ์ฝ) |
|
|
231
|
+
| `afd_diagnose` | ์ฆ์ ๋ฐ ํ๋ก๊ทธ๋จ ์ปจํ
์คํธ ํฌํจ ์ํ ์ง๋จ |
|
|
232
|
+
| `afd_score` | ๋ฐํ์ ํต๊ณ: ๊ฐ๋์๊ฐ, ์น์ ํ์, ํ๋ก๊ทธ๋จ ์ ์ฝ๋ |
|
|
233
|
+
|
|
234
|
+
| MCP ๋ฆฌ์์ค | ์ญํ |
|
|
235
|
+
|:-----------|:-----|
|
|
236
|
+
| `afd://workspace-map` | ์ต์คํฌํธ ์๊ทธ๋์ฒ ํฌํจ ์ ์ฒด ํ์ผ ํธ๋ฆฌ๋ฅผ ํ ๋ฒ์ |
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
afd mcp install # .mcp.json + ~/.claude.json์ ๋ฑ๋ก
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
---
|
|
243
|
+
|
|
244
|
+
<details>
|
|
245
|
+
<summary><b>๊ธฐ์ ์คํ</b></summary>
|
|
246
|
+
|
|
247
|
+
| ๋ ์ด์ด | ๊ธฐ์ | ์ด์ |
|
|
248
|
+
|:-------|:-----|:-----|
|
|
249
|
+
| ๋ฐํ์ | **Bun** | ๋ค์ดํฐ๋ธ TypeScript, ๋น ๋ฅธ SQLite, ๋จ์ผ ๋ฐ์ด๋๋ฆฌ |
|
|
250
|
+
| ๋ฐ์ดํฐ๋ฒ ์ด์ค | **Bun SQLite (WAL)** | ์ฝ๊ธฐ 0.29ms, ์ฐ๊ธฐ 24ms, ํฌ๋์ ์์ |
|
|
251
|
+
| ํ์ฑ | **Tree-sitter** | ๋ค๊ตญ์ด AST โ TS, JS, Python, Go, Rust |
|
|
252
|
+
| ๊ฐ์ | **Chokidar** | ํฌ๋ก์คํ๋ซํผ, ๊ฒ์ฆ๋ ํ์ผ ์์ฒ |
|
|
253
|
+
| ํจ์นญ | **RFC 6902 JSON-Patch** | ๊ฒฐ์ ๋ก ์ , ์กฐํฉ ๊ฐ๋ฅํ ํ์ผ ๋ณ์ด |
|
|
254
|
+
| CLI | **Commander.js** | ํ์ค, ์์ธก ๊ฐ๋ฅํ ๋ช
๋ น์ด ํ์ฑ |
|
|
255
|
+
|
|
256
|
+
</details>
|
|
257
|
+
|
|
258
|
+
---
|
|
259
|
+
|
|
260
|
+
## ์ค์น
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# ๊ฐ์ฅ ๋น ๋ฅธ ๋ฐฉ๋ฒ (์ค์น ๋ถํ์)
|
|
264
|
+
npx @dotoricode/afd start
|
|
265
|
+
|
|
266
|
+
# Bun์ผ๋ก ์ค์น (๊ฐ๋ฐ ํ๊ฒฝ ๊ถ์ฅ)
|
|
267
|
+
bun install
|
|
268
|
+
bun link
|
|
269
|
+
afd start
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### ์๊ตฌ์ฌํญ
|
|
273
|
+
|
|
274
|
+
- **Bun** >= 1.0
|
|
275
|
+
- **OS**: Windows, macOS, Linux
|
|
276
|
+
- **๋์**: Claude Code, Cursor, Windsurf, Codex (์์ฝ์์คํ
์๋ ๊ฐ์ง)
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## ๋ผ์ด์ ์ค
|
|
281
|
+
|
|
282
|
+
MIT
|