leerness 1.9.192 โ 1.9.193
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 +55 -0
- package/README.md +3 -3
- package/bin/harness.js +24 -4
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,60 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.9.193 โ 2026-05-21
|
|
4
|
+
|
|
5
|
+
**๐ค B์ถ (๋ฉํฐ Sub-Agent ์ค์ผ์คํธ๋ผ) ๋ณด๊ฐ โ agents multi consensus ๊ฒฐ๊ณผ ์๋ lessons.md ์ ์ฅ + ์บ์ 7์ผ stale hint.**
|
|
6
|
+
|
|
7
|
+
์์จ ๋ชจ๋ 123 ๋ผ์ด๋. 1.9.192 C์ถ ๋ณด๊ฐ์ ์ด์ด, 5์ถ ๋งคํธ๋ฆญ์ค์์ ๋ ๋ฒ์งธ๋ก ์ ์๊ฐ ๋ฎ์๋ **B์ถ (8.5/10 โ ๋ชฉํ 9/10)** ๋ณด๊ฐ.
|
|
8
|
+
|
|
9
|
+
### ์ฌ์ฉ์ ์๋ ์ ๋ ฌ (1.9.191 verbatim)
|
|
10
|
+
> *"๋ฉํฐ ์๋ธ ์์ด์ ํธ ์ค์ผ์คํธ๋ผ ... ์ต๊ณ ์ ๋๊ตฌ"*
|
|
11
|
+
|
|
12
|
+
### 1. agents multi --execute โ lessons.md ์๋ ์ ์ฅ (B์ถ ํต์ฌ)
|
|
13
|
+
- ๋งค `agents multi --execute` ํธ์ถ ์ consensus best agent + score ๊ฐ `.harness/lessons.md`์ ๊ธฐ๋ก
|
|
14
|
+
- ๊ฐ์ keyword ์ฌ๋ฐ ์ handoff lessons auto-recall (1.9.56)๊ฐ ์๋ ๋งค์นญ โ ๊ณผ๊ฑฐ best agent ์ฐ์ ์๋
|
|
15
|
+
- ๋๊ธฐ: `LEERNESS_NO_MULTIAGENT_LESSON=1`
|
|
16
|
+
|
|
17
|
+
**lesson ๋ธ๋ก ํฌ๋งท:**
|
|
18
|
+
```markdown
|
|
19
|
+
### 2026-05-21 multi-agent consensus โ best=claude (1.9.193)
|
|
20
|
+
- task: ...
|
|
21
|
+
- agents: claude, codex, gemini (3/3 success)
|
|
22
|
+
- best agent: claude, score=0.873
|
|
23
|
+
- others: codex=0.71, gemini=0.65
|
|
24
|
+
- lesson: ๊ฐ์ keyword ์ฌ๋ฐ ์ claude ์ฐ์ ์๋ (multi-signal consensus ์
์ฆ)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
### 2. skill auto-cache age 7์ผ stale ๊ฐ์กฐ (1.9.192 ํ์)
|
|
28
|
+
- handoff body์์ ์บ์ age โฅ 7์ผ (veryStale) ์ `โ 7์ผ+` ํ์
|
|
29
|
+
- ๊ฐฑ์ ๊ถ์ฅ hint: `1.9.193 7์ผ+ stale` ๋๋ `24h+ expired` ๋ช
์
|
|
30
|
+
- ์ฌ์ฉ์๊ฐ "์ค๋๋ catalog ์์ ์ธ์ง" โ ์๋ ๊ฒ์ผ๋ฆ ๋ฐฉ์ง
|
|
31
|
+
|
|
32
|
+
### 3. ๋์ ํ๊ท (1.9.187~192) โ ๋ชจ๋ ์ ์ง
|
|
33
|
+
- [1.9.192] _loadOfficialSkillCache + 24h ์บ์
|
|
34
|
+
- [1.9.191] ๊ตฌ์กฐ ์ต์ ํ ๋ณด๊ณ ์ 88/100
|
|
35
|
+
- [1.9.190] _selectOne/_selectMany Ctrl+C ์ฆ์ ์ข
๋ฃ
|
|
36
|
+
- [1.9.189] _showSlashCommandList + Tab cycle ํ ์ค ๊ฐฑ์
|
|
37
|
+
- [1.9.188] stdin prompt ์ ๋ฌ (useStdinForPrompt)
|
|
38
|
+
- [1.9.187] _loadLeernessConfig (.harness/leerness-config.json)
|
|
39
|
+
|
|
40
|
+
### 4. stress-v138 โ 16/16 PASS
|
|
41
|
+
- consensus auto-lessons (3) + cache age hint (2) + 1.9.192 ์์กด (2)
|
|
42
|
+
- ์ฑ๋ฅ: --version cold start avg **396 ms** (376/382/430) ยท MCP 54 ๋๊ตฌ **369 ms**
|
|
43
|
+
- ๋์ ํ๊ท 1.9.187~192 (7)
|
|
44
|
+
|
|
45
|
+
### 5. 5์ถ ๋งคํธ๋ฆญ์ค ๋ณ๋
|
|
46
|
+
| ์ถ | 1.9.192 | 1.9.193 | ฮ |
|
|
47
|
+
|---|---|---|---|
|
|
48
|
+
| B. ๋ฉํฐ Sub-Agent ์ค์ผ์คํธ๋ผ | 8.5/10 | **9/10** | +0.5 (consensus ์๋ lessons โ ํ์ต ์ฌ์ดํด ์์ฑ) |
|
|
49
|
+
| C. ๊ณต์ ํ์ค ์คํฌ ์๋ ํ์ฉ | 9/10 | 9/10 | (์ ์ง) |
|
|
50
|
+
| ์ข
ํฉ | 45/50 (90%) | **45.5/50 (91%)** | +1% |
|
|
51
|
+
|
|
52
|
+
### 6. ์๋ release ํ๋ฆ
|
|
53
|
+
- main ์๋ push **55 ๋ผ์ด๋ ์ฐ์** (1.9.140~193)
|
|
54
|
+
- npm publish ์๋ (1.9.178~)
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
3
58
|
## 1.9.192 โ 2026-05-21
|
|
4
59
|
|
|
5
60
|
**๐ C์ถ (๊ณต์ ํ์ค ์คํฌ ์๋ ํ์ฉ) ๋ณด๊ฐ โ handoff์ ๊ณต์ organization catalog ์๋ ๋
ธ์ถ + 24h ์บ์.**
|
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.193 AI Agent Reliability Harness + Sandbox โ
|
|
16
16
|
โ verify ยท remember ยท orchestrate ยท audit ยท sandbox ยท drift โ
|
|
17
|
-
โ
|
|
17
|
+
โ ๐ค multi-agent consensus lessons ์๋ ยท 91/100 ยท 123 ๋ผ์ด๋ โ
|
|
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.193';
|
|
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 ์ฒ๋ฆฌ).
|
|
@@ -3524,6 +3524,7 @@ function handoff(root) {
|
|
|
3524
3524
|
// 1.9.192: ๊ณต์ organization skill catalog ์๋ ๋งค์นญ (C์ถ ๋ณด๊ฐ โ ์ฌ์ฉ์ ์๋)
|
|
3525
3525
|
// "๊ณต์ ํ์คํ๋ ์คํฌ์ ์ ์ฌ์ ์๋ก ์๋ ํ์ฉ ... ์ต๊ณ ์ ๋๊ตฌ" โ handoff ์ keyword ๊ธฐ๋ฐ ์๋ ์ถ์ฒ
|
|
3526
3526
|
// ์บ์ (.harness/skill-auto-cache.json, 24h TTL) ์ฌ์ฉ โ GitHub API ๋ถ๋ด X
|
|
3527
|
+
// 1.9.193: cache age > 7์ผ โ ์๋ refresh ๊ถ์ฅ hint ๊ฐํ
|
|
3527
3528
|
// ๋๊ธฐ: --no-official-skills ๋๋ LEERNESS_NO_OFFICIAL_SKILLS=1
|
|
3528
3529
|
if (!has('--no-official-skills') && !has('--quiet') && process.env.LEERNESS_NO_OFFICIAL_SKILLS !== '1') {
|
|
3529
3530
|
try {
|
|
@@ -3532,14 +3533,18 @@ function handoff(root) {
|
|
|
3532
3533
|
const isTty = process.stdout && process.stdout.isTTY;
|
|
3533
3534
|
const cyan = s => isTty ? `\x1b[36m${s}\x1b[0m` : s;
|
|
3534
3535
|
const dim = s => isTty ? `\x1b[2m${s}\x1b[0m` : s;
|
|
3536
|
+
const yel = s => isTty ? `\x1b[33m${s}\x1b[0m` : s;
|
|
3535
3537
|
const cacheAge = ofm.ageHours != null ? (ofm.ageHours < 24 ? `${ofm.ageHours}h` : `${Math.floor(ofm.ageHours/24)}d`) : '?';
|
|
3536
|
-
|
|
3537
|
-
|
|
3538
|
+
// 1.9.193: cache age 7์ผ ์ด์์ด๋ฉด ๊ฐ์กฐ ํ์ (week stale)
|
|
3539
|
+
const veryStale = ofm.ageHours != null && ofm.ageHours >= 24 * 7;
|
|
3540
|
+
log(cyan(`## ๐ ๊ณต์ organization ์คํฌ ์๋ ๋งค์นญ (1.9.192/193) โ ํค์๋ "${keyword}"`));
|
|
3541
|
+
const ageLabel = veryStale ? yel(`${cacheAge} โ 7์ผ+`) : (ofm.expired ? yel(`${cacheAge} โ ๋ง๋ฃ`) : `${cacheAge} โ`);
|
|
3542
|
+
log(dim(` vercel-labs/anthropics ๋ฑ catalog ์บ์ ${ageLabel} ยท ${ofm.total}/${ofm.cacheTotal}๊ฑด ๋งค์นญ`));
|
|
3538
3543
|
for (const e of ofm.entries) {
|
|
3539
3544
|
log(dim(` โข [${e.preset || e.source || '?'}] ${e.name} โ ${(e.description || '').slice(0, 70)}`));
|
|
3540
3545
|
}
|
|
3541
3546
|
log(dim(` โ ์ค์น: leerness skill auto-install --yes`));
|
|
3542
|
-
if (ofm.expired) log(
|
|
3547
|
+
if (ofm.expired || veryStale) log(yel(` โ ๊ฐฑ์ ๊ถ์ฅ: leerness skill auto-cache refresh (1.9.193 ${veryStale ? '7์ผ+ stale' : '24h+ expired'})`));
|
|
3543
3548
|
log('');
|
|
3544
3549
|
} else if (ofm.cacheTotal === 0) {
|
|
3545
3550
|
// ์บ์ ์์ โ ์ฒซ ์ฌ์ฉ ์๋ด
|
|
@@ -6047,6 +6052,21 @@ function agentsCmd(root, sub, ...args) {
|
|
|
6047
6052
|
const block = `\n## ${today()} agents multi --execute (1.9.156)\n- task: ${task.slice(0, 200)}\n- agents: ${ready.map(x => x.def.id).join(', ')}\n- success: ${ok.length}/${ready.length}\n- best: ${best.agent} (score=${best.score.toFixed(3)})\n`;
|
|
6048
6053
|
append(tlp, block);
|
|
6049
6054
|
} catch {}
|
|
6055
|
+
// 1.9.193: B์ถ (๋ฉํฐ Sub-Agent ์ค์ผ์คํธ๋ผ) ๋ณด๊ฐ โ consensus ๊ฒฐ๊ณผ๋ฅผ lessons.md ์ ์๋ ๊ธฐ๋ก
|
|
6056
|
+
// ๊ฐ์ task ์ฌ์๋ ์ ๊ณผ๊ฑฐ best agent + score ๊ฐ handoff lessons auto-recall ์์ ๋งค์นญ
|
|
6057
|
+
// ๋๊ธฐ: LEERNESS_NO_MULTIAGENT_LESSON=1
|
|
6058
|
+
if (process.env.LEERNESS_NO_MULTIAGENT_LESSON !== '1') {
|
|
6059
|
+
try {
|
|
6060
|
+
const lp = lessonsPath(root);
|
|
6061
|
+
const lessonBlock = `\n### ${today()} multi-agent consensus โ best=${best.agent} (1.9.193)\n`
|
|
6062
|
+
+ `- task: ${task.slice(0, 200)}\n`
|
|
6063
|
+
+ `- agents: ${ready.map(x => x.def.id).join(', ')} (${ok.length}/${ready.length} success)\n`
|
|
6064
|
+
+ `- best agent: ${best.agent}, score=${best.score.toFixed(3)}\n`
|
|
6065
|
+
+ (scored.length > 1 ? `- others: ${scored.slice(1, 4).map(s => `${s.agent}=${s.score.toFixed(2)}`).join(', ')}\n` : '')
|
|
6066
|
+
+ `- lesson: ๊ฐ์ keyword ์ฌ๋ฐ ์ ${best.agent} ์ฐ์ ์๋ (multi-signal consensus ์
์ฆ)\n`;
|
|
6067
|
+
append(lp, lessonBlock);
|
|
6068
|
+
} catch {}
|
|
6069
|
+
}
|
|
6050
6070
|
}
|
|
6051
6071
|
if (failures.length && !best) {
|
|
6052
6072
|
process.exitCode = 1;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "leerness",
|
|
3
|
-
"version": "1.9.
|
|
3
|
+
"version": "1.9.193",
|
|
4
4
|
"description": "Leerness: ๋นํ๊ดด ๋ง์ด๊ทธ๋ ์ด์
, ์๋ ๋ฒ์ ๊ฐ์งยท์
๋ฐ์ดํธ, ๊ณํ/์งํ/ํธ๋์คํ ์๋ํ, ๊ฒ์ผ๋ฆยท์ํฌ๋ฆฟยท์ธ์ฝ๋ฉ ์๋ ๊ฐ๋, Claude Code ์ฌ๋์ ํตํฉ์ ๊ฐ์ถ ํ๊ตญ์ด ์ฐ์ AI ๊ฐ๋ฐ ํ๋ค์ค.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"leerness",
|