This commit is contained in:
@@ -0,0 +1,170 @@
|
||||
# Technology Stack
|
||||
|
||||
**Project:** gsd-openclaw (OpenClaw to GSD Bridge)
|
||||
**Researched:** 2026-03-10
|
||||
|
||||
## Recommended Stack
|
||||
|
||||
### Session Management (tmux Integration)
|
||||
|
||||
| Technology | Version | Purpose | Why |
|
||||
|------------|---------|---------|-----|
|
||||
| libtmux | 0.46.2 (May 2025) | Python ORM for tmux | Official Python wrapper with ORM-style API. Provides `pane.send_keys()` for input, `pane.cmd('capture-pane', '-p')` for output capture. Supports session/window/pane object model. Active maintenance (last release May 26, 2025). |
|
||||
| tmux | 1.8+ | Terminal multiplexer | Industry standard for persistent terminal sessions. Required by libtmux. Enables Claude CLI context persistence across network disconnections. |
|
||||
|
||||
**Confidence:** HIGH - libtmux v0.46.2 verified from PyPI (May 2025), actively maintained with 10+ years of development history.
|
||||
|
||||
### Claude CLI Integration
|
||||
|
||||
| Technology | Version | Purpose | Why |
|
||||
|------------|---------|---------|-----|
|
||||
| Claude Code CLI | Latest (via npm/@anthropic-ai/claude-code) | Agentic coding tool | Official Anthropic CLI tool. Supports interactive mode (`claude`), one-shot mode (`claude -p "query"`), session continuation (`-c`), and session resume by ID (`-r "session-id"`). JSON output format for programmatic use. |
|
||||
|
||||
**Key CLI patterns for bridge:**
|
||||
```bash
|
||||
# Interactive mode (for persistent sessions)
|
||||
claude
|
||||
|
||||
# One-shot with JSON output (for programmatic calls)
|
||||
claude -p "query" --output-format json
|
||||
|
||||
# Continue previous conversation
|
||||
claude -c -p "continue this task"
|
||||
|
||||
# Resume specific session
|
||||
claude -r "abc123" "Finish this PR"
|
||||
```
|
||||
|
||||
**Confidence:** HIGH - Claude Code CLI is Anthropic's official tool with 76.2k+ GitHub stars. Documentation current as of 2026.
|
||||
|
||||
### OpenClaw Skill Framework
|
||||
|
||||
| Technology | Version | Purpose | Why |
|
||||
|------------|---------|---------|-----|
|
||||
| Python | 3.9+ | Core language | Required by libtmux and OpenClaw skills. Type hints available. |
|
||||
| pathlib | stdlib | Path handling | Standard library, used in reference implementations. |
|
||||
| json | stdlib | State persistence | Standard library, lightweight state management. |
|
||||
| argparse | stdlib | CLI interface | Standard library, matches dev-workflow pattern. |
|
||||
|
||||
**OpenClaw Skill Structure (from dev-workflow reference):**
|
||||
```
|
||||
skill-name/
|
||||
SKILL.md # YAML frontmatter + documentation
|
||||
orchestrator.py # Main orchestration logic
|
||||
state_manager.py # State persistence layer
|
||||
prompts/ # Prompt templates (optional)
|
||||
```
|
||||
|
||||
**Confidence:** HIGH - Direct reference implementation available in `dev-workflow` skill.
|
||||
|
||||
### State Management
|
||||
|
||||
| Technology | Version | Purpose | Why |
|
||||
|------------|---------|---------|-----|
|
||||
| JSON files | N/A | Workflow state persistence | Simple, human-readable, matches OpenClaw pattern. Store in `.planning/gsd-openclaw/state.json`. |
|
||||
| datetime | stdlib | Timestamps | ISO format timestamps for tracking phase transitions. |
|
||||
|
||||
**State schema pattern (from dev-workflow):**
|
||||
```json
|
||||
{
|
||||
"schema": "gsd-openclaw-state-v1",
|
||||
"current_phase": 1,
|
||||
"started_at": "2026-03-10T18:00:00+08:00",
|
||||
"updated_at": "2026-03-10T19:30:00+08:00",
|
||||
"phases": {
|
||||
"1": {"name": "Initialization", "status": "in_progress", "data": {}}
|
||||
},
|
||||
"context": {
|
||||
"trigger_message": "...",
|
||||
"working_directory": "..."
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**Confidence:** HIGH - Proven pattern from dev-workflow reference.
|
||||
|
||||
## What NOT to Use
|
||||
|
||||
| Category | Rejected | Why Not |
|
||||
|----------|----------|---------|
|
||||
| tmux CLI directly | Raw subprocess calls to tmux | Fragile string parsing. Use libtmux for type-safe ORM API. |
|
||||
| pexpect | Python expect library | Unnecessary abstraction. libtmux handles I/O cleanly. |
|
||||
| screen | Alternative to tmux | Less Python support, smaller ecosystem. tmux + libtmux is the standard. |
|
||||
| SQLite | State persistence | Overkill for simple state files. JSON is sufficient and matches OpenClaw patterns. |
|
||||
| asyncio | Async I/O | tmux session management is inherently synchronous. Adds complexity without benefit. |
|
||||
| Third-party state managers | Redis, etc. | External dependencies. JSON files are portable and debuggable. |
|
||||
| npm installation for Claude CLI | `npm install -g @anthropic-ai/claude-code` | Deprecated per docs. Use `curl -fsSL https://claude.ai/install.sh \| bash` for installation. |
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
# Core dependencies
|
||||
pip install libtmux==0.46.2
|
||||
|
||||
# Claude CLI (official installation)
|
||||
curl -fsSL https://claude.ai/install.sh | bash
|
||||
|
||||
# Verify installations
|
||||
python3 -c "import libtmux; print(libtmux.__version__)"
|
||||
claude --version
|
||||
tmux -V
|
||||
```
|
||||
|
||||
## Architecture Integration
|
||||
|
||||
```
|
||||
┌─────────────────┐
|
||||
│ Messaging App │
|
||||
│ (WeChat/Feishu) │
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────────┐
|
||||
│ OpenClaw │
|
||||
│ Agent │
|
||||
└────────┬────────┘
|
||||
│
|
||||
▼
|
||||
┌────────────────────────────────────────────────────────┐
|
||||
│ gsd-openclaw Skill │
|
||||
│ ┌─────────────┐ ┌─────────────┐ ┌───────────────┐ │
|
||||
│ │ SKILL.md │ │orchestrator │ │state_manager │ │
|
||||
│ │ (triggers) │ │ .py │ │ .py │ │
|
||||
│ └─────────────┘ └──────┬──────┘ └───────────────┘ │
|
||||
│ │ │
|
||||
│ ▼ │
|
||||
│ ┌─────────────┐ │
|
||||
│ │ libtmux │ │
|
||||
│ │ (v0.46.2) │ │
|
||||
│ └──────┬──────┘ │
|
||||
└─────────────────────────┼──────────────────────────────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────┐
|
||||
│ tmux │
|
||||
│ session │
|
||||
└──────┬──────┘
|
||||
│
|
||||
▼
|
||||
┌─────────────┐
|
||||
│ Claude CLI │
|
||||
│ (GSD) │
|
||||
└─────────────┘
|
||||
```
|
||||
|
||||
## Version Verification
|
||||
|
||||
| Component | Source | Date Verified |
|
||||
|-----------|--------|---------------|
|
||||
| libtmux | PyPI (https://pypi.org/project/libtmux/) | 2026-03-10 |
|
||||
| Claude Code | Anthropic Docs (https://docs.anthropic.com/en/docs/claude-code/overview) | 2026-03-10 |
|
||||
| OpenClaw patterns | dev-workflow skill reference | 2026-03-10 |
|
||||
|
||||
## Sources
|
||||
|
||||
- libtmux PyPI: https://pypi.org/project/libtmux/ (v0.46.2, May 26, 2025)
|
||||
- libtmux GitHub: https://github.com/tmux-python/libtmux
|
||||
- Claude Code Overview: https://docs.anthropic.com/en/docs/claude-code/overview
|
||||
- Claude Code CLI Usage: https://docs.anthropic.com/en/docs/claude-code/cli-usage
|
||||
- Claude Code GitHub: https://github.com/anthropics/claude-code
|
||||
- OpenClaw dev-workflow skill: `/home/starmen1265/.openclaw/skills/dev-workflow/`
|
||||
Reference in New Issue
Block a user