https://github.com/voocel/openclaw-mini
๐ฆ OpenClaw ๆ ธๅฟๆถๆ็ๆ็ฎๅค็ฐ๏ผๆถต็ sessionKey ไผ่ฏๅใ้ๅไธฒ่กใๅทฅๅ
ทๅ่ฎฐๅฟๆฃ็ดขใๆ้ไธไธๆๅ ่ฝฝใๅฏๆฉๅฑๆ่ฝไธไธปๅจๅฟ่ทณๅค้ๆบๅถ
https://github.com/voocel/openclaw-mini
agent ai clawdbot openclaw
Last synced: 4 months ago
JSON representation
๐ฆ OpenClaw ๆ ธๅฟๆถๆ็ๆ็ฎๅค็ฐ๏ผๆถต็ sessionKey ไผ่ฏๅใ้ๅไธฒ่กใๅทฅๅ ทๅ่ฎฐๅฟๆฃ็ดขใๆ้ไธไธๆๅ ่ฝฝใๅฏๆฉๅฑๆ่ฝไธไธปๅจๅฟ่ทณๅค้ๆบๅถ
- Host: GitHub
- URL: https://github.com/voocel/openclaw-mini
- Owner: voocel
- License: mit
- Created: 2026-02-01T09:24:33.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2026-02-05T13:06:40.000Z (4 months ago)
- Last Synced: 2026-02-07T07:47:29.071Z (4 months ago)
- Topics: agent, ai, clawdbot, openclaw
- Language: TypeScript
- Homepage:
- Size: 129 KB
- Stars: 297
- Watchers: 2
- Forks: 16
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# OpenClaw Mini
**OpenClaw ๆ ธๅฟๆถๆ็ๆ็ฎๅค็ฐ๏ผ็จไบๅญฆไน AI Agent ็็ณป็ป็บง่ฎพ่ฎกใ**
> "ๆฒกๆ่ฎฐๅฟ็ AI ๅชๆฏๅฝๆฐๆ ๅฐ๏ผๆ่ฎฐๅฟ + ไธปๅจๅค้็ AI๏ผๆๆฏไผๆผๅ็'็ๅฝ็ณป็ป'"
## ไธบไปไนๅ่ฟไธช้กน็ฎ
็ฝไธๅคงๅคๆฐ Agent ๆ็จๅช่ฎฒ Agent Loop๏ผ
```python
while tool_calls:
response = llm.generate(messages)
for tool in tools:
result = tool.execute()
messages.append(result)
```
**่ฟไธๆฏ็ๆญฃ็ Agent ๆถๆใ** ไธไธช็ไบง็บง Agent ้่ฆ็ๆฏ"็ณป็ป็บงๆไฝณๅฎ่ทต"ใ
OpenClaw ๆฏไธไธช 5 ไธ่ก็็ไบง็บง Agent ็ณป็ป๏ผๆฌ้กน็ฎไปไธญๆ็ผๅบ **~800 ่กๆ ธๅฟไปฃ็ **๏ผๅธฎๅฉไฝ ็่งฃ๏ผ
- ไธบไปไน้่ฆ้ฟๆ่ฎฐๅฟ๏ผ
- ๅฆไฝๅฎ็ฐๆ้ไธไธๆๅ ่ฝฝ๏ผ
- ๆ่ฝ็ณป็ปๆไน่ฎพ่ฎกๆ่ฝๆฉๅฑ๏ผ
- ไธปๅจๅค้ๆบๅถ็็ๅฎๅฎ็ฐๆฏไปไน๏ผ
## ๆถๆๅฏน็
ง
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ OpenClaw Mini โ
โ (ๆฌ้กน็ฎ ~800 ่ก) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Context โ โ Skills โ โ Heartbeat โ โ
โ โ Loader โ โ Manager โ โ Manager โ โ
โ โ โ โ โ โ โโโโโโโโโโโโโโโโโโโ โ โ
โ โ AGENTS.md โ โ SKILL.md โ โ โ HeartbeatWake โ โ โ
โ โ SOUL.md โ โ ่งฆๅ่ฏๅน้
โ โ โ (่ฏทๆฑๅๅนถๅฑ) โ โ โ
โ โ TOOLS.md... โ โ ๅ
็ฝฎ+่ชๅฎไน โ โ โโโโโโโโโโฌโโโโโโโโโ โ โ
โ โโโโโโโโฌโโโโโโโ โโโโโโโโฌโโโโโโโ โ โ โ โ
โ โ โ โ โโโโโโโโโโผโโโโโโโโโ โ โ
โ โ โ โ โ HeartbeatRunner โ โ โ
โ โ โ โ โ (่ฐๅบฆๅฑ) โ โ โ
โ โ โ โ โโโโโโโโโโฌโโโโโโโโโ โ โ
โ โ โ โโโโโโโโโโโโโผโโโโโโโโโโโโโโ โ
โ โ โ โ โ
โ โผ โผ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ Agent Loop โ โ
โ โ โ โ
โ โ while (tool_calls) { โ โ
โ โ response = llm.generate(system_prompt + messages) โ โ
โ โ for (tool of tools) { result = tool.execute() } โ โ
โ โ messages.push(result) โ โ
โ โ } โ โ
โ โ โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ โ
โ โผ โผ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Session โ โ Memory โ โ
โ โ Manager โ โ Manager โ โ
โ โ (JSONL) โ โ (ๅ
ณ้ฎ่ฏๆฃ็ดข) โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
## 5 ๅคงๆ ธๅฟๅญ็ณป็ป
| ๅญ็ณป็ป | ๆฌ้กน็ฎ | OpenClaw ๆบ็ | ๆ ธๅฟ่่ดฃ |
|--------|--------|---------------|----------|
| **Session** | `session.ts` | `src/agents/session-manager.ts` | ไผ่ฏๆไน
ๅ (JSONL)ใๅๅฒ็ฎก็ |
| **Memory** | `memory.ts` | `src/memory/manager.ts` (76KB) | ้ฟๆ่ฎฐๅฟใ่ฏญไนๆฃ็ดข |
| **Context** | `context/loader.ts` | `src/agents/bootstrap-files.ts` | ๆ้ๅ ่ฝฝ AGENTS/SOUL/TOOLS/IDENTITY/USER/HEARTBEAT/BOOTSTRAP/MEMORY |
| **Skills** | `skills.ts` | `src/agents/skills/` | ๅฏๆฉๅฑๆ่ฝใ่งฆๅ่ฏๅน้
|
| **Heartbeat** | `heartbeat.ts` | `src/infra/heartbeat-runner.ts`
`src/infra/heartbeat-wake.ts` | ไธปๅจๅค้ใไบไปถ้ฉฑๅจ่ฐๅบฆ |
---
## ๆทฑๅ
ฅ่งฃๆ
### 1. Session Manager - ไผ่ฏๆไน
ๅ
**้ฎ้ข**๏ผAgent ้ๅฏๅๅฆไฝๆขๅคๅฏน่ฏไธไธๆ๏ผ
**OpenClaw ๆนๆก**๏ผ
- JSONL ๆ ผๅผๅญๅจ๏ผๆฏ่กไธๆกๆถๆฏ๏ผ่ฟฝๅ ๅๅ
ฅ๏ผ
- ๅๅธๅผ้้ฒๆญขๅนถๅๅๅ
ฅ
- ่ชๅจ compaction ๅ็ผฉๅๅฒ
**ๆฌ้กน็ฎๅฎ็ฐ** (`session.ts:45-62`)๏ผ
```typescript
async append(sessionId: string, message: Message): Promise {
const filePath = this.getFilePath(sessionId);
await fs.mkdir(path.dirname(filePath), { recursive: true });
await fs.appendFile(filePath, JSON.stringify(message) + "\n");
}
```
### 2. Memory Manager - ้ฟๆ่ฎฐๅฟ
**้ฎ้ข**๏ผๅฆไฝ่ฎฉ Agent "่ฎฐไฝ"่ทจไผ่ฏ็ไฟกๆฏ๏ผ
**OpenClaw ๆนๆก** (`src/memory/manager.ts`)๏ผ
- SQLite-vec ๅ้ๆฐๆฎๅบๅ่ฏญไนๆ็ดข
- BM25 ๅๅ
ณ้ฎ่ฏๆ็ดข
- ๆททๅๆๅบ (Hybrid Search)
**ๆฌ้กน็ฎ็ฎๅ** (`memory.ts:85-118`)๏ผ
```typescript
async search(query: string, limit = 5): Promise {
const queryTerms = query.toLowerCase().split(/\s+/);
for (const entry of this.entries) {
let score = 0;
// ๅ
ณ้ฎ่ฏๅน้
ๅพๅ
for (const term of queryTerms) {
if (text.includes(term)) score += 1;
if (entry.tags.some(t => t.includes(term))) score += 0.5;
}
// ๆถ้ด่กฐๅ๏ผ่ถๆฐ็่ฎฐๅฟๅๆฐ่ถ้ซ
const recencyBoost = Math.max(0, 1 - ageHours / (24 * 30));
score += recencyBoost * 0.3;
}
}
```
### 3. Context Loader - ๆ้ไธไธๆ
**้ฎ้ข**๏ผๅฆไฝๆณจๅ
ฅ้กน็ฎ็บง่ง่่ไธๆฑกๆๆฏๆฌกๅฏน่ฏ๏ผ
**OpenClaw ๆนๆก** (`src/agents/bootstrap-files.ts`)๏ผ
- `AGENTS.md / SOUL.md / TOOLS.md / IDENTITY.md / USER.md / HEARTBEAT.md / BOOTSTRAP.md`
- `MEMORY.md`๏ผๆ `memory.md`๏ผไฝไธบ่ฎฐๅฟ่กฅๅ
- ๅญไปฃ็ไป
ๅ
่ฎธ `AGENTS.md` + `TOOLS.md` ่ฟๅ
ฅไธไธๆ
- ่ถ
้ฟๆไปถๆ head+tail ๆชๆญๅนถๅ ๆ ่ฎฐ
**ๆฌ้กน็ฎๅฎ็ฐ** (`context/loader.ts`)๏ผ
```typescript
async buildContextPrompt(params?: { sessionKey?: string }): Promise {
const files = await this.loadBootstrapFiles(params);
const contextFiles = buildBootstrapContextFiles(files, { maxChars: this.maxChars });
// Project Context ่พๅบ๏ผๅซ SOUL.md ็นๆฎๆ็คบ๏ผ
}
```
### 3.1 Context Pruning/Compaction - ไธไธๆๅ็ผฉ
**OpenClaw ๆนๆก**๏ผ
- `src/agents/pi-extensions/context-pruning/*`๏ผ่ฃๅชๅทฅๅ
ท็ปๆใไฟ็ๆ่ฟไธไธๆ
- `src/agents/compaction.ts`๏ผ่ถ
้ฟๅๅฒๆ่ฆๅ็ผฉ
**ๆฌ้กน็ฎๅฎ็ฐ**๏ผ
- `context/pruning.ts`๏ผ่ฝฏ่ฃๅช tool_result + ไฟ็ๆ่ฟ assistant
- `context/compaction.ts`๏ผ่งฆๅ้ๅผๅ็ๆโๅๅฒๆ่ฆโๅนถๆณจๅ
ฅ
### 4. Skills Manager - ๅฏๆฉๅฑๆ่ฝ
**้ฎ้ข**๏ผๅฆไฝ่ฎฉ็จๆท่ชๅฎไน Agent ่ฝๅ๏ผ
**OpenClaw ๆนๆก** (`src/agents/skills/types.ts`)๏ผ
- SKILL.md frontmatter ๅฎไนๅ
ๆฐๆฎ
- ๆฏๆ่งฆๅๆกไปถใๅฎ่ฃ
่ๆฌใๅๆฐๆ ก้ช
- ่ฟ่กๆถๅจๆๅ ่ฝฝ
**ๆฌ้กน็ฎๅฎ็ฐ** (`skills.ts:125-170`)๏ผ
```typescript
// SKILL.md ๆ ผๅผ
// ---
// id: deploy
// name: ้จ็ฝฒๅฉๆ
// triggers: ["/deploy", "้จ็ฝฒ"]
// ---
// Prompt ๅ
ๅฎน...
async match(input: string): Promise {
for (const skill of this.skills.values()) {
for (const trigger of skill.triggers) {
if (input.startsWith(trigger)) {
return { skill, matchedTrigger: trigger };
}
}
}
}
```
### 5. Heartbeat Manager - ไธปๅจๅค้
**้ฎ้ข**๏ผAgent ๅฆไฝ"ไธปๅจ"ๅทฅไฝ๏ผ่ไธๅชๆฏ่ขซๅจๅๅบ๏ผ
**OpenClaw ๆนๆก** (`src/infra/heartbeat-runner.ts`, `src/infra/heartbeat-wake.ts`)๏ผ
่ฟๆฏๆๅคๆ็ๅญ็ณป็ป๏ผๅ
ๅซไธคๅฑๆถๆ๏ผ
```
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HeartbeatWake (่ฏทๆฑๅๅนถๅฑ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๅคๆฅๆบ่งฆๅ: โ
โ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโ โ
โ โ interval โ โ cron โ โ exec โ โ requestedโ โ
โ โ (ๅฎๆถๅจ) โ โ (ไปปๅกๅฎๆ)โ โ (ๅฝไปคๅฎๆ)โ โ (ๆๅจ) โ โ
โ โโโโโโฌโโโโโโ โโโโโโฌโโโโโโ โโโโโโฌโโโโโโ โโโโโโฌโโโโโโ โ
โ โ โ โ โ โ
โ โโโโโโโโโโโโโโโดโโโโโโโฌโโโโโโโดโโโโโโโโโโโโโโ โ
โ โผ โ
โ request({ reason }) โ
โ โ โ
โ โโโโโโโโโผโโโโโโโโ โ
โ โ ๅๅ ไผๅ
็บงๅๅนถ โ โ
โ โ exec > cron โ โ
โ โ > interval โ โ
โ โโโโโโโโโฌโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโผโโโโโโโโ โ
โ โ schedule(250ms)โ โโโ ๅๅนถ็ชๅฃ โ
โ โโโโโโโโโฌโโโโโโโโ โ
โ โ โ
โ โโโโโโโโโโโโโโโผโโโโโโโโโโโโโโ โ
โ โ if running: โ else: โ โ
โ โ scheduled= โ setTimeout โ โ
โ โ true (ๆ้) โ execute() โ โ
โ โโโโโโโโโโโโโโโดโโโโโโโโโโโโโโ โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HeartbeatRunner (่ฐๅบฆๅฑ) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ runOnce(request): โ
โ โ
โ 1. isWithinActiveHours() โโโ ๆดป่ทๆถ้ด็ชๅฃๆฃๆฅ โ
โ โ (08:00-22:00, ๆฏๆๆถๅบ) โ
โ โผ โ
โ 2. parseTasks() โโโ HEARTBEAT.md ่งฃๆ โ
โ โ โ
โ โผ โ
โ 3. ็ฉบๅ
ๅฎนๆฃๆต โโโ ๆ ไปปๅกๆถ่ทณ่ฟ API ่ฐ็จ โ
โ โ (exec ไบไปถ้คๅค) โ
โ โผ โ
โ 4. ๆง่กๅ่ฐ โโโ Agent ๅค็ไปปๅก โ
โ โ โ
โ โผ โ
โ 5. isDuplicateMessage() โโโ 24h ๅ
้ๅคๆถๆฏๆๅถ โ
โ โ โ
โ โผ โ
โ 6. scheduleNext() โโโ setTimeout ็ฒพ็กฎ่ฐๅบฆ โ
โ (lastRunAt + intervalMs) โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
```
**ๅ
ณ้ฎ่ฎพ่ฎกๅณ็ญ**๏ผ
| ่ฎพ่ฎก็น | ไธบไปไน่ฟๆ ทๅ |
|--------|-------------|
| setTimeout ่้ setInterval | ็ฒพ็กฎ่ฎก็ฎไธๆฌก่ฟ่กๆถ้ด๏ผ้ฟๅ
ๆผ็งป |
| 250ms ๅๅนถ็ชๅฃ | ้ฒๆญขๅคไธชไบไปถๅๆถ่งฆๅๅฏผ่ด็"ๅผๅธๆฅไฟ" |
| ๅ้็ผๅฒ | ่ฟ่กไธญๆถๅฐๆฐ่ฏทๆฑไธไธขๅคฑ๏ผๅฎๆๅ็ซๅณๅค็ |
| ็ฉบๅ
ๅฎนๆฃๆต | ๆ ไปปๅกๆถ่ทณ่ฟ LLM ่ฐ็จ๏ผ่็ๆๆฌ |
| ้ๅคๆๅถ | 24h ๅ
็ธๅๆถๆฏไธ้ๅคๅ้๏ผ้ฒๆญข"็บ ็ผ " |
| ๆดป่ทๆถ้ด็ชๅฃ | ้ฟๅ
ๅๅคๆๆฐ็จๆท |
**ๆฌ้กน็ฎๅฎ็ฐ** (`heartbeat.ts:147-160`)๏ผ
```typescript
private schedule(delayMs: number): void {
// ๅฆๆๅทฒๅจ่ฟ่ก๏ผๆ ่ฎฐไธบๅทฒๆ้๏ผๅ้็ผๅฒ๏ผ
if (this.state.running) {
this.state.scheduled = true;
return;
}
// ๅฆๆๅทฒๆๅฎๆถๅจ๏ผไธ้ๅค่ฎพ็ฝฎ๏ผๅๅนถ๏ผ
if (this.state.timer) {
return;
}
this.state.timer = setTimeout(() => this.execute(), delayMs);
}
```
---
## ๆบ็ ๆ ๅฐ่กจ
| ๆฌ้กน็ฎๆไปถ | ่กๆฐ | OpenClaw ๅฏนๅบๆไปถ | ๅๅง่งๆจก |
|-----------|------|-------------------|---------|
| `agent.ts` | ~320 | `src/agents/pi-embedded-runner/run.ts` | ~700 ่ก |
| `session.ts` | ~110 | `src/agents/session-manager.ts` | ~500 ่ก |
| `memory.ts` | ~170 | `src/memory/manager.ts` | 76KB |
| `context/loader.ts` | ~150 | `src/agents/bootstrap-files.ts` | ~300 ่ก |
| `context/pruning.ts` | ~220 | `src/agents/pi-extensions/context-pruning/pruner.ts` | ~450 ่ก |
| `context/compaction.ts` | ~260 | `src/agents/compaction.ts` | ~380 ่ก |
| `skills.ts` | ~230 | `src/agents/skills/` | ~2000 ่ก |
| `heartbeat.ts` | ~400 | `src/infra/heartbeat-runner.ts`
`src/infra/heartbeat-wake.ts` | ~1500 ่ก |
| `tools/*.ts` | ~210 | `src/tools/` | 50+ ๅทฅๅ
ท |
| **ๆป่ฎก** | **~800** | | **~50,000** |
---
## ๅฟซ้ๅผๅง
```bash
# ่ฟๅ
ฅ็ฎๅฝ
cd examples/openclaw-mini
# ๅฎ่ฃ
ไพ่ต
pnpm install
# ่ฎพ็ฝฎ API Key
export ANTHROPIC_API_KEY=sk-xxx
# ๅฏ้๏ผๆๅฎ agentId
export OPENCLAW_MINI_AGENT_ID=main
# ๅฏๅจไบคไบๅผๅฏน่ฏ
pnpm dev chat
```
## ๅทฅไฝๅบๆจกๆฟ๏ผๆฅ่ช OpenClaw ่ฎพ่ฎก๏ผ
ๆจกๆฟๆพๅจ `examples/openclaw-mini/workspace-templates/`๏ผๅ
ๅฎนๅ่ `docs/reference/templates/` ็่ฎพ่ฎก๏ผ๏ผ่ฟ่กๆถไผไป**ๅฝๅๅทฅไฝๅบๆ น็ฎๅฝ**่ฏปๅ่ฟไบๆไปถใ
้่ฆ็ๆๆถ๏ผๆๆจกๆฟๅคๅถๅฐๅทฅไฝๅบๆ น็ฎๅฝๅณๅฏ๏ผ
```bash
cp examples/openclaw-mini/workspace-templates/* examples/openclaw-mini/
```
## ไฝฟ็จ็คบไพ
```typescript
import { Agent } from "openclaw-mini";
const agent = new Agent({
apiKey: process.env.ANTHROPIC_API_KEY,
agentId: "main",
workspaceDir: process.cwd(),
enableMemory: true, // ้ฟๆ่ฎฐๅฟ
enableContext: true, // ไธไธๆๅ ่ฝฝ
enableSkills: true, // ๆ่ฝ็ณป็ป
enableHeartbeat: false, // ไธปๅจๅค้๏ผ้ป่ฎคๅ
ณ้ญ๏ผ
// ๅทฅๅ
ท็ญ็ฅไธๆฒ็ฎฑ๏ผ็คบๆ๏ผ
toolPolicy: { deny: ["exec"] },
sandbox: { enabled: true, allowExec: false, allowWrite: true },
});
// ๅบๆฌๅฏน่ฏ๏ผไผ ๅ
ฅ sessionId๏ผไผ่ชๅจ่กฅๅ
จไธบ sessionKey๏ผ
const result = await agent.run("session-1", "่ฏทๅๅบๅฝๅ็ฎๅฝ็ๆไปถ");
// ไฝฟ็จๆ่ฝ
const review = await agent.run("session-1", "/review src/agent.ts");
// ไนๅฏไปฅ็ดๆฅไฝฟ็จ sessionKey
const result2 = await agent.run("agent:main:session-1", "็ปง็ปญๅๆ็ไปปๅก");
// ๅฏๅจไธปๅจๅค้
agent.startHeartbeat((tasks, request) => {
console.log(`[${request.reason}] ๆฃๆตๅฐ ${tasks.length} ไธชๅพ
ๅไปปๅก`);
});
```
> ่ฎฐๅฟไฝฟ็จๆ็คบ๏ผmini ็ๆนไธบโๅทฅๅ
ทๅ่ฎฐๅฟโ๏ผๅจ็ณป็ปๆ็คบไธญๅผๅฏผๆจกๅๅ
่ฐ็จ `memory_search` ๅ `memory_get` ๆๅ็ป่ใ
> ๅญไปฃ็๏ผๅฏ้่ฟ `sessions_spawn` ๅทฅๅ
ทๅฏๅจๅๅฐๅญไปฃ็๏ผๅฎๆๅไผๅจ CLI ่พๅบๆ่ฆ๏ผๅนถๅๅ
ฅ็ถไผ่ฏ่ฎฐๅฝใ
## ๅญฆไน ่ทฏๅพๅปบ่ฎฎ
1. **ๅ
่ฏป `agent.ts`**๏ผ็่งฃ Agent Loop ๅๅญ็ณป็ปๆดๅ
2. **ๅ่ฏป `heartbeat.ts`**๏ผ่ฟๆฏๆๅคๆ็้จๅ๏ผ็่งฃไบไปถ้ฉฑๅจๆถๆ
3. **ๅฏน็
ง OpenClaw ๆบ็ **๏ผ้ช่ฏ็ฎๅ็ๆฏๅฆๆไฝไบๆ ธๅฟ
4. **ๅฐ่ฏๆฉๅฑ**๏ผๆทปๅ ๆฐ็ๆ่ฝใๅทฅๅ
ทใๆๆน่ฟ่ฎฐๅฟๆฃ็ดข
## ไธ OpenClaw ๆบ็ ๅฏน็
ง
ๆฌ้กน็ฎไฝไบ `examples/openclaw-mini`๏ผๅฏ็ดๆฅๅฏน็
ง็ถ็ฎๅฝ็ OpenClaw ๆบ็ ๅญฆไน ๏ผ
```
openclaw/
โโโ src/
โ โโโ infra/heartbeat-runner.ts โ ๅฏน็
ง examples/openclaw-mini/src/heartbeat.ts
โ โโโ infra/heartbeat-wake.ts โ ๅฏน็
ง examples/openclaw-mini/src/heartbeat.ts
โ โโโ memory/manager.ts โ ๅฏน็
ง examples/openclaw-mini/src/memory.ts
โ โโโ agents/bootstrap-files.ts โ ๅฏน็
ง examples/openclaw-mini/src/context/loader.ts
โ โโโ agents/compaction.ts โ ๅฏน็
ง examples/openclaw-mini/src/context/compaction.ts
โ โโโ agents/pi-extensions/context-pruning/pruner.ts โ ๅฏน็
ง examples/openclaw-mini/src/context/pruning.ts
โ โโโ agents/skills/ โ ๅฏน็
ง examples/openclaw-mini/src/skills.ts
โโโ examples/
โโโ openclaw-mini/ โ ๆฌ้กน็ฎ (~800 ่ก)
```
## ็ฒพๅ่ฎพ่ฎก็ดขๅผ๏ผๅฟ
ๅญฆ 4 ็น๏ผ
1) **ไธไธๆ็ๆไปถๅ็ปๆ**
- OpenClaw๏ผ`src/agents/workspace.ts`๏ผbootstrap ๆไปถๆธ
ๅ๏ผ
- Mini๏ผ`examples/openclaw-mini/src/context/bootstrap.ts`
2) **็ปไธๆณจๅ
ฅ้พ่ทฏ๏ผProject Context๏ผ**
- OpenClaw๏ผ`src/agents/system-prompt.ts`
- Mini๏ผ`examples/openclaw-mini/src/context/loader.ts`
3) **่งๆจกๆงๅถ๏ผๆชๆญ + ่ฃๅช๏ผ**
- OpenClaw๏ผ`src/agents/pi-embedded-helpers/bootstrap.ts` + `src/agents/pi-extensions/context-pruning/pruner.ts`
- Mini๏ผ`examples/openclaw-mini/src/context/bootstrap.ts` + `examples/openclaw-mini/src/context/pruning.ts`
4) **ๅ็ผฉ็ปงๆฟ๏ผๆ่ฆ๏ผ**
- OpenClaw๏ผ`src/agents/compaction.ts`
- Mini๏ผ`examples/openclaw-mini/src/context/compaction.ts`
## License
MIT