cdsa-harness 0.14.2 → 0.19.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/README.md +37 -3
- package/package.json +1 -1
- package/src/builtins.js +1 -1
- package/src/cli.js +395 -68
- package/src/completion.js +56 -0
- package/src/config.js +4 -1
- package/src/llm.js +12 -2
- package/src/loop.js +118 -19
- package/src/tools.js +147 -3
- package/src/ui.js +51 -0
package/README.md
CHANGED
|
@@ -9,8 +9,15 @@
|
|
|
9
9
|
```
|
|
10
10
|
|
|
11
11
|
- **의존성 0개** — Node 18+ 내장 기능만(`fetch`/`readline`/`node:test`)
|
|
12
|
-
- **실시간 스트리밍** — 모델 응답이 토큰 단위로 흐름(`/stream`
|
|
13
|
-
- **실제 LLM 연결** — OpenAI · Anthropic(Claude) · OpenRouter
|
|
12
|
+
- **실시간 스트리밍** — 모델 응답이 토큰 단위로 흐름(`/stream` 토글)
|
|
13
|
+
- **실제 LLM 연결** — OpenAI · Anthropic(Claude) · OpenRouter · **Ollama(로컬·폐쇄망, 키 불필요)** · `mock`
|
|
14
|
+
- **에이전트 도구** — 폴더/파일 읽기 · `edit_file` 부분 수정 · `search_files` 재귀 검색 · 셸(옵션) · HWPX
|
|
15
|
+
- **`@파일명` 멘션** — 입력에 `@memo.txt` 처럼 쓰면 파일 내용 자동 첨부
|
|
16
|
+
- **`/resume`** — 지난 대화 자동 저장·이어가기, ↑↓ 명령 히스토리도 세션 간 유지
|
|
17
|
+
- **서브에이전트** — 모델이 큰 작업을 `spawn_agent` 로 하위 에이전트에 위임(화면엔 `┆` 로 구분, 중첩 위임 차단)
|
|
18
|
+
- **`/update`** — 명령 한 번으로 자기 자신을 최신 버전으로 업데이트(npm 설치본)
|
|
19
|
+
- **Tab 자동완성** — `/명령`(내장+스킬) · `/provider` 인자 · `@파일명` 멘션까지 Tab 으로 완성
|
|
20
|
+
- **모델 선택 UI** — `/models [검색어]` 로 제공자별 **실시간 모델 목록**에서 번호로 선택(OpenRouter·OpenAI·Anthropic·Ollama)
|
|
14
21
|
- **교육 모드** — 매 반복마다 모델에 보내는 메시지 구성·추정 토큰·시스템 프롬프트, 실제 토큰 사용량/응답시간까지 그대로 표시
|
|
15
22
|
- **MCP 클라이언트** — Claude Code·Cursor 등과 **공용 표준**. MCP 서버를 그대로 붙여 도구로 사용
|
|
16
23
|
- **플러그인** — npm 으로 설치하거나 `.cdsa/plugins/` 에 JS 파일 → **도구 자동 등록**
|
|
@@ -66,8 +73,16 @@ export OPENROUTER_API_KEY=sk-or-...
|
|
|
66
73
|
|
|
67
74
|
## 슬래시 명령
|
|
68
75
|
|
|
76
|
+
Claude Code·OpenCode 컨벤션을 따릅니다.
|
|
77
|
+
|
|
69
78
|
| 명령 | 설명 |
|
|
70
79
|
|------|------|
|
|
80
|
+
| `/new` (=`/clear`) · `/compact` · `/resume` | 새 대화 · **모델이 대화를 요약해 압축** · 지난 대화 이어가기 |
|
|
81
|
+
| `/undo` | 마지막 파일 변경 되돌리기 |
|
|
82
|
+
| `/init` · `/memory` | **모델이 폴더를 파악해 AGENT.md 생성** · 규칙 파일 보기 |
|
|
83
|
+
| `/auto` | 자동 수락 토글 (신뢰가 쌓이면 diff 승인 생략) |
|
|
84
|
+
| `/status` (=`/cost`) | 상태 · 세션 누적 토큰 |
|
|
85
|
+
| `/models [검색어]` | **실시간 모델 목록에서 번호로 선택**(4개 제공자 모두) |
|
|
71
86
|
| `/guide` · `/tutorial` | 빠른 시작 안내 · 단계별 인터랙티브 튜토리얼 |
|
|
72
87
|
| `/workspace <폴더>` | 작업 폴더 보기/변경 (`.` = 현재 폴더) |
|
|
73
88
|
| `/color` | 색상 켜기/끄기(흑백) |
|
|
@@ -186,6 +201,14 @@ npm pack cdsa-harness # → cdsa-harness-x.y.z.tgz 생성
|
|
|
186
201
|
npm install -g ./cdsa-harness-x.y.z.tgz # 인터넷 불필요
|
|
187
202
|
```
|
|
188
203
|
|
|
204
|
+
**Ollama — 인터넷 없이 로컬 LLM 으로 (가장 쉬움):**
|
|
205
|
+
```bash
|
|
206
|
+
# 폐쇄망 PC 에 Ollama 와 모델(예: qwen2.5:7b, exaone3.5)을 반입·설치한 뒤
|
|
207
|
+
cdsa-harness
|
|
208
|
+
› /setup → 4) ollama 선택 (키 불필요, 설치된 모델 자동 감지)
|
|
209
|
+
```
|
|
210
|
+
> 원격 Ollama 서버는 주소만 입력(예: `http://10.0.0.5:11434`). `OLLAMA_HOST` 환경변수도 인식.
|
|
211
|
+
|
|
189
212
|
**사내/폐쇄망 LLM (OpenAI 호환 서버 — vLLM, 내부 게이트웨이 등):**
|
|
190
213
|
`config.json` 의 `base_url` 에 **전체 엔드포인트**를 적으면 그쪽으로 호출합니다.
|
|
191
214
|
```json
|
|
@@ -226,8 +249,12 @@ npm install -g ./cdsa-harness-x.y.z.tgz # 인터넷 불필요
|
|
|
226
249
|
|------|------|:----:|
|
|
227
250
|
| `list_dir` | 폴더 나열 | 자동 |
|
|
228
251
|
| `read_file` | 파일 읽기 | 자동 |
|
|
229
|
-
| `
|
|
252
|
+
| `search_files` | 파일명·내용 재귀 검색 | 자동 |
|
|
253
|
+
| `write_file` | 새 파일/전체 덮어쓰기 | **diff 승인** |
|
|
254
|
+
| `edit_file` | **부분 수정**(old→new 치환) | **diff 승인** |
|
|
230
255
|
| `run_shell` | 셸 실행 | **승인**(기본 차단) |
|
|
256
|
+
| `spawn_agent` | 하위 에이전트에 작업 위임(중첩 불가) | 자동 |
|
|
257
|
+
| `hwpx_read` | 한컴 .hwpx 본문 추출 | 자동 |
|
|
231
258
|
|
|
232
259
|
모든 도구는 작업 폴더 밖으로 나갈 수 없습니다(경로 sandbox).
|
|
233
260
|
|
|
@@ -252,6 +279,13 @@ node-cli/
|
|
|
252
279
|
└── test/core.test.js # node --test
|
|
253
280
|
```
|
|
254
281
|
|
|
282
|
+
## 설계 철학
|
|
283
|
+
|
|
284
|
+
1. **모델이 먼저다** — 하드코딩 대신 모델에게 시킨다. `/init`(규칙 파일 생성)·`/compact`(대화 압축)는 로직이 아니라 **모델이 직접 수행**한다. 지금 70% 작동하는 것이 다음 모델에선 90%가 된다.
|
|
285
|
+
2. **단순함이 속도다** — 웹앱이 아닌 CLI. `read + edit + search + shell` 최소 프리미티브 위에 스킬·플러그인·MCP 로 나머지 전부를 쌓는다. 의존성 0개.
|
|
286
|
+
3. **신뢰의 전환** — 처음엔 모든 변경을 diff 로 승인받고, 신뢰가 쌓이면 `/auto` 로 자동 수락. 승인이 반복되면 도구가 먼저 전환을 제안한다.
|
|
287
|
+
4. **접근성의 민주화** — 예산 없는 조직도 쓸 수 있게: 폐쇄망 Ollama·단일 실행파일·공공 업무 스킬 기본 내장.
|
|
288
|
+
|
|
255
289
|
## 테스트
|
|
256
290
|
|
|
257
291
|
```bash
|
package/package.json
CHANGED