openclaw-watcher 0.0.1 → 0.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/CHANGELOG.md +2 -85
- package/README.md +11 -16
- package/dist/ai/cli-client.js +1 -1
- package/dist/ai/cli-client.js.map +1 -1
- package/dist/setup/git-initializer.js +1 -1
- package/package.json +15 -2
- package/.claude/settings.local.json +0 -7
- package/.dockerignore +0 -21
- package/.env.example +0 -31
- package/.eslintrc.json +0 -26
- package/.prettierrc.json +0 -9
- package/Dockerfile +0 -47
- package/build.sh +0 -33
- package/docker-compose.yml +0 -43
- package/nodemon.json +0 -9
- package/scripts/setup.sh +0 -105
- package/src/ai/ai-orchestrator.ts +0 -95
- package/src/ai/cli-client.ts +0 -296
- package/src/cli.ts +0 -40
- package/src/commands/config.ts +0 -57
- package/src/commands/init.ts +0 -239
- package/src/commands/start.ts +0 -75
- package/src/commands/status.ts +0 -79
- package/src/config/default.ts +0 -25
- package/src/healthcheck/gateway-monitor.ts +0 -137
- package/src/healthcheck/health-checker.ts +0 -71
- package/src/index.ts +0 -48
- package/src/recovery/auto-fixer.ts +0 -184
- package/src/recovery/change-recorder.ts +0 -46
- package/src/setup/config-initializer.ts +0 -63
- package/src/setup/config-loader.ts +0 -25
- package/src/setup/git-initializer.ts +0 -203
- package/src/setup/safe-config-generator.ts +0 -100
- package/src/types/index.ts +0 -67
- package/src/utils/executor.ts +0 -75
- package/src/utils/git-manager.ts +0 -121
- package/src/utils/github-cli.ts +0 -37
- package/src/utils/logger.ts +0 -39
- package/src/utils/paths.ts +0 -25
- package/tsconfig.json +0 -29
- /package/{prompts → dist/prompts}/fix-openclaw.md +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -5,89 +5,6 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
-
## [
|
|
8
|
+
## [0.0.2] - 2026-02-01
|
|
9
9
|
|
|
10
|
-
### 🚀
|
|
11
|
-
|
|
12
|
-
**核心改变**:AI 直接修复问题,而不是返回诊断建议
|
|
13
|
-
|
|
14
|
-
### Breaking Changes
|
|
15
|
-
|
|
16
|
-
- ❌ 移除 API 调用方式(Claude API、Kimi API)
|
|
17
|
-
- ✅ 改用 CLI 工具(Claude Code CLI、Kimi Code CLI)
|
|
18
|
-
- ❌ 移除配置项:`CLAUDE_API_KEY`、`KIMI_API_KEY`
|
|
19
|
-
- ✅ 新增配置项:`AI_TIMEOUT`(默认 5 分钟)
|
|
20
|
-
|
|
21
|
-
### Added
|
|
22
|
-
|
|
23
|
-
#### AI 直接修复能力
|
|
24
|
-
- 🤖 AI 使用完整工具集(Read、Edit、Write、Bash)直接修复问题
|
|
25
|
-
- ⚡ 迭代式修复:AI 会持续尝试直到问题解决
|
|
26
|
-
- ✅ AI 自主验证:修复后自动验证是否成功
|
|
27
|
-
- 📊 标准化摘要:AI 输出规范化的修复报告
|
|
28
|
-
|
|
29
|
-
#### 统一 System Prompt
|
|
30
|
-
- 📝 Claude Code 和 Kimi Code 共用同一个 System Prompt
|
|
31
|
-
- 🎯 保证两个 AI 的行为一致性
|
|
32
|
-
- 🔧 可自定义修复策略和指导方针
|
|
33
|
-
|
|
34
|
-
#### 增强的变更追踪
|
|
35
|
-
- 📝 AI 修复后自动提交到 Git
|
|
36
|
-
- 📊 JSON 日志记录完整的修复过程
|
|
37
|
-
- 🔍 包含:问题、原因、修复措施、修改文件、执行命令
|
|
38
|
-
|
|
39
|
-
### Changed
|
|
40
|
-
|
|
41
|
-
#### 工作流程优化
|
|
42
|
-
```
|
|
43
|
-
旧: 健康检查 → AI 返回诊断 → 程序解析 → 程序执行 → 可能失败
|
|
44
|
-
新: 健康检查 → AI 直接修复 → AI 验证 → AI 总结 → 程序记录 → 完成
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
#### 架构调整
|
|
48
|
-
- `ai/claude-client.ts` → `ai/cli-client.ts`(统一 CLI 客户端)
|
|
49
|
-
- `ai/kimi-client.ts` → 删除(合并到 cli-client.ts)
|
|
50
|
-
- `recovery/auto-fixer.ts` → 简化为只记录 AI 已完成的修复
|
|
51
|
-
- `recovery/config-manager.ts` → 已弃用(AI 直接修改配置)
|
|
52
|
-
|
|
53
|
-
### Improved
|
|
54
|
-
|
|
55
|
-
- 🎯 修复成功率提升:AI 可以迭代尝试多次
|
|
56
|
-
- ⚡ 修复速度提升:不需要往返通信
|
|
57
|
-
- 🔒 安全性提升:Git 完整记录所有变更
|
|
58
|
-
- 📊 可观察性提升:标准化的修复摘要
|
|
59
|
-
|
|
60
|
-
### Documentation
|
|
61
|
-
|
|
62
|
-
- ✨ 更新 README.md:强调 AI 直接修复能力
|
|
63
|
-
- 📖 更新 QUICKSTART.md:简化配置步骤
|
|
64
|
-
- 🎓 新增 `prompts/fix-openclaw.md`:AI System Prompt
|
|
65
|
-
- 🔧 更新所有示例和文档
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## [1.0.0] - 2026-02-01
|
|
70
|
-
|
|
71
|
-
### Added(已废弃,见 v2.0.0)
|
|
72
|
-
|
|
73
|
-
- 🎉 Initial release(原始版本)
|
|
74
|
-
- ✨ 基于诊断 + 程序执行的修复方案(已废弃)
|
|
75
|
-
- 🤖 Claude CLI / Kimi API 集成(API 方式已废弃)
|
|
76
|
-
|
|
77
|
-
### Configuration
|
|
78
|
-
|
|
79
|
-
- Environment-based configuration
|
|
80
|
-
- Support for custom OpenClaw paths
|
|
81
|
-
- Configurable AI provider selection
|
|
82
|
-
- Adjustable health check parameters
|
|
83
|
-
- Git tracking toggle
|
|
84
|
-
- Backup system toggle
|
|
85
|
-
|
|
86
|
-
### Documentation
|
|
87
|
-
|
|
88
|
-
- Comprehensive README with examples
|
|
89
|
-
- Architecture diagrams
|
|
90
|
-
- Configuration guide
|
|
91
|
-
- Security considerations
|
|
92
|
-
- Troubleshooting guide
|
|
93
|
-
- Development setup instructions
|
|
10
|
+
### 🚀 Project Born
|
package/README.md
CHANGED
|
@@ -64,10 +64,6 @@ npx openclaw-watcher status
|
|
|
64
64
|
|
|
65
65
|
## 📖 Full Documentation
|
|
66
66
|
|
|
67
|
-
- **[CLI Guide](./CLI_GUIDE.md)** - Complete CLI command reference
|
|
68
|
-
- **[Architecture](./ARCHITECTURE.md)** - System design and architecture
|
|
69
|
-
- **[Quick Start (Chinese)](./QUICKSTART.md)** - 中文快速开始指南
|
|
70
|
-
|
|
71
67
|
## 🎯 How It Works
|
|
72
68
|
|
|
73
69
|
```
|
|
@@ -77,12 +73,12 @@ npx openclaw-watcher status
|
|
|
77
73
|
│ Fails 3x (configurable)
|
|
78
74
|
▼
|
|
79
75
|
┌─────────────────┐
|
|
80
|
-
│
|
|
76
|
+
│ Triggered │ Claude/Kimi Code CLI
|
|
81
77
|
└────────┬────────┘
|
|
82
78
|
│
|
|
83
79
|
▼
|
|
84
80
|
┌─────────────────┐
|
|
85
|
-
│
|
|
81
|
+
│ Diagnosis │ Read configs, logs, status
|
|
86
82
|
└────────┬────────┘
|
|
87
83
|
│
|
|
88
84
|
▼
|
|
@@ -92,7 +88,7 @@ npx openclaw-watcher status
|
|
|
92
88
|
│
|
|
93
89
|
▼
|
|
94
90
|
┌─────────────────┐
|
|
95
|
-
│
|
|
91
|
+
│ AI Verifies │ Restart, check status
|
|
96
92
|
└────────┬────────┘
|
|
97
93
|
│
|
|
98
94
|
▼
|
|
@@ -275,14 +271,14 @@ Watcher manages the entire `~/.openclaw` directory as a Git repository — not j
|
|
|
275
271
|
|
|
276
272
|
The auto-generated `.gitignore` excludes sensitive and temporary files:
|
|
277
273
|
|
|
278
|
-
| Pattern
|
|
279
|
-
|
|
280
|
-
| `openclaw.json`
|
|
281
|
-
| `agents/*/agent/auth-profiles.json` | Agent authentication credentials
|
|
282
|
-
| `agents/*/sessions/`
|
|
283
|
-
| `memory/*.sqlite`
|
|
284
|
-
| `cache/`
|
|
285
|
-
| `*.log`
|
|
274
|
+
| Pattern | Reason |
|
|
275
|
+
| ----------------------------------- | --------------------------------- |
|
|
276
|
+
| `openclaw.json` | Contains API keys and tokens |
|
|
277
|
+
| `agents/*/agent/auth-profiles.json` | Agent authentication credentials |
|
|
278
|
+
| `agents/*/sessions/` | Session history (large + privacy) |
|
|
279
|
+
| `memory/*.sqlite` | Vector index databases (large) |
|
|
280
|
+
| `cache/` | Temporary cache files |
|
|
281
|
+
| `*.log` | Log files |
|
|
286
282
|
|
|
287
283
|
### GitHub Sync (Optional)
|
|
288
284
|
|
|
@@ -299,7 +295,6 @@ npx openclaw-watcher init
|
|
|
299
295
|
|
|
300
296
|
- During `init`: creates a private GitHub repo and pushes the initial commit
|
|
301
297
|
- During monitoring: auto-pushes to GitHub after each repair commit (best-effort — push failures never block recovery)
|
|
302
|
-
- Repo name is auto-generated: `openclaw-config-<hostname>`
|
|
303
298
|
|
|
304
299
|
If `gh` is not installed or not authenticated during init, the setup warns and continues — you can always configure GitHub sync later.
|
|
305
300
|
|
package/dist/ai/cli-client.js
CHANGED
|
@@ -16,7 +16,7 @@ export class CLIClient {
|
|
|
16
16
|
this.timeout = timeout;
|
|
17
17
|
}
|
|
18
18
|
async initialize() {
|
|
19
|
-
const promptPath = path.join(__dirname, '
|
|
19
|
+
const promptPath = path.join(__dirname, '../prompts/fix-openclaw.md');
|
|
20
20
|
try {
|
|
21
21
|
this.systemPrompt = await fs.readFile(promptPath, 'utf-8');
|
|
22
22
|
logger.info('System prompt loaded', { provider: this.provider });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-client.js","sourceRoot":"","sources":["../../src/ai/cli-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,MAAM,MAAM,mBAAmB,CAAC;AAEvC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAE/C,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AAElC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAe/D,MAAM,OAAO,SAAS;IACZ,QAAQ,CAAa;IACrB,OAAO,CAAS;IAChB,YAAY,GAAW,EAAE,CAAC;IAElC,YAAY,QAAoB,EAAE,UAAkB,MAAM;QACxD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,KAAK,CAAC,UAAU;QACd,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE
|
|
1
|
+
{"version":3,"file":"cli-client.js","sourceRoot":"","sources":["../../src/ai/cli-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,7 +102,7 @@ This repository is managed by **OpenClaw Watcher** — it tracks the entire \`~/
|
|
|
102
102
|
|
|
103
103
|
## 🔧 Managed by
|
|
104
104
|
|
|
105
|
-
[OpenClaw Watcher](https://github.com/
|
|
105
|
+
[OpenClaw Watcher](https://github.com/cjraft/openclaw-watcher) - AI-powered health monitoring and auto-repair
|
|
106
106
|
`;
|
|
107
107
|
await fs.writeFile(readmePath, content, 'utf-8');
|
|
108
108
|
logger.info('README.md created');
|
package/package.json
CHANGED
|
@@ -1,15 +1,20 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "openclaw-watcher",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.2",
|
|
4
4
|
"description": "AI-powered automated health monitoring and self-healing CLI for OpenClaw Gateway",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"README.md",
|
|
10
|
+
"CHANGELOG.md"
|
|
11
|
+
],
|
|
7
12
|
"bin": {
|
|
8
13
|
"openclaw-watcher": "dist/cli.js"
|
|
9
14
|
},
|
|
10
15
|
"scripts": {
|
|
11
16
|
"dev": "nodemon --exec tsx src/index.ts",
|
|
12
|
-
"build": "tsc && tsc-alias",
|
|
17
|
+
"build": "tsc && tsc-alias && cp -r src/prompts dist/",
|
|
13
18
|
"start": "node dist/index.js",
|
|
14
19
|
"lint": "eslint . --ext .ts",
|
|
15
20
|
"format": "prettier --write \"src/**/*.ts\"",
|
|
@@ -25,6 +30,14 @@
|
|
|
25
30
|
],
|
|
26
31
|
"author": "",
|
|
27
32
|
"license": "MIT",
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/cjraft/openclaw-watcher.git"
|
|
36
|
+
},
|
|
37
|
+
"homepage": "https://github.com/cjraft/openclaw-watcher#readme",
|
|
38
|
+
"bugs": {
|
|
39
|
+
"url": "https://github.com/cjraft/openclaw-watcher/issues"
|
|
40
|
+
},
|
|
28
41
|
"dependencies": {
|
|
29
42
|
"axios": "^1.7.9",
|
|
30
43
|
"boxen": "^7.1.1",
|
package/.dockerignore
DELETED
package/.env.example
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
# OpenClaw Configuration
|
|
2
|
-
OPENCLAW_GATEWAY_URL=http://localhost:10002
|
|
3
|
-
OPENCLAW_HEALTH_ENDPOINT=/health
|
|
4
|
-
OPENCLAW_CONFIG_PATH=~/.openclaw
|
|
5
|
-
|
|
6
|
-
# Health Check Configuration
|
|
7
|
-
HEALTH_CHECK_INTERVAL=30000
|
|
8
|
-
HEALTH_CHECK_TIMEOUT=10000
|
|
9
|
-
MAX_RETRY_ATTEMPTS=3
|
|
10
|
-
FAILURE_THRESHOLD=3
|
|
11
|
-
|
|
12
|
-
# AI Configuration
|
|
13
|
-
# Choose 'claude' or 'kimi' - both use CLI tools (claude code / kimi code)
|
|
14
|
-
AI_PROVIDER=claude
|
|
15
|
-
# No API keys needed - uses CLI tools directly
|
|
16
|
-
|
|
17
|
-
# Recovery Protection
|
|
18
|
-
MAX_RECOVERY_RETRIES=3
|
|
19
|
-
RECOVERY_COOLDOWN_MS=300000
|
|
20
|
-
|
|
21
|
-
# Change Tracking
|
|
22
|
-
USE_GIT_TRACKING=true
|
|
23
|
-
GIT_COMMIT_MESSAGE_PREFIX=[AutoFix]
|
|
24
|
-
BACKUP_CONFIG_BEFORE_CHANGE=true
|
|
25
|
-
|
|
26
|
-
# Watcher Home Directory (config + logs)
|
|
27
|
-
# WATCHER_HOME=~/.openclaw-watcher
|
|
28
|
-
|
|
29
|
-
# Logging
|
|
30
|
-
LOG_LEVEL=info
|
|
31
|
-
# LOG_FILE_PATH defaults to $WATCHER_HOME/logs/healthcheck.log
|
package/.eslintrc.json
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"parser": "@typescript-eslint/parser",
|
|
3
|
-
"extends": [
|
|
4
|
-
"eslint:recommended",
|
|
5
|
-
"plugin:@typescript-eslint/recommended"
|
|
6
|
-
],
|
|
7
|
-
"plugins": ["@typescript-eslint"],
|
|
8
|
-
"parserOptions": {
|
|
9
|
-
"ecmaVersion": 2022,
|
|
10
|
-
"sourceType": "module",
|
|
11
|
-
"project": "./tsconfig.json"
|
|
12
|
-
},
|
|
13
|
-
"env": {
|
|
14
|
-
"node": true,
|
|
15
|
-
"es2022": true
|
|
16
|
-
},
|
|
17
|
-
"rules": {
|
|
18
|
-
"@typescript-eslint/no-explicit-any": "warn",
|
|
19
|
-
"@typescript-eslint/explicit-function-return-type": "off",
|
|
20
|
-
"@typescript-eslint/no-unused-vars": [
|
|
21
|
-
"error",
|
|
22
|
-
{ "argsIgnorePattern": "^_" }
|
|
23
|
-
],
|
|
24
|
-
"no-console": "warn"
|
|
25
|
-
}
|
|
26
|
-
}
|
package/.prettierrc.json
DELETED
package/Dockerfile
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
FROM node:22-alpine AS builder
|
|
2
|
-
|
|
3
|
-
# Install pnpm
|
|
4
|
-
RUN npm install -g pnpm
|
|
5
|
-
|
|
6
|
-
WORKDIR /app
|
|
7
|
-
|
|
8
|
-
# Copy package files
|
|
9
|
-
COPY package.json pnpm-lock.yaml* ./
|
|
10
|
-
|
|
11
|
-
# Install dependencies
|
|
12
|
-
RUN pnpm install --frozen-lockfile
|
|
13
|
-
|
|
14
|
-
# Copy source code
|
|
15
|
-
COPY . .
|
|
16
|
-
|
|
17
|
-
# Build
|
|
18
|
-
RUN pnpm run build
|
|
19
|
-
|
|
20
|
-
# Production image
|
|
21
|
-
FROM node:22-alpine
|
|
22
|
-
|
|
23
|
-
# Install pnpm
|
|
24
|
-
RUN npm install -g pnpm
|
|
25
|
-
|
|
26
|
-
WORKDIR /app
|
|
27
|
-
|
|
28
|
-
# Copy package files
|
|
29
|
-
COPY package.json pnpm-lock.yaml* ./
|
|
30
|
-
|
|
31
|
-
# Install production dependencies only
|
|
32
|
-
RUN pnpm install --prod --frozen-lockfile
|
|
33
|
-
|
|
34
|
-
# Copy built files
|
|
35
|
-
COPY --from=builder /app/dist ./dist
|
|
36
|
-
|
|
37
|
-
# Create logs directory
|
|
38
|
-
RUN mkdir -p /app/logs
|
|
39
|
-
|
|
40
|
-
# Set environment
|
|
41
|
-
ENV NODE_ENV=production
|
|
42
|
-
|
|
43
|
-
# Expose port (if needed for metrics)
|
|
44
|
-
# EXPOSE 9090
|
|
45
|
-
|
|
46
|
-
# Run the service
|
|
47
|
-
CMD ["node", "dist/index.js"]
|
package/build.sh
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
set -e
|
|
4
|
-
|
|
5
|
-
echo "🔨 Building OpenClaw Watcher..."
|
|
6
|
-
|
|
7
|
-
# Clean previous build
|
|
8
|
-
echo "Cleaning previous build..."
|
|
9
|
-
rm -rf dist
|
|
10
|
-
|
|
11
|
-
# Install dependencies
|
|
12
|
-
echo "Installing dependencies..."
|
|
13
|
-
pnpm install
|
|
14
|
-
|
|
15
|
-
# Type check
|
|
16
|
-
echo "Running type check..."
|
|
17
|
-
pnpm run type-check
|
|
18
|
-
|
|
19
|
-
# Build
|
|
20
|
-
echo "Building..."
|
|
21
|
-
pnpm run build
|
|
22
|
-
|
|
23
|
-
# Make CLI executable
|
|
24
|
-
echo "Setting executable permissions..."
|
|
25
|
-
chmod +x dist/cli.js
|
|
26
|
-
|
|
27
|
-
echo "✅ Build completed successfully!"
|
|
28
|
-
echo ""
|
|
29
|
-
echo "Usage:"
|
|
30
|
-
echo " npx . init # Initialize configuration"
|
|
31
|
-
echo " npx . start # Start monitoring"
|
|
32
|
-
echo " npx . status # Check status"
|
|
33
|
-
echo " npx . config # Manage configuration"
|
package/docker-compose.yml
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
version: '3.8'
|
|
2
|
-
|
|
3
|
-
services:
|
|
4
|
-
openclaw-healthcheck:
|
|
5
|
-
build: .
|
|
6
|
-
container_name: openclaw-healthcheck
|
|
7
|
-
restart: unless-stopped
|
|
8
|
-
env_file:
|
|
9
|
-
- .env
|
|
10
|
-
environment:
|
|
11
|
-
- NODE_ENV=production
|
|
12
|
-
- TZ=Asia/Shanghai
|
|
13
|
-
volumes:
|
|
14
|
-
# Mount logs directory
|
|
15
|
-
- ./logs:/app/logs
|
|
16
|
-
# Mount OpenClaw config directory (adjust path as needed)
|
|
17
|
-
- ${OPENCLAW_CONFIG_PATH}:/opt/openclaw/config
|
|
18
|
-
# Mount git credentials if using git tracking
|
|
19
|
-
- ~/.gitconfig:/root/.gitconfig:ro
|
|
20
|
-
networks:
|
|
21
|
-
- openclaw-network
|
|
22
|
-
# If you need to connect to local OpenClaw gateway
|
|
23
|
-
extra_hosts:
|
|
24
|
-
- "host.docker.internal:host-gateway"
|
|
25
|
-
# Resource limits (optional)
|
|
26
|
-
deploy:
|
|
27
|
-
resources:
|
|
28
|
-
limits:
|
|
29
|
-
cpus: '1'
|
|
30
|
-
memory: 512M
|
|
31
|
-
reservations:
|
|
32
|
-
cpus: '0.5'
|
|
33
|
-
memory: 256M
|
|
34
|
-
# Logging
|
|
35
|
-
logging:
|
|
36
|
-
driver: "json-file"
|
|
37
|
-
options:
|
|
38
|
-
max-size: "10m"
|
|
39
|
-
max-file: "3"
|
|
40
|
-
|
|
41
|
-
networks:
|
|
42
|
-
openclaw-network:
|
|
43
|
-
driver: bridge
|
package/nodemon.json
DELETED
package/scripts/setup.sh
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
#!/bin/bash
|
|
2
|
-
|
|
3
|
-
set -e
|
|
4
|
-
|
|
5
|
-
echo "🚀 Setting up OpenClaw HealthCheck..."
|
|
6
|
-
|
|
7
|
-
# Check Node.js version
|
|
8
|
-
echo "Checking Node.js version..."
|
|
9
|
-
NODE_VERSION=$(node -v | cut -d'v' -f2 | cut -d'.' -f1)
|
|
10
|
-
if [ "$NODE_VERSION" -lt 22 ]; then
|
|
11
|
-
echo "❌ Node.js version 22 or higher is required"
|
|
12
|
-
echo "Current version: $(node -v)"
|
|
13
|
-
exit 1
|
|
14
|
-
fi
|
|
15
|
-
echo "✅ Node.js version: $(node -v)"
|
|
16
|
-
|
|
17
|
-
# Check pnpm
|
|
18
|
-
echo "Checking pnpm..."
|
|
19
|
-
if ! command -v pnpm &> /dev/null; then
|
|
20
|
-
echo "📦 Installing pnpm..."
|
|
21
|
-
npm install -g pnpm
|
|
22
|
-
fi
|
|
23
|
-
echo "✅ pnpm version: $(pnpm -v)"
|
|
24
|
-
|
|
25
|
-
# Install dependencies
|
|
26
|
-
echo "📦 Installing dependencies..."
|
|
27
|
-
pnpm install
|
|
28
|
-
|
|
29
|
-
# Setup environment
|
|
30
|
-
if [ ! -f .env ]; then
|
|
31
|
-
echo "📝 Creating .env file..."
|
|
32
|
-
cp .env.example .env
|
|
33
|
-
echo "⚠️ Please edit .env file with your configuration"
|
|
34
|
-
else
|
|
35
|
-
echo "✅ .env file already exists"
|
|
36
|
-
fi
|
|
37
|
-
|
|
38
|
-
# Create necessary directories
|
|
39
|
-
echo "📁 Creating directories..."
|
|
40
|
-
mkdir -p logs config-backups
|
|
41
|
-
|
|
42
|
-
# Set executable permissions
|
|
43
|
-
echo "🔐 Setting permissions..."
|
|
44
|
-
chmod +x build.sh
|
|
45
|
-
chmod +x scripts/*.sh 2>/dev/null || true
|
|
46
|
-
|
|
47
|
-
# Check OpenClaw
|
|
48
|
-
echo "Checking OpenClaw installation..."
|
|
49
|
-
if command -v openclaw &> /dev/null; then
|
|
50
|
-
echo "✅ OpenClaw found: $(which openclaw)"
|
|
51
|
-
OPENCLAW_VERSION=$(openclaw version 2>/dev/null || echo "unknown")
|
|
52
|
-
echo " Version: $OPENCLAW_VERSION"
|
|
53
|
-
else
|
|
54
|
-
echo "⚠️ OpenClaw not found in PATH"
|
|
55
|
-
echo " Please ensure OpenClaw is installed and accessible"
|
|
56
|
-
fi
|
|
57
|
-
|
|
58
|
-
# Check AI providers
|
|
59
|
-
echo "Checking AI providers..."
|
|
60
|
-
CLAUDE_FOUND=false
|
|
61
|
-
KIMI_FOUND=false
|
|
62
|
-
|
|
63
|
-
if command -v claude &> /dev/null; then
|
|
64
|
-
echo "✅ Claude Code CLI found: $(which claude)"
|
|
65
|
-
CLAUDE_FOUND=true
|
|
66
|
-
else
|
|
67
|
-
echo "⚠️ Claude Code CLI not found"
|
|
68
|
-
fi
|
|
69
|
-
|
|
70
|
-
if command -v kimi &> /dev/null; then
|
|
71
|
-
echo "✅ Kimi Code CLI found: $(which kimi)"
|
|
72
|
-
KIMI_FOUND=true
|
|
73
|
-
else
|
|
74
|
-
echo "⚠️ Kimi Code CLI not found"
|
|
75
|
-
fi
|
|
76
|
-
|
|
77
|
-
if [ "$CLAUDE_FOUND" = false ] && [ "$KIMI_FOUND" = false ]; then
|
|
78
|
-
echo ""
|
|
79
|
-
echo "❌ ERROR: No AI CLI tool found!"
|
|
80
|
-
echo " You must install at least one:"
|
|
81
|
-
echo " - Claude Code CLI: https://github.com/anthropics/claude-code"
|
|
82
|
-
echo " - Kimi Code CLI: https://platform.moonshot.cn/docs/code"
|
|
83
|
-
echo ""
|
|
84
|
-
exit 1
|
|
85
|
-
fi
|
|
86
|
-
|
|
87
|
-
echo ""
|
|
88
|
-
echo "✅ Setup completed!"
|
|
89
|
-
echo ""
|
|
90
|
-
echo "Next steps:"
|
|
91
|
-
echo "1. Edit .env file with your configuration:"
|
|
92
|
-
echo " vim .env"
|
|
93
|
-
echo ""
|
|
94
|
-
echo "2. Update these important settings:"
|
|
95
|
-
echo " - OPENCLAW_GATEWAY_URL"
|
|
96
|
-
echo " - OPENCLAW_CONFIG_PATH"
|
|
97
|
-
echo " - AI_PROVIDER and API keys"
|
|
98
|
-
echo ""
|
|
99
|
-
echo "3. Run in development mode:"
|
|
100
|
-
echo " pnpm run dev"
|
|
101
|
-
echo ""
|
|
102
|
-
echo "4. Or build and run in production:"
|
|
103
|
-
echo " ./build.sh"
|
|
104
|
-
echo " pnpm start"
|
|
105
|
-
echo ""
|