← Financial Cloud Cloud Cloud Club · 建構文章

極點宏觀|Financial Cloud Cloud · 建構文章

使用 Kiro 建置:他加祿語 卡片的文法與發音補強管線工作坊

系列: Kiro 工作坊

文章: 05

文章
Kiro 工作坊
01 使用 Kiro 建置:他加祿語學習 App 的提示優先產品設計工作坊
Kiro 工作坊
02 使用 Kiro 建置:他加祿語 學習 App 的教育優先開發技巧工作坊
Kiro 工作坊
03 使用 Kiro 建置:他加祿語 學習 App 的深入開發流程工作坊
Kiro 工作坊
04 使用 Kiro 建置:將 他加祿語 學習 App 在地化為中文變體工作坊
Kiro 工作坊
05 使用 Kiro 建置:他加祿語 卡片的文法與發音補強管線工作坊
Kiro 工作坊
06 使用 Kiro 建置:他加祿語 學習 App 中可審查的獨特額外例句工作坊
Kiro 工作坊
07 與 Kiro 同行:晶圓廠工程健康度 Hook 工作坊
Kiro 工作坊
08 與 Kiro 同行:蝕刻製程視窗風險測試自動化工作坊
Kiro 工作坊
09 與 Kiro 同行:黃光微影漂移風險開發工作坊
Kiro 工作坊
10 工程團隊入門 — 日常工廠值班使用 fab spc drift sync portal
Kiro 工作坊
11 工程團隊附錄 — fab spc drift sync portal 的日常工廠值班使用
Kiro 工作坊
12 Kiro:規格驅動工廠軟體的現場工程工作坊
Kiro 工作坊
13 Kiro:實作 Lab — 從零建置具型別的 Factory Risk Portal
Kiro 工作坊
14 Kiro:工程開發人員的提示、程式碼和型別標準手冊
Kiro 工作坊
15 Kiro:為什麼強 React 提示可以防止型別宣告錯誤啟動
Kiro 工作坊
17 與 Kiro 一起建構:建立工廠自動化入口網站 React UI
Kiro 工作坊
18 與 Kiro 一同建構:打造工廠自動化入口網站背後的自動化分析引擎
Kiro 工作坊
19 與 Kiro 一起實作:將 AI 工廠自動化輔助程式新增至工廠自動化入口網站
Kiro 工作坊
21 Kiro:2 小時專業開發人員工作坊指南
Kiro 工作坊
22 Kiro:從零建置 Fab SPC Drift Synchronization Portal
Kiro 工作坊
23 Kiro:提示詞庫與深度程式碼說明附錄
Kiro 工作坊
30 與 Kiro 一同建構:建立工廠自動化入口網站 UI
Kiro 工作坊
31 與 Kiro 一同建構:打造工廠自動化入口網站背後的自動化分析引擎
Kiro 工作坊
32 與 Kiro 一起實作:為工廠自動化入口網站增添 AI 工廠自動化助理
Kiro 工作坊
33 與 Kiro 一起開發:重建 CME Direct 風格的量化損益排行榜 UI
Kiro 工作坊
34 與 Kiro 一起開發:重建損益排行榜背後的量化分析引擎
Kiro 工作坊
35 與 Kiro 一起建構:適用於量化排行榜的 AWS AI 驅動交易台助理
Kiro 工作坊
36 單頁交易平台 SOP
Kiro 工作坊
AgentCore
A1 使用 AgentCore 與 Strands 建構:Gateway MCP 工具織網開發者工作坊
AgentCore
A2 使用 AgentCore 與 Strands 建構:受治理的多 Agent 風險系統開發者工作坊
AgentCore
A3 使用 AgentCore 與 Strands 建構:執行期主權風險代理人開發者工作坊
AgentCore
模擬考場
E1 用 Vibe Coding 打造多語言 AWS 證照模擬試題上線系統
模擬考場
E2 利用 Vibe Coding 開發技巧打造 AWS 證照模擬練習室
模擬考場
E3 打造靜態 AWS 模擬考場背後的練習引擎
模擬考場
Amazon Q
Q1 Amazon Q:ACM 憑證自動更新的CloudShell優先開發人員工作坊
Amazon Q
Tagalog 練習室
T1 為 AWS Manila Community Day 打造 Tagalog 學習 App:提示詞優先的產品設計
Tagalog 練習室
T2 為 AWS Manila Community Day 打造 Tagalog 學習 App,採用教育優先的開發提示
Tagalog 練習室
T3 為 AWS Manila Community Day 打造 Tagalog 學習 App 的開發流程深度解析
Tagalog 練習室
T4 將 Tagalog 學習 App 在 AWS Manila Community Day 情境中在地化為中文版本
Tagalog 練習室
T5 為 AWS Manila Community Day 打造 Tagalog 卡片打造文法與發音補強流程
Tagalog 練習室
T6 為 AWS Manila Community Day 打造 Tagalog 學習 App 的 Extra Examples 更獨特且可審閱
Tagalog 練習室
路線圖
R1 企業級 Data Analytics Roadmap 一百個深度情境題
路線圖
R2 前端開發路線圖:真實企業場景
路線圖
香港 Community Day
C1 伴隨 AWS Community Day 的香港週末:從雲端技術論壇到維港璀璨夜景
香港 Community Day
C2 講者的奢華週末:分享您的 AWS 故事,讓香港成為您的專屬舞台
香港 Community Day
C3 香港七十二小時:AWS Community Day 講者的極致之旅
香港 Community Day
馬尼拉 Community Day
C4 AWS Community Day Manila:一場連結雲端技術、城市文化與真摯友誼的快樂週末
馬尼拉 Community Day
C5 AWS Community Day Manila:雲端建立者在菲律賓感受最幸福的精神
馬尼拉 Community Day
C6 AWS Community Day Manila:在快樂之城建構、打破、重來,並找到歸屬
馬尼拉 Community Day
C7 菲律賓馬尼拉初次造訪建議
馬尼拉 Community Day
菲律賓 × 香港
C8 菲律賓香港資本市場升級
菲律賓 × 香港
回測
B1 使用 Bedrock AgentCore 與 Strands Agents 建立機構級 Amazon 純做多 (Long-Only) 回測代理
純做多 AMZN 代理:AgentCore、Strands 與可稽核的 Backtrader 帳本。
B2 使用 Backtrader、AgentCore 與 Strands Agents 建立具市況感知能力的 Amazon 部位管理
把市況當成部位控制,而不是圖表註解。
B3 使用 Nasdaq、S&P 500、Dow、AgentCore 與 Strands 建立相對於基準的 Amazon 進出場時機系統
相對 Nasdaq、S&P 500 與道瓊來判斷 AMZN 時機。
B4 使用 Bedrock AgentCore、Strands Agents 與 Backtrader 建立受治理的 Amazon 交易歷史工廠(Trade-History Factory)
把回測做成可稽核的交易歷史工廠。
B5 使用 Bedrock AgentCore 與 Strands Agents 建立智慧代理型 (Agentic) Amazon 回測營運模型 [Part 1]
先建立營運模型,再爭論結果。
B6 為 Amazon 擇時與部位管理建立客製化 Cerebro 程式碼說明 [第 2 部分]
先講 Cerebro 引擎,再講圖表。
B7 為 Amazon 策略結果與經驗教訓建立交易員審閱紀錄 [Part 3]
把策略排名寫成交易員審閱紀錄。
B8 使用 AgentCore 與 Strands 建立受治理的 FSI Amazon 部位管理 Playbook [Part 4]
受治理的 FSI Amazon 部位管理手冊。
B9 使用 Amazon Bedrock AgentCore 建立主權風險交易代理,分析殖利率差、FX 避險與債務重新定價
主權風險代理:殖利率差、外匯避險與債務重定價。
B11 建置現代波動率交易與合法泰國復原規劃代理程式:記憶體驅動的 Strands 多代理程式風險防護系統
記憶驅動的 Strands 代理:波動率與泰國復原規劃。
B12 使用 Amazon Bedrock AgentCore Memory 建構空頭跨式部位交易風險治理
空頭跨式部位的交易風險治理。
B13 在 Amazon EKS 上建構生產環境就緒的信用與收益質押 AI 智能體
在 EKS 上跑生產級信用與收益質押代理。
挑戰
01 週末生產力挑戰:Fab SPC 漂移同步入口網站
Fab SPC 漂移審查與建議入口網站。
02 週末生產力挑戰:Quant P&L Commander — AWS 上由 AI 驅動的交易生產力入口網站
AWS 上由 AI 驅動的交易生產力入口網站。
03 週末煩人的任務挑戰:交易台在雲端、鏈上、空中執行摘要
DeskPulse 日常交易執行摘要。
04 週末 Agent 挑戰:上午 6 點交易風險審查
無人值守、以證據為基礎的晨間交易風險簡報。
05 Weekend Creative Challenge: Leadership Card Game
瀏覽器版創意引導卡牌。
06 Full Stack Challenge: Community Day Board App
瀏覽器版活動溝通空間。
領導力卡牌
01 Leadership Card Game: 雲端還沒自動化的最後一項本事:像領導者一樣說話
寫給 建構者的現場隨筆——談語言、勇氣,以及 Leadership Card Game
02 領導力回合的解剖:Leadership Card Game 實際怎麼玩
給 建構者的引導員實地指南——讓演練嵌進真實會議
03 Leadership Card Game: 當機會不再屬於主辦者
寫給 建構者的現場隨筆:權力轉移、多語領導力練習夜,以及走完入口、資源、敘事的職涯弧線
04 週末創意挑戰:Leadership Card Game
一篇建構者手記:願景、架構,以及週末創意挑戰教會我的事
05 從週末挑戰專案到 $1,386 群眾募資:改變你在職場現身方式的領導力練習
一個週末做出的作品,變成 600 張卡的線上領導力練習室,並募到 $1,386。
06 從週末挑戰專案到 $1,386 群眾募資:進入科技產業的第一天路徑
一個週末挑戰如何變成具備 600 張卡、由 AWS 驅動的多語產品,並募到 $1,386?
07 從週末挑戰專案到 $1,386 群眾募資:用轉移機會建立專業品牌
一個週末挑戰把領導想法做成能跑的多語產品,並募到 $1,386。
08 Leadership Card Game — 群眾募資活動
募資目標: HKD 5,000 已募金額: HKD 1,386 距目標還差: HKD 3,614 進度: 28% 創作者: D.C. Dan · L.L. Diana · L.K. Lva 所在地: 日本、香港、新加坡 投資人權益: 即期價值、私密會員卡牌編輯器雲(Private Membership Card…
09 PR/FAQ 01 — Leadership Card Game 面向社群建構者正式推出
「逆向工作法」文件 · 對外新聞稿 + FAQ 產品: Leadership Card Game 受眾: 社群經理、志願組織者、職涯早期建構者
10 PR/FAQ 02 — 企業引導員採用 Leadership Card Game 進行現場領導力演練
「逆向工作法」文件 · 對外新聞稿 + FAQ 產品: Leadership Card Game 受眾: 學習與發展負責人、人員管理者、敏捷教練、企業引導員
10 PR/FAQ 03 — 多語 Leadership Card Game 為建構者擁有權開放全球練習室
「逆向工作法」文件 · 對外新聞稿 + FAQ 產品: Leadership Card Game 受眾: 全球 建構者、雙語社群、跨境產品團隊、開源導師
AWS Builder Center
01 AWS Builder Center、社群精神與 AWS Builder Jacket
霓虹訊號、共享創意,以及為建構者打造的外套。
02 走進 AWS Builder Center:一座能學習、貢獻,也讓人有歸屬感的全球技術平台
一段精彩旅程,不一定從機場開始。
03 AWS Community Builder 的巨大成功
當建構者公開分享,整個社群就會一起前進。
04 AWS Builder Center 的巨大成功
一座為好奇心打造、充滿活力的全球街區。
05 週末走進 AWS Builder Center:從社群靈感到令人難忘的 AWS Builder Jacket
星期五晚上,開始於建構者熟悉的感覺:有一個點子,正卡在問題與可能性之間。

目標受眾: 負責建置內容豐富化管線與教育工具的專業開發人員

時長: 2 小時

主要 AWS AI 服務: Kiro

專案產出: 一個由 Kiro 引導的確定性豐富化管線,用於為他加祿語卡片加入文法拆解與發音指南。

僅限教育工程研討會。這是一項軟體架構練習,而非流程發佈建議。

工作坊摘要

本工作坊將引導開發人員完成為他加祿語卡片豐富化文法筆記與發音支援的工作。 參與者將使用 Kiro 定義確定性邊界、建置詞彙表、生成輔助文字、修補結構化內容或 HTML,並驗證覆蓋率。 這些練習強調了可審查的語言輔助機制:雖然自動化可以準備解釋內容,但人工審查能確保面向學習者的文法、語音引導與範例在整體上保持清晰、準確、一致且實用。

工作坊目標

開發人員將建置一個管線,用於擷取他加祿語句子、加入文法解釋、生成發音指南、修補 HTML 或結構化卡片資料,並驗證覆蓋率。

2 小時議程

時間 模組 開發人員產出
0–10 分鐘 Kiro 設定 建立導向文件與規格書
10–25 分鐘 豐富化合約 定義輔助輸出格式
25–45 分鐘 詞彙表 建置本地字詞定義
45–65 分鐘 發音機制 加入精選對應表與備用規則
65–90 分鐘 HTML 修補 豐富化額外範例區塊
90–110 分鐘 驗證機制 檢查遺漏的 span 與區塊
110–120 分鐘 Hook 與審查 自動化檢查並建立交付檔案

步驟 1 — 建立用於豐富化邊界的 Kiro 導向設定

開發人員任務

● 在 Kiro 中生成導向文件。

● 加入豐富化特定規則。

● 要求 Kiro 列出哪些應該是確定性的,哪些需要審查。

● 在撰寫腳本前提交(commit)導向設定。

Kiro 提示詞範例

建立一個用於他加祿語文法與發音豐富化管線的導向文件。使用確定性 Python 輔助程式、主題詞彙表、發音對應表、備用規則、BeautifulSoup 修補、驗證檢查以及母語人士審查提醒。

系統設計決策

● 在編碼前使「步驟 1 — 建立用於豐富化邊界的 Kiro 導向設定」保持顯性: 專業開發人員在使用 AI 輔助工程時不應依賴隱含的假設。 工作坊首先將規則寫入導向設定或規格書中,使 Kiro 具備持久的專案背景資訊。 這能讓生成的程式碼更具一致性,為審查員提供具體檢查的依據,並避免在每次對話中重複解釋。 此決策也有助於新進開發人員理解檔案存在的原因、解決了什麼問題,以及哪些行為是被允許或禁止的。

● 保持實作具備確定性且可審查: 雖然 Kiro 可以協助生成程式碼、測試與文件,但工作坊的產出應具備可重複驗證的特點。 具備確定性的腳本、明確的組態、穩定的綱要(schemas)與驗證報告能讓結果更容易除錯。 當每項轉換都有可見的輸入與輸出時,開發人員就能審查差異(diffs)、重新執行檢查,並向其他工程師解釋該系統。 這對於語言學習內容尤為重要,因為正確性與文化背景需要人工審查。

● 將驗證附加至工作流程,而非僅限於最終的展示: 工作坊將驗證視為系統設計的一部分。 每個步驟都包含檢查、報告或 Hook,以便在造成變更的當下就能發現缺陷。 這種方法讓 Kiro 能夠同時擔任編碼助理與品質審查員,同時讓開發人員保持主導權。 這是一個實用的專業工作流程:用規格書計劃、用導向設定引導、以小型任務實作、驗證輸出並記錄交付檔案。

程式碼範例 — .kiro/steering/enrichment.md

# 豐富化導向設定

- 保持文法與發音豐富化具備確定性。
- 對已知字詞使用詞彙表字典。
- 對常用字詞使用發音對應表。
- 對未知字詞使用透明的備用規則。
- 請勿在豐富化過程中重寫他加祿語句子。
- 在母語人士審查完成前,將輔助輸出標記為草稿(draft)。
- 在每個批次執行後印出驗證計數。

程式碼說明

● 業務邏輯: 導向設定檔案定義了豐富化的範疇與品質預期。

● 程式碼邏輯: Kiro 在生成腳本、測試、Hook 與文件時,會將該檔案作為持久的背景資訊。

● 預期結果: Kiro 生成的豐富化程式碼應保留他加祿語句子,並加入可審查的輔助區塊。


步驟 2 — 建置本地文法詞彙表

開發人員任務

● 建立 glossary.py。

● 加入常用字詞,甚至活動相關的外來語(loanwords)。

● 加入透明的備用行為。

● 要求 Kiro 生成詞彙表測試。

Kiro 提示詞範例

建立一個適合初學者的他加祿語詞彙表模組。包含 po, opo, saan, ang, paki, puwede, salamat, tubig, bayad, workshop, badge, registration, volunteer。針對未知字詞回傳簡短的解釋與備用文字。

系統設計決策

● 在編碼前使「步驟 2 — 建置本地文法詞彙表」保持顯性: 專業開發人員在使用 AI 輔助工程時不應依賴隱含的假設。 工作坊首先將規則寫入導向設定或規格書中,使 Kiro 具備持久的專案背景資訊。 這能讓生成的程式碼更具一致性,為審查員提供具體檢查的依據,並避免在每次對話中重複解釋。 此決策也有助於新進開發人員理解檔案存在的原因、解決了什麼問題,以及哪些行為是被允許或禁止的。

● 保持實作具備確定性且可審查: 雖然 Kiro 可以協助生成程式碼、測試與文件,但工作坊的產出應具備可重複驗證的特點。 具備確定性的腳本、明確的組態、穩定的綱要(schemas)與驗證報告能讓結果更容易除錯。 當每項轉換都有可見的輸入與輸出時,開發人員就能審查差異(diffs)、重新執行檢查,並向其他工程師解釋該系統。 這對於語言學習內容尤為重要,因為正確性與文化背景需要人工審查。

● 將驗證附加至工作流程,而非僅限於最終的展示: 工作坊將驗證視為系統設計的一部分。 每個步驟都包含檢查、報告或 Hook,以便在造成變更的當下就能發現缺陷。 這種方法讓 Kiro 能夠同時擔任編碼助理與品質審查員,同時讓開發人員保持主導權。 這是一個實用的專業工作流程:用規格書計劃、用導向設定引導、以小型任務實作、驗證輸出並記錄交付檔案。

程式碼範例 — glossary.py

import re

DEFINITIONS = {
    "po": "politeness marker used to show respect",
    "opo": "polite form of yes",
    "saan": "where; asks for a place or direction",
    "ang": "focus marker before the main noun or idea",
    "paki": "please; softens a request",
    "puwede": "may or can",
    "salamat": "thank you",
    "tubig": "water",
    "bayad": "payment",
    "workshop": "English loanword used locally for a workshop session",
    "registration": "English loanword used for event check-in"
}

def token_key(word):
    return re.sub(r"[^a-zA-ZñÑáéíóúÁÉÍÓÚ]", "", word).lower()

def explain_word(word):
    key = token_key(word)
    return DEFINITIONS.get(key, f"needs review; useful local word: {word}")

def grammar_breakdown(sentence):
    seen = set()
    output = []
    for word in sentence.split():
        key = token_key(word)
        if key and key not in seen:
            seen.add(key)
            output.append((word.strip(".,?!"), explain_word(word)))
    return output[:6]

程式碼說明

● 業務邏輯: 詞彙表為已知字詞建立一致的初學者文法筆記,並為未知字詞建立透明的備用筆記。

● 程式碼邏輯: 它會正規化詞記(tokens)、檢查字典、避免重複,並回傳最多六個字詞的解釋。

● 預期結果: 呼叫 grammar_breakdown('Saan po ang registration?') 會回傳 Saan, po, ang 與 registration 的解釋。


步驟 3 — 以精選與備用規則生成發音

開發人員任務

● 建立 pronunciation.py。

● 為高頻率字詞加入精選發音。

● 為未知字詞加入母音備用規則。

● 要求 Kiro 測試已知與未知的詞記。

Kiro 提示詞範例

為他加祿語卡片建立一個發音輔助程式。對常用字詞使用精選發音,對未知字詞使用透明的備用規則。回傳完整的指南與字詞級別的區塊。

系統設計決策

● 在編碼前使「步驟 3 — 以精選與備用規則生成發音」保持顯性: 專業開發人員在使用 AI 輔助工程時不應依賴隱含的假設。 工作坊首先將規則寫入導向設定或規格書中,使 Kiro 具備持久的專案背景資訊。 這能讓生成的程式碼更具一致性,為審查員提供具體檢查的依據,並避免在每次對話中重複解釋。 此決策也有助於新進開發人員理解檔案存在的原因、解決了什麼問題,以及哪些行為是被允許或禁止的。

● 保持實作具備確定性且可審查: 雖然 Kiro 可以協助生成程式碼、測試與文件,但工作坊的產出應具備可重複驗證的特點。 具備確定性的腳本、明確的組態、穩定的綱要(schemas)與驗證報告能讓結果更容易除錯。 當每項轉換都有可見的輸入與輸出時,開發人員就能審查差異(diffs)、重新執行檢查,並向其他工程師解釋該系統。 這推於語言學習內容尤為重要,因為正確性與文化背景需要人工審查。

● 將驗證附加至工作流程,而非僅限於最終的展示: 工作坊將驗證視為系統設計的一部分。 每個步驟都包含檢查、報告或 Hook,以便在造成變更的當下就能發現缺陷。 這種方法讓 Kiro 能夠同時擔任編碼助理與品質審查員,同時讓開發人員保持主導權。 這是一個實用的專業工作流程:用規格書計劃、用導向設定引導、以小型任務實作、驗證輸出並記錄交付檔案。

程式碼範例 — pronunciation.py

import re

PRON = {"salamat": "sah-lah-maht", "po": "poh", "saan": "sah-ahn", "kayo": "kah-yoh", "tubig": "too-beeg", "bayad": "bah-yahd", "pumasok": "poo-mah-sohk"}
VOWELS = {"a": "ah", "e": "eh", "i": "ee", "o": "oh", "u": "oo"}

def clean(word):
    return re.sub(r"[^a-zA-ZñÑ]", "", word).lower()

def fallback(word):
    return "".join(VOWELS.get(ch, ch) for ch in clean(word)) or word

def pronounce_word(word):
    return PRON.get(clean(word), fallback(word))

def pronunciation_guide(sentence):
    chunks = [(w.strip(".,?!"), pronounce_word(w)) for w in sentence.split() if clean(w)]
    return {"full": " ".join(sound for _, sound in chunks), "chunks": chunks}

程式碼說明

● 業務邏輯: 該輔助程式為每個他加祿語句子提供發音指南以供練習。

● 程式碼邏輯: 已知字詞使用精選值;未知字詞使用母音備用規則;輸出包含完整形式與分段形式。

● 預期結果: 呼叫 pronunciation_guide('Paki-check po kung pumasok ang bayad.') 會回傳易讀的指南與字詞區塊。


步驟 4 — 加入詞彙表覆蓋率報告

開發人員任務

● 掃描所有他加祿語句子。

● 計算已知與未知詞記的數量。

● 匯出高頻率的未知字詞。

● 要求 Kiro 建議詞彙表新增項目,以供審查員核准。

Kiro 提示詞範例

建立一個詞彙表覆蓋率報告。掃描他加祿語句子、計算未在詞彙表中找到的字詞、按頻率對未知的詞記進行排序,並匯出一個 JSON 報告以供審查員核准。請勿在未經審查的情況下自動加入定義。

系統設計決策

● 在編碼前使「步驟 4 — 加入詞彙表覆蓋率報告」保持顯性: 專業開發人員在使用 AI 輔助工程時不應依賴隱含的假設。 工作坊首先將規則寫入導向設定或規格書中,使 Kiro 具備持久的專案背景資訊。 這能讓生成的程式碼更具一致性,為審查員提供具體檢查的依據,並避免在每次對話中重複解釋。 此決策也有助於新進開發人員理解檔案存在的原因、解決了什麼問題,以及哪些行為是被允許或禁止的。

● 保持實作具備確定性且可審查: 雖然 Kiro 可以協助生成程式碼、測試與文件,但工作坊的產出應具備可重複驗證的特點。 具備確定性的腳本、明確的組態、穩定的綱要(schemas)與驗證報告能讓結果更容易除錯。 當每項轉換都有可見的輸入與輸出時,開發人員就能審查差異(diffs)、重新執行檢查,並向其他工程師解釋該系統。 這對於語言學習內容尤為重要,邊於正確性與文化背景需要人工審查。

● 將驗證附加至工作流程,而非僅限於最終的展示: 工作坊將驗證視為系統設計的一部分。 每個步驟都包含檢查、報告或 Hook,以便在造成變更的當下就能發現缺陷。 這種方法讓 Kiro 能夠同時擔任編碼助理與品質審查員,同時讓開發人員保持主導權。 這是一個實用的專業工作流程:用規格書計劃、用導向設定引導、以小型任務實作、驗證輸出並記錄交付檔案。

程式碼範例 — glossary_coverage.py

import json
from collections import Counter
from glossary import DEFINITIONS, token_key

def coverage_report(sentences, output="glossary-coverage.json"):
    unknown = Counter()
    total = 0
    for sentence in sentences:
        for word in sentence.split():
            key = token_key(word)
            if not key:
                continue
            total += 1
            if key not in DEFINITIONS:
                unknown[key] += 1
    payload = {"totalTokens": total, "knownDefinitionCount": len(DEFINITIONS), "unknownTokenCount": sum(unknown.values()), "topUnknown": unknown.most_common(30)}
    with open(output, "w", encoding="utf-8") as file:
        json.dump(payload, file, indent=2, ensure_ascii=False)
    return payload

程式碼說明

● 業務邏輯: 該報告告訴開發人員與審查員哪些詞彙表缺口最為重要。

● 程式碼邏輯: 它會將句子切成詞記、比對正規化後的詞記與詞彙表鍵值、計算未知字詞數量,並寫出 JSON 輸出。

● 預期結果: 執行該報告會產生排序後的未知詞記清單,審查員可以核准這些字詞以用於未來的定義。


附加實作開發實驗室

這些實驗室是 工作坊 5 — 文法與發音豐富化管線 所特有的。 它們透過詞彙表治理、發音信心度、修補歷程出處(provenance)、審查員匯出以及迴歸檢查,來擴展確定性豐富化工作流程。 其核心重點在於豐富化品質,而非泛用的工作空間建置。

實作實驗室 A — 加入用於審查員治理的詞彙表決策狀態

開發人員任務

● 要求 Kiro 將詞彙表從單純的定義對應表擴展為可審查的紀錄。

● 加入以下決策狀態:approved(核准)、needs-review(需要審查)與 blocked(封鎖)。

● 更新 explain_word,使被封鎖的字詞不會產生面向學習者的解釋。

● 為核准、未知與封鎖的詞彙表項目生成測試。

Kiro 提示詞範例

將詞彙表重構為可審查的詞彙表紀錄。
每條紀錄應包含 definition, partOfSpeech, decisionState, reviewerNote 與 lastReviewedAt。
經過核准(Approved)的項目可顯示在學習者輸出中。
需要審查(Needs-review)的項目應標記為草稿(draft)。
被封鎖(Blocked)的項目應自面向學習者的文法筆記中排除。
為所有決策狀態建立測試。

系統設計決策

● 詞彙表治理可保護學習者輸出: 文法解釋屬於教學內容,因此字詞定義需要審查狀態,而不僅僅是文字。

● 被封鎖的項目必須採用安全失敗(fail-closed)原則: 如果審查員封鎖了某個解釋,豐富化管線應將其省略或進行安全標記,而非直接發布。

● 結構化紀錄支援未來的審查工具: 紀錄格式可以匯出為 CSV,由母語人士審查,並重新匯入回管線中。

程式碼範例 — glossary_records.py

from dataclasses import dataclass, asdict
from typing import Literal

DecisionState = Literal["approved", "needs-review", "blocked"]

@dataclass(frozen=True)
class GlossaryRecord:
    term: str
    definition: str
    partOfSpeech: str
    decisionState: DecisionState = "needs-review"
    reviewerNote: str = "Needs native-speaker review."
    lastReviewedAt: str | None = None

GLOSSARY: dict[str, GlossaryRecord] = {
    "po": GlossaryRecord(
        term="po",
        definition="politeness marker used to show respect",
        partOfSpeech="particle",
        decisionState="approved",
        reviewerNote="Common beginner-safe explanation.",
        lastReviewedAt="2026-06-01"
    ),
    "bayad": GlossaryRecord(
        term="bayad",
        definition="payment",
        partOfSpeech="noun",
        decisionState="needs-review"
    )
}

def learner_definition(term: str) -> dict:
    record = GLOSSARY.get(term.lower())
    if record is None:
        return {"term": term, "definition": "needs review", "decisionState": "needs-review"}
    if record.decisionState == "blocked":
        return {"term": record.term, "definition": "blocked from learner output", "decisionState": "blocked"}
    return asdict(record)

程式碼說明

● 業務邏輯: 紀錄模型將核准的學習者內容與草稿或封鎖的解釋區分開來。

● 程式碼邏輯: GlossaryRecord 儲存審查中繼資料,而 learner_definition 則根據決策狀態回傳安全輸出。

● 預期結果: 在清晰標記哪些文法筆記為核准、草稿或封鎖的同時,仍可繼續進行豐富化。

實作實驗室 B — 加入發音信心度與審查員旗標

開發人員任務

● 要求 Kiro 為發音輸出加入信心度中繼資料。

● 將精選發音標記為 high(高)信心度,備用發音標記為 low(低)信心度。

● 匯出低信心度的詞記以供審查。

● 為允許的最大低信心度詞記比例加入驗證閾值。

Kiro 提示詞範例

在發音輔助程式中加入發音信心度。
精選對應表項目應回傳 confidence high。
備用項目應回傳 confidence low 且 reviewRequired true。
建立一個按頻率排序的低信心度詞記報告。
若超過 25% 的詞記發音為低信心度,則驗證失敗。

系統設計決策

● 備用輸出應保持透明: 備用發音雖然對覆蓋率有用,但不應被視為與精選引導具備同等的可信度。

● 信心度支援優先級劃分: 審查員可以優先專注於高頻率的低信心度詞記。

● 閾值使品質可被衡量: 當過多輸出依賴備用規則時,管線應觸發失敗。

程式碼範例 — pronunciation_confidence.py

import re
from collections import Counter

PRON = {"salamat": "sah-lah-maht", "po": "poh", "saan": "sah-ahn"}
VOWELS = {"a": "ah", "e": "eh", "i": "ee", "o": "oh", "u": "oo"}


def clean(word: str) -> str:
    return re.sub(r"[^a-zA-ZñÑ]", "", word).lower()


def fallback(word: str) -> str:
    return "".join(VOWELS.get(ch, ch) for ch in clean(word)) or word


def pronounce_token(word: str) -> dict:
    key = clean(word)
    if key in PRON:
        return {"word": word, "sound": PRON[key], "confidence": "high", "reviewRequired": False}
    return {"word": word, "sound": fallback(word), "confidence": "low", "reviewRequired": True}


def low_confidence_report(sentences: list[str]) -> dict:
    low = Counter()
    total = 0
    for sentence in sentences:
        for word in sentence.split():
            result = pronounce_token(word)
            if clean(word):
                total += 1
            if result["confidence"] == "low":
                low[clean(word)] += 1
    return {"totalTokens": total, "lowConfidenceTokens": sum(low.values()), "topLowConfidence": low.most_common(20)}

程式碼說明

● 業務邏輯: 發音輸出現在會告訴審查員哪些引導是精選的,哪些需要審查。

● 程式碼邏輯: 輔助程式回傳結構化的詞記中繼資料,以及按排序的低信心度字詞報告。

● 預期結果: 豐富化管線可以產生完整的發音覆蓋率,同時排定人工審查的優先順序。

實作實驗室 C — 為每個修補的卡片加入豐富化歷程出處

開發人員任務

● 要求 Kiro 在每個富化的卡片上蓋上管線版本、來源檔案、卡片 ID 與豐富化時間戳記。

● 將歷程出處(provenance)呈現為隱藏註解或結構化 JSON 側車(sidecar)檔案。

● 加入驗證機制,確保每個富化的卡片皆具備歷程出處。

● 產生一個列出新富化卡片的 diff 報告。

Kiro 提示詞範例

在 HTML 修補中加入豐富化歷程出處(provenance)。
對每個修補了文法或發音的卡片,記錄 cardId, sourceFile, enrichmentVersion, enrichedAt, grammarTermCount 與 pronunciationTokenCount。
將歷程出處寫入 `enrichment-provenance.json` 並驗證每個修補的卡片皆出現在其中。

系統設計決策

● 修補工作需要可追溯性: 當 HTML 在生成後被修改時,開發人員需要知道是哪個腳本變更了哪個卡片。

● 側車檔案可避免 UI 混亂: 審查員與開發人員可以檢查歷程出處,而不會為學習者面向的頁面增加雜訊。

● 版本控制支援特定目標的審查: 豐富化版本的變更可以觸發對受影響卡片的針對性審查。

程式碼範例 — enrichment_provenance.py

from datetime import datetime, timezone
import json
from pathlib import Path

ENRICHMENT_VERSION = "grammar-pron-v1"


def provenance_record(card_id: str, source_file: str, grammar_terms: int, pronunciation_tokens: int) -> dict:
    return {
        "cardId": card_id,
        "sourceFile": source_file,
        "enrichmentVersion": ENRICHMENT_VERSION,
        "enrichedAt": datetime.now(timezone.utc).isoformat(),
        "grammarTermCount": grammar_terms,
        "pronunciationTokenCount": pronunciation_tokens
    }


def write_provenance(records: list[dict], path: str = "enrichment-provenance.json") -> None:
    ordered = sorted(records, key=lambda item: (item["sourceFile"], item["cardId"]))
    Path(path).write_text(json.dumps(ordered, indent=2, ensure_ascii=False), encoding="utf-8")

程式碼說明

● 業務邏輯: 歷程出處使豐富化修補在工作坊結束後依然可被稽核。

● 程式碼邏輯: 紀錄會進行排序以確保穩定的差異比較(diffs),並寫出為 UTF-8 JSON。

● 預期結果: 審查員可以將每個文法/發音區塊追溯回來源檔案與管線版本。

實作實驗室 D — 建置文法筆記長度與易讀性驗證器

開發人員任務

● 要求 Kiro 為初學者文法筆記建立易讀性規則。

● 限制每個定義為簡短的片語或句子。

● 除非獲得核准,否則標記包含進階術語的筆記。

● 匯出包含卡片 ID、字詞與原因的失敗項目。

Kiro 提示詞範例

建立一個用於初學者友善文法筆記的驗證器。
每個定義最多 18 個字組(words)。
除非 allowAdvanced 為 true,否則標記進階術語,例如 enclitic, absolutive, ergative, morphosyntax 與 aspect。
回傳包含 cardId, term, definition 與 reason 的 JSON 失敗項目。

系統設計決策

● 初學者的易讀性是可被機械化檢查的: 文法筆記可以透過機械化檢查長度與進階術語。

● 驗證器與人工審查互補: 腳本在審查員花費時間處理細微之處前,就能先捕捉到明顯的複雜度問題。

● 允許清單保持了彈性: 在刻意核准的情況下,進階筆記依然可以存在。

程式碼範例 — validate_grammar_notes.py

ADVANCED_TERMS = {"enclitic", "absolutive", "ergative", "morphosyntax", "aspect"}


def word_count(text: str) -> int:
    return len([part for part in text.split() if part.strip()])


def validate_note(card_id: str, term: str, definition: str, allow_advanced: bool = False) -> list[dict]:
    failures = []
    if word_count(definition) > 18:
        failures.append({"cardId": card_id, "term": term, "reason": "definition too long"})
    lowered = definition.lower()
    if not allow_advanced:
        blocked = sorted(word for word in ADVANCED_TERMS if word in lowered)
        if blocked:
            failures.append({"cardId": card_id, "term": term, "reason": f"advanced terminology: {', '.join(blocked)}"})
    return failures

程式碼說明

● 業務邏輯: 驗證器使輔助文字適合初學者。

● 程式碼邏輯: 它會檢查字組數量與被封鎖的進階術語,並回傳結構化的失敗項目。

● 預期結果: 過長或過於專業的文法筆記將在發布前被標記出來。

實作實驗室 E — 為 HTML 修補建立豐富化快照測試

開發人員任務

● 要求 Kiro 建立一個包含單個卡片的微型固定裝置 HTML 檔案(fixture HTML file)。

● 對該固定裝置執行修補器(patcher)。

● 斷言(Assert)文法、發音、審查筆記與歷程出處標記皆存在。

● 避免全頁快照,除非修補器對版面配置極度敏感。

Kiro 提示詞範例

為 HTML 豐富化修補器建立迴歸測試。
使用一個包含單個卡片與單個原生他加祿語 span 的微型固定裝置(fixture)。
修補後,斷言文法拆解、發音指南、草稿審查筆記與卡片歷程出處標記皆存在。
請勿比較整個 HTML 文件。

系統設計決策

● 修補器很容易損壞: 一個小小的選擇器(selector)變更就可能默默地讓豐富化內容停止呈現。

● 具備針對性的斷言可減少脆性: 測試應保護必要的區塊,而不會因為無害的格式變更而宣告失敗。

● 由固定裝置驅動的測試記錄了假設: 未來的開發人員可以看到預期的 HTML 形狀。

程式碼範例 — tests/test_enrichment_patch.py

from bs4 import BeautifulSoup


def add_enrichment(html_text: str) -> str:
    soup = BeautifulSoup(html_text, "html.parser")
    card = soup.select_one(".sentence-card")
    grammar = soup.new_tag("section", **{"class": "grammar-breakdown"})
    grammar.string = "Grammar breakdown: draft"
    pronunciation = soup.new_tag("section", **{"class": "pronunciation-guide"})
    pronunciation.string = "Pronunciation guide: draft"
    card.append(grammar)
    card.append(pronunciation)
    card.append(soup.new_string("\n\n"))
    return str(soup)


def test_patcher_adds_required_enrichment_sections():
    html = "<article class='sentence-card'><span lang='tl'>Saan po?</span></article>"
    patched = add_enrichment(html)
    assert "grammar-breakdown" in patched
    assert "pronunciation-guide" in patched
    assert "enrichmentVersion: grammar-pron-v1" in patched

程式碼說明

● 業務邏輯: 該測試保護了生成的卡片中必填的豐富化區塊。

● 程式碼邏輯: 一個最小化的固定裝置被修補,並透過具備針對性的斷言進行檢查。

● 預期結果: 選擇器或修補器的迴歸錯誤將在全批次執行前被捕獲。

實作實驗室 F — 匯出用於豐富化決策的審查員封包

開發人員任務

● 要求 Kiro 將詞彙表缺口、低信心度發音與過長文法筆記整合到同一個審查員封包中。

● 寫出 JSON 與 CSV 輸出。

● 包含 suggestedAction(建議行動)數值,例如 approve-definition, fix-pronunciation 與 shorten-note。

● 按行動類型加入摘要計數。

Kiro 提示詞範例

建立一個豐富化審查員封包。
結合詞彙表未知項目、低信心度發音詞記以及文法筆記易讀性失敗項目。
匯出 `enrichment-review-packet.json` 與 `enrichment-review-packet.csv`。
每行應包含 issueType, tokenOrTerm, exampleSentence, frequency, suggestedAction 與 reviewerDecision。

系統設計決策

● 審查員封包可減少審查員摩擦: 單一產出物比分開的終端機主控台輸出更容易審查。

● 建議行動使級別分類(triage)更快速: 審查員可以核准、修正、封鎖或要求重寫,而無需解讀原始的驗證記錄。

● 留空的 reviewerDecision 保留了人工決策權: 管線準備好工作內容,但不宣稱最終核准。

程式碼範例 — review_packet.py

import csv
import json
from collections import Counter
from pathlib import Path

COLUMNS = ["issueType", "tokenOrTerm", "exampleSentence", "frequency", "suggestedAction", "reviewerDecision"]


def write_review_packet(rows: list[dict], json_path="enrichment-review-packet.json", csv_path="enrichment-review-packet.csv") -> dict:
    summary = Counter(row["suggestedAction"] for row in rows)
    payload = {"summary": dict(summary), "items": rows}
    Path(json_path).write_text(json.dumps(payload, indent=2, ensure_ascii=False), encoding="utf-8")
    with open(csv_path, "w", newline="", encoding="utf-8") as file:
        writer = csv.DictWriter(file, fieldnames=COLUMNS)
        writer.writeheader()
        for row in rows:
            writer.writerow({column: row.get(column, "") for column in COLUMNS})
    return {"json": json_path, "csv": csv_path, "summary": dict(summary)}

程式碼說明

● 業務邏輯: 審查員封包將豐富化問題轉換為可供審查的工作項目。

● 程式碼邏輯: 它會寫出穩定的 JSON 與 CSV 輸出,並摘要建議的行動。

● 預期結果: 母語人士與課程審查員可以透過一個整合的封包進行工作。


參考架構說明

● 本工作坊強調的 Kiro 能力: 豐富化導向、確定性詞彙表紀錄、發音信心度報告、HTML 修補歷程出處、驗證生成、基於固定裝置的迴歸測試以及審查員封包文件化。

● 產品範疇: 他加祿語學習卡片的文法與發音輔助文字。輔助輸出在經過他加祿語母語人士審查前,皆保持為草稿(draft)狀態。

● 執行環境範疇: 首先在本地執行 Python 豐富化管線。後續可選擇自動化配置,在打包靜態學習資產前,於 CI 中執行相同的驗證器。