่ฟๆฏ uctoo-api-skill ็ V2 ็ๆฌ๏ผ้็จๅฎๅ จ้ๆ็ๆถๆ๏ผ็ๆญฃๅๆฅๅคงๆจกๅ็่ฏญไน็่งฃๅๆจ็่ฝๅใ
V1 (ๆงๆถๆ):
- ็กฌ็ผ็ ๅ ณ้ฎ่ฏๆๅ
- ๅบๅฎ็ API ่ฐ็จ้ป่พ
- ๅคง้็ไปฃ็ ๅฎ็ฐ
- ่ๅผฑไธ้พไปฅ็ปดๆค
V2 (ๆฐๆถๆ):
- ๅคงๆจกๅ้ฉฑๅจ็่ฏญไน็่งฃ
- ็ตๆดป็ API ้ๆฉๅๅๆฐ็ป่ฃ
- ๆ็ฎไปฃ็ ๅฎ็ฐ
- ๆไบ็ปดๆคๅๆฉๅฑ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ็จๆท่พๅ
ฅ โ
โ "่ฏทไฝฟ็จ demo ่ดฆๅท 123456 ็ปๅฝ" โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๅคงๆจกๅ๏ผ็ฅ่ฏๅฑ + ๆจ็๏ผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ 1. ็่งฃ็จๆทๆๅพ๏ผ้่ฆ็ปๅฝ โ โ
โ โ 2. ่ฏๅซๅๆฐ๏ผusername=demo, password=123456 โ โ
โ โ 3. ้ๆฉ API๏ผPOST /api/uctoo/auth/login โ โ
โ โ 4. ็ป่ฃ
่ฏทๆฑไฝ๏ผ{"username":"demo","password":"123456"}โ โ
โ โ 5. ่ฐ็จ HTTP ๅทฅๅ
ทๆง่ก่ฏทๆฑ โ โ
โ โ 6. ่งฃๆๅๅบๅนถ็ๆๅๅฅฝๅๅค โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ HTTP ๅทฅๅ
ท๏ผ่ฟๆฅๅฑ๏ผ โ
โ ๆง่กๅฎ้
็ API ่ฏทๆฑ โ
โโโโโโโโโโโโโโโโโโโโโโโโฌโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ UCTOO ๅ็ซฏ API โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
uctoo-api-skill/
โโโ SKILL.md # ไธปๆ่ฝๆไปถ๏ผ็ฅ่ฏๅฑ๏ผ
โโโ README.md # ๆฌๆไปถ
โโโ Main.cj # ๅ
ฅๅฃ็น๏ผ็จไบๆต่ฏ๏ผ
โโโ references/ # ๅ่ๆๆกฃ
โ โโโ api_spec.md # ๅฎๆด็ API ่ง่
โ โโโ examples.md # ไฝฟ็จ็คบไพ
โ โโโ uctoo_api_design.md # API ่ฎพ่ฎกๆๆกฃ
โโโ scripts/ # ่ๆฌๅทฅๅ
ท
โ โโโ api_client.py # HTTP ๅฎขๆท็ซฏ๏ผไธป่ฆไฝฟ็จ๏ผ
โ โโโ api_client.js # JavaScript ็ๆฌ๏ผๅค็จ๏ผ
โ โโโ test_api.py # API ๆต่ฏ่ๆฌ
โโโ src/ # ๆบไปฃ็
โ โโโ uctoo_api_skill.cj # ๆ็ฎๆ่ฝๅฎ็ฐ
โโโ backup-v1/ # V1 ็ๆฌๅคไปฝ
โโโ ...
python scripts/test_api.pypython scripts/api_client.py POST "/api/uctoo/auth/login" '{"username":"demo","password":"123456"}'ๆ่ฝไผ้่ฟ Agentskills ่ฟ่กๆถ่ชๅจๅ ่ฝฝ๏ผๅคงๆจกๅไผๆ นๆฎ SKILL.md ไธญ็่ฏดๆๆฅไฝฟ็จๅฎใ
SKILL.md ้็จๆธ่ฟๅผๆซ้ฒ๏ผProgressive Disclosure๏ผๅๅ๏ผ
- ๅฟซ้ๆซๆไฟกๆฏ
- ๆ่ฝๅ็งฐใๆ่ฟฐใๅ ๆฐๆฎ
- ๅ ่ฎธ็ๅทฅๅ ทๅ่กจ
- ่ฏฆ็ป่ฏดๆ
- API ๅฟซ้ๅ่
- ไฝฟ็จ็คบไพ
- ๅทฅไฝๆต็จ
- ๅฎๆด็ API ่ง่
- ๆดๅคไฝฟ็จ็คบไพ
- ๆทฑๅ ฅ็ๆๆฏๆๆกฃ
-
ๅ ๅๅฉ็จๅคงๆจกๅ่ฝๅ
- ่ฏญไน็่งฃใๆจ็ใๅณ็ญ้ฝ็ฑๅคงๆจกๅๅฎๆ
- ่ฝๅค็ๅ็ง่ช็ถ่ฏญ่จๅไฝ
-
ๆ้ซ็็ตๆดปๆง
- ไธ้่ฆ็กฌ็ผ็ ๆฏไธช API ็ๅค็้ป่พ
- ๅคงๆจกๅๅฏไปฅ่ช้ๅบๅ็ง็จๆท่พๅ ฅ
-
ๆไบ็ปดๆค
- API ๅๆดๅช้ๆดๆฐๆๆกฃ
- ไธ้่ฆไฟฎๆนไปฃ็
-
ๆไบๆฉๅฑ
- ๆฐๅข API ๅช้ๅจๆๆกฃไธญๆทปๅ ่ฏดๆ
- ๅคงๆจกๅไผ่ชๅจๅญฆไผไฝฟ็จๆฐ API
-
็ฌฆๅๆไฝณๅฎ่ทต
- ๅฎๅ จ็ฌฆๅ Agentskills ๆ ๅ
- ้็จๆธ่ฟๅผๆซ้ฒๅๅ
ไป V7.0 ็ๆฌๅผๅง๏ผ็ณป็ปๅฎ็ฐไบไผ่ฏ็บง่ชๅจ Token ็ฎก็ๆบๅถ๏ผๅฝปๅบ่งฃๅณไบๅคงๆจกๅๅจๅค่ฝฎๅฏน่ฏไธญๆ ๆณๆญฃ็กฎไผ ้่ฎค่ฏ Token ็้ฎ้ขใ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ WebSocket Session โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ SessionContext โ โ
โ โ - setCurrentSession(sessionId) โ โ
โ โ - getAccessToken() โ TokenManager.getAccessToken() โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ TokenManager โ โ
โ โ - setToken(sessionId, tokenInfo) โ โ
โ โ - getAccessToken(sessionId) โ โ
โ โ - parseLoginResponse(response) โ โ
โ โ - isLoginEndpoint(url) โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ โ
โ โผ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ โ HttpTool โ โ
โ โ 1. ๆฃๆต็ปๅฝ่ฏทๆฑ โ ่ชๅจไฟๅญ token โ โ
โ โ 2. ๆฃๆต้็ปๅฝ่ฏทๆฑ โ ่ชๅจๆณจๅ
ฅ Authorization header โ โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
| ็ปไปถ | ๆไปถ | ๅ่ฝ |
|---|---|---|
| TokenInfo | src/tool/token_manager.cj |
Token ไฟกๆฏๅฐ่ฃ ๏ผๅ ๅซ่ฟๆๆถ้ดๆฃๆฅ |
| TokenManager | src/tool/token_manager.cj |
Token ๅญๅจๅ็ฎก็๏ผๆฏๆๅคไผ่ฏ |
| SessionContext | src/tool/token_manager.cj |
ๅฝๅไผ่ฏไธไธๆ๏ผ็บฟ็จๅฎๅ จ |
| HttpTool | src/tool/http_tool.cj |
่ชๅจ token ไฟๅญๅๆณจๅ ฅ |
// HttpTool ๆฃๆตๅฐ็ปๅฝ่ฏทๆฑ
if (tokenManager.isLoginEndpoint(url)) {
// ่งฃๆๅๅบๅนถไฟๅญ token
let tokenInfoOpt = tokenManager.parseLoginResponse(responseJson)
match (tokenInfoOpt) {
case Some(tokenInfo) =>
tokenManager.setToken(sessionId, tokenInfo)
LogUtils.info("[HttpTool] Auto-saved token for session")
case None => ()
}
}// HttpTool ๆฃๆตๅฐ้็ปๅฝ่ฏทๆฑ
if (!hasAuthorization && !tokenManager.isLoginEndpoint(url)) {
let tokenOpt = sessionContext.getAccessToken()
match (tokenOpt) {
case Some(token) =>
headers.add("Authorization", "Bearer ${token}")
LogUtils.info("[HttpTool] Auto-injected Authorization header")
case None => ()
}
}// WebSocket ไผ่ฏๅ
ณ้ญๆถ
tokenManager.removeToken(sessionId)
sessionContext.clearCurrentSession()- ๅฏนๆจกๅ้ๆ๏ผๅคงๆจกๅๆ ้ๅ ณๅฟ token ็ฎก็๏ผๅช้ๆญฃๅธธ่ฐ็จ API
- ๅฏ้ ๆง้ซ๏ผไธไพ่ตๅคงๆจกๅ็่ฎฐๅฟ่ฝๅ๏ผ้ฟๅ token ไธขๅคฑๆๆ ผๅผ้่ฏฏ
- ๆฏๆๅค็จๆท๏ผๆฏไธช WebSocket ไผ่ฏ็ฌ็ซ็ฎก็ token
- ่ชๅจ่ฟๆๅค็๏ผTokenInfo ๅ ๅซ่ฟๆๆถ้ด๏ผ่ชๅจๆฃๆฅ token ๆๆๆง
- ็บฟ็จๅฎๅ จ๏ผไฝฟ็จ Mutex ไฟๆคๅ ฑไบซ็ถๆ
็จๆทๅช้ๆญฃๅธธๅฏน่ฏ๏ผ็ณป็ป่ชๅจๅค็่ฎค่ฏ๏ผ
็จๆท: ่ฏทไฝฟ็จ demo ่ดฆๅท 123456 ็ปๅฝ
ๅฉๆ: ็ปๅฝๆๅ๏ผ็จๆทไฟกๆฏ๏ผ...
็จๆท: ็ผ่พ id ไธบ fd0a410a-xxx ็ๅฎไฝ๏ผๅฐ link ๆนไธบ uctoo.com
ๅฉๆ: ็ผ่พๆๅ๏ผ # ็ณป็ป่ชๅจๆณจๅ
ฅไบ Authorization header
- ็ปๅฝ็ซฏ็นๆฃๆต๏ผ้่ฟ URL ไธญๆฏๅฆๅ
ๅซ
/auth/loginๆ/auth/signinๅคๆญ - Token ่งฃๆ๏ผไป JSON ๅๅบไธญๆๅ
access_tokenใrefresh_tokenใuser.idใuser.username - ้ป่ฎค่ฟๆๆถ้ด๏ผ24 ๅฐๆถ๏ผ86400000 ๆฏซ็ง๏ผ
- Header ๆณจๅ
ฅๆ ผๅผ๏ผ
Authorization: Bearer {token}
ๅฝ็จๆทๆๅ "uctoo"ใ"็ปๅฝ"ใ"็จๆท็ฎก็" ็ญๅ ณ้ฎ่ฏๆถ๏ผๆ่ฝไผ่ขซๆฟๆดปใ
ๅคงๆจกๅ่ฏปๅ SKILL.md ไธญ็่ฏดๆ๏ผ็่งฃ๏ผ
- ๆๅชไบ API ๅฏ็จ
- ๅฆไฝ่ฐ็จ่ฟไบ API
- ้่ฆไปไนๅๆฐ
- ๅฆไฝๅค็ๅๅบ
ๅคงๆจกๅๆ นๆฎ็จๆท้ๆฑ๏ผ
- ้ๆฉๅ้็ API
- ไป็จๆท่พๅ ฅไธญๆๅๅๆฐ
- ่ฐ็จ Python ่ๆฌๅ้ HTTP ่ฏทๆฑ
- ่งฃๆ API ๅๅบ
- ็ๆๅๅฅฝ็่ช็ถ่ฏญ่จๅๅค
| ็นๆง | V1 | V2 |
|---|---|---|
| ไปฃ็ ้ | ๅคง้๏ผ10+ ๆไปถ๏ผ | ๆๅฐ๏ผ2 ไธชๆไปถ๏ผ |
| ่ฏญไน็่งฃ | ็กฌ็ผ็ ๅ ณ้ฎ่ฏ | ๅคงๆจกๅ่ช็ถ่ฏญ่จ็่งฃ |
| API ้ๆฉ | ๅบๅฎ้ป่พ | ๅคงๆจกๅๅจๆๅณ็ญ |
| ๅๆฐๆๅ | ๆญฃๅ่กจ่พพๅผ | ๅคงๆจกๅๆบ่ฝๆๅ |
| ๅฏ็ปดๆคๆง | ไฝ๏ผ้ๆนไปฃ็ ๏ผ | ้ซ๏ผๅช้ๆนๆๆกฃ๏ผ |
| ๅฏๆฉๅฑๆง | ไฝ | ้ซ |
| ็ตๆดปๆง | ไฝ | ๆ้ซ |
-
Token ็ฎก็
- ็ปๅฝๆๅๅ๏ผๅคงๆจกๅไผไฟๅญ access_token
- ๅ็ปญ่ฏทๆฑ้่ฆไฝฟ็จ่ฟไธช token
-
API ๆ ผๅผ
- ๆๆ API ้ฝไฝฟ็จ
/api/uctoo/ๅ็ผ - POST ่ฏทๆฑ็่ฏทๆฑไฝๅฟ ้กปๆฏๆๆ็ JSON
- ๆๆ API ้ฝไฝฟ็จ
-
้่ฏฏๅค็
- ๅคงๆจกๅไผ่ชๅจๅค็ API ้่ฏฏ
- ๅ็จๆทๆไพๅๅฅฝ็้่ฏฏไฟกๆฏๅ่งฃๅณๆนๆก
- ๆต่ฏ้่ฟ่ๅคฉ็้ขไฝฟ็จๆ่ฝ
- ้ช่ฏ็ปๅฝๅ่ฝ
- ๆต่ฏๅบๆฌ็ CRUD ๆไฝ
- ๆ นๆฎๅฎ้ ไฝฟ็จๆ ๅตไผๅ SKILL.md