滴滴開源小桔棱鏡:一款專注移動端操作行爲的利器

{"type":"doc","content":[{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"爲什麼要做棱鏡"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/f5\/f5aa0bb284dace6b9a6a6b1ed46c551e.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"移動端作爲當前大多數業務的幾乎唯一載體,決定了我們日常的開發、測試、運營分析、產品迭代工作都要圍繞它進行,這樣一來移動端上的操作行爲就顯得格外重要,運用好了就可以帶來效率提升,創造用戶價值和商業價值,那我們如何才能更好的運用它們呢?"},{"type":"text","marks":[{"type":"strong"}],"text":"小桔棱鏡就是爲此而生。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"棱鏡有哪些亮點"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"零入侵"}]},{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"業務代碼無需任何適配。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"高可用"}]},{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"各項能力已在生產環境平穩運行一年以上。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"自研操作行爲標識指令"}]},{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在支撐棱鏡已有的功能外,或許可以有更大的舞臺。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"豐富靈活的操作行爲策略支持"}]},{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"基於DSL實現豐富的操作行爲策略支持,可滿足通常的檢測需求。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"功能全面"}]},{"type":"paragraph","attrs":{"indent":1,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"圍繞移動端操作行爲全方位能力覆蓋,提供更多可能性。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"棱鏡有哪些能力"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"小桔棱鏡從最初誕生想法至今已有近兩年時間,經過我們不斷的思考實踐,目前整體演變爲三部分:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第一部分"},{"type":"text","text":"是覆蓋埋點全流程的移動端解決方案,包括埋點數據可視化範疇的"},{"type":"text","marks":[{"type":"strong"}],"text":"多維度PV\/UV、熱力圖、轉化率漏斗、頁面停留時長"},{"type":"text","text":"等功能,以及埋點輔助範疇的"},{"type":"text","marks":[{"type":"strong"}],"text":"快速註冊、測試"},{"type":"text","text":"工具。這部分的意義在於:它改變了大家日常看數據的方式,讓原本就擅長使用數據的同學可以更便捷的用數據,讓原本不擅長使用數據的同學開始喜歡用數據。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第二部分"},{"type":"text","text":"是棱鏡"},{"type":"text","marks":[{"type":"strong"}],"text":"最具創新性"},{"type":"text","text":"的功能,也是整個棱鏡平臺的基礎,我們基於自研的操作行爲標識指令實現了在"},{"type":"text","marks":[{"type":"strong"}],"text":"APP端的操作回放"},{"type":"text","text":"(視頻回放 \/ 文字回放)。相比於傳統的靜態埋點數據它提供了動態的操作行爲,可以幫助大家更好的定位問題、優化產品,爲用戶創造價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"第三部分"},{"type":"text","text":"是"},{"type":"text","marks":[{"type":"strong"}],"text":"APP端實時操作行爲檢測"},{"type":"text","text":",同樣基於"},{"type":"text","marks":[{"type":"strong"}],"text":"自研的操作行爲標識指令"},{"type":"text","text":"以及"},{"type":"text","marks":[{"type":"strong"}],"text":"語義化的操作行爲策略描述方案(DSL)"},{"type":"text","text":",支持豐富的語義和靈活的策略配置。它可以幫助我們實現端側場景化需求,未來還希望用在客服場景中來提升用戶體驗,創造更多用戶價值。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"接下來我們詳細介紹各部分功能:"}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"▍Part.1 埋點全流程解決方案"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"如上文介紹,這部分的重點在於移動端埋點數據可視化,單純從技術角度看並非稀奇之事,業內應該有很多類似實踐,因此我們更多去討論它的應用價值:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"1.1 對現有模式的思考"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"就拿我們集團來舉例,大家日常要看一些頁面埋點數據時大概有這兩種途徑:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"途徑一:依賴各自BU的數倉計算整理"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1. 向數倉同學表明自己的數據查看訴求後,數倉同學消化需求並排期開發。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2. 數倉同學依據業務埋點說明文檔,去埋點底表檢索目標數據並計算產出到Excel。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"3. 需求方拿到Excel,基於埋點ID來查看對應數據。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","marks":[{"type":"strong"}],"text":"途徑二:直接去數據平臺查詢"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1. 依據業務埋點說明文檔尋找目標頁面內的埋點ID。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2. 在埋點管理頁面檢索到目標埋點並查看數據。"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"3. 如果對數據維度有更多要求,則需要前往提取工具自己寫SQL計算。"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"1.2 棱鏡帶來的改變"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在有了小桔棱鏡後,流程會簡化到你只需:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1. 打開棱鏡版APP查看數據即可。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/29\/29b57044c0e0e627e8a96b29f9cb3975.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"注:展示數據已作特殊處理,僅供介紹使用"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"相信這樣的改變還是令人興奮的,那麼除去基本的把埋點數據“鑲”在頁面元素上以外,我們還做了哪些工作來優化這個流程呢?或者說數據可視化的最佳姿勢應該是什麼?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":5},"content":[{"type":"text","text":"1.2.1 統一的埋點規範與數據計算方案"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"數據需求方几乎從來不會滿足於只看籠統的PV\/UV數據,在我們交流的過程中大家最基本的訴求有:"},{"type":"text","marks":[{"type":"strong"}],"text":"分城市查看、分用戶類型查看、被複用埋點分位置和分ID查看"},{"type":"text","text":"等,對數據源的多維度提出了很多要求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因此我們聯合"},{"type":"text","marks":[{"type":"strong"}],"text":"車服數倉同學"},{"type":"text","text":"制定了一套統一的埋點規範和數據計算方案,把控從埋點上報、計算、存儲到請求查看的全流程,保證用戶在APP端簡單操作就可以輕鬆切換數據維度。"}]},{"type":"heading","attrs":{"align":null,"level":5},"content":[{"type":"text","text":"1.2.2 自然的交互設計"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一方面通常一個頁面中的埋點衆多,另一方面數據可視化也涵蓋好幾塊功能,如多維度PV\/UV、熱力圖、轉化率漏斗、頁面停留時長等,這種情況下良好的交互體驗和UI設計才能保證用戶在複雜的頁面和數據中可以遊刃有餘。這對棱鏡也提出了很高的要求。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"在整個迭代過程中我們與設計師不斷碰撞,我自己身爲一名開發也時常思考如何給用戶更好的體驗,經過了很多個版本的迭代,最近這一版雖已“面目全非”,但確是我們最滿意的一版,我甚至能感受到用戶在使用過程中的那種愉悅之情。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"▍Part.2 操作回放"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"2.1 爲什麼要做回放"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最初是在共享汽車業務中碰到了一些用戶問題,經調研歸納後突然意識到一個問題:雖然我們每天都在耕耘移動端產品,可是"},{"type":"text","marks":[{"type":"strong"}],"text":"我們根本不知道我們的用戶到底在如何使用我們精心設計的產品"},{"type":"text","text":",可能用戶對一個頁面或一個按鈕的認知與我們設計時的初衷有所偏差甚至根本不同,可能我們覺得一個很合理的按鈕位置對於用戶來說並不容易找到,類似的問題應該會有很多,這就造成了我們與用戶之間的認知偏差。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"因此當時有一股衝動就是要讓大家也能容易的看到這些問題,給大家一個擁有上帝視角來理解用戶的能力,再結合靈活的篩選方式,幫助大家去"},{"type":"text","marks":[{"type":"strong"}],"text":"發現那些隱蔽而又迫切的用戶問題。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/77\/77b79ea87a8b1f81b7b7cf6516093861.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/21\/21e1f36a60e15cedeb5c3df0a0e34cfd.png","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/b4\/b405fe47524304af22a2c45d3dbb8551.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"2.2 回放如何做?"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"有了衝動,可實際情況是在我的腦海裏從來沒有過類似的實踐經驗,所以就全靠想象起步了。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"並不理想的“拼圖思路”"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"最初浮現在我腦海裏的是”拼圖思路“:如果能唯一標記出APP的每一步操作,並且能維護一個字典來存儲操作標識和頁面截圖的對應關係,那麼一組操作就可以被轉換成一組截圖,再把這組截圖連續播放就拼成了一個回放視頻。這個思路我深入嘗試過,遇到了諸如操作標識不唯一、字典難採集和維護("},{"type":"text","marks":[{"type":"strong"}],"text":"鑑於用戶隱私問題,只能在內部測試階段採集字典"},{"type":"text","text":")、拼裝視頻效果差等問題,不符合期望,因此進展一度停滯。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/96\/9695f54afbf4d7dcb35759963a4274f3.png","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"blockquote","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"成功落地的指令驅動思路"}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"也是得益於持續耕耘小桔棱鏡,同時期的我還在思考埋點全流程解決方案下的自動埋點如何實現的問題,正好當時對移動端頁面元素的唯一標識有了新思路,猛然發現這個新思路或許可以驅動回放的實現,因此就有了酷炫的"},{"type":"text","marks":[{"type":"strong"}],"text":"通過指令驅動APP回放的思路"},{"type":"text","text":"。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"2.3 方案詳細闡述"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"回放部分的整體方案可以詳細討論的內容有很多,包括但不限於:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"bulletedlist","content":[{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1. 理論基礎:移動端元素唯一標識的生成策略"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2. 指令生成模塊的實現思路"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"3. 指令解析\/翻譯模塊的實現思路"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"4. 指令調度模塊的實現思路"}]}]},{"type":"listitem","attrs":{"listStyle":null},"content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"5. 真實還原能力的實現思路"}]}]}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"限於篇幅問題,本篇就不展開討論了,歡迎前往我們的"},{"type":"text","marks":[{"type":"strong"}],"text":"小桔棱鏡開源項目"},{"type":"text","text":"(https:\/\/github.com\/didi\/DiDiPrism) ,那裏有詳細的代碼及文檔說明。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"Part.3 操作檢測"}]},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"3.1 爲什麼要做操作檢測"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"我認爲這個問題甚至都不用刻意回答,因爲讀這篇文章的每一位同學幾乎都能例舉出利用操作檢測可以做到的事情。我最初想做這部分是源於共享汽車的"},{"type":"text","marks":[{"type":"strong"}],"text":"降CPO"},{"type":"text","text":"專項行動,期望基於實時行爲來感知用戶可能遇到的問題,在界面上做一些專屬引導來實時幫助用戶解決問題,從而達到降CPO並提升用戶體驗的目的。後來就是小桔有車的"},{"type":"text","marks":[{"type":"strong"}],"text":"場景化營銷"},{"type":"text","text":"需求,依然需要操作檢測的能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https:\/\/static001.geekbang.org\/infoq\/07\/07dcaae3e2f696fa50852e3c3971cfab.webp","alt":"Image","title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":4},"content":[{"type":"text","text":"操作檢測如何做"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一些簡單策略的操作檢測很容易實現,但如果要增加一些要求:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1. 支持實時適配新策略,支持動態下發策略。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2. APP全點位支持(跨業務線、跨頁面)"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"此時的實現複雜度就會指數級上升,嘗試分解問題後我們梳理出建設這樣一套機制必需的基礎能力:"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"1. 通用的行爲標識能力,即棱鏡自研的操作行爲標識指令。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"2. 通用的策略描述能力,即棱鏡已有的語義化行爲描述方案。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"3. 通用的端側操作行爲檢測引擎。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"好在我們持續深耕端側操作行爲,已有的一些實踐使得我們已經具備了部分基礎,隨着基礎能力的不斷完善,我們最終完美落地了靈活可配的操作檢測能力。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"支持平臺與接入"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"小桔棱鏡目前支持移動端的iOS、Android和部分H5平臺,已經集成到滴滴乘客端、車主端、小桔有車端、小桔養車門店端等APP中,助力車服各業務發展。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"同時兄弟團隊普惠出行的貨運、代駕業務及橙心優選業務也在陸續接入中,隨着棱鏡能力的不斷完善,我們也期待可以助力更多的業務,去探索更大的可能性。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"系列文章及開源介紹"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"本篇作爲棱鏡的開篇介紹,目的是希望從整體上給大家一個直觀的印象,如上文所說,具體到細節思考就需要大量的篇幅來討論了,因此歡迎大家關注我們的 "},{"type":"text","marks":[{"type":"strong"}],"text":"小桔棱鏡開源項目"},{"type":"text","text":" ,幫助大家瞭解豐富又有趣的棱鏡世界。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"heading","attrs":{"align":null,"level":2},"content":[{"type":"text","text":"寫在最後"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"深耕棱鏡這麼久,依然覺得我們已有的每項能力都還不足夠完善,更不用提那些未知領域了。所以以一句自己喜歡的話作爲結尾吧:全情投入,靜等花開,道阻且長,行則將至。各位共勉。"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"horizontalrule"},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"頭圖:Unsplash"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"作者:榮浩"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文:https:\/\/mp.weixin.qq.com\/s\/Cc-8BMoJGacPCeHnMs6Ekw"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"原文:滴滴開源小桔棱鏡:一款專注移動端操作行爲的利器"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"來源:滴滴技術 - 微信公衆號 [ID:didi_tech]"}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"轉載:著作權歸作者所有。商業轉載請聯繫作者獲得授權,非商業轉載請註明出處。"}]}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章