Skip to content

Pr0gCat/haunted

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

55 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ‘ป Haunted

AI DevOps tool that haunts your GitHub repository

Haunted ๆ˜ฏไธ€ๅ€‹ใ€Œ้™„่บซใ€ๅœจ GitHub repo ็š„ AI DevOps ๅทฅๅ…ท๏ผŒ้€้Žๅ…ฉๅ€‹ agent ่‡ชๅ‹•ๅŒ–็ฎก็†้–‹็™ผๆต็จ‹ใ€‚

ๆ ธๅฟƒๆฆ‚ๅฟต

  • House Master (HM) - AI Project Manager๏ผŒ่ฒ ่ฒฌๅˆ†ๆž issueใ€ๆŒ‡ๆดพไปปๅ‹™ใ€Code Review
  • Claude Code (CC) - AI Developer๏ผŒ่ฒ ่ฒฌๅฏฆ้š›้–‹็™ผใ€ๅปบ็ซ‹ PR

ๅŠŸ่ƒฝ็‰น่‰ฒ

  • ๐Ÿ” ่‡ชๅ‹•ๅˆ†ๆžๆ–ฐ issue ไธฆๆฑบๅฎš่™•็†ๆ–นๅผ
  • ๐Ÿค– AI ่‡ชๅ‹•ๅฏฆไฝœไธฆๅปบ็ซ‹ PR
  • ๐Ÿ“ ่‡ชๅ‹• Code Review
  • ๐Ÿ“‹ GitHub Project ็œ‹ๆฟๆ•ดๅˆ
  • ๐Ÿ”„ ๆ”ฏๆด Webhook + Polling ๆททๅˆๆจกๅผ
  • ๐Ÿณ Docker ๅŒ–้ƒจ็ฝฒ
  • ๐ŸŒณ Git worktree ๆ”ฏๆดๅคšไปปๅ‹™ไธฆ่กŒ

ๅฟซ้€Ÿ้–‹ๅง‹

ๅ‰็ฝฎ้œ€ๆฑ‚

ๅฎ‰่ฃ

# Clone ๅฐˆๆกˆ
git clone https://github.com/your-org/haunted.git
cd haunted

# ๅฎ‰่ฃไพ่ณด
bun install

# ็ขบ่ช GitHub CLI ๅทฒ็™ปๅ…ฅ
gh auth status

# ็ขบ่ช Claude Code ๅทฒ็™ปๅ…ฅ
claude --version

้…็ฝฎ

  1. ่ค‡่ฃฝ็ฏ„ไพ‹้…็ฝฎๆช”๏ผš
cp haunted.yaml.example haunted.yaml
  1. ็ทจ่ผฏ haunted.yaml๏ผš
scope:
  type: "repo"
  target: "your-org/your-repo"

github:
  webhook:
    enabled: true
    port: 3000
    secret: "${WEBHOOK_SECRET}"  # ๅฏ้ธ
  polling:
    enabled: true
    interval: 60

ๅŸท่กŒ

# ้–‹็™ผๆจกๅผ (hot reload)
bun run dev

# ็”Ÿ็”ขๆจกๅผ
bun run start

Docker ้ƒจ็ฝฒ

# ๅปบ็ฝฎ image
docker build -t haunted .

# ๅŸท่กŒ (้œ€่ฆๆŽ›่ผ‰่ช่ญ‰็›ฎ้Œ„)
docker-compose up -d

็’ฐๅขƒ่ฎŠๆ•ธ

่ฎŠๆ•ธ ่ชชๆ˜Ž ้ ่จญๅ€ผ
REPO_PATH ็›ฎๆจ™ repo ่ทฏๅพ‘ .
WEBHOOK_SECRET GitHub webhook ๅฏ†้‘ฐ -
LOG_LEVEL ๆ—ฅ่ชŒ็ญ‰็ดš info

ไฝฟ็”จๆ–นๅผ

่‡ชๅ‹•่™•็†

็•ถๆœ‰ๆ–ฐ issue ๅปบ็ซ‹ๆ™‚๏ผŒHaunted ๆœƒ่‡ชๅ‹•๏ผš

  1. House Master ๅˆ†ๆž - ๅˆคๆ–ท issue ้กžๅž‹ใ€่ค‡้›œๅบฆ
  2. ๆฑบๅฎšๆŒ‡ๆดพ - AI ่™•็†ๆˆ–้œ€่ฆไบบ้กžไป‹ๅ…ฅ
  3. Claude Code ๅฏฆไฝœ - ๅœจ็จ็ซ‹ worktree ไธญ้–‹็™ผ
  4. ๅปบ็ซ‹ PR - ๆŽจ้€่ฎŠๆ›ดไธฆๅปบ็ซ‹ Pull Request
  5. Code Review - House Master ่‡ชๅ‹•ๅฏฉๆŸฅ

็‰นๆฎŠ Labels

Label ่ชชๆ˜Ž
human-only ๅช่ƒฝ็”ฑไบบ้กž่™•็†๏ผŒAI ๆœƒ่ทณ้Ž
haunted-skip ๅฎŒๅ…จ่ทณ้Ž AI ่™•็†
auto-merge PR ้€š้ŽๅฏฉๆŸฅๅพŒ่‡ชๅ‹•ๅˆไฝต
needs-review ้œ€่ฆไบบ้กžๅฏฉๆ ธ

ๆŒ‡ไปค

ๅœจ issue ่ฉ•่ซ–ไธญไฝฟ็”จ๏ผš

  • /retry - ้‡ๆ–ฐ่™•็†ๆญค issue
  • /cancel - ๅ–ๆถˆๆญฃๅœจ้€ฒ่กŒ็š„่™•็†
  • /status - ๆŸฅ็œ‹่™•็†็‹€ๆ…‹

@mention

ๅœจ่ฉ•่ซ–ไธญ @haunted ๅฏไปฅ่ˆ‡ House Master ไบ’ๅ‹•ใ€‚

Multi-Instance Manager

Haunted ๆไพ› Manager ๆœๅ‹™๏ผŒๅฏไปฅๅŒๆ™‚็ฎก็†ๅคšๅ€‹ haunted instanceใ€‚

้…็ฝฎ

# ่ค‡่ฃฝ็ฏ„ไพ‹้…็ฝฎ
cp manager.yaml.example manager.yaml

็ทจ่ผฏ manager.yaml๏ผš

version: "1.0"

manager:
  api:
    port: 8080
    host: "0.0.0.0"
  supervisor:
    auto_restart: true
    max_restarts: 3

instances:
  - id: "org-main"
    name: "Main Organization"
    enabled: true
    config_file: "./instances/org.yaml"
    working_dir: "/path/to/org/repo"
    env:
      GITHUB_TOKEN: "${ORG_GITHUB_TOKEN}"

  - id: "my-repo"
    name: "Personal Repo"
    enabled: true
    config:
      scope:
        type: "repo"
        target: "username/repo"
      github:
        webhook:
          port: 3001
    working_dir: "/path/to/repo"

ๅŸท่กŒ

# ้–‹็™ผๆจกๅผ
bun run manager:dev

# ็”Ÿ็”ขๆจกๅผ
bun run manager

HTTP API

Manager ๆไพ› HTTP API ไพ†็ฎก็† instances๏ผš

Method Endpoint ่ชชๆ˜Ž
GET /health ๅฅๅบทๆชขๆŸฅ
GET /api/instances ๅˆ—ๅ‡บๆ‰€ๆœ‰ instances
GET /api/instances/:id ๅ–ๅพ— instance ็‹€ๆ…‹
POST /api/instances/:id/start ๅ•Ÿๅ‹• instance
POST /api/instances/:id/stop ๅœๆญข instance
POST /api/instances/:id/restart ้‡ๅ•Ÿ instance
GET /api/instances/:id/logs ๅ–ๅพ—ๆ—ฅ่ชŒ
GET /api/instances/:id/logs/stream SSE ๅณๆ™‚ๆ—ฅ่ชŒ
GET /api/metrics ๅ…จๅฑ€็›ฃๆŽงๆŒ‡ๆจ™

็ฏ„ไพ‹๏ผš

# ๆŸฅ็œ‹ๆ‰€ๆœ‰ instances
curl http://localhost:8080/api/instances

# ้‡ๅ•Ÿ็‰นๅฎš instance
curl -X POST http://localhost:8080/api/instances/my-repo/restart

# ๅ–ๅพ—ๆœ€ๆ–ฐ 50 ่กŒๆ—ฅ่ชŒ
curl "http://localhost:8080/api/instances/my-repo/logs?limit=50"

ๆžถๆง‹

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                GitHub Repository                     โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ Issues โ”‚  โ”‚ Projects โ”‚  โ”‚ PRs  โ”‚  โ”‚ Webhooks โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                        โ”‚
                โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
                โ”‚   Haunted     โ”‚
                โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
                โ”‚ Event Handler โ”‚โ—„โ”€โ”€ Webhook + Polling
                โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
                โ”‚ House Master  โ”‚โ—„โ”€โ”€ Claude Code CLI
                โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
                โ”‚ Claude Code   โ”‚โ—„โ”€โ”€ Claude Code CLI
                โ”‚   Workers     โ”‚    + Git Worktrees
                โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Manager ๆžถๆง‹

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                  Haunted Manager                     โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚ HTTP API โ”‚  โ”‚ Supervisor โ”‚  โ”‚ MetricsCollectorโ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”       โ”‚
โ”‚  โ”‚ Instance  โ”‚  โ”‚ Instance  โ”‚  โ”‚ Instance  โ”‚  ...  โ”‚
โ”‚  โ”‚ (ๅญ้€ฒ็จ‹)   โ”‚  โ”‚ (ๅญ้€ฒ็จ‹)   โ”‚  โ”‚ (ๅญ้€ฒ็จ‹)   โ”‚       โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜       โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

้–‹็™ผ

# ๅž‹ๅˆฅๆชขๆŸฅ
bun run typecheck

# Lint
bun run lint

ๆŽˆๆฌŠ

MIT

About

Spectral Software Solutions ๐Ÿ‘ป

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors 2

  •  
  •  

Languages