@kaydash9999/banker-plugins 0.9.0 → 0.11.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/.claude-plugin/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +14 -0
- package/README.md +75 -5
- package/bin/banker.js +35 -3
- package/codex/manifest.json +1 -1
- package/package.json +1 -1
- package/skills/ralph-qa/SKILL.md +59 -32
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "banker",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "Claude Code plugin: QA/audit/docs/architecture skills + commands, a /banker:setup installer for OS dependencies (playwright, etc.), and wiki compaction.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "smallOpenSource",
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.11.0] - 2026-08-08
|
|
4
|
+
|
|
5
|
+
### Changed
|
|
6
|
+
- **`ralph-qa` 교차검증 경로를 3단 우선순위로 재설계.** 방금 만든 결과를 다른 모델로 독립 검증할 때(자기승인 방지), 이제 ① 다른-LLM CLI(**Codex CLI 우선**; 저자가 Codex면 Claude/Gemini) → ② 다른 모델 직접 `curl`(크리덴셜이 있고 저자와 다른 계열일 때, 엔드포인트·키·모델을 env 로 파라미터화) → ③ 자체 다중 에이전트 합의(기본 3개·렌즈 분담·정족수, 최후 수단) 순으로 사용 가능한 첫 경로를 택한다. 이전엔 다른-LLM 경로 실패 시 같은-런타임 critic 하나로 곧장 후퇴했으나, 그 앞에 진짜 다른 모델(`curl`) 경로를 끼워 독립성을 실질적으로 강화했다. `--agents=N` 플래그를 추가했다.
|
|
7
|
+
- **README 빠른 시작의 Claude Code 설치를 인앱 `/plugin` 우선으로.** 실행 중인 세션에서 `/plugin marketplace add …` + `/plugin install …@…` 로 설치하는 흐름을 앞세우고(설치 후 필요 시 `/reload-plugins` 안내), 터미널 셸 `claude plugin …` 은 대안으로 병기했다.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
- README 에 **설정 변경 지점(Claude Code · Codex)** 섹션을 추가했다. 설치·제거 CLI, 플러그인 자체 훅(`hooks.json`), setup 스킬별 설정 패치(`config.toml`·`settings.json`) 지점을 표로 정리했다.
|
|
11
|
+
|
|
12
|
+
## [0.10.0] - 2026-07-18
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
- **GitHub 별 프롬프트가 Y 입력 시 실제로 별을 단다**(oh-my-codex 방식과 동일). 이전에는 URL 안내만 했으나, 이제 `gh` CLI 인증으로 `gh api -X PUT /user/starred/smallOpenSource/banker_plugins` 를 호출해 자동으로 별을 누른다. `gh` 미설치·미인증·API 실패 시에는 이유를 알리고 URL 안내로 폴백한다(setup 을 절대 막지 않음·자체 timeout·오류삼킴). `starRepo` 를 `require.main` 가드 뒤로 export 해 주입 spawn 으로 단위테스트(gh 없음·성공·실패)를 커버했다. 실환경 검증: 실제 exported `starRepo()` 호출로 저장소가 404→204(별 눌림) 전이 확인.
|
|
16
|
+
|
|
3
17
|
## [0.9.0] - 2026-07-18
|
|
4
18
|
|
|
5
19
|
### Added
|
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
[](LICENSE)
|
|
7
7
|
[](https://www.npmjs.com/package/@kaydash9999/banker-plugins) [](https://github.com/smallOpenSource/banker_plugins)
|
|
8
8
|
|
|
9
|
-
[빠른 시작](#빠른-시작) · [구성](#구성) · [설치 상세](#설치-상세-npm--codex) · [요구사항](#요구사항) · [업데이트 / 제거](#업데이트--제거) · [업데이트 확인](#업데이트-확인-및-사용량-카운팅) · [라이선스 / 서드파티](#라이선스--서드파티)
|
|
9
|
+
[빠른 시작](#빠른-시작) · [워크플로 예시](#워크플로-사용-예시) · [구성](#구성) · [설치 상세](#설치-상세-npm--codex) · [설정 변경 지점](#설정-변경-지점-claude-code--codex) · [요구사항](#요구사항) · [업데이트 / 제거](#업데이트--제거) · [업데이트 확인](#업데이트-확인-및-사용량-카운팅) · [라이선스 / 서드파티](#라이선스--서드파티)
|
|
10
10
|
|
|
11
11
|
banker는 QA·보안 감사·문서·아키텍처·위키 작업과 의존성·개발환경(OS별) 설치를 아우르는 **스킬 48개 + 커맨드 2개**(총 50개 구성요소)를 묶은 Claude Code 플러그인입니다.\
|
|
12
12
|
설치하면 스킬과 커맨드가 `/banker:<이름>` 네임스페이스로 노출됩니다.\
|
|
@@ -16,13 +16,18 @@ banker는 QA·보안 감사·문서·아키텍처·위키 작업과 의존성·
|
|
|
16
16
|
|
|
17
17
|
## 빠른 시작
|
|
18
18
|
|
|
19
|
-
**Claude Code:**
|
|
19
|
+
**Claude Code:** 실행 중인 세션에서 `/plugin` 으로 설치 (권장)
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
21
|
+
Claude Code 세션 안에서 입력합니다.
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
/plugin marketplace add smallOpenSource/banker_plugins
|
|
25
|
+
/plugin install banker@banker-plugins
|
|
24
26
|
```
|
|
25
27
|
|
|
28
|
+
설치 후 `Plugin is now active.` 면 바로 쓸 수 있고, `Run /reload-plugins to activate.` 가 뜨면 `/reload-plugins` 를 실행합니다.\
|
|
29
|
+
터미널 셸을 선호하면 `claude plugin marketplace add smallOpenSource/banker_plugins` 후 `claude plugin install banker@banker-plugins` 로도 됩니다(다음 실행 또는 `/reload-plugins` 후 적용).
|
|
30
|
+
|
|
26
31
|
스킬과 커맨드를 `/banker:audit-security` 처럼 `/banker:` 로 호출합니다.
|
|
27
32
|
|
|
28
33
|
**Codex CLI:** npm 전역 설치 후 `banker setup`
|
|
@@ -36,6 +41,24 @@ banker setup --codex
|
|
|
36
41
|
|
|
37
42
|
playwright(브라우저 QA)나 oh-my-claudecode(OMC/OMX)처럼 별도 의존성이 필요한 스킬은 실행 전에 설치부터 안내합니다(Claude Code는 `/banker:setup`).
|
|
38
43
|
|
|
44
|
+
## 워크플로 사용 예시
|
|
45
|
+
|
|
46
|
+
무엇부터 써야 할지 막막할 때, 상황별로 골라 쓰는 대표 워크플로입니다.\
|
|
47
|
+
Claude Code는 `/banker:<이름>`, Codex는 `banker-<이름>` 으로 호출합니다.
|
|
48
|
+
|
|
49
|
+
| 워크플로 | 언제 쓰나 | 하는 일 |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| `ultra-interview` | 처음 프로젝트 아이디어를 구체화할 때 | 최신 정보를 반영한 소크라테스식 인터뷰 |
|
|
52
|
+
| `ultra-init` | 프로젝트 기획이 충분히 구체적일 때 | 데모를 구현 |
|
|
53
|
+
| `curation` | 질문에 답하기 어렵거나 의사결정이 어려울 때 | 합리적 선택지 제공 (`--perf` 옵션 = 품질 우선) |
|
|
54
|
+
| `all-in-one` | 요건이 명확한 단계에서 | 계획 → 구현 → 검증 |
|
|
55
|
+
| `ralph-qa` | 검증이 충분하지 않을 때 | 다중 Agent 논의 |
|
|
56
|
+
| `smart-compact` | 컨텍스트 임계 초과로 맥락 단절이 걱정될 때 | 맥락을 더 잘 이어서 진행 |
|
|
57
|
+
| `refresh-readme` | 프로젝트 배포 전 | README 최신화 |
|
|
58
|
+
| `summary-wiki` | Agent가 아는 정보를 확인하고 싶을 때 | 요약 리포트 |
|
|
59
|
+
| `cleansing-memory` | 프로젝트가 장기화될 때 | 메모리 최적화 |
|
|
60
|
+
| `ready-compact` | 컨텍스트를 compact 하거나 새 세션을 대비할 때 | 이어갈 프롬프트를 준비 |
|
|
61
|
+
|
|
39
62
|
## 구성
|
|
40
63
|
|
|
41
64
|
### 커맨드
|
|
@@ -147,6 +170,43 @@ banker uninstall # 제거
|
|
|
147
170
|
- Codex에선 OMC 대신 **oh-my-codex(OMX)** 의 동명 스킬(ralplan·ralph·ultraqa·hud 등)과 `codex mcp`·내장 `/copy` 를 사용합니다(Codex는 `omx setup` 전제).
|
|
148
171
|
- `~/.codex/AGENTS.md` 는 건드리지 않습니다(omx가 재생성하므로 `~/.codex/skills/` 자동 검색에 의존).
|
|
149
172
|
|
|
173
|
+
## 설정 변경 지점 (Claude Code · Codex)
|
|
174
|
+
|
|
175
|
+
이 플러그인이 두 런타임의 설정·설치 상태를 건드리는 지점을 한눈에 정리했습니다.\
|
|
176
|
+
아래 파일 패치는 모두 기존 키를 병합·래핑·백업만 하며 덮어쓰지 않습니다.
|
|
177
|
+
|
|
178
|
+
**설치·제거 — `banker` CLI (결정론적)**
|
|
179
|
+
|
|
180
|
+
| 런타임 | 대상 | 동작 |
|
|
181
|
+
|---|---|---|
|
|
182
|
+
| Claude Code | 플러그인 레지스트리 | `claude plugin marketplace add` + 설치 → `/banker:*` (`settings.json` 직접수정 없음) |
|
|
183
|
+
| Codex CLI | `~/.codex/skills/banker-*/`, `~/.codex/prompts/banker-*.md` | 기존 `banker-*` 정리 후 복사(멱등). `AGENTS.md`·`config.toml` 미변경 |
|
|
184
|
+
|
|
185
|
+
**플러그인 자체 훅 — `hooks/hooks.json` (설치 시 Claude Code에서 자동 발화)**
|
|
186
|
+
|
|
187
|
+
사용자 `settings.json` 을 고치는 게 아니라 플러그인이 자기 훅을 선언한 것입니다.
|
|
188
|
+
|
|
189
|
+
| 이벤트 | 훅 | 역할 |
|
|
190
|
+
|---|---|---|
|
|
191
|
+
| PostToolUse | `obsidize-hook` · `telemetry-count-skill` | 위키 정규화 · 스킬 사용 카운트 |
|
|
192
|
+
| UserPromptExpansion | `telemetry-count` | `/banker:*` 직접호출 카운트 |
|
|
193
|
+
| SessionStart | `update-notify` | 업데이트 알림 |
|
|
194
|
+
|
|
195
|
+
**setup 스킬이 사용자 설정 파일을 패치 (해당 스킬 실행 시)**
|
|
196
|
+
|
|
197
|
+
| 스킬 | Claude Code (`~/.claude/settings.json` 등) | Codex CLI (`~/.codex/config.toml` 등) |
|
|
198
|
+
|---|---|---|
|
|
199
|
+
| `setup-sandbox` | `sandbox` 객체 | `sandbox_mode` · `[sandbox_workspace_write]` |
|
|
200
|
+
| `setup-mcp` | `claude mcp add` (context7·seq-thinking·filesystem·git·fetch) | `[mcp_servers.*]` |
|
|
201
|
+
| `setup-lsp` | LSP MCP 등록 | `[mcp_servers.lsp_bridge]` |
|
|
202
|
+
| `setup-stitch` | `claude mcp add stitch` | `codex mcp add stitch` |
|
|
203
|
+
| `setup-omc-hud` | `statusLine` | — (Codex는 OMX `hud`) |
|
|
204
|
+
| `setup-pwsh` | `env.CLAUDE_CODE_GIT_BASH_PATH` (병합) | — (네이티브 셸, 배선 불필요) |
|
|
205
|
+
| `harness-factory` | `CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1` (env 영속) | — |
|
|
206
|
+
| `smart-compact` | `statusLine.command` 래핑 + `UserPromptSubmit` 훅 추가 (백업·멱등) | `~/.codex/` 대응 |
|
|
207
|
+
|
|
208
|
+
`obsidizer` 는 `settings.json` 대신 `<위키디렉터리>/.obsidizer` 플래그 파일로만 켜고 끕니다.
|
|
209
|
+
|
|
150
210
|
## 요구사항
|
|
151
211
|
|
|
152
212
|
- Claude Code (마켓플레이스 경로): 스킬이 `/banker:*` 로 동작.
|
|
@@ -199,6 +259,16 @@ Codex CLI는 샌드박스가 네트워크를 차단하므로 알림·카운팅
|
|
|
199
259
|
|
|
200
260
|
무엇을 수집하고 누가 수신하는지는 [PRIVACY.md](PRIVACY.md)에 정리했습니다.
|
|
201
261
|
|
|
262
|
+
### 공개 대시보드 · 엔드포인트
|
|
263
|
+
|
|
264
|
+
카운팅 워커(`banker.banker-plugins.workers.dev`)는 다음 공개 엔드포인트를 제공합니다.
|
|
265
|
+
|
|
266
|
+
| URL | 내용 |
|
|
267
|
+
|---|---|
|
|
268
|
+
| <https://banker.banker-plugins.workers.dev/> | 사용량 대시보드 (npm 다운로드 지표 + 스킬 사용 집계 차트) |
|
|
269
|
+
| <https://banker.banker-plugins.workers.dev/stats> | 집계 데이터 JSON |
|
|
270
|
+
| <https://banker.banker-plugins.workers.dev/health> | 헬스 체크 (`ok`) |
|
|
271
|
+
|
|
202
272
|
## 라이선스 / 서드파티
|
|
203
273
|
|
|
204
274
|
banker 자체는 **MIT** ([LICENSE](LICENSE)). Owner: [smallOpenSource](https://github.com/smallOpenSource).
|
package/bin/banker.js
CHANGED
|
@@ -19,6 +19,7 @@ const PLUGIN_JSON = path.join(PKG_ROOT, '.claude-plugin', 'plugin.json');
|
|
|
19
19
|
const MARKETPLACE = 'banker-plugins';
|
|
20
20
|
const PLUGIN_NAME = 'banker';
|
|
21
21
|
const REPO_URL = 'https://github.com/smallOpenSource/banker_plugins';
|
|
22
|
+
const REPO_SLUG = REPO_URL.replace(/^https:\/\/github\.com\//, ''); // smallOpenSource/banker_plugins (star API 대상)
|
|
22
23
|
|
|
23
24
|
function version() {
|
|
24
25
|
try { return require(path.join(PKG_ROOT, 'package.json')).version; } catch { return '0.0.0'; }
|
|
@@ -26,6 +27,26 @@ function version() {
|
|
|
26
27
|
function log(...a) { console.log(...a); }
|
|
27
28
|
function warn(...a) { console.error(...a); }
|
|
28
29
|
|
|
30
|
+
// GitHub 저장소에 별을 단다 (gh CLI 인증 사용). star 는 repo 쓰기 권한이 필요 없어 인증된 어느 계정으로도
|
|
31
|
+
// 가능하다. gh 미설치/미인증/실패는 {ok:false, reason} 로 반환해 호출부가 URL 안내로 폴백하게 한다.
|
|
32
|
+
// spawn 은 테스트 주입용(기본 cp.spawnSync). 자체 timeout·오류삼킴으로 setup 을 절대 막지 않는다.
|
|
33
|
+
function starRepo(spawn = cp.spawnSync) {
|
|
34
|
+
try {
|
|
35
|
+
const v = spawn('gh', ['--version'], { stdio: 'ignore', timeout: 3000, windowsHide: true });
|
|
36
|
+
if (v.error || v.status !== 0) return { ok: false, reason: 'gh CLI 없음' };
|
|
37
|
+
const r = spawn('gh', ['api', '-X', 'PUT', `/user/starred/${REPO_SLUG}`],
|
|
38
|
+
{ encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'], timeout: 10000, windowsHide: true });
|
|
39
|
+
if (r.error) return { ok: false, reason: r.error.message };
|
|
40
|
+
if (r.status !== 0) {
|
|
41
|
+
const msg = (`${r.stderr || r.stdout || ''}`).trim().split('\n')[0] || `gh exited ${r.status}`;
|
|
42
|
+
return { ok: false, reason: msg };
|
|
43
|
+
}
|
|
44
|
+
return { ok: true };
|
|
45
|
+
} catch (e) {
|
|
46
|
+
return { ok: false, reason: (e && e.message) || String(e) };
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
29
50
|
function parseArgs(argv) {
|
|
30
51
|
const a = { cmd: null, sub: null, claude: false, codex: false, scope: 'user', scopeExplicit: false, dryRun: false, help: false, version: false };
|
|
31
52
|
for (const t of argv) {
|
|
@@ -260,8 +281,14 @@ async function maybeFirstRunPrompts(a) {
|
|
|
260
281
|
if (askStar) {
|
|
261
282
|
const ans = (await ask('banker가 유용했다면 GitHub 별(star)을 눌러 주세요. [Y/n] ')).trim().toLowerCase();
|
|
262
283
|
if (ans === '' || ans === 'y' || ans === 'yes') {
|
|
263
|
-
log('
|
|
264
|
-
|
|
284
|
+
log('GitHub 별을 누르는 중...'); // gh 네트워크가 느리면 최대 10초 블로킹이라 진행 표시.
|
|
285
|
+
const star = starRepo(); // gh CLI 로 실제 별을 단다(인증 필요).
|
|
286
|
+
if (star.ok) {
|
|
287
|
+
log('감사합니다. GitHub 별을 눌렀습니다.');
|
|
288
|
+
} else {
|
|
289
|
+
log(`자동으로 누르지 못했습니다(${star.reason}). 아래에서 직접 눌러 주세요:`);
|
|
290
|
+
log(` ${REPO_URL}`);
|
|
291
|
+
}
|
|
265
292
|
}
|
|
266
293
|
next.promptedStarV1 = true;
|
|
267
294
|
}
|
|
@@ -369,4 +396,9 @@ async function main() {
|
|
|
369
396
|
return;
|
|
370
397
|
}
|
|
371
398
|
}
|
|
372
|
-
main
|
|
399
|
+
// CLI 로 직접 실행될 때만 main 을 돌린다. 테스트가 require 로 import 하면 main 은 안 돌고 starRepo 만 노출.
|
|
400
|
+
if (require.main === module) {
|
|
401
|
+
main().catch((e) => { warn('banker:', e && e.message ? e.message : e); process.exitCode = 1; });
|
|
402
|
+
}
|
|
403
|
+
|
|
404
|
+
module.exports = { starRepo };
|
package/codex/manifest.json
CHANGED
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
{ "name": "curation", "type": "skill", "target": "both", "reason": "decision-framing behavior (options/rec/confidence + --perf); no runtime deps; identical in both", "supportingFiles": [] },
|
|
35
35
|
{ "name": "deep-init", "type": "skill", "target": "both", "reason": "hierarchical AGENTS.md generation (port of OMC deepinit); runtime-agnostic fs+doc; subagents Claude=OMC/Codex=OMX", "supportingFiles": [] },
|
|
36
36
|
{ "name": "deep-research", "type": "skill", "target": "both", "reason": "fan-out + adversarial-verify web research (re-authored from bundled workflow); Claude WebSearch/Workflow, Codex OMX autoresearch; runtime-aware", "supportingFiles": [] },
|
|
37
|
-
{ "name": "ralph-qa", "type": "skill", "target": "both", "reason": "cross-LLM independent verify loop (ralplan+critic logic
|
|
37
|
+
{ "name": "ralph-qa", "type": "skill", "target": "both", "reason": "cross-LLM independent verify loop (ralplan+critic logic): prefers Codex CLI, else other model via curl, else self-spawned multi-agent consensus; runtime-aware", "supportingFiles": [] },
|
|
38
38
|
{ "name": "smart-compact", "type": "skill", "target": "both", "reason": "context-threshold compaction-hygiene gate (statusLine detect + hook bridge + assistant chain + TUI handoff); runtime-aware", "supportingFiles": [] },
|
|
39
39
|
{ "name": "visual-ralph", "type": "skill", "target": "both", "reason": "measured visual build loop (port of OMX visual-ralph); Claude ralph+visual-verdict+Stitch imagegen, Codex $ralph+$imagegen; runtime-aware", "supportingFiles": [] },
|
|
40
40
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kaydash9999/banker-plugins",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.11.0",
|
|
4
4
|
"description": "banker — Claude Code + Codex CLI plugin (QA, audit, docs, architecture, wiki skills). Install via Claude Code marketplace, or `npm i -g @kaydash9999/banker-plugins` then `banker setup`.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"banker": "bin/banker.js"
|
package/skills/ralph-qa/SKILL.md
CHANGED
|
@@ -1,25 +1,18 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ralph-qa
|
|
3
|
-
description: "(banker) 작업 결과를
|
|
3
|
+
description: "(banker) 작업 결과를 다른 LLM으로 독립 검증/개선 반복(자기승인 방지): Codex CLI 우선 → 없으면 GPT 등 다른 모델을 curl 로 직접 → 그것도 없으면 다중 에이전트 합의. 'ralph-qa'/'교차검증'/'다른 LLM으로 검증'/'독립 QA' 시 사용."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# ralph-qa — 교차-LLM 독립 검증 루프
|
|
7
7
|
|
|
8
|
-
방금 만든 작업 결과를 **같은 모델·같은 세션이 자기채점**하는 대신, **다른
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
8
|
+
방금 만든 작업 결과를 **같은 모델·같은 세션이 자기채점**하는 대신, **다른 모델**에 넘겨
|
|
9
|
+
`ralplan --deliberate`(설계 optimal 검토)와 `ralph --critic=critic`(수용 기준 검증) 로직을 적용하고,
|
|
10
|
+
지적을 반영해 **APPROVE까지 반복**한다. 핵심 가치는 **독립성**(anti-self-approval): 저자와 검증자가
|
|
11
|
+
다른 모델이라야 편향·맹점이 드러난다.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
- **Codex(OMX)**: OMX `$ask`(구 `ask-claude`/`ask-gemini` 통합 진입점) 로 **Claude/Gemini** 에게 검증 위임.
|
|
17
|
-
- 저자 런타임과 **다른** 모델을 고르는 게 목적 — 대응 경로가 없으면 최소한 **다른 세션·다른 에이전트
|
|
18
|
-
프롬프트**로라도 독립성을 확보한다(완전 독립엔 미달임을 명시).
|
|
19
|
-
|
|
20
|
-
**모델·effort.** `--model <id>` 로 검증 LLM을 지정(예: 강한 추론 모델). effort 지원 모델은
|
|
21
|
-
`--effort xhigh` 전달. ⚠️ 사용자가 예로 든 `gpt-5.6-sol` 은 **미인식 모델 ID** — 리터럴로 박지 말고
|
|
22
|
-
**설치 환경에서 사용 가능한 다른-LLM으로 파라미터화**하라(기본은 위 매핑의 기본 경로).
|
|
13
|
+
**검증자 우선순위 (한 줄 요약).** ① 다른-LLM CLI(**Codex CLI 우선**) → ② 다른 모델 직접 호출(`curl`,
|
|
14
|
+
크리덴셜 있을 때) → ③ 다중 에이전트 합의(최후). 위에서부터 **사용 가능한 첫 경로**를 쓴다 — 진짜 다른
|
|
15
|
+
모델이 닿으면 그걸 쓰고, 다중 에이전트 합의는 다른-LLM 경로가 전무할 때만.
|
|
23
16
|
|
|
24
17
|
## 언제 쓰나
|
|
25
18
|
- 방금 완성한 구현/설계/문서를 **배포·확정 전** 독립 검증하고 싶을 때.
|
|
@@ -28,7 +21,7 @@ description: "(banker) 작업 결과를 별도 세션·다른 LLM으로 ralplan+
|
|
|
28
21
|
|
|
29
22
|
## 쓰지 않을 때
|
|
30
23
|
- 사소한 변경(교차-LLM 왕복 비용이 이득을 초과).
|
|
31
|
-
-
|
|
24
|
+
- 어떤 독립 경로도 없을 때는 폴백(③ 다중 에이전트)이 있으나, 그마저 과하면 그냥 `critic` 한 번.
|
|
32
25
|
|
|
33
26
|
## 워크플로
|
|
34
27
|
|
|
@@ -36,35 +29,69 @@ description: "(banker) 작업 결과를 별도 세션·다른 LLM으로 ralplan+
|
|
|
36
29
|
검증 대상 = {작업 결과 요약 + **수용 기준(acceptance criteria)** + 변경 파일 목록 + 관련 코드}.
|
|
37
30
|
기준이 없으면 원 작업에서 도출(vague "잘 됐나?" 금지 — 검증 가능한 기준으로).
|
|
38
31
|
|
|
39
|
-
### 2.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
|
|
32
|
+
### 2. 검증자 선택 — 다른-LLM 우선, 다중 에이전트 합의는 최후 (독립성)
|
|
33
|
+
목적은 **저자 모델과 다른 모델**로 검증하는 것. 아래 우선순위로 **사용 가능한 첫 경로**를 택한다:
|
|
34
|
+
|
|
35
|
+
1. **다른-LLM CLI — Codex CLI 우선.** `command -v codex` 로 사용 가능하면 Codex 에 위임한다.
|
|
36
|
+
- Claude Code(OMC) 저자: `omc ask codex --agent-prompt critic "..."`(= ralph 의 `--critic=codex` 경로),
|
|
37
|
+
또는 `/ccg`(Codex+Gemini+Claude 합의 레인).
|
|
38
|
+
- 저자가 **이미 Codex** 면 Codex 는 "다른 모델"이 아니므로 건너뛰고 Claude/Gemini(OMX `$ask`)를 ①로 삼는다.
|
|
39
|
+
|
|
40
|
+
2. **다른 모델 직접 호출 via `curl` (Codex CLI 가 없을 때).** 저자와 **다른** 모델(예: GPT)의
|
|
41
|
+
OpenAI 호환 엔드포인트+API 키가 환경/설정에 있으면 `curl` 로 직접 그 모델을 검증자로 쓴다 —
|
|
42
|
+
CLI 래퍼 없이도 진짜 다른 모델이라 독립성이 산다.
|
|
43
|
+
- 엔드포인트·키·모델 ID 는 **환경에서 읽어 파라미터화**한다(하드코딩 금지). 예:
|
|
44
|
+
`"${OPENAI_BASE_URL:?}"`·`"${OPENAI_API_KEY:?}"`·`"${RALPH_QA_MODEL:?}"`, 또는 Codex 설정
|
|
45
|
+
`~/.codex/config.toml` 의 provider(`[model_providers.*]` 의 `base_url`·`env_key`).
|
|
46
|
+
- 호출 예(모델·엔드포인트는 환경값; 프롬프트에 수용 기준 + 두 렌즈를 담아 판정을 JSON 으로 받는다):
|
|
47
|
+
```bash
|
|
48
|
+
curl -sS "${OPENAI_BASE_URL:?}/chat/completions" \
|
|
49
|
+
-H "Authorization: Bearer ${OPENAI_API_KEY:?}" -H 'Content-Type: application/json' \
|
|
50
|
+
-d "$(jq -n --arg m "${RALPH_QA_MODEL:?}" --arg p "$PROMPT" \
|
|
51
|
+
'{model:$m, messages:[{role:"user", content:$p}]}')"
|
|
52
|
+
```
|
|
53
|
+
(`jq` 로 페이로드를 안전 구성 — 없으면 동등한 JSON 이스케이프로 대체.)
|
|
54
|
+
- ⚠️ 저자와 **같은 모델 계열이면 독립성이 없으므로 이 경로를 쓰지 않는다**(예: 저자=Codex(GPT)
|
|
55
|
+
에서 GPT-curl 금지 — 그땐 Claude/Gemini 로).
|
|
56
|
+
|
|
57
|
+
3. **자체 다중 에이전트 합의 루프 (다른-LLM 경로가 전무할 때, 최후).** 독립 에이전트 **N개(기본 3)** 를
|
|
58
|
+
서로 다른 렌즈로 띄워 **정족수 합의**로 판정한다:
|
|
59
|
+
- 렌즈: ① ralplan 최적성(더 단순·빠른 대안?) ② critic 수용기준(기준 하나하나 신선한 증거로)
|
|
60
|
+
③ 적대적 반증(REJECT 를 적극 시도).
|
|
61
|
+
- 판정: **과반 APPROVE** 여야 통과. 확인된 블로커가 **1건이라도** 있으면 ITERATE.
|
|
62
|
+
- 같은 베이스 모델이라 **완전 독립은 아님**(다양성+정족수로 근사) — 단일 자기채점보다 훨씬 강하지만
|
|
63
|
+
①·② 가 가능하면 반드시 그쪽을 먼저 쓴다.
|
|
64
|
+
|
|
65
|
+
경로 ①·② 는 **두 렌즈**(ralplan 최적성 + critic 수용기준)를 함께 요청한다(`--lens` 로 선택, 기본 both).
|
|
66
|
+
경로 ③ 은 렌즈를 에이전트로 분담한다.
|
|
45
67
|
|
|
46
68
|
### 3. 판정 수신 → 반영
|
|
47
|
-
|
|
48
|
-
원 런타임에서 이슈 수정 → **같은
|
|
69
|
+
검증자(경로 ①~③)의 판정(`APPROVE` / `ITERATE` / `REJECT`)과 구체 이슈를 받는다. `APPROVE` 아니면:
|
|
70
|
+
원 런타임에서 이슈 수정 → **같은 검증 경로로 재검증**(2단계 반복).
|
|
49
71
|
|
|
50
72
|
### 4. 종료
|
|
51
|
-
- `APPROVE` → 검증 통과 보고(
|
|
73
|
+
- `APPROVE`(경로 ③ 은 과반) → 검증 통과 보고(**검증 경로·검증자 모델·판정 근거** 명시).
|
|
52
74
|
- 같은 이슈가 **3회+ 재발** → 근본 블로커로 보고(무한루프 금지).
|
|
53
|
-
- auth/프로바이더 장애 → 정직히 보고하고
|
|
75
|
+
- 다른-LLM auth/프로바이더 장애 → 정직히 보고하고 **경로 ③(다중 에이전트)** 으로 폴백.
|
|
54
76
|
|
|
55
77
|
## 플래그
|
|
56
78
|
| 플래그 | 효과 | 기본 |
|
|
57
79
|
|---|---|---|
|
|
58
|
-
| `--model <id>` | 검증 LLM 모델 지정 |
|
|
80
|
+
| `--model <id>` | 검증 LLM 모델 지정(경로 ①·②) | 환경/매핑 기본 |
|
|
59
81
|
| `--effort xhigh` | effort 지원 모델에 전달 | 미지정 |
|
|
60
82
|
| `--lens=critic\|plan\|both` | 적용 렌즈 | both |
|
|
83
|
+
| `--agents=N` | 폴백(경로 ③) 에이전트 수 | 3 |
|
|
61
84
|
| `--max=N` | 최대 반복 | 5 |
|
|
62
85
|
|
|
63
86
|
## 함정
|
|
64
|
-
- **자기채점 금지가 본질** — 저자 모델·세션으로 검증하면 독립성이 사라진다. 반드시 **다른
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
87
|
+
- **자기채점 금지가 본질** — 저자 모델·세션으로 검증하면 독립성이 사라진다. 반드시 **다른 모델**을 먼저 찾고,
|
|
88
|
+
없을 때만 경로 ③(다중 에이전트)으로 근사한다.
|
|
89
|
+
- **경로 탐지 순서** — `command -v codex`(①) → 다른-모델 크리덴셜 유무(②, env/`config.toml` provider) →
|
|
90
|
+
둘 다 없으면 ③. "다중 에이전트"를 다른-LLM 이 있는데도 먼저 쓰지 말 것.
|
|
91
|
+
- **curl 경로 auth** — 비대화형 셸은 `~/.bashrc` 미로드로 키가 없으면 `401`(스킬 문제 아님).
|
|
92
|
+
`source ~/.bashrc` 후 호출. 엔드포인트/키/모델은 **환경값**으로만(하드코딩·커밋 금지).
|
|
93
|
+
- **같은 모델 계열 금지(②)** — 저자와 같은 모델을 curl 로 불러오면 독립성이 없다. 계열이 다를 때만.
|
|
94
|
+
- **모델명 하드코딩 금지** — 예시 모델 ID 를 리터럴로 박지 말고 파라미터화.
|
|
68
95
|
- **수용 기준 없이 검증 금지** — "잘 됐나?"가 아니라 검증 가능한 기준 대비 판정.
|
|
69
96
|
|
|
70
|
-
ARGUMENTS: [--model <id>] [--effort xhigh] [--lens=critic|plan|both] [--max=N] [검증 대상/기준]
|
|
97
|
+
ARGUMENTS: [--model <id>] [--effort xhigh] [--lens=critic|plan|both] [--agents=N] [--max=N] [검증 대상/기준]
|