@walwal-harness/cli 5.3.0 → 5.3.2
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.
|
@@ -1,3 +1,17 @@
|
|
|
1
|
+
---
|
|
2
|
+
docmeta:
|
|
3
|
+
id: memory
|
|
4
|
+
title: Harness Memory — 공유 학습 기록
|
|
5
|
+
type: input
|
|
6
|
+
createdAt: 2026-04-20T00:00:00Z
|
|
7
|
+
updatedAt: 2026-04-20T00:00:00Z
|
|
8
|
+
source:
|
|
9
|
+
producer: user
|
|
10
|
+
skillId: harness
|
|
11
|
+
inputs: []
|
|
12
|
+
tags: [harness, memory, template]
|
|
13
|
+
---
|
|
14
|
+
|
|
1
15
|
# Harness Memory — 공유 학습 기록
|
|
2
16
|
|
|
3
17
|
> Dispatcher가 관리. **모든 에이전트**는 세션 시작 시 이 파일을 읽고 학습된 규칙을 따릅니다.
|
|
@@ -24,3 +38,17 @@
|
|
|
24
38
|
- 항목이 15개 초과 시 가장 오래된 unverified 항목부터 정리
|
|
25
39
|
|
|
26
40
|
<!-- 항목이 추가되면 아래에 기록됩니다 -->
|
|
41
|
+
|
|
42
|
+
### [M-001] progress.log 가독성 — 상세 로그 필수
|
|
43
|
+
- **Date**: 2026-04-20
|
|
44
|
+
- **Status**: verified
|
|
45
|
+
- **TTL**: 영구
|
|
46
|
+
- **Lesson**: Team Worker와 Evaluator가 progress.log에 남기는 로그는 대시보드만 보고도 "무슨 일을 시작했는가 / 무엇을 만들었는가 / 무엇을 어떻게 검증하는가"를 알 수 있어야 한다. 다음 원칙을 반드시 따른다:
|
|
47
|
+
1. `gen-start`에 Feature **제목과 목표**를 함께 기록 ("F-001 \"사용자 회원가입 API\" start — goal=POST /users, 6 AC"). ID만 기록 금지.
|
|
48
|
+
2. `gen-write`는 **변경 파일마다 1건씩** 기록 (경로 + LOC + create/edit/delete). "2 files" 같은 개수 요약 금지.
|
|
49
|
+
3. `gen-done`은 **변경 파일 전체 목록**을 나열. "7 files"처럼 개수만 기록 금지.
|
|
50
|
+
4. `eval-ac`로 **AC 원문**을 먼저 선언 ("AC-3: \"POST /users returns 201 with created user id\""), 그 후 `eval-check`로 증거·판정 기록. "AC-1 count=0" 같은 수치 단독 금지.
|
|
51
|
+
5. `result PASS`는 **SCORE ≥ 2.80**인 경우에만 기록. score=1.00을 PASS로 기록 금지.
|
|
52
|
+
6. 각 단계마다 **어떤 도구/방법으로 검증했는지**(tsc/eslint/curl/playwright 등) 명시.
|
|
53
|
+
- **Context**: 사용자가 대시보드 로그만 보고 진행 상황을 파악해야 하는데, 기존 축약 로그로는 4대 질문에 답이 안 보인다는 피드백.
|
|
54
|
+
- **Applies to**: Team Worker(Generator + Evaluator), Solo Mode Generator/Evaluator, 모든 `logev` 호출 지점.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@walwal-harness/cli",
|
|
3
|
-
"version": "5.3.
|
|
3
|
+
"version": "5.3.2",
|
|
4
4
|
"description": "Production harness for AI agent engineering — Solo/Team mode, Planner, Generator(BE/FE), Evaluator(Func/Visual), optional Brainstormer. Supports React, Next.js, and Flutter FE stacks.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"walwal-harness": "bin/init.js"
|
|
@@ -30,6 +30,23 @@ BG_YELLOW="\033[43m"
|
|
|
30
30
|
REFRESH_SEC="${HARNESS_REFRESH:-5}"
|
|
31
31
|
RECENT_N="${HARNESS_GOTCHA_RECENT:-3}"
|
|
32
32
|
|
|
33
|
+
# 렌더 캐시 — 내용이 바뀌지 않으면 redraw 스킵
|
|
34
|
+
LAST_SIG=""
|
|
35
|
+
|
|
36
|
+
# 입력 시그니처: gotchas + memory + 활성 에이전트의 mtime/size 해시
|
|
37
|
+
compute_signature() {
|
|
38
|
+
{
|
|
39
|
+
[ -f "$PROGRESS" ] && stat -f '%m %z' "$PROGRESS" 2>/dev/null
|
|
40
|
+
[ -f "$MEMORY_FILE" ] && stat -f '%m %z' "$MEMORY_FILE" 2>/dev/null
|
|
41
|
+
if [ -d "$GOTCHAS_DIR" ]; then
|
|
42
|
+
for f in "$GOTCHAS_DIR"/*.md; do
|
|
43
|
+
[ -e "$f" ] || continue
|
|
44
|
+
stat -f '%N %m %z' "$f" 2>/dev/null
|
|
45
|
+
done
|
|
46
|
+
fi
|
|
47
|
+
} | md5 -q 2>/dev/null || echo "$RANDOM"
|
|
48
|
+
}
|
|
49
|
+
|
|
33
50
|
# 활성 에이전트 결정: current_agent > next_agent
|
|
34
51
|
get_active_agent() {
|
|
35
52
|
[ -f "$PROGRESS" ] || { echo ""; return; }
|
|
@@ -116,7 +133,8 @@ render_memory_summary() {
|
|
|
116
133
|
}
|
|
117
134
|
|
|
118
135
|
render() {
|
|
119
|
-
clear
|
|
136
|
+
# clear 대신 커서 홈 + 화면 끝까지 지우기 — 깜빡임 최소화
|
|
137
|
+
printf '\033[H\033[2J\033[3J'
|
|
120
138
|
local cols hr
|
|
121
139
|
cols=$(tput cols 2>/dev/null || echo 80)
|
|
122
140
|
hr=$(printf '─%.0s' $(seq 1 "$cols"))
|
|
@@ -160,6 +178,10 @@ render() {
|
|
|
160
178
|
trap 'exit 0' INT TERM
|
|
161
179
|
|
|
162
180
|
while true; do
|
|
163
|
-
|
|
181
|
+
sig=$(compute_signature)
|
|
182
|
+
if [ "$sig" != "$LAST_SIG" ]; then
|
|
183
|
+
render
|
|
184
|
+
LAST_SIG="$sig"
|
|
185
|
+
fi
|
|
164
186
|
sleep "$REFRESH_SEC"
|
|
165
187
|
done
|