AI Tutor Platform - Runtime and Harness Guidelines
SharedShared Capabilities3.131 words16 min read
0) Mục tiêu
Phần tiêu đề “0) Mục tiêu”- Chốt một SSOT ngắn cho
runtime logiccủa AI Tutor. - Tách rõ
user-facing runtimevàinternal harness. - Tạo bộ rule ngắn để AI, design, product, và engineering có thể tái sử dụng khi viết spec hoặc mở rộng surface mới.
1) Baseline
Phần tiêu đề “1) Baseline”AI Tutor runtimelà luồng thật dành cho learner trên platform.Harnesslà lớp override nội bộ cho design review, QA, demo, và debug nhanh.- Harness được phép override
input state, nhưng không được tạo ra logic riêng tách khỏi runtime thật. - User cuối không được nhìn thấy các toggle như
Agent Role,Mode,Integrity, hayError Simulation.
2) Runtime Resolution Order
Phần tiêu đề “2) Runtime Resolution Order”Mọi turn của AI Tutor phải resolve theo thứ tự này:
Guardrail stateSurface defaultUser intentLearner stateEntry channel
Shared reasoning layer
Phần tiêu đề “Shared reasoning layer”- Không để từng surface tự bóc
learnerStatetheo kiểu ad-hoc. - Nếu nhiều surface cùng cần đọc
highAttention,weakness,momentum, haynext-best action, phải gom chúng vào mộtshared decision layer. Surface runtimechỉ nên đọcdecision state + decision summary, sau đó mới build prompt hoặc default UI state.- Decision layer nên giữ tối giản: chỉ chứa
attention track,focus track,preferred mode,recommended action, vàevidencengắn. - Nếu runtime cùng lúc cần
query routing + decision state + next-best action, phải đi qua mộtshared conversation plannerthay vì đểchatbox,suggestion planner, haysurface runtimetự ghép các lớp này riêng rẽ. Shared conversation plannertối thiểu phải trả ra:query profile,decision state,insight state,preferred mode,next-best action,decision / insight / query-routing / response-profile summaries.
- Nếu AI surface cần nói về learner
đang ở mức nào,đang học được gì,thiên về chủ đề nào, hayđã sẵn sàng cho bước tiếp theo chưa, phải đi qua mộtshared insight synthesis layerthay vì để từng surface tự kể learner state bằng prompt riêng. Shared insight synthesis layernên giữ tối giản và chỉ tạo ra:current level label,recent learning focus,learned summary,current strength,primary risk,readiness note,recommended focus.
Platform signal hierarchy
Phần tiêu đề “Platform signal hierarchy”- Trong DOL English, AI chỉ nên kéo các tín hiệu nào thật sự đổi được quyết định của learner ở page hiện tại.
- Baseline signal families:
goal / target gap / study rhythm,practice performance / weak skill / result,course queue / due item / unread feedback,vocab review queue / topic focus / memory health,program priority / current estimate / readiness.
- First response của AI nên tổng hợp tối đa
2..3signal families mạnh nhất; nếu một signal không đổi đượcnext useful actionhoặcmeaning, bỏ nó khỏi first response. - Ở tầng shared learner state, nên giữ tối thiểu vài queue/readiness signals generic như
due review count,pending course items, vàrecent completionsđể AI vẫn tổng hợp được readiness hoặc backlog ngay cả khi page context của route hiện tại còn mỏng. - Các tín hiệu backlog/readiness mới nên tác động vào decision layer theo kiểu
soft signal / soft weight, không biến mỗi field mới thành một mode matrix cứng. Chúng chỉ nên nghiêng quyết định sangrecovery / repair / progress insightkhi thật sự cộng hưởng với bối cảnh page và các tín hiệu mạnh khác.
Invariants
Phần tiêu đề “Invariants”- AI không tự “chọn vai” một cách tự do.
active attemptluôn thắng mọi intent khác.- Nếu không có override mạnh hơn, runtime phải giữ
currentModecủa conversation thay vì reset về surface default mỗi turn. scenario / what-ifluôn chạy trênscenario state, không chạmactual state.- Mọi
state mutationđều theo ruleconfirm-before-write. - Nếu AI tạo ra
plan_guidancecó checklist đủ rõ để áp dụng, runtime phải chuyển nó thànhscenario planqua shared helper; chatbox/surface chỉ được cho useráp dụnghoặcbỏ qua, không tự commit. Scenario planphải model bằngsteps[], không dùngdays[]; AI được gợi ý bước tiếp theo, không neo cứng vào lịch theo ngày trừ khi có context đặc biệt yêu cầu.- Với learner-facing surfaces, output mặc định nên theo
state -> meaning -> next action -> deep-dive CTA, trừcoaching_raillàfocus -> hint -> self-check. Plan guidancechỉ được lên làm lớp đầu khi page thật sự làstrategy-firsthoặc learner đang ở explicit recovery/high-attention context.Program landinglà source domain riêng: dùngsourceModule = program, không tái dùnglearningnhư proxy semantic.- Content AI hiển thị cho learner phải ưu tiên
compact-by-default: nếu response có nhiều ý, giới hạn còn 2-4purpose-based sectionsngắn với heading rõ. Purpose-based sectionslà lớp semantic trước lớp UI:- runtime xác định response đang có các purpose nào như
assessment,actions,explanation,queue,readiness, - rồi UI mới quyết định render thành compact switch, stacked block, hay split layout.
- runtime xác định response đang có các purpose nào như
- Không dùng một bộ tab cố định cho mọi surface; label/tab phải thay đổi theo job-to-be-done của page và bản chất content.
- Với learner-facing inline surfaces có nhiều purpose, mặc định ưu tiên
compact switch: chỉ một section active hiển thị tại một thời điểm để giữ card ngắn và bảo vệ spacing bên dưới. stacked_sectionschỉ là fallback khi switch làm mất ngữ cảnh cần đọc cùng lúc; còn nếu nội dung dài nhưng không chia section rõ thì UI phải collapse preview thay vì để text đẩy mất CTA.- Nếu response có
checklist/roadmapđủ rõ, lane này phải được coi là một purpose/action lane riêng để UI có thể switch tới nó thay vì luôn render nối tiếp dưới narrative body. - Với surfaces có lane
summaryvàdetail/evidencecùng tồn tại, runtime nên ưu tiên section-specific content cho từng lane;summarylà kết luận ngắn nhất có thể, còndetail/evidencephải giải thích hoặc mở rộng chứ không lặp lại cùng một copy. - Với
strategy_panel,analysis_panel, và vocab diagnosis, lanedetail/evidencenên có ít nhất 2 lớp support nhưevidence + readiness/explanationđể learner hiểu không chỉ “vì sao AI nghĩ vậy” mà còn “điều đó ảnh hưởng gì lúc này”. - Nếu model không trả lane-specific content đủ rõ, runtime vẫn phải tự hydrate lại
summary/detailở mức tối thiểu đểsummarykhông biến thành bản sao củadetail. - Nếu model chỉ trả partial
contentSections, runtime phải merge chúng với planner-defined sections thay vì thay thế toàn bộ; model được phép làm section sâu hơn, nhưng không được làm rơi các detail-support lanes nhưreadiness. - Nếu
detail/evidencechỉ là một paraphrase hơi dài hơn củasummary, runtime nên coi lane đó là under-detailed và hydrate lại bằng rationale rõ hơn thay vì giữ mộtdetailtab chỉ đổi wording. - Nếu surface persist inline AI snapshot theo ngày,
stale detectionchỉ nên đọcsemantic page identity + learner activity signals; không được mark stale chỉ vì page summary, title, hay available-actions chrome đổi sau một lượt polish/UI update. - Nếu page có domain state riêng giàu hơn shared learner store, page đó nên đăng ký thêm
activityFingerprinttrongAIPageContextđể same-day snapshot freshness bám đúng hoạt động học mới của domain đó. Ưu tiên áp dụng cho các route ổn định nhưng state đổi nhiều nhưdashboard tab,program landing,vocab notebook,course queue. - Tránh helper label dư trong body như
Phần đang xem,Summary,Actionsnếu toggle label hoặc section title đã đủ semantic cho learner. - Nếu surface đã có top-level toggle/segmented control, body của lane active không lặp lại cùng title đó thêm lần nữa; toggle là semantic carrier chính.
- Nếu learner đã switch sang lane
detail/evidence, renderer không tự mở thêm compact switch nội bộ hoặcXem thêm nội dung; lane này phải hiển thị đầy đủ theo stacked/full mode. - Surface matrix mặc định:
strategy_panel,analysis_panel,vocabulary diagnosis: ưu tiên3 lane = summary + detail/evidence + actionnếu có đủ nội dung.action_hub,course queue/guide: thường chỉ cần2 lane = snapshot + next action.coaching_rail: ưu tiên inline guidance tuần tự, không nên cố tab hóa thành 3 lane chỉ để đồng bộ hình thức.
- Với
weekly recapvà các recap surface nhẹ, chỉ bật lanedetailkhi runtime thực sự cóevidence/detailpurpose; không ép 3 lane mặc định nếu recap chỉ cần snapshot + next action.
3) Input Contract tối thiểu cho mọi AI surface
Phần tiêu đề “3) Input Contract tối thiểu cho mọi AI surface”Mỗi surface mới phải khai báo đủ:
sourceModuleentryChanneldefaultRoledefaultModeactiveAttempt behavioravailableActionsfallback state
Memory tối thiểu phải giữ
Phần tiêu đề “Memory tối thiểu phải giữ”- Conversation persistence chỉ nên giữ metadata tối thiểu cần cho continuity:
artifactTypecủa assistantchatSuggestionsvừa hiện
- Không lưu thêm metadata nặng nếu runtime hiện chưa thật sự dùng đến nó.
Action execution rule
Phần tiêu đề “Action execution rule”- Client executor phải ưu tiên
availableActionscủa page context trước. - Chỉ fallback về canonical route khi page context không khai báo action tương ứng.
- Không cho AI tự suy luận target DOM hay internal route ngoài registry của page.
- Page context phải được
normalizetrước khi runtime dùng đến nó; nếu surface thiếusourceModule,summary,pageTitle, hayavailableActions, runtime được phép tự suy luận bản tối thiểu từpagePath + pageContext + surface defaults. - Không duy trì nhiều action runtime song song cho cùng một nhiệm vụ. Nếu đã có shared executor thì các AI cards, chat panel, và harness phải đi qua cùng lane đó.
- Embedded AI surfaces không được gọi raw
callAITutor()với prompt ad-hoc. Mọi surface card phải đi qua mộtshared surface runtimecó spec chung chorole + mode + prompt builder. Shared surface runtimekhông được đưa raw internal prompt vào query router. Mỗi surface phải có mộtrouting queryngắn theo job-to-be-done của surface để dùng chung intent logic với chatbox.- Prompt của embedded AI surfaces không được tự derive lại
highAttention,weakTopics,recentScoreAvgtrực tiếp trong từng surface runtime; các heuristic này phải đi qua decision layer trước. - Nếu model không trả actionSuggestions hợp lệ,
surface runtimephải tự hydratenext-best actiontừ shared conversation planner trước khi trả response cho UI. - Embedded AI card không được hardcode CTA fallback kiểu “Tiếp tục luyện tập” hay “Sửa lộ trình” nếu CTA đó không đi qua shared action contract.
Context intelligence rule
Phần tiêu đề “Context intelligence rule”- Đừng đẩy toàn bộ bài toán ngữ cảnh vào prompt. Ưu tiên một lớp
context-intelligencenhỏ để:- suy luận surface khi page registration còn thiếu
- tạo
seed chat suggestionstừsurface + skill/program + learner state + availableActions - validate hoặc backfill
actionSuggestionstrước khi render
- Default quick suggestions và follow-up
chatSuggestionsphải đi qua mộtshared suggestion planner; planner được phép trộnmodel output + decision state + conversation history + contextual seeds, nhưng UI shell không tự sinh chip ad-hoc. - Nếu muốn model tạo suggestion tốt hơn, prompt phải nhận một
decision summaryngắn từ shared decision layer trước khi gọi model. chatSuggestionsphải là câu hỏi/nguyện vọng từ góc nhìn learner, tối đa 2-3 item, không lặp lại gợi ý gần nhất.actionSuggestionschỉ hợp lệ khi khớp vớiavailableActionscủa page hoặc với canonical fallback đã được cho phép.- Nếu một
embedded AI inline surfacecó nội dung đủ giàu để learner muốn đào sâu thêm, surface đó nên có một secondary CTAHỏi sâu hơn với AI Tutor. - CTA deep-dive này không được tự ghép payload ad-hoc trong từng card. Nó phải đi qua một
shared inline -> chat handoff bridge. - Handoff bridge tối thiểu phải mang:
intentId,query,inlineSummary,sourceModule,entryChannel = inline_escalation,returnTo.
Hỏi sâu hơn với AI Tutorlà CTA secondary:- không auto-open,
- không thay CTA chính của page,
- không được làm learner rời flow nếu page đang ở active-work state mà chưa có chủ động từ user.
- Nếu cần
focus/highlight/prefill, dùngsemantic target keysquadata-ai-targethoặc registry tương đương; không cho AI trỏ thẳng vào selector tùy ý. User querycó quyền overridepage biaskhi tín hiệu nội dung đủ mạnh:- nếu learner đang ở Vocabulary nhưng hỏi grammar, AI phải trả lời grammar trực tiếp trước,
- nếu learner đang ở Course nhưng hỏi progress, AI có thể chuyển sang analysis/progress mode,
- page context khi đó chỉ còn là
secondary contextđể cá nhân hóa ví dụ, CTA, hoặc follow-up action.
- Với
direct content question, AI không được mở đầu bằng phân tích dài về page hiện tại; phải trả lời trực diện trước, rồi mới thêm context hoặc bước tiếp theo nếu thật sự hữu ích. Query routerphải trả ra mộtshared response profiletối thiểu cho runtime:answerFormat,detailLevel,pageContextUsage,ctaIntensity.
- Chatbox, tutor service, và embedded AI surfaces không được tự quyết định các trục trên theo kiểu ad-hoc; nếu muốn đổi độ trực diện, độ sâu, hay độ chủ động của CTA thì phải đi qua shared response profile trước.
Tutor service,shared suggestion planner, vàshared surface runtimekhông được tự import rồi ghépquery router + decision layertheo ba đường khác nhau; nếu cả hai lớp cùng cần thiết thì phải đọc quashared conversation plannertrước.AI inline suggestkhông được xem như một widget/card cố định toàn hệ. Mỗi page phải chọnsurface archetypetheomain questioncủa page:action_hubcho page action-first,strategy_panelcho page strategy-first,coaching_railcho active work,analysis_panelcho diagnosis/result,queue_guidecho queue/resource-driven page.
- Một surface mới chưa đủ điều kiện promote nếu chưa khai báo:
main question,primary archetype,why-this-archetype,allowed actions / blocked actions.
- Với learner-facing AI surfaces,
insight-firstlà baseline:- AI nên mở bằng
current-state synthesis, - chỉ sau đó mới tới
next useful action, - không đẩy learner vào checklist/roadmap nếu job-to-be-done chính của page là hiểu hiệu suất, mức hiện tại, hoặc readiness.
- AI nên mở bằng
Insight-firstkhông có nghĩa là report dài:action_hubchỉ cần1 short why-now line,queue_guidechỉ cầnqueue snapshot + do-now item,analysis_panelmới được phép mở rộngsignal -> meaning -> fix,strategy_panelmới được phép mở rộngordered steps.
Nếu thiếu một trong các trường trên thì surface chưa đủ điều kiện để promote thành shared pattern.
4) Harness Rules
Phần tiêu đề “4) Harness Rules”Harness được phép override
Phần tiêu đề “Harness được phép override”surface contextentry channellearner stateattempt statedefault mode seedrole hint
Harness không được phép override
Phần tiêu đề “Harness không được phép override”- core guardrails của runtime
- policy
no-final-answer - policy
confirm-before-write - output contract schema
- provenance disclosure rules
Harness safety
Phần tiêu đề “Harness safety”- Harness chỉ mô phỏng input, không commit dữ liệu thật.
- Khi harness đóng, baseline runtime phải được restore.
- Nếu harness cần mô phỏng plan hay progress, phải dùng
scenario statehoặc snapshot mock, không mutate state thật của learner. - Nếu có nhiều harness surfaces cùng mount trong app, chúng phải dùng chung một
shared harness store; không giữ panel state cục bộ ở từng hook instance. - Harness là
representative scenario matrix, không phải bản đồ đầy đủ của mọi AI behavior trong platform. - Bộ scenario của harness nên tách tối thiểu thành:
canonical_runtime,query_override,edge_case.
- Khi
programđã là source domain hạng nhất trong runtime,canonical_runtimenên có ít nhất một scenarioprogram landingthật để teststrategy-first semanticsmà không đi vòng qualearning. - Nếu thêm scenario mới, ưu tiên lấp gap coverage trước khi tăng số lượng preset trùng nhau.
5) Authoring Rules cho tài liệu AI Tutor
Phần tiêu đề “5) Authoring Rules cho tài liệu AI Tutor”Khi viết hoặc cập nhật spec/UX docs:
- Viết
surface questiontrước, rồi mới viết component UI. - Mỗi surface phải nói rõ
AI đang đóng vai gì. - Mỗi surface phải có
allowed actionsvàblocked actions. - Mọi state giả định phải được dán nhãn là
scenario. - Nếu thêm action mới, phải cập nhật shared registry/contract trước khi rải xuống UX docs.
- Nếu thêm guardrail mới, phải cập nhật master spec trước rồi mới propagate xuống surface docs.
- Không được copy cùng một
AI card structuresang nhiều page chỉ vì cùng dùng AI Tutor; phải map page vàosurface archetypetrước. - Nếu page action-first, ưu tiên
compact next-step surface; nếu page diagnosis-first, ưu tiênanalysis surface; không pha hai job-to-be-done vào cùng một inline unit nếu không có lý do mạnh. - Mọi page learner-facing đăng ký vào AI runtime nên có tối thiểu
sourceModule + surfaceArchetype + mainQuestion + availableActions; nếu thiếu, runtime được quyền infer tạm nhưng inference không thay contract chính thức của page. - Nếu page là
multi-surface containernhư dashboard có tabs/lanes, AI context phải bámactive sub-surface semantics; không được chỉ đăng ký theo parent shell rồi để runtime tự đoán tab hiện tại.
6) Reuse Checklist
Phần tiêu đề “6) Reuse Checklist”Trước khi chốt một AI Tutor change, hãy kiểm:
- Role/mode của surface đã map vào runtime order chưa?
- Handoff payload có đủ
sourceModule + entryChannel + contextchưa? - Surface này có bypass guardrail nào không?
- Nếu là state giả định, đã tách khỏi
actual statechưa? - Harness có dùng lại cùng enum/contract với runtime chưa?
- Baseline có được restore sau khi test/demo không?
7) Kết luận
Phần tiêu đề “7) Kết luận”- Runtime là sản phẩm thật.
- Harness là công cụ nội bộ để ép runtime rõ ràng hơn.
- Mọi mở rộng AI Tutor nên ưu tiên
thêm input contract chuẩnthay vì thêm toggle ngẫu nhiên hay prompt logic riêng lẻ.