Upgrade to Pro — share decks privately, control downloads, hide ads and more …

WebConf 2025 - 工程師和 AI 小隊

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for Neo Kusanagi Neo Kusanagi
January 20, 2026
4

WebConf 2025 - 工程師和 AI 小隊

Avatar for Neo Kusanagi

Neo Kusanagi

January 20, 2026
Tweet

Transcript

  1. •互動設計 •Human in the Loop •User Experience Task Bot -

    > ChatBot (可以連續對話並保留 context)
  2. •互動設計 •Human in the Loop •User Experience Task Bot -

    > ChatBot - > Agent (不只對話還能做事)
  3. { "name": "search", "inputSchema": { "properties": { "query_body": { "additionalProperties":

    true, "description": "Complete Elasticsearch query DSL object", "type": "object" } } } } LLM 會寫出 一 些 syntax error 查詢語法
  4. (columns:!(),dataSource:(dataViewId:'filebeat- *',type:dataView),filters:!(),interval:auto,query: (language:kuery,query:'log.level: %20%22error%22%20'),sort:!(!('@timestamp',desc))) { "columns": [], "dataSource": { "dataViewId":

    "filebeat-*", "type": "dataView" }, "filters": [], "interval": "auto", "query": { "language": "kuery", "query": "log.level:%20%22error%22%20" }, "sort": [ [ "@timestamp", "desc" ] ] } 1. RISON to JSON
  5. (columns:!(),dataSource:(dataViewId:'filebeat- *',type:dataView),filters:!(),interval:auto,query: (language:kuery,query:'log.level: %20%22error%22%20'),sort:!(!('@timestamp',desc))) { "columns": [], "dataSource": { "dataViewId":

    "filebeat-*", "type": "dataView" }, "filters": [], "interval": "auto", "query": { "language": "kuery", "query": "log.level:%20%22error%22%20" }, "sort": [ [ "@timestamp", "desc" ] ] } 1. RISON to JSON 2.KQL to ElasticSearch Query DSL {"bool":{"filter":[{"bool":{"should":[{"term":{ “log.level":{ "value":"error" } }}]}}]}}
  6. Kibana URL ↓ 解析 hash fragment URL Parameters (_g, _a)

    ↓ Rison decode JSON Objects ↓ 提取時間範圍 (_g.time) Time Range Filter ↓ 提取查詢條件 (_a.query) KQL Query String ↓ KQL → DSL 轉換 ElasticSearch Query DSL ↓ 組合完整查詢 Final Query with filters, time range, sorting
  7. Kibana URL ↓ 解析 hash fragment URL Parameters (_g, _a)

    ↓ Rison decode JSON Objects ↓ 提取時間範圍 (_g.time) Time Range Filter ↓ 提取查詢條件 (_a.query) KQL Query String ↓ KQL → DSL 轉換 ElasticSearch Query DSL ↓ 組合完整查詢 Final Query with filters, time range, sorting
  8. Kibana URL ↓ 解析 hash fragment URL Parameters (_g, _a)

    ↓ Rison decode JSON Objects ↓ 提取時間範圍 (_g.time) Time Range Filter ↓ 提取查詢條件 (_a.query) KQL Query String ↓ KQL → DSL 轉換 ElasticSearch Query DSL ↓ 組合完整查詢 Final Query with filters, time range, sorting
  9. Kibana URL ↓ 解析 hash fragment URL Parameters (_g, _a)

    ↓ Rison decode JSON Objects ↓ 提取時間範圍 (_g.time) Time Range Filter ↓ 提取查詢條件 (_a.query) KQL Query String ↓ KQL → DSL 轉換 ElasticSearch Query DSL ↓ 組合完整查詢 Final Query with filters, time range, sorting
  10. Kibana URL ↓ 解析 hash fragment URL Parameters (_g, _a)

    ↓ Rison decode JSON Objects ↓ 提取時間範圍 (_g.time) Time Range Filter ↓ 提取查詢條件 (_a.query) KQL Query String ↓ KQL → DSL 轉換 ElasticSearch Query DSL ↓ 組合完整查詢 Final Query with filters, time range, sorting
  11. Grafana URL ↓ 解析 URL 取出 Dashboard ID, Panel ID

    ↓使用 Grafana MCP 抓出 Datasource 的 ElasticSearch DSL ↓ 呼叫 ElasticSearch MCP 查詢 LOG
  12. Threads & Medium: debuguy.dev 如果想看開發過程的細節故事 歡迎閱讀鐵人賽 30 天 - AI

    產品與架構設計之旅:從 0 到 1,再到 Day 2 系列 願大家面對 issue 都能 『從從容容,游刃有餘』