| # ๅฏๅจๆฅๅฟไผๅ่ฏดๆ |
|
|
| ## ไผๅๅ vs ไผๅๅ |
|
|
| ### ไผๅๅ๏ผ่ฐ่ฏๆจกๅผ๏ผ |
| ๅฏๅจๆถไผๆพ็คบๅคง้ GIN ๆกๆถ็่ฐ่ฏไฟกๆฏ๏ผ |
| ``` |
| [GIN-debug] [WARNING] Running in "debug" mode. Switch to "release" mode in production. |
| - using env: export GIN_MODE=release |
| - using code: gin.SetMode(gin.ReleaseMode) |
| |
| [GIN-debug] GET /health --> main.setupRoutes.func1 (5 handlers) |
| [GIN-debug] GET / --> cursor2api-go/handlers.(*Handler).ServeDocs-fm (5 handlers) |
| [GIN-debug] GET /v1/models --> cursor2api-go/handlers.(*Handler).ListModels-fm (6 handlers) |
| [GIN-debug] POST /v1/chat/completions --> cursor2api-go/handlers.(*Handler).ChatCompletions-fm (6 handlers) |
| [GIN-debug] GET /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (5 handlers) |
| [GIN-debug] HEAD /static/*filepath --> github.com/gin-gonic/gin.(*RouterGroup).createStaticHandler.func1 (5 handlers) |
| INFO[0000] Starting Cursor2API server on port 8002 |
| ``` |
|
|
| ### ไผๅๅ๏ผ็ฎๆดๆจกๅผ๏ผ้ป่ฎค๏ผ |
| ๅฏๅจๆถๅชๆพ็คบๅฟ
่ฆ็ๆๅกไฟกๆฏ๏ผ |
| ``` |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| โ Cursor2API Server โ |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| |
| ๐ ๆๅกๅฐๅ: http://localhost:8002 |
| ๐ API ๆๆกฃ: http://localhost:8002/ |
| ๐ ๅฅๅบทๆฃๆฅ: http://localhost:8002/health |
| ๐ API ๅฏ้ฅ: 0000 |
| ๐ค ๆฏๆๆจกๅ: ไป
`claude-sonnet-4.6` ไธ `claude-sonnet-4.6-thinking`๏ผthinking ไธบๆดพ็ๅ
ฌๅผๆจกๅ๏ผ |
| |
| โจ ๆๅกๅทฒๅฏๅจ๏ผๆ Ctrl+C ๅๆญข |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| ``` |
|
|
| ## ไธป่ฆๆน่ฟ |
|
|
| ### 1. ้ป่ฎคไฝฟ็จ็ฎๆดๆจกๅผ |
| - ไฟฎๆน `.env.example` ไธญ `DEBUG=false` |
| - ็ไบง็ฏๅข้ป่ฎคไธๆพ็คบ่ฐ่ฏไฟกๆฏ |
| - ๅฏๅจ่พๅบๆดๆธ
็ฝใไธไธ |
|
|
| ### 2. ็พ่ง็ๅฏๅจๆจชๅน
|
| - ไฝฟ็จ Unicode ๆก็บฟๅญ็ฌฆ็ปๅถๆจชๅน
|
| - ไฝฟ็จ Emoji ๅพๆ ๅขๅผบๅฏ่ฏปๆง |
| - ๆธ
ๆฐๅฑ็คบๅ
ณ้ฎไฟกๆฏ๏ผ |
| - ๐ ๆๅกๅฐๅ |
| - ๐ API ๆๆกฃ |
| - ๐ ๅฅๅบทๆฃๆฅ |
| - ๐ API ๅฏ้ฅ |
| - ๐ค ๆฏๆ็ๆจกๅ |
|
|
| ### 3. ๆกไปถๆงๆฅๅฟ่พๅบ |
| - ๅชๅจ `DEBUG=true` ๆถๆพ็คบ่ฏฆ็ปๆฅๅฟ |
| - GIN ็ Logger ไธญ้ดไปถไป
ๅจ่ฐ่ฏๆจกๅผๅฏ็จ |
| - ๅๅฐ็ไบง็ฏๅข็ๆฅๅฟๅช้ณ |
|
|
| ### 4. ๆบ่ฝๆจกๅๆพ็คบ |
| - ๆจกๅๆฐ้ > 3 ๆถ๏ผๅชๆพ็คบ็ฌฌไธไธชๅๆปๆฐ |
| - ้ฟๅ
ๅฏๅจไฟกๆฏ่ฟ้ฟ |
| - ไฟๆ่พๅบ็ฎๆด |
|
|
| ## ไปฃ็ ๆน่ฟ |
|
|
| ### main.go |
| ```go |
| // ่ฎพ็ฝฎๆฅๅฟ็บงๅซๅ GIN ๆจกๅผ |
| if cfg.Debug { |
| logrus.SetLevel(logrus.DebugLevel) |
| gin.SetMode(gin.DebugMode) |
| } else { |
| logrus.SetLevel(logrus.InfoLevel) |
| gin.SetMode(gin.ReleaseMode) |
| } |
| |
| // ๅชๅจ Debug ๆจกๅผไธๅฏ็จ GIN ็ๆฅๅฟ |
| if cfg.Debug { |
| router.Use(gin.Logger()) |
| } |
| |
| // ๆๅฐๅฏๅจไฟกๆฏ |
| printStartupBanner(cfg) |
| ``` |
|
|
| ### printStartupBanner ๅฝๆฐ |
| ```go |
| func printStartupBanner(cfg *config.Config) { |
| banner := ` |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| โ Cursor2API Server โ |
| โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ |
| ` |
| fmt.Println(banner) |
| |
| fmt.Printf("๐ ๆๅกๅฐๅ: http://localhost:%d\n", cfg.Port) |
| fmt.Printf("๐ API ๆๆกฃ: http://localhost:%d/\n", cfg.Port) |
| fmt.Printf("๐ ๅฅๅบทๆฃๆฅ: http://localhost:%d/health\n", cfg.Port) |
| fmt.Printf("๐ API ๅฏ้ฅ: %s\n", cfg.APIKey) |
| |
| models := cfg.GetModels() |
| if len(models) > 3 { |
| fmt.Printf("๐ค ๆฏๆๆจกๅ: %s ็ญ %d ไธชๆจกๅ\n", models[0], len(models)) |
| } else { |
| fmt.Printf("๐ค ๆฏๆๆจกๅ: %v\n", models) |
| } |
| |
| if cfg.Debug { |
| fmt.Println("๐ ่ฐ่ฏๆจกๅผ: ๅทฒๅฏ็จ") |
| } |
| |
| fmt.Println("\nโจ ๆๅกๅทฒๅฏๅจ๏ผๆ Ctrl+C ๅๆญข") |
| fmt.Println("โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ") |
| } |
| ``` |
|
|
| ## ไฝฟ็จๆนๆณ |
|
|
| ### ็ฎๆดๆจกๅผ๏ผ้ป่ฎค๏ผ |
| ```bash |
| ./cursor2api-go |
| ``` |
|
|
| ๆ่
ไฝฟ็จๅฏๅจ่ๆฌ๏ผ |
| ```bash |
| ./start.sh |
| ``` |
|
|
| ### ่ฐ่ฏๆจกๅผ |
|
|
| **ๆนๅผ 1**: ไฟฎๆน `.env` ๆไปถ |
| ```bash |
| DEBUG=true |
| ``` |
|
|
| **ๆนๅผ 2**: ไธดๆถๅฏ็จ |
| ```bash |
| DEBUG=true ./cursor2api-go |
| ``` |
|
|
| ### ่ฐ่ฏๆจกๅผไผๆพ็คบ |
| - โ
่ฏฆ็ป็ GIN ่ทฏ็ฑไฟกๆฏ |
| - โ
ๆฏไธช่ฏทๆฑ็่ฏฆ็ปๆฅๅฟ |
| - โ
x-is-human token ไฟกๆฏ |
| - โ
ๆต่งๅจๆ็บน้
็ฝฎ |
| - โ
้่ฏๅ้่ฏฏๅค็่ฏฆๆ
|
|
|
| ## ไผๅฟ |
|
|
| 1. **ๆดไธไธ** - ็ฎๆด็่พๅบ้ๅ็ไบง็ฏๅข |
| 2. **ๆดๆธ
ๆฐ** - ๅ
ณ้ฎไฟกๆฏไธ็ฎไบ็ถ |
| 3. **ๆด็พ่ง** - ไฝฟ็จ Unicode ๅ Emoji ๅขๅผบ่ง่งๆๆ |
| 4. **ๆด็ตๆดป** - ๅฏไปฅ้ๆถๅๆข่ฐ่ฏๆจกๅผ |
| 5. **ๆดๅๅฅฝ** - ๆฐ็จๆทๆดๅฎนๆ็่งฃๆๅก็ถๆ |
|
|
| ## ๅ
ผๅฎนๆง |
|
|
| - โ
ๅฎๅ
จๅๅๅ
ผๅฎน |
| - โ
ไธๅฝฑๅ็ฐๆๅ่ฝ |
| - โ
ๅฏไปฅ้ๆถๅๆขๆจกๅผ |
| - โ
ๆฏๆๆๆๅนณๅฐ๏ผWindows/macOS/Linux๏ผ |
|
|
| ## ๆณจๆไบ้กน |
|
|
| 1. **้ฆๆฌกไฝฟ็จ**: ้่ฆๆดๆฐ `.env` ๆไปถ๏ผๆๅ ้คๅ้ๆฐ็ๆ๏ผ |
| 2. **่ฐ่ฏ้ฎ้ข**: ้ๅฐ้ฎ้ขๆถ๏ผๅปบ่ฎฎๅฏ็จ `DEBUG=true` ๆฅ็่ฏฆ็ปๆฅๅฟ |
| 3. **็ไบง้จ็ฝฒ**: ๅปบ่ฎฎไฝฟ็จ `DEBUG=false` ไปฅ่ทๅพๆไฝณๆง่ฝๅ็ฎๆด่พๅบ |
|
|