leerness 1.9.197 β 1.9.198
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 +52 -0
- package/README.md +3 -3
- package/bin/harness.js +57 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,57 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.198 β 2026-05-21
|
|
4
|
+
|
|
5
|
+
**π€ BμΆ 9/10 β 9.5/10 β handoff multi-agent consensus μ΄λ ₯ κΈ°λ° best agent μλ μΆμ².**
|
|
6
|
+
|
|
7
|
+
μμ¨ λͺ¨λ 128 λΌμ΄λ. 1.9.193 consensus μλ lessons.md μ μ₯ (BμΆ) νμ β μ μ₯ν λ°μ΄ν°λ₯Ό **handoff μμ μ¦μ μ¬νμ©**.
|
|
8
|
+
|
|
9
|
+
### μ¬μ©μ μλ μ λ ¬ (1.9.191 verbatim)
|
|
10
|
+
> *"λ©ν° μλΈ μμ΄μ νΈ μ€μΌμ€νΈλΌ ... μ΅κ³ μ λꡬ"*
|
|
11
|
+
|
|
12
|
+
### 1. handoff μ κ· μΉμ
(BμΆ ν΅μ¬)
|
|
13
|
+
```
|
|
14
|
+
## π€ task λ§€μΉ best agent (1.9.198 BμΆ) β ν€μλ "authentication"
|
|
15
|
+
κ³Όκ±° multi-agent consensus 2건 β μΆμ² agent: claude (1ν best)
|
|
16
|
+
μ΅κ·Ό hit: 2026-05-20 agent=claude score=0.873
|
|
17
|
+
β μ¬μ€ν: leerness agents multi "<task>" --execute
|
|
18
|
+
```
|
|
19
|
+
- lessons.md μ 1.9.193 `multi-agent consensus β best=X (1.9.193)` ν¨ν΄ μλ μΆμΆ
|
|
20
|
+
- keyword fuzzy λ§€μΉμΌλ‘ κ΄λ ¨ hits μ λ³
|
|
21
|
+
- agent λ³ λΉλ μΉ΄μ΄νΈ β μ΅λ€ best agent μλ λ
ΈμΆ
|
|
22
|
+
- λκΈ°: `--no-multiagent-hint` λλ `LEERNESS_NO_MULTIAGENT_HINT=1`
|
|
23
|
+
|
|
24
|
+
### 2. μ κ· ν¨μ
|
|
25
|
+
- `_loadMultiAgentConsensusHistory(root, keyword)` β lessons.md 1.9.193 ν¨ν΄ μΆμΆ + fuzzy λ§€μΉ
|
|
26
|
+
|
|
27
|
+
### 3. λμ νκ· (1.9.192~197) β λͺ¨λ μ μ§
|
|
28
|
+
- [1.9.197] _readyBackendCountFromCache (60λΆ μΊμ + ν€λλΌμΈ)
|
|
29
|
+
- [1.9.196] DμΆ 7μΌ+/30μΌ+ recall + ScheduleWakeup miss detector
|
|
30
|
+
- [1.9.195] _probeProviderEndpoints (provider universal probe)
|
|
31
|
+
- [1.9.194] _suggestNextActions (handoff next-actions)
|
|
32
|
+
- [1.9.193] agents multi consensus β lessons.md
|
|
33
|
+
- [1.9.192] _loadOfficialSkillCache + 24h μΊμ
|
|
34
|
+
|
|
35
|
+
### 4. stress-v143 β 14/14 PASS
|
|
36
|
+
- BμΆ λ³΄κ° (5: ν¨μ + μΉμ
+ μμ μν¬μ€νμ΄μ€ ν΅ν© κ²μ¦ + λΉλ μΉ΄μ΄νΈ)
|
|
37
|
+
- μ±λ₯: --version cold start avg **500 ms** Β· MCP 54 λꡬ **494 ms**
|
|
38
|
+
|
|
39
|
+
### 5. 5μΆ λ§€νΈλ¦μ€ λ³λ
|
|
40
|
+
| μΆ | 1.9.197 | 1.9.198 | Ξ |
|
|
41
|
+
|---|---|---|---|
|
|
42
|
+
| B. λ©ν° Sub-Agent μ€μΌμ€νΈλΌ | 9/10 | **9.5/10** | +0.5 (consensus μ΄λ ₯ μλ νμ) |
|
|
43
|
+
| μ’
ν© | 47.5/50 (95%) | **48/50 (96%)** | +1% |
|
|
44
|
+
|
|
45
|
+
### 6. μ¬μ©μ λͺ
μ μ‘°μΉ
|
|
46
|
+
- Cron `10dcaa07` (hourly :17 backup) μ¬μ©μ μμ²μΌλ‘ μμ
|
|
47
|
+
- μλ 루νλ **ScheduleWakeup 1500s (25λΆ, R-0001 μꡬ λ£°)** λ¨λ
μ΄μ
|
|
48
|
+
|
|
49
|
+
### 7. μλ release νλ¦
|
|
50
|
+
- main μλ push **60 λΌμ΄λ μ°μ** (1.9.140~198)
|
|
51
|
+
- npm publish μλ (1.9.178~)
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
3
55
|
## 1.9.197 β 2026-05-21
|
|
4
56
|
|
|
5
57
|
**π AμΆ 9.5/10 β 10/10 β provider probe handoff μλ ν΅ν© + 60λΆ μΊμ. 5μΆ λ§€νΈλ¦μ€ 47.5/50 (95%).**
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
> **AI μ½λ© μμ΄μ νΈμ κ±°μ§ μλ£Β·μ€λ³΅Β·λ§κ°Β·μΆ©λμ λ§μμ£Όλ κ²μΒ·κΈ°μ΅Β·νμ
CLI νλ€μ€.**
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/leerness) [](https://www.npmjs.com/package/leerness) []() []() []() []() []() []() [-brightgreen)]() []() []() []() []() []()
|
|
6
6
|
|
|
7
7
|
```
|
|
8
8
|
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
@@ -12,9 +12,9 @@
|
|
|
12
12
|
β βββ ββββββ ββββββ ββββββββββββββββββββββββ ββββββββ β
|
|
13
13
|
β βββββββββββββββββββββββββββ ββββββ ββββββββββββββββββββββ β
|
|
14
14
|
β βββββββββββββββββββββββββββ ββββββ βββββββββββββββββββββ β
|
|
15
|
-
β v1.9.
|
|
15
|
+
β v1.9.198 AI Agent Reliability Harness + Sandbox β
|
|
16
16
|
β verify Β· remember Β· orchestrate Β· audit Β· sandbox Β· drift β
|
|
17
|
-
β
|
|
17
|
+
β π€ best agent μλ μΆμ² Β· λ§€νΈλ¦μ€ 96/100 Β· 128 λΌμ΄λ β
|
|
18
18
|
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
19
19
|
```
|
|
20
20
|
|
package/bin/harness.js
CHANGED
|
@@ -7,7 +7,7 @@ const cp = require('child_process');
|
|
|
7
7
|
const os = require('os'); // 1.9.178: _publishToNpm μμ os.tmpdir() μ¬μ© (μ μ import)
|
|
8
8
|
const readline = require('readline');
|
|
9
9
|
|
|
10
|
-
const VERSION = '1.9.
|
|
10
|
+
const VERSION = '1.9.198';
|
|
11
11
|
|
|
12
12
|
// 1.9.184: DEP0190 (child_process shell: true) deprecation warning μ΅μ (μ¬μ©μ λͺ
μ).
|
|
13
13
|
// leerness λ cross-platform PATH resolution μ μν΄ shell: true λ₯Ό μλμ μΌλ‘ μ¬μ© (claude.cmd / ollama.cmd λ± Windows .cmd μ²λ¦¬).
|
|
@@ -1662,6 +1662,39 @@ async function skillAutoCacheCmd(root, sub) {
|
|
|
1662
1662
|
if (c.expired) log(` β κ°±μ : leerness skill auto-cache refresh`);
|
|
1663
1663
|
}
|
|
1664
1664
|
|
|
1665
|
+
// 1.9.198: BμΆ (λ©ν° Sub-Agent μ€μΌμ€νΈλΌ) λ³΄κ° β handoff μμ task keyword λ§€μΉ best agent μΆμ²
|
|
1666
|
+
// 1.9.193 μμ agents multi --execute κ²°κ³Όλ₯Ό lessons.md μ κΈ°λ‘ β μ΄λ₯Ό keyword λ§€μΉνμ¬ μΆμΆ
|
|
1667
|
+
// μ¬μ©μ/AI κ° κ°μ task μ¬μλ μ "κ³Όκ±° best agent μ°μ μλ" μ¦μ μΈμ§
|
|
1668
|
+
function _loadMultiAgentConsensusHistory(root, keyword) {
|
|
1669
|
+
try {
|
|
1670
|
+
const lp = lessonsPath(root);
|
|
1671
|
+
if (!exists(lp)) return [];
|
|
1672
|
+
const lt = read(lp);
|
|
1673
|
+
// 1.9.193 ν¨ν΄: ### YYYY-MM-DD multi-agent consensus β best=<agent> (1.9.193)
|
|
1674
|
+
// blocks λΆλ¦¬ ν keyword λ§€μΉ + best agent μΆμΆ
|
|
1675
|
+
const blocks = lt.split(/\n### /).slice(1).map(b => '### ' + b);
|
|
1676
|
+
const re193 = /multi-agent consensus β best=(\S+) \(1\.9\.193\)/;
|
|
1677
|
+
const fuzzyRe = keyword ? new RegExp(escapeRegex(keyword.slice(0, Math.max(4, Math.floor(keyword.length * 0.7)))), 'i') : null;
|
|
1678
|
+
const hits = [];
|
|
1679
|
+
for (const b of blocks) {
|
|
1680
|
+
const m = re193.exec(b);
|
|
1681
|
+
if (!m) continue;
|
|
1682
|
+
if (fuzzyRe && !fuzzyRe.test(b)) continue;
|
|
1683
|
+
// task / score μΆμΆ
|
|
1684
|
+
const taskM = b.match(/- task: ([^\n]+)/);
|
|
1685
|
+
const scoreM = b.match(/- best agent: \S+, score=([\d.]+)/);
|
|
1686
|
+
const dateM = b.match(/^### (\d{4}-\d{2}-\d{2})/);
|
|
1687
|
+
hits.push({
|
|
1688
|
+
date: dateM ? dateM[1] : '?',
|
|
1689
|
+
agent: m[1],
|
|
1690
|
+
task: taskM ? taskM[1].slice(0, 80) : '',
|
|
1691
|
+
score: scoreM ? Number(scoreM[1]) : null
|
|
1692
|
+
});
|
|
1693
|
+
}
|
|
1694
|
+
return hits;
|
|
1695
|
+
} catch { return []; }
|
|
1696
|
+
}
|
|
1697
|
+
|
|
1665
1698
|
// 1.9.194: EμΆ (κ²μΌλ¦ λ°©μ§) β handoff μμ λ€μ λ¨κ³ 1-3κ° μλ μ μ
|
|
1666
1699
|
// νμ¬ in-progress task description + Memory Surface (decisions/lessons/plan) μ‘°ν© β
|
|
1667
1700
|
// "λ€μ λ¨κ³λ‘ 무μμ ν μ§" μΆλ‘ (μ¬μ©μ/AI μ§μ μ
λ ₯ μμ΄ μ¦μ λ
ΈμΆ)
|
|
@@ -3725,6 +3758,29 @@ function handoff(root) {
|
|
|
3725
3758
|
}
|
|
3726
3759
|
} catch {}
|
|
3727
3760
|
}
|
|
3761
|
+
// 1.9.198: BμΆ (λ©ν° Sub-Agent μ€μΌμ€νΈλΌ) λ³΄κ° β handoff μμ keyword λ§€μΉ best agent μλ μΆμ²
|
|
3762
|
+
// 1.9.193 lessons.md κΈ°λ‘μ νμ β "μ΄ task ν€μλλ μ΄μ μ agent X κ° best μλ€" νμ
|
|
3763
|
+
// λκΈ°: --no-multiagent-hint λλ LEERNESS_NO_MULTIAGENT_HINT=1
|
|
3764
|
+
if (!has('--no-multiagent-hint') && !has('--quiet') && process.env.LEERNESS_NO_MULTIAGENT_HINT !== '1') {
|
|
3765
|
+
try {
|
|
3766
|
+
const maHits = _loadMultiAgentConsensusHistory(root, keyword);
|
|
3767
|
+
if (maHits.length > 0) {
|
|
3768
|
+
// κ°μ₯ μ΅κ·Ό hit 1 + λμΌ agent λΉλ μΉ΄μ΄νΈ
|
|
3769
|
+
const recent = maHits[maHits.length - 1];
|
|
3770
|
+
const agentCounts = {};
|
|
3771
|
+
for (const h of maHits) { agentCounts[h.agent] = (agentCounts[h.agent] || 0) + 1; }
|
|
3772
|
+
const topAgent = Object.entries(agentCounts).sort((a, b) => b[1] - a[1])[0];
|
|
3773
|
+
const isTty = process.stdout && process.stdout.isTTY;
|
|
3774
|
+
const blu = s => isTty ? `\x1b[34m${s}\x1b[0m` : s;
|
|
3775
|
+
const dim = s => isTty ? `\x1b[2m${s}\x1b[0m` : s;
|
|
3776
|
+
log(blu(`## π€ task λ§€μΉ best agent (1.9.198 BμΆ) β ν€μλ "${keyword}"`));
|
|
3777
|
+
log(dim(` κ³Όκ±° multi-agent consensus ${maHits.length}건 β μΆμ² agent: ${topAgent[0]} (${topAgent[1]}ν best)`));
|
|
3778
|
+
log(dim(` μ΅κ·Ό hit: ${recent.date} agent=${recent.agent}${recent.score != null ? ` score=${recent.score.toFixed(3)}` : ''}`));
|
|
3779
|
+
log(dim(` β μ¬μ€ν: leerness agents multi "${(latestRow.request || '').slice(0, 60)}" --execute`));
|
|
3780
|
+
log('');
|
|
3781
|
+
}
|
|
3782
|
+
} catch {}
|
|
3783
|
+
}
|
|
3728
3784
|
// 1.9.196: DμΆ (μ₯κΈ° λ§₯λ½ μ μ§) λ³΄κ° β 30μΌ+ μ lessons μλ νκ³ (long-term memory recall)
|
|
3729
3785
|
// keyword μ λ§€μΉλλ 30μΌ+ μ€λλ lessons 1건 λ
ΈμΆ β μνμ§ κ³Όκ±° κ΅ν μ¬μκΈ°
|
|
3730
3786
|
// λκΈ°: --no-longterm-recall λλ LEERNESS_NO_LONGTERM_RECALL=1
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leerness",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.198",
|
|
4
4
|
"description": "Leerness: λΉνκ΄΄ λ§μ΄κ·Έλ μ΄μ
, μλ λ²μ κ°μ§Β·μ
λ°μ΄νΈ, κ³ν/μ§ν/νΈλμ€ν μλν, κ²μΌλ¦Β·μν¬λ¦ΏΒ·μΈμ½λ© μλ κ°λ, Claude Code μ¬λμ ν΅ν©μ κ°μΆ νκ΅μ΄ μ°μ AI κ°λ° νλ€μ€.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"leerness",
|