Thanks to visit codestin.com
Credit goes to github.com

Skip to content

actbit/Clawleash

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

51 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Clawleash

่‡ชๅพ‹AIใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ - ใ‚ตใƒณใƒ‰ใƒœใƒƒใ‚ฏใ‚นๅฎŸ่กŒ็’ฐๅขƒๆญ่ผ‰

.NET License Tests

Semantic Kernel ร— Playwright ร— PowerShell ร— MCP ร— Sandbox Architecture ร— Multi-Interface

English | ๆ—ฅๆœฌ่ชž


ๆฆ‚่ฆ

Clawleash๏ผˆใ‚ฏใƒฉใ‚ฆใƒชใƒƒใ‚ทใƒฅ๏ผ‰ใฏใ€ๅฎ‰ๅ…จใชใ‚ตใƒณใƒ‰ใƒœใƒƒใ‚ฏใ‚น็’ฐๅขƒใงๅ‹•ไฝœใ™ใ‚‹่‡ชๅพ‹AIใ‚จใƒผใ‚ธใ‚งใƒณใƒˆใงใ™ใ€‚Microsoft Semantic KernelใจPlaywrightใ‚’ใƒ™ใƒผใ‚นใซใ€Firecrawl้ขจใฎWebใ‚นใ‚ฏใƒฌใ‚คใƒ”ใƒณใ‚ฐๆฉŸ่ƒฝใจ่‡ชๅพ‹็š„ใชใƒ–ใƒฉใ‚ฆใ‚ถๆ“ไฝœใ‚’ๅฎŸ็พใ—ใพใ™ใ€‚

็‰นๅพด

  • ใƒžใƒซใƒใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น: CLI / Discord / Slack / WebSocket / WebRTC ใซๅฏพๅฟœ
  • E2EEๅฏพๅฟœ: WebSocketใƒปWebRTCใงใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰ๆš—ๅทๅŒ–
  • ใ‚ตใƒณใƒ‰ใƒœใƒƒใ‚ฏใ‚นๅฎŸ่กŒ: AppContainer (Windows) / Bubblewrap (Linux) ใงๅฎ‰ๅ…จใซๅฎŸ่กŒ
  • ใƒ•ใ‚ฉใƒซใƒ€ใƒผใƒใƒชใ‚ทใƒผ: ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใ”ใจใซใ‚ขใ‚ฏใ‚ปใ‚นๆจฉ้™ใƒปใƒใƒƒใƒˆใƒฏใƒผใ‚ฏๅˆถๅพกใ‚’่จญๅฎš
  • ใƒ„ใƒผใƒซใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใ‚ทใ‚นใƒ†ใƒ : ZIP/DLLใงใƒ„ใƒผใƒซใ‚’่ฟฝๅŠ ๅฏ่ƒฝ
  • ใ‚นใ‚ญใƒซใ‚ทใ‚นใƒ†ใƒ : YAML/JSONใงใƒ—ใƒญใƒณใƒ—ใƒˆใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใ‚’ๅฎš็พฉใƒปๅ†ๅˆฉ็”จ
  • MCPใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆ: ๅค–้ƒจMCPใ‚ตใƒผใƒใƒผใฎใƒ„ใƒผใƒซใ‚’็ตฑๅˆๅˆฉ็”จ
  • ๆ‰ฟ่ชใ‚ทใ‚นใƒ†ใƒ : ๅฑ้™บใชๆ“ไฝœใซใฏใƒฆใƒผใ‚ถใƒผๆ‰ฟ่ชใŒๅฟ…่ฆ

ไธปใชๆฉŸ่ƒฝ

ใƒžใƒซใƒใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น

Clawleashใฏ่ค‡ๆ•ฐใฎๅ…ฅๅŠ›ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นใ‚’ๅŒๆ™‚ใซใ‚ตใƒใƒผใƒˆใ—ใพใ™ใ€‚

ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น ่ชฌๆ˜Ž E2EE
CLI ๆจ™ๆบ–ใ‚ณใƒณใ‚ฝใƒผใƒซๅ…ฅๅŠ›๏ผˆใƒ“ใƒซใƒˆใ‚คใƒณ๏ผ‰ -
Discord Discord Bot็ตŒ็”ฑใงใƒกใƒƒใ‚ปใƒผใ‚ธๅ—ไฟก -
Slack Slack Bot (HTTP API + ใƒใƒผใƒชใƒณใ‚ฐ) -
WebSocket SignalRใซใ‚ˆใ‚‹ใƒชใ‚ขใƒซใ‚ฟใ‚คใƒ ้€šไฟก โœ… AES-256-GCM
WebRTC DataChannel็ตŒ็”ฑใฎP2P้€šไฟก โœ… DTLS-SRTP

ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ:

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                       Clawleash (Main Application)                   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚     InterfaceLoader + FileSystemWatcher (Hot Reload)            โ”‚ โ”‚
โ”‚  โ”‚  %LocalAppData%\Clawleash\Interfaces\ ใ‚’็›ฃ่ฆ–                     โ”‚ โ”‚
โ”‚  โ”‚  ๆ–ฐ่ฆDLL่ฟฝๅŠ  โ†’ ่‡ชๅ‹•ใƒญใƒผใƒ‰ โ†’ ChatInterfaceManagerใซ็™ป้Œฒ           โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ”‚                             โ”‚                                        โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚                   ChatInterfaceManager                           โ”‚ โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚ โ”‚
โ”‚  โ”‚  โ”‚   CLI    โ”‚ โ”‚ Discord  โ”‚ โ”‚  Slack   โ”‚ โ”‚ WebSocketโ”‚ โ”‚ WebRTC โ”‚ โ”‚ โ”‚
โ”‚  โ”‚  โ”‚(Built-in)โ”‚ โ”‚  (DLL)   โ”‚ โ”‚  (DLL)   โ”‚ โ”‚  (DLL)   โ”‚ โ”‚ (DLL)  โ”‚ โ”‚ โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

่จญๅฎšไพ‹ (appsettings.json):

{
  "ChatInterface": {
    "EnableCli": true,
    "EnableHotReload": true,
    "InterfacesDirectory": null,
    "Discord": {
      "Enabled": true,
      "Token": "${DISCORD_BOT_TOKEN}",
      "CommandPrefix": "!"
    },
    "Slack": {
      "Enabled": true,
      "BotToken": "${SLACK_BOT_TOKEN}"
    },
    "WebSocket": {
      "Enabled": true,
      "ServerUrl": "wss://localhost:8080/chat",
      "EnableE2ee": true
    },
    "WebRtc": {
      "Enabled": true,
      "SignalingServerUrl": "wss://localhost:8080/signaling",
      "EnableE2ee": true
    }
  }
}

E2EE๏ผˆใ‚จใƒณใƒ‰ใƒ„ใƒผใ‚จใƒณใƒ‰ๆš—ๅทๅŒ–๏ผ‰

WebSocketใƒปWebRTC้€šไฟกใงE2EEใ‚’ๆœ‰ๅŠนใซใงใใพใ™ใ€‚

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”                      โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚   Client     โ”‚                      โ”‚    Server    โ”‚
โ”‚              โ”‚                      โ”‚              โ”‚
โ”‚  1. ้ตไบคๆ›    โ”‚ โ—„โ”€โ”€โ”€ X25519 โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ โ”‚              โ”‚
โ”‚              โ”‚                      โ”‚              โ”‚
โ”‚  2. ๆš—ๅทๅŒ–    โ”‚                      โ”‚              โ”‚
โ”‚  Plaintext   โ”‚                      โ”‚              โ”‚
โ”‚     โ”‚        โ”‚                      โ”‚              โ”‚
โ”‚     โ–ผ        โ”‚                      โ”‚              โ”‚
โ”‚  AES-256-GCM โ”‚                      โ”‚              โ”‚
โ”‚     โ”‚        โ”‚                      โ”‚              โ”‚
โ”‚     โ–ผ        โ”‚                      โ”‚              โ”‚
โ”‚  Ciphertext  โ”‚ โ”€โ”€โ”€โ”€ wss:// โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–บ โ”‚  3. ๅพฉๅทๅŒ–    โ”‚
โ”‚              โ”‚                      โ”‚  AES-256-GCM โ”‚
โ”‚              โ”‚                      โ”‚     โ”‚        โ”‚
โ”‚              โ”‚                      โ”‚     โ–ผ        โ”‚
โ”‚              โ”‚                      โ”‚  Plaintext   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜                      โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

Webใ‚ฏใƒญใƒผใƒฉใƒผ๏ผˆFirecrawl้ขจ๏ผ‰

ๆฉŸ่ƒฝ ่ชฌๆ˜Ž
ScrapeUrl URLใ‚’ใ‚นใ‚ฏใƒฌใ‚คใƒ—ใ—ใฆMarkdownๅฝขๅผใงใ‚ณใƒณใƒ†ใƒณใƒ„ใ‚’ๅ–ๅพ—
CrawlWebsite Webใ‚ตใ‚คใƒˆๅ…จไฝ“ใ‚’ใ‚ฏใƒญใƒผใƒซใ—ใฆ่ค‡ๆ•ฐใƒšใƒผใ‚ธใฎใ‚ณใƒณใƒ†ใƒณใƒ„ใ‚’ๅ–ๅพ—
MapWebsite ใ‚ตใ‚คใƒˆใƒžใƒƒใƒ—๏ผˆๅ…จURLไธ€่ฆง๏ผ‰ใ‚’้ซ˜้€Ÿใซๅ–ๅพ—
SearchWeb Webใ‚’ๆคœ็ดข๏ผˆDuckDuckGoไฝฟ็”จใƒปAPIใ‚ญใƒผไธ่ฆ๏ผ‰
BatchScrape ่ค‡ๆ•ฐใฎURLใ‚’ไธ€ๆ‹ฌใ‚นใ‚ฏใƒฌใ‚คใƒ—

ใƒ•ใ‚กใ‚คใƒซๆ“ไฝœ

ๆฉŸ่ƒฝ ่ชฌๆ˜Ž
CreateFile / ReadFile ใƒ•ใ‚กใ‚คใƒซใฎไฝœๆˆใƒป่ชญใฟ่พผใฟ
ReplaceLine / ReplaceText ่กŒใƒปใƒ†ใ‚ญใ‚นใƒˆใฎ็ฝฎๆ›
InsertLine / DeleteLine ่กŒใฎๆŒฟๅ…ฅใƒปๅ‰Š้™ค
MoveFile / CopyFile ใƒ•ใ‚กใ‚คใƒซใฎ็งปๅ‹•ใƒปใ‚ณใƒ”ใƒผ
CreateFolder / DeleteFolder ใƒ•ใ‚ฉใƒซใƒ€ใฎไฝœๆˆใƒปๅ‰Š้™ค
ShowTree ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชๆง‹้€ ใ‚’ใƒ„ใƒชใƒผๅฝขๅผใง่กจ็คบ

ใƒ–ใƒฉใ‚ฆใ‚ถๆ“ไฝœ

  • ๅŸบๆœฌๆ“ไฝœ: ใƒŠใƒ“ใ‚ฒใƒผใƒˆใ€ใ‚ฏใƒชใƒƒใ‚ฏใ€ใƒ†ใ‚ญใ‚นใƒˆๅ…ฅๅŠ›ใ€ใƒ•ใ‚ฉใƒผใƒ ้€ไฟก
  • ใ‚นใ‚ฏใƒญใƒผใƒซ: ใƒšใƒผใ‚ธใ‚นใ‚ฏใƒญใƒผใƒซใ€ๆœ€ไธ‹้ƒจใธใฎ็งปๅ‹•
  • ๅพ…ๆฉŸๆ“ไฝœ: ่ฆ็ด ่กจ็คบๅพ…ๆฉŸใ€ๆ™‚้–“ๅพ…ๆฉŸใ€ใƒšใƒผใ‚ธ่ชญใฟ่พผใฟๅพ…ๆฉŸ
  • ใ‚ญใƒผใƒœใƒผใƒ‰: Enter, Tab, Escape, ็Ÿขๅฐใ‚ญใƒผใชใฉ
  • ใƒžใ‚ฆใ‚นๆ“ไฝœ: ใƒ€ใƒ–ใƒซใ‚ฏใƒชใƒƒใ‚ฏใ€ๅณใ‚ฏใƒชใƒƒใ‚ฏใ€ใƒ‰ใƒฉใƒƒใ‚ฐ๏ผ†ใƒ‰ใƒญใƒƒใƒ—
  • ใ‚นใƒˆใƒฌใƒผใ‚ธ: Cookieใ€localStorageใ€sessionStorage

AIๆญ่ผ‰ใƒ‡ใƒผใ‚ฟๆŠฝๅ‡บ

  • ExtractStructuredData: AIใ‚’ไฝฟใฃใŸๆง‹้€ ๅŒ–ใƒ‡ใƒผใ‚ฟๆŠฝๅ‡บ
  • ExtractProductInfo: ๅ•†ๅ“ๆƒ…ๅ ฑใฎ่‡ชๅ‹•ๆŠฝๅ‡บ
  • SummarizePage: ใƒšใƒผใ‚ธๅ†…ๅฎนใฎ่ฆ็ด„

่‡ชๅพ‹ใ‚จใƒผใ‚ธใ‚งใƒณใƒˆ

  • ็›ฎๆจ™ใฎ่จˆ็”ปใƒปๅฎŸ่กŒ: ็›ฎๆจ™ใ‚’่จญๅฎšใ—ใฆใ€AIใŒ่‡ชๅ‹•็š„ใซใ‚ฟใ‚นใ‚ฏใ‚’ๅˆ†่งฃใƒปๅฎŸ่กŒ
  • ่‡ชๅทฑ่ฉ•ไพกใƒปไฟฎๆญฃ: ๅฎŸ่กŒ็ตๆžœใ‚’่ฉ•ไพกใ—ใฆใ€ๅคฑๆ•—ๆ™‚ใฏๅˆฅใฎใ‚ขใƒ—ใƒญใƒผใƒใ‚’่ฉฆ่กŒ
  • Human-in-the-Loop: ๅฑ้™บใชๆ“ไฝœใซใฏใƒฆใƒผใ‚ถใƒผใฎๆ‰ฟ่ชใŒๅฟ…่ฆ

ใ‚นใ‚ญใƒซใ‚ทใ‚นใƒ†ใƒ 

ใƒ—ใƒญใƒณใƒ—ใƒˆใƒ†ใƒณใƒ—ใƒฌใƒผใƒˆใ‚’ๅ†ๅˆฉ็”จๅฏ่ƒฝใชใ€Œใ‚นใ‚ญใƒซใ€ใจใ—ใฆๅฎš็พฉใƒปๅฎŸ่กŒใงใใพใ™ใ€‚

ๆฉŸ่ƒฝ ่ชฌๆ˜Ž
list_skills ๅˆฉ็”จๅฏ่ƒฝใชใ‚นใ‚ญใƒซไธ€่ฆงใ‚’่กจ็คบ
execute_skill ๆŒ‡ๅฎšใ—ใŸใ‚นใ‚ญใƒซใ‚’ๅฎŸ่กŒ
show_skill ใ‚นใ‚ญใƒซใฎ่ฉณ็ดฐๆƒ…ๅ ฑใ‚’่กจ็คบ
register_skill ๆ–ฐใ—ใ„ใ‚นใ‚ญใƒซใ‚’็™ป้Œฒ๏ผˆYAML/JSON๏ผ‰
remove_skill ใ‚นใ‚ญใƒซใ‚’ๅ‰Š้™ค

ใ‚นใ‚ญใƒซๅฎš็พฉไพ‹๏ผˆYAML๏ผ‰:

name: summarize
description: ใƒ†ใ‚ญใ‚นใƒˆใ‚’่ฆ็ด„ใ—ใพใ™
version: "1.0.0"
tags: [text, summarization]

systemInstruction: |
  ใ‚ใชใŸใฏๅฐ‚้–€็š„ใช่ฆ็ด„ใ‚ขใ‚ทใ‚นใ‚ฟใƒณใƒˆใงใ™ใ€‚

parameters:
  - name: text
    type: string
    description: ่ฆ็ด„ใ™ใ‚‹ใƒ†ใ‚ญใ‚นใƒˆ
    required: true
  - name: style
    type: string
    description: ่ฆ็ด„ใ‚นใ‚ฟใ‚คใƒซ
    required: false
    default: ็ฐกๆฝ”
    enum: [็ฐกๆฝ”, ่ฉณ็ดฐ, ็ฎ‡ๆกๆ›ธใ]

prompt: |
  ไปฅไธ‹ใฎใƒ†ใ‚ญใ‚นใƒˆใ‚’{{style}}ใซ่ฆ็ด„ใ—ใฆใใ ใ•ใ„๏ผš
  {{text}}

ใ‚นใ‚ญใƒซใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒช: %LocalAppData%\Clawleash\Skills\

MCP (Model Context Protocol) ใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆ

ๅค–้ƒจMCPใ‚ตใƒผใƒใƒผใฎใƒ„ใƒผใƒซใ‚’Clawleashๅ†…ใงๅˆฉ็”จใงใใพใ™ใ€‚

ๆฉŸ่ƒฝ ่ชฌๆ˜Ž
list_tools MCPใ‚ตใƒผใƒใƒผใฎใƒ„ใƒผใƒซไธ€่ฆงใ‚’่กจ็คบ
execute_tool MCPใƒ„ใƒผใƒซใ‚’ๅฎŸ่กŒ

ใƒˆใƒฉใƒณใ‚นใƒใƒผใƒˆๅฏพๅฟœ:

  • stdio: ใƒญใƒผใ‚ซใƒซNPXใƒ‘ใƒƒใ‚ฑใƒผใ‚ธใ€Dockerใ‚ณใƒณใƒ†ใƒŠ
  • SSE: ใƒชใƒขใƒผใƒˆMCPใ‚ตใƒผใƒใƒผ๏ผˆไปŠๅพŒๅฏพๅฟœ๏ผ‰

ใ‚ปใ‚ญใƒฅใƒชใƒ†ใ‚ฃ

ใ‚ตใƒณใƒ‰ใƒœใƒƒใ‚ฏใ‚น

ใƒ—ใƒฉใƒƒใƒˆใƒ•ใ‚ฉใƒผใƒ  ๅฎŸ่ฃ… ๆฉŸ่ƒฝ
Windows AppContainer ใ‚ฑใƒผใƒ‘ใƒ“ใƒชใƒ†ใ‚ฃใƒ™ใƒผใ‚นใฎใ‚ขใ‚ฏใ‚ปใ‚นๅˆถๅพก
Linux Bubblewrap ๅๅ‰็ฉบ้–“ๅˆ†้›ข

AppContainerใ‚ฑใƒผใƒ‘ใƒ“ใƒชใƒ†ใ‚ฃ

Windows AppContainerใงใƒ—ใƒญใ‚ปใ‚นใซไป˜ไธŽใ™ใ‚‹ใ‚ฑใƒผใƒ‘ใƒ“ใƒชใƒ†ใ‚ฃใ‚’่จญๅฎšใงใใพใ™ใ€‚

{
  "Sandbox": {
    "Type": "AppContainer",
    "AppContainerName": "Clawleash.Sandbox",
    "Capabilities": "InternetClient, PrivateNetworkClientServer"
  }
}

ๅˆฉ็”จๅฏ่ƒฝใชใ‚ฑใƒผใƒ‘ใƒ“ใƒชใƒ†ใ‚ฃ:

ใ‚ฑใƒผใƒ‘ใƒ“ใƒชใƒ†ใ‚ฃ ่ชฌๆ˜Ž
InternetClient ใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใธใฎ้€ไฟกๆŽฅ็ถš
InternetClientServer ใ‚คใƒณใ‚ฟใƒผใƒใƒƒใƒˆใธใฎ็€ไฟกใƒป้€ไฟกๆŽฅ็ถš
PrivateNetworkClientServer ใƒ—ใƒฉใ‚คใƒ™ใƒผใƒˆใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใธใฎๆŽฅ็ถš
PicturesLibrary ็”ปๅƒใƒฉใ‚คใƒ–ใƒฉใƒชใธใฎใ‚ขใ‚ฏใ‚ปใ‚น
VideosLibrary ใƒ“ใƒ‡ใ‚ชใƒฉใ‚คใƒ–ใƒฉใƒชใธใฎใ‚ขใ‚ฏใ‚ปใ‚น
MusicLibrary ใƒŸใƒฅใƒผใ‚ธใƒƒใ‚ฏใƒฉใ‚คใƒ–ใƒฉใƒชใธใฎใ‚ขใ‚ฏใ‚ปใ‚น
DocumentsLibrary ใƒ‰ใ‚ญใƒฅใƒกใƒณใƒˆใƒฉใ‚คใƒ–ใƒฉใƒชใธใฎใ‚ขใ‚ฏใ‚ปใ‚น
EnterpriseAuthentication ไผๆฅญ่ช่จผ
SharedUserCertificates ๅ…ฑๆœ‰่จผๆ˜Žๆ›ธ
RemovableStorage ใƒชใƒ ใƒผใƒใƒ–ใƒซใ‚นใƒˆใƒฌใƒผใ‚ธ
Appointments ไบˆๅฎš
Contacts ้€ฃ็ตกๅ…ˆ

ใƒ•ใ‚ฉใƒซใƒ€ใƒผใƒใƒชใ‚ทใƒผ

ใƒ‡ใ‚ฃใƒฌใ‚ฏใƒˆใƒชใ”ใจใซ่ฉณ็ดฐใชใ‚ขใ‚ฏใ‚ปใ‚นๅˆถๅพกใ‚’่จญๅฎšใงใใพใ™ใ€‚ใ‚ˆใ‚Šๅ…ทไฝ“็š„ใชใƒ‘ใ‚นใŒๅ„ชๅ…ˆใ•ใ‚Œใ€ๅญใƒ•ใ‚ฉใƒซใƒ€ใƒผใง่ฆชใฎ่จญๅฎšใ‚’ไธŠๆ›ธใๅฏ่ƒฝใงใ™ใ€‚

{
  "Sandbox": {
    "FolderPolicies": [
      {
        "Path": "C:\\Projects",
        "Access": "ReadWrite",
        "Network": "Allow",
        "Execute": "Allow",
        "Name": "ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆใƒ•ใ‚ฉใƒซใƒ€ใƒผ"
      },
      {
        "Path": "C:\\Projects\\Secrets",
        "Access": "Deny",
        "Network": "Deny",
        "Name": "ๆฉŸๅฏ†ๆƒ…ๅ ฑ๏ผˆใ‚ขใ‚ฏใ‚ปใ‚น็ฆๆญข๏ผ‰"
      },
      {
        "Path": "C:\\Projects\\Public",
        "Access": "ReadOnly",
        "Network": "Allow",
        "Name": "ๅ…ฌ้–‹ใ‚จใƒชใ‚ข๏ผˆ่ชญใฟๅ–ใ‚Šๅฐ‚็”จ๏ผ‰"
      },
      {
        "Path": "C:\\Work",
        "Access": "ReadWrite",
        "Network": "Allow",
        "DeniedExtensions": ["exe", "bat", "ps1"],
        "MaxFileSizeMB": 50,
        "Name": "ไฝœๆฅญใƒ•ใ‚ฉใƒซใƒ€ใƒผ"
      },
      {
        "Path": "C:\\Work\\Downloads",
        "Access": "ReadWrite",
        "Network": "Allow",
        "Execute": "Deny",
        "EnableAudit": true,
        "Name": "ใƒ€ใ‚ฆใƒณใƒญใƒผใƒ‰๏ผˆๅฎŸ่กŒ็ฆๆญขใƒป็›ฃๆŸปใ‚ใ‚Š๏ผ‰"
      }
    ]
  }
}

ใƒใƒชใ‚ทใƒผใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃ:

ใƒ—ใƒญใƒ‘ใƒ†ใ‚ฃ ๅ€ค ่ชฌๆ˜Ž
Access Deny / ReadOnly / ReadWrite / FullControl ใƒ•ใ‚กใ‚คใƒซใ‚ทใ‚นใƒ†ใƒ ใ‚ขใ‚ฏใ‚ปใ‚น
Network Inherit / Allow / Deny ใƒใƒƒใƒˆใƒฏใƒผใ‚ฏใ‚ขใ‚ฏใ‚ปใ‚น
Execute Inherit / Allow / Deny ใƒ—ใƒญใ‚ปใ‚นๅฎŸ่กŒๆจฉ้™
AllowedExtensions [".txt", ".json"] ่จฑๅฏใ™ใ‚‹ๆ‹กๅผตๅญ
DeniedExtensions [".exe", ".bat"] ็ฆๆญขใ™ใ‚‹ๆ‹กๅผตๅญ
MaxFileSizeMB 10 ๆœ€ๅคงใƒ•ใ‚กใ‚คใƒซใ‚ตใ‚คใ‚บ
EnableAudit true ใ‚ขใ‚ฏใ‚ปใ‚นใƒญใ‚ฐ่จ˜้Œฒ

็ถ™ๆ‰ฟใƒซใƒผใƒซ:

C:\Projects          โ†’ ReadWrite, Network=Allow
  โ”œโ”€ \Secrets        โ†’ Deny, Network=Deny        โ† ่ฆชใ‚’ไธŠๆ›ธใ๏ผˆ็„กๅŠนๅŒ–๏ผ‰
  โ”œโ”€ \Public         โ†’ ReadOnly, Network=Allow  โ† ่ชญใฟๅ–ใ‚Šๅฐ‚็”จใซๅค‰ๆ›ด
  โ””โ”€ \Data
       โ””โ”€ \Sensitive โ†’ Deny                      โ† ๆทฑใ„้šŽๅฑคใงใ‚‚ไธŠๆ›ธใๅฏ่ƒฝ

PowerShellๅˆถ็ด„

  • ConstrainedLanguage: ใƒ‡ใƒ•ใ‚ฉใƒซใƒˆใฎๅฎ‰ๅ…จใชใƒขใƒผใƒ‰
  • ใ‚ณใƒžใƒณใƒ‰ใƒ›ใƒฏใ‚คใƒˆใƒชใ‚นใƒˆ: ่จฑๅฏใ•ใ‚ŒใŸใ‚ณใƒžใƒณใƒ‰ใฎใฟๅฎŸ่กŒ
  • ใƒ‘ใ‚นๅˆถ้™: ่จฑๅฏใ•ใ‚ŒใŸใƒ‘ใ‚นใฎใฟใ‚ขใ‚ฏใ‚ปใ‚นๅฏ่ƒฝ

ๆ‰ฟ่ชใ‚ทใ‚นใƒ†ใƒ 

// CLI็”จ๏ผˆใ‚ณใƒณใ‚ฝใƒผใƒซใงๆ‰ฟ่ช็ขบ่ช๏ผ‰
services.AddCliApprovalHandler();

// ่‡ชๅ‹•ๅŒ–็”จ๏ผˆใƒซใƒผใƒซใƒ™ใƒผใ‚น๏ผ‰
services.AddSilentApprovalHandler(config);

ใ‚ขใƒผใ‚ญใƒ†ใ‚ฏใƒใƒฃ

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                      Clawleash (Main)                        โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚
โ”‚  โ”‚   Kernel    โ”‚  โ”‚ ToolLoader  โ”‚  โ”‚   ShellServer       โ”‚  โ”‚
โ”‚  โ”‚  (AI Agent) โ”‚  โ”‚ (ZIP/DLL)   โ”‚  โ”‚   (ZeroMQ Router)   โ”‚  โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ฌโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚
โ”‚         โ”‚                โ”‚                     โ”‚ IPC         โ”‚
โ”‚         โ”œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ผโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ค             โ”‚
โ”‚         โ”‚  SkillLoader   โ”‚   McpClientManager  โ”‚             โ”‚
โ”‚         โ”‚  (YAML/JSON)   โ”‚   (stdio/SSE)       โ”‚             โ”‚
โ”‚         โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”ดโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜             โ”‚
โ”‚                                                              โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚              ChatInterfaceManager                        โ”‚ โ”‚
โ”‚  โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”‚ โ”‚
โ”‚  โ”‚  โ”‚ CLI โ”‚ โ”‚ Discord โ”‚ โ”‚ Slack  โ”‚ โ”‚ WebSocketโ”‚ โ”‚ WebRTCโ”‚  โ”‚ โ”‚
โ”‚  โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
                            โ”‚
                            โ–ผ MessagePack over ZeroMQ
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Clawleash.Shell (Sandboxed)               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚  IpcClient  โ”‚  โ”‚     ConstrainedRunspaceHost         โ”‚   โ”‚
โ”‚  โ”‚  (Dealer)   โ”‚  โ”‚     (PowerShell SDK)                โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚                    Clawleash.Server (Optional)               โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”   โ”‚
โ”‚  โ”‚     ChatHub         โ”‚  โ”‚     SignalingHub            โ”‚   โ”‚
โ”‚  โ”‚  (WebSocket/E2EE)   โ”‚  โ”‚  (WebRTC Signaling)         โ”‚   โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜   โ”‚
โ”‚  โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” โ”‚
โ”‚  โ”‚     Svelte Client (Static Files)                        โ”‚ โ”‚
โ”‚  โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜

ใƒ—ใƒญใ‚ธใ‚งใ‚ฏใƒˆๆง‹ๆˆ

Clowleash/
โ”œโ”€โ”€ Clawleash/                    # ใƒกใ‚คใƒณใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ
โ”‚   โ”œโ”€โ”€ Execution/
โ”‚   โ”‚   โ””โ”€โ”€ ShellServer.cs        # IPCใ‚ตใƒผใƒใƒผ
โ”‚   โ”œโ”€โ”€ Tools/
โ”‚   โ”‚   โ”œโ”€โ”€ ToolLoader.cs         # ใƒ„ใƒผใƒซใƒญใƒผใƒ€ใƒผ
โ”‚   โ”‚   โ”œโ”€โ”€ ToolPackage.cs        # ใƒ‘ใƒƒใ‚ฑใƒผใ‚ธ็ฎก็†
โ”‚   โ”‚   โ”œโ”€โ”€ ToolProxyGenerator.cs # ใƒ—ใƒญใ‚ญใ‚ท็”Ÿๆˆ (Reflection.Emit)
โ”‚   โ”‚   โ””โ”€โ”€ ShellToolExecutor.cs  # IPC็ตŒ็”ฑๅฎŸ่กŒ
โ”‚   โ”œโ”€โ”€ Skills/
โ”‚   โ”‚   โ””โ”€โ”€ SkillLoader.cs        # ใ‚นใ‚ญใƒซใƒญใƒผใƒ€ใƒผ (YAML/JSON)
โ”‚   โ”œโ”€โ”€ Mcp/
โ”‚   โ”‚   โ”œโ”€โ”€ McpClientManager.cs   # MCPใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆ็ฎก็†
โ”‚   โ”‚   โ”œโ”€โ”€ McpServerConfig.cs    # MCPใ‚ตใƒผใƒใƒผ่จญๅฎš
โ”‚   โ”‚   โ””โ”€โ”€ McpToolAdapter.cs     # Semantic Kernel็ตฑๅˆ
โ”‚   โ”œโ”€โ”€ Services/
โ”‚   โ”‚   โ”œโ”€โ”€ IApprovalHandler.cs   # ๆ‰ฟ่ชใ‚ทใ‚นใƒ†ใƒ 
โ”‚   โ”‚   โ”œโ”€โ”€ IInputHandler.cs      # ๅ…ฅๅŠ›ใ‚ทใ‚นใƒ†ใƒ 
โ”‚   โ”‚   โ”œโ”€โ”€ InterfaceLoader.cs    # ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นๅ‹•็š„ใƒญใƒผใƒ‰
โ”‚   โ”‚   โ”œโ”€โ”€ ChatInterfaceManager.cs # ใƒžใƒซใƒใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น็ฎก็†
โ”‚   โ”‚   โ””โ”€โ”€ CliChatInterface.cs   # CLIใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น
โ”‚   โ”œโ”€โ”€ Sandbox/
โ”‚   โ”‚   โ”œโ”€โ”€ AppContainerProvider.cs  # Windows (ใ‚ฑใƒผใƒ‘ใƒ“ใƒชใƒ†ใ‚ฃๅฏพๅฟœ)
โ”‚   โ”‚   โ”œโ”€โ”€ BubblewrapProvider.cs    # Linux
โ”‚   โ”‚   โ”œโ”€โ”€ FolderPolicy.cs          # ใƒ•ใ‚ฉใƒซใƒ€ใƒผใƒใƒชใ‚ทใƒผๅฎš็พฉ
โ”‚   โ”‚   โ”œโ”€โ”€ FolderPolicyManager.cs   # ใƒใƒชใ‚ทใƒผ็ฎก็†ใƒป็ถ™ๆ‰ฟๅ‡ฆ็†
โ”‚   โ”‚   โ”œโ”€โ”€ NativeMethods.cs         # P/Invokeๅฎš็พฉ
โ”‚   โ”‚   โ””โ”€โ”€ AclManager.cs            # ACL็ฎก็†
โ”‚   โ”œโ”€โ”€ Security/
โ”‚   โ”‚   โ”œโ”€โ”€ UrlValidator.cs
โ”‚   โ”‚   โ”œโ”€โ”€ PathValidator.cs
โ”‚   โ”‚   โ””โ”€โ”€ CommandValidator.cs
โ”‚   โ””โ”€โ”€ Plugins/                 # Semantic Kernel ใƒ—ใƒฉใ‚ฐใ‚คใƒณ
โ”‚       โ”œโ”€โ”€ WebCrawlerPlugin.cs
โ”‚       โ”œโ”€โ”€ BrowserActionsPlugin.cs
โ”‚       โ”œโ”€โ”€ FileOperationsPlugin.cs
โ”‚       โ”œโ”€โ”€ SkillPlugin.cs
โ”‚       โ””โ”€โ”€ ...
โ”‚
โ”œโ”€โ”€ Clawleash.Shell/              # ใ‚ตใƒณใƒ‰ใƒœใƒƒใ‚ฏใ‚นใƒ—ใƒญใ‚ปใ‚น
โ”‚   โ”œโ”€โ”€ IPC/IpcClient.cs          # IPCใ‚ฏใƒฉใ‚คใ‚ขใƒณใƒˆ (DealerSocket)
โ”‚   โ””โ”€โ”€ Hosting/
โ”‚       โ””โ”€โ”€ ConstrainedRunspaceHost.cs  # ๅˆถ็ด„ไป˜ใPowerShell
โ”‚
โ”œโ”€โ”€ Clawleash.Abstractions/       # ๅ…ฑๆœ‰ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น
โ”‚   โ”œโ”€โ”€ Services/
โ”‚   โ”‚   โ”œโ”€โ”€ IChatInterface.cs     # ใƒใƒฃใƒƒใƒˆใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น
โ”‚   โ”‚   โ””โ”€โ”€ ChatMessageReceivedEventArgs.cs
โ”‚   โ””โ”€โ”€ Security/
โ”‚       โ””โ”€โ”€ IE2eeProvider.cs      # E2EEใƒ—ใƒญใƒใ‚คใƒ€ใƒผ
โ”‚
โ”œโ”€โ”€ Clawleash.Interfaces.Discord/ # Discord Bot ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น
โ”‚   โ”œโ”€โ”€ DiscordChatInterface.cs
โ”‚   โ””โ”€โ”€ DiscordSettings.cs
โ”‚
โ”œโ”€โ”€ Clawleash.Interfaces.Slack/   # Slack Bot ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น
โ”‚   โ”œโ”€โ”€ SlackChatInterface.cs
โ”‚   โ””โ”€โ”€ SlackSettings.cs
โ”‚
โ”œโ”€โ”€ Clawleash.Interfaces.WebSocket/ # WebSocket ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น (E2EE)
โ”‚   โ”œโ”€โ”€ WebSocketChatInterface.cs
โ”‚   โ”œโ”€โ”€ Security/
โ”‚   โ”‚   โ””โ”€โ”€ AesGcmE2eeProvider.cs
โ”‚   โ””โ”€โ”€ WebSocketSettings.cs
โ”‚
โ”œโ”€โ”€ Clawleash.Interfaces.WebRTC/  # WebRTC ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚น (E2EE)
โ”‚   โ”œโ”€โ”€ WebRtcChatInterface.cs
โ”‚   โ”œโ”€โ”€ Security/
โ”‚   โ”‚   โ””โ”€โ”€ WebRtcE2eeProvider.cs
โ”‚   โ””โ”€โ”€ WebRtcSettings.cs
โ”‚
โ”œโ”€โ”€ Clawleash.Server/             # SignalRใ‚ตใƒผใƒใƒผ (WebSocket/WebRTC)
โ”‚   โ”œโ”€โ”€ Hubs/
โ”‚   โ”‚   โ”œโ”€โ”€ ChatHub.cs            # ใƒใƒฃใƒƒใƒˆใƒใƒ– (E2EEๅฏพๅฟœ)
โ”‚   โ”‚   โ””โ”€โ”€ SignalingHub.cs       # WebRTCใ‚ทใ‚ฐใƒŠใƒชใƒณใ‚ฐ
โ”‚   โ”œโ”€โ”€ Security/
โ”‚   โ”‚   โ”œโ”€โ”€ KeyManager.cs         # ้ต็ฎก็†
โ”‚   โ”‚   โ””โ”€โ”€ E2eeMiddleware.cs     # E2EEใƒŸใƒ‰ใƒซใ‚ฆใ‚งใ‚ข
โ”‚   โ””โ”€โ”€ Client/                   # Svelteใƒ•ใƒญใƒณใƒˆใ‚จใƒณใƒ‰
โ”‚
โ”œโ”€โ”€ Clawleash.Contracts/          # ๅ…ฑๆœ‰ๅž‹ๅฎš็พฉ
โ”‚   โ””โ”€โ”€ Messages/
โ”‚       โ”œโ”€โ”€ ShellMessages.cs      # IPCใƒกใƒƒใ‚ปใƒผใ‚ธ
โ”‚       โ””โ”€โ”€ Enums.cs              # ๅ…ฑๆœ‰Enum
โ”‚
โ”œโ”€โ”€ Clawleash.Tests/              # ใƒฆใƒ‹ใƒƒใƒˆใƒ†ใ‚นใƒˆ
โ”‚
โ””โ”€โ”€ sample-skills/                # ใ‚ตใƒณใƒ—ใƒซใ‚นใ‚ญใƒซ

ใ‚คใƒณใ‚นใƒˆใƒผใƒซ

# ใƒชใƒใ‚ธใƒˆใƒชใ‚’ใ‚ฏใƒญใƒผใƒณ
git clone https://github.com/yourusername/Clowleash.git
cd Clawleash

# ไพๅญ˜้–ขไฟ‚ใ‚’ๅพฉๅ…ƒ
dotnet restore

# Playwrightใƒ–ใƒฉใ‚ฆใ‚ถใ‚’ใ‚คใƒณใ‚นใƒˆใƒผใƒซ
pwsh bin/Debug/net10.0/.playwright/package/cli.js install

่จญๅฎš

appsettings.json:

{
  "AI": {
    "ApiKey": "your-api-key",
    "ModelId": "gpt-4o",
    "Endpoint": "https://api.openai.com/v1"
  },
  "Sandbox": {
    "Type": "AppContainer",
    "AppContainerName": "Clawleash.Sandbox",
    "Capabilities": "InternetClient, PrivateNetworkClientServer",
    "FolderPolicies": [
      {
        "Path": "C:\\Projects",
        "Access": "ReadWrite",
        "Network": "Allow",
        "Execute": "Allow"
      },
      {
        "Path": "C:\\Projects\\Secrets",
        "Access": "Deny",
        "Network": "Deny"
      }
    ]
  },
  "ChatInterface": {
    "EnableCli": true,
    "EnableHotReload": true,
    "Discord": { "Enabled": false },
    "Slack": { "Enabled": false },
    "WebSocket": { "Enabled": false },
    "WebRtc": { "Enabled": false }
  },
  "Browser": {
    "Headless": true
  },
  "Mcp": {
    "Enabled": true,
    "Servers": []
  }
}

ไฝฟ็”จๆ–นๆณ•

ใƒกใ‚คใƒณใ‚ขใƒ—ใƒชใ‚ฑใƒผใ‚ทใƒงใƒณ

dotnet run --project Clawleash

SignalRใ‚ตใƒผใƒใƒผ๏ผˆWebSocket/WebRTC็”จ๏ผ‰

dotnet run --project Clawleash.Server
# http://localhost:5000 ใงใ‚ตใƒผใƒใƒผ่ตทๅ‹•
# /chat - WebSocketใƒใƒ–
# /signaling - WebRTCใ‚ทใ‚ฐใƒŠใƒชใƒณใ‚ฐใƒใƒ–

ใ‚คใƒณใ‚ฟใƒผใƒ•ใ‚งใƒผใ‚นDLLใฎ่ฟฝๅŠ 

%LocalAppData%\Clawleash\Interfaces\
โ”œโ”€โ”€ Discord\
โ”‚   โ”œโ”€โ”€ Clawleash.Interfaces.Discord.dll
โ”‚   โ””โ”€โ”€ Discord.Net.dll
โ”œโ”€โ”€ Slack\
โ”‚   โ”œโ”€โ”€ Clawleash.Interfaces.Slack.dll
โ”‚   โ””โ”€โ”€ (ไพๅญ˜DLL)
โ”œโ”€โ”€ WebSocket\
โ”‚   โ””โ”€โ”€ Clawleash.Interfaces.WebSocket.dll
โ””โ”€โ”€ WebRTC\
    โ””โ”€โ”€ Clawleash.Interfaces.WebRTC.dll

ใƒ›ใƒƒใƒˆใƒชใƒญใƒผใƒ‰ๅฏพๅฟœ๏ผšๆ–ฐใ—ใ„DLLใ‚’้…็ฝฎใ™ใ‚‹ใจ่‡ชๅ‹•็š„ใซ่ชญใฟ่พผใพใ‚Œใพใ™ใ€‚

ใ‚นใ‚ญใƒซใฎ่ฟฝๅŠ 

%LocalAppData%\Clawleash\Skills\
โ””โ”€โ”€ my-skill.skill.yaml       # YAMLๅฝขๅผ
โ””โ”€โ”€ my-skill.skill.json       # ใพใŸใฏJSONๅฝขๅผ

IPC้€šไฟก

้ …็›ฎ ไป•ๆง˜
ใƒ—ใƒญใƒˆใ‚ณใƒซ ZeroMQ (Router/Dealer)
ใ‚ทใƒชใ‚ขใƒฉใ‚คใ‚บ MessagePack
ๆ–นๅ‘ Main (Server) โ† Shell (Client)

ใƒกใƒƒใ‚ปใƒผใ‚ธ็จฎๅˆฅ:

  • ShellExecuteRequest/Response - ใ‚ณใƒžใƒณใƒ‰ๅฎŸ่กŒ
  • ToolInvokeRequest/Response - ใƒ„ใƒผใƒซๅ‘ผใณๅ‡บใ—
  • ShellInitializeRequest/Response - ๅˆๆœŸๅŒ–
  • ShellPingRequest/Response - ๆญปๆดป็›ฃ่ฆ–

้–‹็™บ

# ใƒ“ใƒซใƒ‰
dotnet build

# ใƒ†ใ‚นใƒˆๅฎŸ่กŒ
dotnet test

# ใƒ†ใ‚นใƒˆ่ฉณ็ดฐ่กจ็คบ
dotnet test --verbosity normal

ใ‚ณใƒณใƒˆใƒชใƒ“ใƒฅใƒผใƒˆ

  1. ใ“ใฎใƒชใƒใ‚ธใƒˆใƒชใ‚’ใƒ•ใ‚ฉใƒผใ‚ฏ
  2. ใƒ•ใ‚ฃใƒผใƒใƒฃใƒผใƒ–ใƒฉใƒณใƒใ‚’ไฝœๆˆ (git checkout -b feature/amazing-feature)
  3. ๅค‰ๆ›ดใ‚’ใ‚ณใƒŸใƒƒใƒˆ (git commit -m 'Add amazing feature')
  4. ใƒ—ใƒซใƒชใ‚ฏใ‚จใ‚นใƒˆใ‚’ไฝœๆˆ

ใƒฉใ‚คใ‚ปใƒณใ‚น

MIT License - LICENSE ใ‚’ๅ‚็…ง


About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published