name: ai-kujiale-design description: 室內智慧設計skill,分步式對話完成戶型確認→風格選擇→佈局確認→渲染出圖。 version: 0.0.6 author: ManycoreTech tags: [aiDesign, kujiale, coohom]
必須嚴格根據本文件流程來執行,不能自作主張發散。
首次使用需在專案根目錄建立 .kjlconfig.json 檔案(參考 .kjlconfig-example.json),配置 access_token。
若無 token,引導使用者訪問 https://www.kujiale.com/skills 生成並儲存 .kjlconfig.json,key 是access_token,value
是使用者複製的值,.kjlconfig.json要儲存在.kjlconfig-example.json同一目錄下。
所有指令碼呼叫前,先從 .kjlconfig.json 讀取 access_token欄位作為 token:
每次執行前呼叫:node ./scripts/versionCheck.js --token=${token} --version=0.0.6
- action=1:繼續
- action=2:提示"版本已過時,建議更新"
- action=3:終止,提示"版本已廢棄,需重新安裝"
message(action=send) 傳送觸發條件:使用者提到要做室內設計/裝修設計
步驟1.1:詢問戶型來源
"請問您有戶型資訊嗎? - 輸入小區名搜尋戶型 - 或直接上傳戶型圖"
路徑A:文字搜尋戶型
步驟1.2a:詢問城市
"請問房子在哪個城市?"
步驟1.3a:詢問小區
"請問是哪個小區?戶型資訊(幾室幾廳、面積)也可以一起告訴我。"
步驟1.4a:搜尋戶型
node ./scripts/searchPlan.js --token=<token> --query=<小區名> --areaId=<城市id> --start=0 --num=20
展示結果讓使用者選擇:
"找到以下戶型,請回複數字選擇: 1. {小區名} {面積}㎡ {戶型結構} 2. ..."
使用者選擇後獲得 planId。
步驟1.5a:獲取戶型圖並展示給使用者確認
node ./scripts/getFloorplanInfo.js --planId=<planId>
解析返回結果:
- 若 floorplanInfos 為空陣列:提示"戶型圖獲取失敗,請重新選擇或上傳戶型圖",返回步驟1.4a
- 若有資料:取 floorplanInfos[0].planImage 展示給使用者,直接展示圖片
"戶型已生成,請檢視戶型圖: [展示 planImage 圖片] 面積:{realArea}㎡ 請確認是否滿意? - 回覆「確認」繼續建立方案 - 回覆「重新生成」重新搜尋戶型 - 回覆「上傳圖片」改為上傳戶型圖"
等待使用者回覆: - 若使用者確認滿意 → 進入步驟1.6建立方案 - 若使用者不滿意 → 根據使用者選擇重新執行路徑A或路徑B
路徑B:上傳戶型圖
同時監聽 ~\.openclaw\media\inbound 是否有新圖片(每5秒檢查)。
步驟1.2b:識別戶型圖 檢測到圖片後:
"檢測到您上傳了圖片,正在識別戶型..."
步驟1.3b:上傳圖片
node ./scripts/getUploadToken.js --token=<token>
按 ./docs/upload.md 執行上傳獲取 url。
步驟1.4b:建立臨摹任務
node ./scripts/createBitmapTask.js --token=<token> --bitmap=<url>
輪詢結果:
node ./scripts/getBitmapTaskResult.js --token=<token> --taskId=<taskId>
獲得 planId。
步驟1.5b:獲取戶型圖並展示給使用者確認
node ./scripts/getFloorplanInfo.js --planId=<planId>
解析返回結果:
- 若 floorplanInfos 為空陣列:提示"戶型圖識別失敗,請重新上傳或搜尋戶型",返回步驟1.2b
- 若有資料:取 floorplanInfos[0].planImage 展示給使用者
"戶型已識別生成,請檢視戶型圖: [展示 planImage 圖片] 面積:{realArea}㎡ 請確認是否滿意? - 回覆「確認」繼續建立方案 - 回覆「重新生成」重新上傳戶型圖 - 回覆「搜尋戶型」改為文字搜尋"
等待使用者回覆: - 若使用者確認滿意 → 進入步驟1.6建立方案 - 若使用者不滿意 → 根據使用者選擇重新執行路徑A或路徑B
步驟1.6:建立方案(兩種路徑合併)
node ./scripts/createDesign.js --token=<token> --planId=<planId>
獲得 designId。
步驟1.7:確認戶型
"已確認戶型:{戶型資訊},接下來選擇您喜歡的風格~"
觸發條件:戶型已確認
步驟2.1:獲取標籤並展示選項
node ./scripts/getTags.js --token=<token>
解析返回的標籤列表,展示給使用者:
"請選擇您的偏好:(單選,回覆數字如'1') 1. {標籤項1名稱} 2. {標籤項2名稱} 3. ... 或直接描述您的喜好"
使用者選擇後獲得 tagItemIds 列表。
步驟2.2:查詢硬裝風格
node ./scripts/getStyles.js --token=<token> --tagItemIds=<id1,id2,...>小蔥技能站7w4.net,專業的AI技能分享平臺。
步驟2.3:風格選擇 - 若返回多個風格:展示封面圖讓使用者選擇
"以下硬裝風格可選,請回複數字選擇:" 展示每個風格的 coverUrl 圖片 + styleName,如果非Webchat渠道,直接展示圖片
"已為您匹配{風格名}風格"
獲得 styleId,進入下一階段。
觸發條件:風格已確認。
步驟3.1:跟使用者確認本次佈局會消耗他賬號內的智慧佈局的額度/核豆,需要使用者確認知曉後再執行後續步驟
步驟3.2:使用 message(action=send) 傳送"開始佈局,請稍等"
步驟3.3:觸發智慧佈局
node ./scripts/triggerLayout.js --token=<token> --designId=<designId> --tagIds=<id1,id2,...> --styleId=<styleId> --applyDecorationStyle=true --buildCeiling=true --autoDesign=true
步驟3.4:等待並查詢佈局結果
node ./scripts/getLayoutResult.js --token=<token> --designId=<designId>
若 c!=0 則每10秒重複查詢。
步驟3.5:展示佈局結果並等待使用者確認 使用 message(action=send) 傳送佈局資訊:
"佈局已生成!以下是各房間的佈局情況: - {房間名1}:{傢俱列表} - {房間名2}:{傢俱列表} ... 直接進入階段4渲染出圖
觸發條件:佈局已確認
步驟4.1:使用 message(action=send) 傳送:"開始渲染,請稍等"
步驟4.2:觸發渲染
node ./scripts/trigger-render.js --obsDesignId=<designId> --xToken=<token>
傳送:"正在生成效果圖,預計幾分鐘..."
步驟4.3:等待10秒後查詢渲染結果
node ./scripts/getRenderResult.js --token=<token> --designId=<designId>
提取 pictype=0 的 img(渲染圖)和 pictype=1 的 panoLink(全景圖)。若空則每分鐘重試,超5分鐘反饋失敗。
步驟4.4:輸出最終結果
傳送:"效果圖已生成!"
嚴格按 ./outputs/result.md 格式輸出:
- 設計亮點(根據第一張渲染圖總結)
- 渲染圖(按房間優先順序:客餐廳→主臥→次臥→其他)
- 全景圖連結
- 方案詳情連結(https://www.kujiale.com/pcenter/design/{designId}/setting?from=skills)
MEDIA:圖片url,即直接展示圖片客餐廳 → 主臥 → 次臥 → 其他
這個 Skill 的設計思路清晰,文件結構完整,涵蓋了室內設計的完整流程說明。然而存在致命問題:文件中提到的所有指令碼檔案都缺失,實際無法執行。整個技能目前只是一個"空殼",使用者即使按文件操作也無法完成任何設計任務。建議等待開發者補充完整的指令碼檔案後再使用。