chore: align setup with EJClaw dual-service architecture
This commit is contained in:
@@ -1,13 +1,5 @@
|
||||
{
|
||||
"env": {
|
||||
"CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "50"
|
||||
},
|
||||
"extraKnownMarketplaces": {
|
||||
"nanoclaw-skills": {
|
||||
"source": {
|
||||
"source": "github",
|
||||
"repo": "qwibitai/nanoclaw-skills"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
name: add-discord
|
||||
description: Finish Discord bot setup and registration for NanoClaw.
|
||||
description: Finish Discord bot setup and registration for EJClaw.
|
||||
---
|
||||
|
||||
# Add Discord Channel
|
||||
@@ -78,7 +78,7 @@ npm run setup -- --step verify
|
||||
필요하면 로그 확인:
|
||||
|
||||
```bash
|
||||
tail -f logs/nanoclaw.log
|
||||
tail -f logs/ejclaw.log
|
||||
```
|
||||
|
||||
메인 채널이면 일반 메시지, 보조 채널이면 멘션 또는 트리거 메시지로 테스트합니다.
|
||||
|
||||
@@ -43,7 +43,7 @@ PARALLEL_API_KEY=...
|
||||
- 빠른 사실 조회나 최신 정보 확인은 `parallel-search`
|
||||
- 긴 조사나 깊은 분석은 `parallel-task`
|
||||
- `parallel-task`는 항상 먼저 사용자 허가를 받을 것
|
||||
- 오래 걸리는 작업은 답변을 붙잡고 있지 말고 `mcp__nanoclaw__schedule_task`로 후속 체크를 맡길 것
|
||||
- 오래 걸리는 작업은 답변을 붙잡고 있지 말고 `mcp__ejclaw__schedule_task`로 후속 체크를 맡길 것
|
||||
|
||||
## 5. 빌드와 검증
|
||||
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
---
|
||||
name: debug
|
||||
description: Debug NanoClaw runtime issues on the current Discord-only, host-process architecture.
|
||||
description: Debug EJClaw runtime issues on the current Discord-only, host-process architecture.
|
||||
---
|
||||
|
||||
# NanoClaw Debugging
|
||||
# EJClaw Debugging
|
||||
|
||||
현재 기준 NanoClaw는 디스코드 전용이고, 에이전트는 컨테이너가 아니라 호스트 프로세스로 실행됩니다. 디버깅은 `채널`, `서비스`, `러너`, `DB 등록`, `자격 증명` 순서로 좁혀갑니다.
|
||||
현재 기준 EJClaw는 디스코드 전용이고, 에이전트는 컨테이너가 아니라 호스트 프로세스로 실행됩니다. 디버깅은 `채널`, `서비스`, `러너`, `DB 등록`, `자격 증명` 순서로 좁혀갑니다.
|
||||
|
||||
## 빠른 점검 순서
|
||||
|
||||
@@ -20,8 +20,8 @@ description: Debug NanoClaw runtime issues on the current Discord-only, host-pro
|
||||
```
|
||||
3. 런타임 로그 확인
|
||||
```bash
|
||||
tail -f logs/nanoclaw.log
|
||||
tail -f logs/nanoclaw.error.log
|
||||
tail -f logs/ejclaw.log
|
||||
tail -f logs/ejclaw.error.log
|
||||
ls -t groups/*/logs/agent-*.log | head
|
||||
```
|
||||
4. 러너 빌드 확인
|
||||
@@ -68,7 +68,7 @@ ls -t groups/*/logs/agent-*.log | head -3
|
||||
|
||||
```bash
|
||||
grep -nE '^(GROQ_API_KEY|OPENAI_API_KEY)=' .env
|
||||
tail -f logs/nanoclaw.log | grep -iE 'transcri|audio|whisper|groq'
|
||||
tail -f logs/ejclaw.log | grep -iE 'transcri|audio|whisper|groq'
|
||||
```
|
||||
|
||||
- 기본 우선순위는 Groq Whisper, 없으면 OpenAI Whisper fallback입니다.
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
---
|
||||
name: setup
|
||||
description: Run initial NanoClaw setup for the current Discord-only, host-process architecture.
|
||||
description: Run initial EJClaw setup for the dual-service Discord architecture.
|
||||
---
|
||||
|
||||
# NanoClaw Setup
|
||||
# EJClaw Setup
|
||||
|
||||
설치는 `bash setup.sh`로 부트스트랩하고, 나머지는 `npm run setup -- --step <name>`으로 진행합니다. 현재 기준 채널은 디스코드만 지원합니다.
|
||||
|
||||
EJClaw는 두 개의 서비스로 구성됩니다:
|
||||
- **ejclaw** — Claude Code 봇 (`@claude`)
|
||||
- **ejclaw-codex** — Codex 봇 (`@codex`) — `.env.codex` 파일이 있으면 자동 설치
|
||||
|
||||
## 1. 부트스트랩
|
||||
|
||||
```bash
|
||||
@@ -30,19 +34,56 @@ npm run setup -- --step environment
|
||||
|
||||
## 3. 필수 환경 변수
|
||||
|
||||
### Claude 서비스 (.env)
|
||||
|
||||
`.env`에 최소한 아래 값이 있어야 합니다.
|
||||
|
||||
```bash
|
||||
DISCORD_BOT_TOKEN=...
|
||||
CLAUDE_CODE_OAUTH_TOKEN=... # 또는 ANTHROPIC_API_KEY=...
|
||||
DISCORD_BOT_TOKEN=... # Claude 봇 토큰
|
||||
CLAUDE_CODE_OAUTH_TOKEN=... # 또는 ANTHROPIC_API_KEY=...
|
||||
ASSISTANT_NAME=claude # 트리거 이름 (@claude)
|
||||
```
|
||||
|
||||
선택:
|
||||
권장:
|
||||
|
||||
```bash
|
||||
OPENAI_API_KEY=... # Codex 사용 시
|
||||
CODEX_OPENAI_API_KEY=... # Codex 전용 키를 따로 쓸 때
|
||||
GROQ_API_KEY=... # Discord 음성 전사
|
||||
CLAUDE_CODE_OAUTH_TOKENS=token1,token2 # 다중 계정 자동 로테이션
|
||||
GROQ_API_KEY=... # Discord 음성 전사 (Groq Whisper)
|
||||
```
|
||||
|
||||
### Codex 서비스 (.env.codex)
|
||||
|
||||
Codex 봇을 함께 운영하려면 `.env.codex`를 만듭니다. 이 파일이 있으면 `--step service`가 자동으로 `ejclaw-codex` 서비스도 설치합니다.
|
||||
|
||||
```bash
|
||||
DISCORD_BOT_TOKEN=... # Codex 봇 토큰 (Claude와 별도)
|
||||
```
|
||||
|
||||
Codex 서비스의 추가 설정은 systemd 유닛에서 `Environment=` 라인으로 지정하거나 `.env.codex`에 추가합니다:
|
||||
|
||||
```bash
|
||||
# systemd 유닛 또는 .env.codex에 추가 가능
|
||||
CODEX_MODEL=gpt-5.4
|
||||
CODEX_EFFORT=xhigh
|
||||
OPENAI_API_KEY=...
|
||||
```
|
||||
|
||||
### 선택 환경 변수
|
||||
|
||||
```bash
|
||||
# Provider fallback (Claude 429 시 대체)
|
||||
FALLBACK_PROVIDER_NAME=kimi
|
||||
FALLBACK_BASE_URL=https://api.kimi.com/coding
|
||||
FALLBACK_AUTH_TOKEN=...
|
||||
FALLBACK_MODEL=kimi-k2.5
|
||||
|
||||
# 사용량 대시보드
|
||||
STATUS_CHANNEL_ID=... # 상태 업데이트 디스코드 채널
|
||||
USAGE_DASHBOARD=true
|
||||
|
||||
# 고급 설정
|
||||
MAX_CONCURRENT_AGENTS=5
|
||||
SESSION_COMMAND_ALLOWED_SENDERS=... # 세션 명령 허용 유저 ID (쉼표 구분)
|
||||
```
|
||||
|
||||
## 4. 러너 빌드
|
||||
@@ -53,8 +94,8 @@ npm run setup -- --step runners
|
||||
|
||||
이 단계는 아래 두 러너를 빌드합니다.
|
||||
|
||||
- `runners/agent-runner`
|
||||
- `runners/codex-runner`
|
||||
- `runners/agent-runner` (Claude Code)
|
||||
- `runners/codex-runner` (Codex)
|
||||
|
||||
실패하면 보통 `npm run build:runners` 출력과 각 러너의 `package.json` 의존성을 같이 보면 됩니다.
|
||||
|
||||
@@ -62,14 +103,28 @@ npm run setup -- --step runners
|
||||
|
||||
먼저 디스코드에서 개발자 모드를 켜고 채널 ID를 복사합니다. 등록 JID는 `dc:<channel_id>` 형식입니다.
|
||||
|
||||
메인 채널 예시:
|
||||
듀얼 서비스에서는 **같은 채널을 두 번 등록**할 수 있습니다 — 각 agent type에 한 번씩. 등록은 `(jid, agent_type)` 복합 키로 저장됩니다.
|
||||
|
||||
Claude 봇 채널 등록:
|
||||
|
||||
```bash
|
||||
npm run setup -- --step register -- \
|
||||
--jid dc:123456789012345678 \
|
||||
--name "My Server #general" \
|
||||
--folder discord_main \
|
||||
--trigger @Andy \
|
||||
--trigger @claude \
|
||||
--is-main \
|
||||
--no-trigger-required
|
||||
```
|
||||
|
||||
Codex 봇도 같은 채널을 쓴다면 별도로 등록합니다:
|
||||
|
||||
```bash
|
||||
ASSISTANT_NAME=codex npm run setup -- --step register -- \
|
||||
--jid dc:123456789012345678 \
|
||||
--name "My Server #general" \
|
||||
--folder discord_main \
|
||||
--trigger @codex \
|
||||
--is-main \
|
||||
--no-trigger-required
|
||||
```
|
||||
@@ -81,7 +136,7 @@ npm run setup -- --step register -- \
|
||||
--jid dc:123456789012345678 \
|
||||
--name "My Server #ops" \
|
||||
--folder discord_ops \
|
||||
--trigger @Andy
|
||||
--trigger @claude
|
||||
```
|
||||
|
||||
## 6. 서비스 시작
|
||||
@@ -90,8 +145,26 @@ npm run setup -- --step register -- \
|
||||
npm run setup -- --step service
|
||||
```
|
||||
|
||||
- macOS는 `launchd`
|
||||
- Linux는 `systemd` 또는 fallback wrapper
|
||||
이 명령은:
|
||||
- **ejclaw** 서비스를 항상 설치합니다
|
||||
- `.env.codex`가 있으면 **ejclaw-codex** 서비스도 함께 설치합니다
|
||||
|
||||
플랫폼별:
|
||||
- Linux (systemd): `~/.config/systemd/user/ejclaw.service` + `ejclaw-codex.service`
|
||||
- macOS: `~/Library/LaunchAgents/com.ejclaw.plist` + `com.ejclaw-codex.plist`
|
||||
- WSL (no systemd): `start-ejclaw.sh` + `start-ejclaw-codex.sh`
|
||||
|
||||
수동으로 서비스 관리:
|
||||
|
||||
```bash
|
||||
# Linux (systemd)
|
||||
systemctl --user status ejclaw ejclaw-codex
|
||||
systemctl --user restart ejclaw ejclaw-codex
|
||||
|
||||
# 로그
|
||||
journalctl --user -u ejclaw -f
|
||||
journalctl --user -u ejclaw-codex -f
|
||||
```
|
||||
|
||||
## 7. 최종 검증
|
||||
|
||||
@@ -101,7 +174,8 @@ npm run setup -- --step verify
|
||||
|
||||
성공 기준:
|
||||
|
||||
- 서비스가 running
|
||||
- **ejclaw** 서비스가 running
|
||||
- **ejclaw-codex** 서비스가 running (`.env.codex`가 있을 때)
|
||||
- Claude 인증이 configured
|
||||
- `CHANNEL_AUTH`에 `discord`
|
||||
- 등록 그룹 수가 1 이상
|
||||
@@ -109,6 +183,7 @@ npm run setup -- --step verify
|
||||
## 빠른 문제 해결
|
||||
|
||||
- 빌드 문제: `npm run typecheck`, `npm test`, `npm run build:runners`
|
||||
- 서비스 문제: `logs/nanoclaw.error.log`
|
||||
- Claude 서비스 문제: `logs/ejclaw.error.log` 또는 `journalctl --user -u ejclaw -f`
|
||||
- Codex 서비스 문제: `logs/ejclaw-codex.error.log` 또는 `journalctl --user -u ejclaw-codex -f`
|
||||
- 디스코드 연결 문제: `.env`의 `DISCORD_BOT_TOKEN`과 등록된 `dc:*` JID 확인
|
||||
- 응답 문제: `tail -f logs/nanoclaw.log`
|
||||
- 응답 문제: `tail -f logs/ejclaw.log`
|
||||
|
||||
Reference in New Issue
Block a user