casabot 1.0.0 → 1.0.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.
package/dist/tui/app.js CHANGED
@@ -6,14 +6,14 @@ function truncateOutput(content, maxLines = 5) {
6
6
  const lines = content.split("\n");
7
7
  if (lines.length <= maxLines)
8
8
  return content;
9
- return lines.slice(0, maxLines).join("\n") + `\n ... (${lines.length - maxLines} )`;
9
+ return lines.slice(0, maxLines).join("\n") + `\n ... (${lines.length - maxLines} more lines)`;
10
10
  }
11
11
  function MessageView({ message }) {
12
12
  if (message.role === "user") {
13
- return (_jsxs(Box, { children: [_jsx(Text, { color: "green", bold: true, children: "사용자: " }), _jsx(Text, { children: message.content })] }));
13
+ return (_jsxs(Box, { children: [_jsx(Text, { color: "green", bold: true, children: "User: " }), _jsx(Text, { children: message.content })] }));
14
14
  }
15
15
  if (message.role === "tool") {
16
- return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { dimColor: true, bold: true, children: "[도구 결과]" }), _jsx(Text, { dimColor: true, children: truncateOutput(message.content) })] }));
16
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { dimColor: true, bold: true, children: "[Tool Result]" }), _jsx(Text, { dimColor: true, children: truncateOutput(message.content) })] }));
17
17
  }
18
18
  if (message.role === "assistant") {
19
19
  if (message.toolCalls?.length) {
@@ -56,7 +56,7 @@ function App({ provider, conversation, skills }) {
56
56
  const errorMsg = err instanceof Error ? err.message : String(err);
57
57
  setMessages((prev) => [
58
58
  ...prev,
59
- { role: "assistant", content: `❌ 오류 발생: ${errorMsg}` },
59
+ { role: "assistant", content: `❌ Error occurred: ${errorMsg}` },
60
60
  ]);
61
61
  }
62
62
  setIsProcessing(false);
@@ -80,7 +80,7 @@ function App({ provider, conversation, skills }) {
80
80
  setInput((prev) => prev + ch);
81
81
  }
82
82
  });
83
- return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "🌟 CasAbot > " }), _jsx(Text, { dimColor: true, children: "Cassiopeia A \u2014 \uCD08\uC2E0\uC131 \uD3ED\uBC1C\uACFC \uAC19\uC774 \uBAA8\uB4E0 \uAC83\uC744 \uC790\uC720\uB86D\uAC8C \uCC3D\uC870\uD55C\uB2E4." })] }), messages.map((msg, i) => (_jsx(MessageView, { message: msg }, i))), isProcessing && (_jsx(Text, { color: "yellow", children: "⏳ 처리 중..." })), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "green", bold: true, children: "❯ " }), _jsx(Text, { children: input }), !isProcessing && _jsx(Text, { dimColor: true, children: "█" })] })] }));
83
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { marginBottom: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "🌟 CasAbot > " }), _jsx(Text, { dimColor: true, children: "Cassiopeia A \u2014 Freely creates everything, like a supernova explosion." })] }), messages.map((msg, i) => (_jsx(MessageView, { message: msg }, i))), isProcessing && (_jsx(Text, { color: "yellow", children: "⏳ Processing..." })), _jsxs(Box, { marginTop: 1, children: [_jsx(Text, { color: "green", bold: true, children: "❯ " }), _jsx(Text, { children: input }), !isProcessing && _jsx(Text, { dimColor: true, children: "█" })] })] }));
84
84
  }
85
85
  export function startTUI(provider, conversation, skills) {
86
86
  render(_jsx(App, { provider: provider, conversation: conversation, skills: skills }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "casabot",
3
- "version": "1.0.0",
3
+ "version": "1.0.2",
4
4
  "description": "CasAbot — Skill-driven multi-agent orchestrator system",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -16,7 +16,14 @@
16
16
  "reset": "tsx src/cli/index.ts reset",
17
17
  "prepare": "npm run build"
18
18
  },
19
- "keywords": ["ai", "agent", "multi-agent", "orchestrator", "tui", "cli"],
19
+ "keywords": [
20
+ "ai",
21
+ "agent",
22
+ "multi-agent",
23
+ "orchestrator",
24
+ "tui",
25
+ "cli"
26
+ ],
20
27
  "author": "",
21
28
  "license": "Apache-2.0",
22
29
  "dependencies": {
@@ -24,7 +31,7 @@
24
31
  "chalk": "^5.4.1",
25
32
  "commander": "^13.1.0",
26
33
  "gray-matter": "^4.0.3",
27
- "ink": "^5.2.0",
34
+ "ink": "^6.6.0",
28
35
  "marked": "^15.0.12",
29
36
  "marked-terminal": "^7.3.0",
30
37
  "openai": "^5.1.0",
@@ -1,53 +1,53 @@
1
1
  ---
2
- name: 에이전트 생성 관리
3
- description: base 서브에이전트를 만들고 관리하기 위한 매뉴얼
2
+ name: Agent Creation & Management
3
+ description: Manual for base to create and manage sub-agents
4
4
  metadata:
5
5
  casabot:
6
6
  requires:
7
7
  bins: [podman]
8
8
  ---
9
9
 
10
- # 에이전트 생성 관리
10
+ # Agent Creation & Management
11
11
 
12
- 매뉴얼은 base 에이전트가 podman 기반 서브에이전트를 생성·관리하는 방법을 설명합니다.
12
+ This manual explains how the base agent creates and manages podman-based sub-agents.
13
13
 
14
14
  ---
15
15
 
16
- ## 1. podman 설치
16
+ ## 1. Install podman
17
17
 
18
- 서브에이전트를 만들기 전에 podman이 설치되어 있어야 합니다.
18
+ podman must be installed before creating sub-agents.
19
19
 
20
20
  ```bash
21
- # 설치 확인
21
+ # Check installation
22
22
  which podman
23
23
 
24
- # 미설치 (Debian/Ubuntu)
24
+ # If not installed (Debian/Ubuntu)
25
25
  sudo apt update && sudo apt install -y podman
26
26
 
27
- # 미설치 (Fedora/RHEL)
27
+ # If not installed (Fedora/RHEL)
28
28
  sudo dnf install -y podman
29
29
  ```
30
30
 
31
- ## 2. podman 저장공간 설정
31
+ ## 2. Configure podman storage
32
32
 
33
- 컨테이너 이미지와 레이어가 저장되는 경로를 확인하고, 디스크 용량이 충분한지 점검합니다.
33
+ Check the path where container images and layers are stored, and verify sufficient disk space.
34
34
 
35
35
  ```bash
36
- # 저장 경로 확인
36
+ # Check storage path
37
37
  podman info --format '{{.Store.GraphRoot}}'
38
38
 
39
- # 디스크 사용량 확인
39
+ # Check disk usage
40
40
  df -h $(podman info --format '{{.Store.GraphRoot}}')
41
41
  ```
42
42
 
43
- 사용량이 부족할 경우 `~/.config/containers/storage.conf`에서 `graphroot`를 변경합니다.
43
+ If space is insufficient, change `graphroot` in `~/.config/containers/storage.conf`.
44
44
 
45
- ## 3. 서브에이전트 컨테이너 생성
45
+ ## 3. Create sub-agent container
46
46
 
47
- 모든 서브에이전트 컨테이너에는 반드시 `casabot` 라벨을 부여합니다.
47
+ All sub-agent containers must be assigned the `casabot` label.
48
48
 
49
49
  ```bash
50
- # 에이전트 컨테이너 생성
50
+ # Create a new agent container
51
51
  podman run -d \
52
52
  --name <agent-name> \
53
53
  --label casabot=true \
@@ -56,125 +56,127 @@ podman run -d \
56
56
  node:20-slim sleep infinity
57
57
  ```
58
58
 
59
- ### 필수 규칙
60
- - `--label casabot=true`: 모든 CasAbot 서브에이전트 식별에 사용됩니다.
61
- - `-v ~/casabot/workspaces/<agent-name>:/workspace`: 에이전트별 전용 작업 공간을 마운트합니다.
62
- - `-v ~/casabot/skills:/skills:ro`: 스킬 디렉토리를 읽기 전용으로 공유합니다.
59
+ ### Required rules
60
+ - `--label casabot=true`: Used to identify all CasAbot sub-agents.
61
+ - `-v ~/casabot/workspaces/<agent-name>:/workspace`: Mounts a dedicated workspace for each agent.
62
+ - `-v ~/casabot/skills:/skills:ro`: Shares the skills directory as read-only.
63
63
 
64
- 컨테이너 생성 에이전트 스크립트를 복사하고 실행합니다:
64
+ After creating the container, copy and run the agent script:
65
65
 
66
66
  ```bash
67
67
  podman cp <script-path> <agent-name>:/workspace/agent.js
68
68
  podman exec <agent-name> node /workspace/agent.js
69
69
  ```
70
70
 
71
- ## 4. 공급자(Provider) 설정 전달
71
+ ## 4. Pass provider settings
72
72
 
73
- 서브에이전트에게 LLM 공급자 정보를 환경변수로 전달합니다.
73
+ > **Important:** Read the current provider settings from `~/casabot/casabot.json` or ask the user for the provider type, API key, and model name. Do not hardcode these values.
74
+
75
+ Pass LLM provider information to sub-agents via environment variables.
74
76
 
75
77
  ```bash
76
- # 환경변수로 API 모델 전달
78
+ # Pass API key and model via environment variables
77
79
  podman exec \
78
- -e PROVIDER_TYPE=openai \
80
+ -e PROVIDER_TYPE=<provider-type> \
79
81
  -e API_KEY=<key> \
80
82
  -e MODEL=<model> \
81
83
  -e ENDPOINT=<endpoint> \
82
84
  <agent-name> node /workspace/agent.js
83
85
  ```
84
86
 
85
- 또는 컨테이너 생성 `-e` 옵션으로 미리 설정할 수도 있습니다:
87
+ Or set them in advance with `-e` options when creating the container:
86
88
 
87
89
  ```bash
88
90
  podman run -d \
89
91
  --name <agent-name> \
90
92
  --label casabot=true \
91
- -e PROVIDER_TYPE=openai \
93
+ -e PROVIDER_TYPE=<provider-type> \
92
94
  -e API_KEY=<key> \
93
- -e MODEL=gpt-4o \
95
+ -e MODEL=<model> \
94
96
  -v ~/casabot/workspaces/<agent-name>:/workspace \
95
97
  -v ~/casabot/skills:/skills:ro \
96
98
  node:20-slim sleep infinity
97
99
  ```
98
100
 
99
- ## 5. 스킬 전달
101
+ ## 5. Pass skills
100
102
 
101
- 컨테이너 생성 `-v ~/casabot/skills:/skills:ro`로 마운트하면 서브에이전트가 스킬 문서를 읽을 있습니다.
103
+ Mount with `-v ~/casabot/skills:/skills:ro` when creating the container so sub-agents can read skill documents.
102
104
 
103
- 서브에이전트 내부에서 스킬을 읽는 방법:
105
+ How to read skills inside a sub-agent:
104
106
 
105
107
  ```bash
106
- # 컨테이너 내부에서
108
+ # Inside the container
107
109
  cat /skills/agent/SKILL.md
108
110
  cat /skills/memory/SKILL.md
109
111
  ls /skills/
110
112
  ```
111
113
 
112
- ## 6. 에이전트 목록 조회
114
+ ## 6. List agents
113
115
 
114
- `casabot` 라벨이 붙은 모든 컨테이너를 조회합니다.
116
+ Query all containers with the `casabot` label.
115
117
 
116
118
  ```bash
117
- # 실행 중인 에이전트 목록
119
+ # List running agents
118
120
  podman ps --filter "label=casabot" --format "{{.Names}}\t{{.Status}}"
119
121
 
120
- # 전체 에이전트 (중지 포함)
122
+ # All agents (including stopped)
121
123
  podman ps -a --filter "label=casabot" --format "table {{.Names}}\t{{.Status}}\t{{.Created}}"
122
124
  ```
123
125
 
124
- ## 7. 에이전트 파괴 정리
126
+ ## 7. Destroy and clean up agents
125
127
 
126
- 사용이 끝난 에이전트를 정리합니다.
128
+ Clean up agents that are no longer needed.
127
129
 
128
130
  ```bash
129
- # 컨테이너 중지 삭제
131
+ # Stop and remove container
130
132
  podman stop <agent-name> && podman rm <agent-name>
131
133
 
132
- # 워크스페이스도 함께 정리할 경우
134
+ # To also clean up the workspace
133
135
  rm -rf ~/casabot/workspaces/<agent-name>
134
136
  ```
135
137
 
136
- ### 일괄 정리
138
+ ### Bulk cleanup
137
139
 
138
140
  ```bash
139
- # 모든 CasAbot 에이전트 중지 삭제
141
+ # Stop and remove all CasAbot agents
140
142
  podman ps -a --filter "label=casabot" --format "{{.Names}}" | xargs -r podman stop
141
143
  podman ps -a --filter "label=casabot" --format "{{.Names}}" | xargs -r podman rm
142
144
  ```
143
145
 
144
- ## 8. 작업 위임
146
+ ## 8. Delegate tasks
145
147
 
146
- 서브에이전트에게 작업을 전달하는 방법입니다.
148
+ How to pass tasks to sub-agents.
147
149
 
148
150
  ```bash
149
- # stdin으로 작업 전달
151
+ # Pass task via stdin
150
152
  echo "<task-description>" | podman exec -i <agent-name> node /workspace/agent.js
151
153
 
152
- # 파일로 작업 전달
154
+ # Pass task via file
153
155
  echo "<task-description>" > ~/casabot/workspaces/<agent-name>/task.txt
154
156
  podman exec <agent-name> node /workspace/agent.js --task /workspace/task.txt
155
157
  ```
156
158
 
157
- ### 위임 원칙
158
- - base 오케스트레이터입니다. 실제 작업은 서브에이전트에게 위임하세요.
159
- - 적합한 서브에이전트가 없으면 새로 만들어서 위임하세요.
160
- - 작업 설명은 구체적이고 명확하게 작성하세요.
159
+ ### Delegation principles
160
+ - base is an orchestrator. Delegate actual work to sub-agents.
161
+ - If no suitable sub-agent exists, create a new one and delegate.
162
+ - Write task descriptions clearly and specifically.
161
163
 
162
- ## 9. 결과 수집
164
+ ## 9. Collect results
163
165
 
164
- 서브에이전트의 작업 결과를 확인합니다.
166
+ Check the results of sub-agent work.
165
167
 
166
168
  ```bash
167
- # 에이전트 로그 확인
169
+ # Check agent logs
168
170
  podman logs <agent-name>
169
171
 
170
- # 최근 로그만 확인
172
+ # Check recent logs only
171
173
  podman logs --tail 50 <agent-name>
172
174
 
173
- # 워크스페이스 출력 파일 확인
175
+ # Check workspace output files
174
176
  ls ~/casabot/workspaces/<agent-name>/output/
175
177
 
176
- # 결과 파일 내용 읽기
178
+ # Read result file contents
177
179
  cat ~/casabot/workspaces/<agent-name>/output/result.txt
178
180
  ```
179
181
 
180
- 결과를 수집한 뒤, 사용자에게 요약하여 보고합니다.
182
+ After collecting results, summarize and report to the user.
@@ -1,32 +1,32 @@
1
1
  ---
2
- name: 대화 관리
3
- description: 대화 세션을 관리하고 외부 서비스와 연동하기 위한 매뉴얼
2
+ name: Conversation Management
3
+ description: Manual for managing conversation sessions and integrating with external services
4
4
  metadata:
5
5
  casabot:
6
6
  requires:
7
7
  bins: []
8
8
  ---
9
9
 
10
- # 대화 관리
10
+ # Conversation Management
11
11
 
12
- 매뉴얼은 대화 세션의 생성·조회·검색 방법과 외부 서비스 연동 방법을 설명합니다.
12
+ This manual explains how to create, view, and search conversation sessions, and how to integrate with external services.
13
13
 
14
14
  ---
15
15
 
16
- ## 1. 대화 세션 관리
16
+ ## 1. Session Management
17
17
 
18
- ### 세션 구조
18
+ ### Session Structure
19
19
 
20
- 대화 세션은 `~/casabot/history/` 디렉토리에 JSON 파일로 자동 저장됩니다.
20
+ Each conversation session is automatically saved as a JSON file in the `~/casabot/history/` directory.
21
21
 
22
22
  ```json
23
23
  {
24
- "id": "세션 고유 ID",
24
+ "id": "unique session ID",
25
25
  "startedAt": "2024-01-15T09:30:00.000Z",
26
26
  "messages": [
27
27
  {
28
28
  "role": "user | assistant | system | tool",
29
- "content": "메시지 내용",
29
+ "content": "message content",
30
30
  "toolCalls": [],
31
31
  "toolCallId": ""
32
32
  }
@@ -34,117 +34,117 @@ metadata:
34
34
  }
35
35
  ```
36
36
 
37
- ### 세션 생명주기
38
- - **생성**: `casabot` 명령어를 실행하면 세션이 자동 생성됩니다.
39
- - **유지**: 대화가 진행되는 동안 메시지가 자동으로 추가됩니다.
40
- - **종료**: 프로그램을 종료하면 세션이 닫힙니다.
41
- - **보존**: 종료 후에도 기록은 history 디렉토리에 영구 보존됩니다.
37
+ ### Session Lifecycle
38
+ - **Creation**: A new session is automatically created when you run the `casabot` command.
39
+ - **Persistence**: Messages are automatically appended as the conversation progresses.
40
+ - **Termination**: The session closes when the program exits.
41
+ - **Preservation**: Logs are permanently preserved in the history directory after termination.
42
42
 
43
- ## 2. 대화 불러오기
43
+ ## 2. Loading Conversations
44
44
 
45
- ### 최근 대화 목록 확인
45
+ ### View recent conversation list
46
46
 
47
47
  ```bash
48
- # 최근 대화 20 (최신순)
48
+ # Recent 20 conversations (newest first)
49
49
  ls -lt ~/casabot/history/ | head -20
50
50
 
51
- # 파일명과 크기 확인
51
+ # Check filenames and sizes
52
52
  ls -lhS ~/casabot/history/
53
53
  ```
54
54
 
55
- ### 특정 대화 내용 보기
55
+ ### View specific conversation
56
56
 
57
57
  ```bash
58
- # 대화 전체 보기 (정리된 형태)
58
+ # View full conversation (formatted)
59
59
  cat ~/casabot/history/<conversation-id>.json | jq '.messages[] | {role, content: .content[:100]}'
60
60
 
61
- # 사용자 메시지만 보기
61
+ # View only user messages
62
62
  cat ~/casabot/history/<conversation-id>.json | jq '.messages[] | select(.role == "user") | .content'
63
63
 
64
- # 어시스턴트 응답만 보기
64
+ # View only assistant responses
65
65
  cat ~/casabot/history/<conversation-id>.json | jq '.messages[] | select(.role == "assistant") | .content'
66
66
  ```
67
67
 
68
- ### 세션 메타정보 확인
68
+ ### Check session metadata
69
69
 
70
70
  ```bash
71
- # 세션 ID 시작 시간
71
+ # Session ID and start time
72
72
  cat ~/casabot/history/<conversation-id>.json | jq '{id, startedAt, messageCount: (.messages | length)}'
73
73
  ```
74
74
 
75
- ## 3. 이전 대화 검색
75
+ ## 3. Searching Previous Conversations
76
76
 
77
- ### 키워드로 검색
77
+ ### Search by keyword
78
78
 
79
79
  ```bash
80
- # 모든 대화에서 키워드 검색
81
- grep -rl "검색어" ~/casabot/history/
80
+ # Search all conversations for a keyword
81
+ grep -rl "keyword" ~/casabot/history/
82
82
 
83
- # 키워드가 포함된 대화의 맥락 보기
84
- grep -l "검색어" ~/casabot/history/*.json | while read f; do
83
+ # View context of conversations containing the keyword
84
+ grep -l "keyword" ~/casabot/history/*.json | while read f; do
85
85
  echo "=== $(basename $f) ==="
86
- cat "$f" | jq '.messages[] | select(.content | contains("검색어")) | {role, content: .content[:200]}'
86
+ cat "$f" | jq '.messages[] | select(.content | contains("keyword")) | {role, content: .content[:200]}'
87
87
  done
88
88
  ```
89
89
 
90
- ### 날짜로 검색
90
+ ### Search by date
91
91
 
92
92
  ```bash
93
- # 특정 날짜 이후의 대화
93
+ # Conversations after a specific date
94
94
  find ~/casabot/history/ -name "*.json" -newermt "2024-01-15" -type f
95
95
 
96
- # 오늘 대화만
96
+ # Today's conversations only
97
97
  find ~/casabot/history/ -name "*.json" -newermt "$(date +%Y-%m-%d)" -type f
98
98
 
99
- # 최근 7일간 대화
99
+ # Conversations from the last 7 days
100
100
  find ~/casabot/history/ -name "*.json" -mtime -7 -type f
101
101
  ```
102
102
 
103
- ### 역할별 검색
103
+ ### Search by role
104
104
 
105
105
  ```bash
106
- # 도구 호출이 포함된 대화 찾기
106
+ # Find conversations with tool calls
107
107
  grep -rl "toolCalls" ~/casabot/history/ | head -10
108
108
 
109
- # 특정 도구가 사용된 대화
109
+ # Find conversations where a specific tool was used
110
110
  grep -rl "run_command" ~/casabot/history/
111
111
  ```
112
112
 
113
- ## 4. 대화 통계
113
+ ## 4. Conversation Statistics
114
114
 
115
115
  ```bash
116
- # 전체 대화
116
+ # Total number of conversations
117
117
  ls ~/casabot/history/*.json 2>/dev/null | wc -l
118
118
 
119
- # 가장 대화 (메시지 기준)
119
+ # Longest conversations (by message count)
120
120
  for f in ~/casabot/history/*.json; do
121
121
  echo "$(cat "$f" | jq '.messages | length') $(basename $f)"
122
122
  done | sort -rn | head -10
123
123
  ```
124
124
 
125
- ## 5. 외부 서비스 연동
125
+ ## 5. External Service Integration
126
126
 
127
- 외부 메시징 서비스(WhatsApp, Discord, Telegram, Slack )와 연동하여 CasAbot을 사용할 수 있습니다.
127
+ CasAbot can be used through integration with external messaging services (WhatsApp, Discord, Telegram, Slack, etc.).
128
128
 
129
- ### 연동 구조
129
+ ### Integration Architecture
130
130
 
131
131
  ```
132
- 외부 서비스 → [연동 서브에이전트] → base 에이전트 → [작업 서브에이전트들]
133
-
134
- 사용자에게 응답
132
+ External Service → [Integration Sub-Agent] → base agent → [Task Sub-Agents]
133
+
134
+ Response to user
135
135
  ```
136
136
 
137
- ### 연동 설정 단계
137
+ ### Integration Setup Steps
138
138
 
139
- 1. **연동 서브에이전트 생성** — `agent` 스킬을 참조하여 연동 전용 컨테이너를 만듭니다.
140
- 2. **서비스 API/봇 설정** 해당 서비스의 토큰이나 웹훅 URL 설정합니다.
141
- 3. **메시지 수신**서비스에서 메시지를 수신하면 base에게 전달합니다.
142
- 4. **응답 전송** — base 응답을 서비스로 돌려보냅니다.
139
+ 1. **Create integration sub-agent**Refer to the `agent` skill to create a dedicated integration container.
140
+ 2. **Configure service API/bot**Set up the bot token or webhook URL for the target service.
141
+ 3. **Receive messages**When a message is received from the service, forward it to base.
142
+ 4. **Send responses**Send base's response back to the service.
143
143
 
144
- ### 예시: 웹훅 기반 연동
144
+ ### Example: Webhook-based integration
145
145
 
146
146
  ```bash
147
- # 연동 에이전트 생성 (agent 스킬 참조)
147
+ # Create integration agent (see agent skill)
148
148
  podman run -d \
149
149
  --name webhook-bridge \
150
150
  --label casabot=true \
@@ -153,13 +153,13 @@ podman run -d \
153
153
  -v ~/casabot/skills:/skills:ro \
154
154
  node:20-slim sleep infinity
155
155
 
156
- # 웹훅 서버 스크립트를 에이전트에 배포
156
+ # Deploy webhook server script to agent
157
157
  podman cp webhook-server.js webhook-bridge:/workspace/
158
158
  podman exec -d webhook-bridge node /workspace/webhook-server.js
159
159
  ```
160
160
 
161
- ## 6. 주의사항
161
+ ## 6. Important Notes
162
162
 
163
- - **기록은 수정하지 마세요**: `~/casabot/history/`의 파일은 원본 로그입니다. 수정이 필요하면 별도 사본을 만드세요.
164
- - **메모가 필요하면 memory 사용하세요**: 대화에서 중요한 내용을 기록하려면 `memory` 스킬을 참조하세요.
165
- - **대용량 기록 관리**: 기록이 많아지면 오래된 파일을 아카이브하거나 압축하세요.
163
+ - **Do not modify history files**: Files in `~/casabot/history/` are raw logs. If you need modifications, create a separate copy.
164
+ - **Use memory for notes**: If you need to record important information from conversations, refer to the `memory` skill.
165
+ - **Managing large volumes of history**: If logs accumulate, archive or compress older files.