QUY TRÌNH XÂY DỰNG AGENT AI – SECONDBRAIN LLM-Wiki-DUY / SecondBrain-YKhoa

Bản thiết kế quy trình, khung code, mục đích file, workflow vận hành và hướng phát triển tiếp theo

Thông tin Nội dung
Tên hệ thống Agent AI – SecondBrain / LLM-Wiki-DUY
Mục tiêu Xây dựng một kho tri thức y khoa có kiểm soát nguồn, có khả năng ingest tài liệu, audit claim, tổng hợp guideline/trial/lecture và hỗ trợ truy vấn lâm sàng – học thuật.
Định hướng sử dụng Markdown-first, Git-tracked, có validator, có source note, có claim registry, có RAG cục bộ bằng Ollama/Cursor.
Đối tượng sử dụng Bác sĩ, giảng viên, nghiên cứu viên y khoa cần một hệ thống tri thức cá nhân nhưng có kỷ luật nguồn và khả năng tự động hóa.

Ghi chú: Tài liệu này được tổng hợp từ toàn bộ quy ước dự án LLM-Wiki-DUY đã xây dựng trong các trao đổi trước, nhằm dùng như tài liệu hướng dẫn nội bộ để tiếp tục phát triển hệ thống.

Mục lục nội dung

  1. Tóm tắt điều hành
  2. Triết lý thiết kế của SecondBrain
  3. Kiến trúc tổng thể của repo
  4. Mục đích từng nhóm thư mục và file
  5. Khung code lõi của hệ thống
  6. Thiết kế Agent và routing trong AGENTS.md
  7. Quy trình xây dựng từng bước
  8. Workflow vận hành hằng ngày
  9. Quy trình ingest guideline, lecture, trial và textbook
  10. Quy trình audit claim và chống hallucination
  11. Quy trình tạo disease/drug/trial/synthesis page
  12. Prompt mẫu cho Cursor/Agent
  13. Checklist kiểm soát chất lượng
  14. Lộ trình phát triển tiếp theo
  15. Phụ lục lệnh terminal thường dùng

1. Tóm tắt điều hành

LLM-Wiki-DUY / SecondBrain-YKhoa nên được hiểu là một hệ thống tri thức y khoa cá nhân có kiểm soát nguồn, không chỉ là một thư mục ghi chú. Mục tiêu của hệ thống là biến tài liệu thô như guideline, bài giảng, textbook, trial, review và dataset thành các lớp tri thức có thể truy xuất, kiểm định và tái sử dụng cho lâm sàng, nghiên cứu, giảng dạy và viết học thuật.

Điểm khác biệt chính của hệ thống là: mọi kiến thức đi từ nguồn gốc rõ ràng, qua source note, sau đó được audit ở mức claim, rồi mới được đưa vào các trang tổng hợp như disease, drug, guideline, trial, concept, synthesis hoặc teaching note. Như vậy, Agent AI không trả lời dựa trên trí nhớ mơ hồ mà dựa trên wiki nội bộ đã được chuẩn hóa.

Thành phần Vai trò cốt lõi
raw/ Kho chứa tài liệu gốc, không sửa trực tiếp sau khi đưa vào.
wiki/source-notes/ Phiếu đọc nguồn riêng lẻ, trung thành với tài liệu gốc.
wiki/claim-registry/ Danh bạ claim đã chuẩn hóa, giúp kiểm soát độ tin cậy.
wiki/diseases, drugs, trials, guidelines, concepts Tầng tri thức đã tổ chức theo thực thể y khoa.
wiki/synthesis/ Tầng trả lời câu hỏi lâm sàng/học thuật cụ thể dựa trên nhiều nguồn.
wiki/teaching-notes/ Tầng đầu ra cho giảng dạy: slide outline, script, MCQ, CLO.
skills/ Định nghĩa năng lực của Agent và chuẩn thao tác cho từng loại nhiệm vụ.
scripts/ Bộ kiểm tra, tự động hóa, ingest, audit, validate.
local-ai/ Tầng chạy cục bộ với Ollama, prompt hệ thống, RAG và audit.
logs/ Nhật ký thay đổi, log ingest, log audit, log output của LLM.

2. Triết lý thiết kế của SecondBrain

Hệ thống không nên được thiết kế như một chatbot y khoa thông thường. Nó nên được thiết kế như một kho tri thức có kiểm định bằng chứng, trong đó LLM đóng vai trò thủ thư, biên tập viên, kiểm toán viên claim và trợ lý tổng hợp. Vì vậy, mỗi câu trả lời quan trọng phải có đường truy vết về nguồn.

2.1. Nguyên tắc nền tảng

  • Nguồn trước, kết luận sau: không tạo kiến thức tổng hợp nếu chưa có source note hoặc tài liệu gốc tương ứng.
  • Claim-level evidence: mỗi mệnh đề lâm sàng quan trọng phải có nguồn hỗ trợ, mức chắc chắn và tình trạng audit.
  • Không trộn nguồn: lecture, guideline, trial và textbook có vai trò khác nhau; lecture không được dùng như guideline nếu không rõ nguồn.
  • Wiki sống: trang disease/drug/guideline/synthesis được cập nhật khi có nguồn mới hoặc guideline mới.
  • Validator trước khi commit: mọi thay đổi cần qua scripts/validate.py để tránh rác, thiếu cấu trúc, placeholder và lỗi hygiene.
  • Git là bộ nhớ lịch sử: mọi thay đổi quan trọng nên commit với thông điệp rõ ràng.
  • RAG cục bộ là lớp hỗ trợ truy vấn, không thay thế audit bằng chứng.

2.2. Bốn tầng tri thức

Tầng Thư mục Ý nghĩa
Tầng nguồn raw/ và wiki/source-notes/ Bảo tồn tài liệu gốc và ghi chú trung thành theo từng nguồn.
Tầng kiểm soát bằng chứng claim-registry, contradiction-notes, evidence-maps Kiểm định claim, ghi nhận mâu thuẫn, lập bản đồ bằng chứng.
Tầng tri thức diseases, drugs, concepts, guidelines, trials Tổ chức kiến thức theo thực thể y khoa dùng lâu dài.
Tầng đầu ra synthesis, teaching-notes Trả lời câu hỏi cụ thể, tạo nội dung giảng dạy, MCQ, script, outline.

3. Kiến trúc tổng thể của repo

Kiến trúc đề xuất của repo nên giữ nguyên logic Markdown-first. Markdown là định dạng chính để Agent dễ đọc, dễ diff bằng Git, dễ kiểm tra bằng script và dễ chuyển đổi sang Word/slide khi cần.

SecondBrain-YKhoa/
├── AGENTS.md
├── README.md
├── raw/
│   ├── guidelines/
│   │   ├── cardiology/
│   │   ├── endocrinology/
│   │   └── nephrology/
│   ├── lectures/
│   │   ├── vi/
│   │   └── en/
│   ├── textbooks/
│   ├── trials/
│   ├── articles/
│   └── datasets/
├── wiki/
│   ├── index.md
│   ├── source-notes/
│   ├── claim-registry/
│   ├── contradiction-notes/
│   ├── evidence-maps/
│   ├── concepts/
│   ├── diseases/
│   ├── drugs/
│   ├── guidelines/
│   ├── trials/
│   ├── synthesis/
│   ├── dataset-notes/
│   └── teaching-notes/
├── skills/
│   ├── execute/
│   ├── guide/
│   ├── ingest-source/
│   ├── write-source-note/
│   ├── citation-audit/
│   ├── guideline-update/
│   ├── write-synthesis/
│   ├── lint-wiki/
│   └── distill/
├── schema/
│   ├── citation-policy.md
│   ├── page-types.md
│   ├── taxonomy.md
│   └── style-guide.md
├── scripts/
│   ├── validate.py
│   ├── audit-source-notes.py
│   ├── auto-ingest.py
│   └── ingest-registry.json
├── local-ai/
│   ├── prompts/
│   │   └── secondbrain-system.md
│   ├── scripts/
│   │   ├── ingest-and-audit.sh
│   │   ├── ingest-lecture-and-audit.sh
│   │   ├── audit-source-note.sh
│   │   └── rag-audit.sh
│   └── rag/
│       └── simple_rag.py
└── logs/
    ├── log.md
    └── llm-output/

4. Mục đích từng nhóm thư mục và file

4.1. File điều phối cấp repo

File Mục đích Ghi chú vận hành
AGENTS.md Bản đồ điều phối Agent: định nghĩa intent, routing, skill nào được gọi, nguyên tắc không vượt quyền. Đây là “hiến pháp điều phối” của hệ thống. Khi thêm skill mới hoặc workflow mới, cập nhật route ở đây.
README.md Tài liệu giới thiệu repo, cách cài đặt, cách chạy validator, cách ingest, cách hỏi Agent. Nên viết cho người dùng mới hoặc chính bạn sau vài tháng quay lại dự án.
wiki/index.md Mục lục wiki, liên kết đến source note, synthesis, disease, drug, guideline, trial. Cập nhật sau khi source note đã audit hoặc sau khi tạo trang tri thức chính thức.
logs/log.md Nhật ký thao tác: ingest, audit, synthesis, update guideline, sửa validator. Không dùng làm nơi ghi kiến thức lâm sàng; chỉ ghi lịch sử thay đổi.

4.2. raw/: kho tài liệu gốc

raw/ là nơi chứa file gốc. Nguyên tắc là không sửa tài liệu trong raw/. Nếu cần đổi tên, nên đổi tên theo convention rõ ràng rồi commit. Các source note phải có metadata original_file trỏ về file trong raw/.

Nhánh raw/ Nội dung Ví dụ
raw/guidelines/ Guideline hoặc consensus chính thức. 2025_ACC_AHA_ACS_Guideline.pdf
raw/lectures/ Bài giảng PPTX/PDF/DOCX dùng cho teaching source note. Viemgiapthoangqua_baisoanDuy.pptx
raw/textbooks/ Chương sách hoặc textbook reference. Harrison, Braunwald, Oxford Handbook.
raw/trials/ Bài báo thử nghiệm lâm sàng chính. EMPEROR-Preserved, DELIVER, INVICTUS.
raw/articles/ Review, meta-analysis, systematic review, observational study. MAFLD review, HFpEF review.
raw/datasets/ Dữ liệu nghiên cứu hoặc data dictionary. HFpEF readmission dataset.

4.3. wiki/: kho tri thức

Thư mục Mục đích Khi nào dùng
source-notes Phiếu đọc từng nguồn riêng lẻ. Ngay sau khi ingest một guideline, lecture, textbook, trial hoặc article.
claim-registry Danh bạ claim quan trọng đã kiểm định. Khi một claim xuất hiện lặp lại hoặc ảnh hưởng quyết định lâm sàng.
contradiction-notes Ghi nhận mâu thuẫn giữa nguồn. Khi ESC khác ACC/AHA, trial khác textbook, lecture cũ khác guideline mới.
evidence-maps Bản đồ hóa bằng chứng theo PICO/outcome. Khi cần nhìn tổng thể evidence landscape của một câu hỏi.
concepts Khái niệm nền tảng, score, định nghĩa, thuật ngữ. HFpEF, NT-proBNP, PICO, NNT, likelihood ratio.
diseases Trang bệnh học tổng hợp. ACS, HFpEF, pulmonary embolism, toxic multinodular goiter.
drugs Hồ sơ thuốc. Warfarin, alteplase, empagliflozin, dapagliflozin.
guidelines Trang guideline hoặc so sánh guideline. ESC 2024 HTN, ACC/AHA 2025 ACS.
trials Tóm tắt trial theo PICO/PICOS. EMPEROR-Preserved, DELIVER, COAPT.
synthesis Bài tổng hợp trả lời câu hỏi cụ thể. Có nên dùng SGLT2i sau đợt mất bù HFpEF?
dataset-notes Ghi chú dataset và biến nghiên cứu. HFpEF 90-day readmission dataset.
teaching-notes Đầu ra giảng dạy. Slide outline, MCQ, OSCE, CLO mapping.

4.4. skills/: năng lực của Agent

Mỗi skill là một năng lực thao tác có hợp đồng rõ ràng. Một SKILL.md hợp lệ nên có YAML front matter và các mục: What, When, How, Examples, Pitfalls, Changelog. Bản tiếng Việt có thể dùng SKILL_vi.md để đảm bảo workflow song ngữ.

Skill Vai trò
execute Meta-skill xử lý tác vụ chung, kiểm tra yêu cầu và gọi skill phù hợp.
guide Chỉnh governance, AGENTS.md, README, quy trình tổng thể.
ingest-source Đưa file gốc vào raw/, chuẩn hóa tên, ghi metadata nguồn.
write-source-note Viết source note từ tài liệu đã ingest, tạo claim cards và citation anchors.
citation-audit Kiểm tra claim, nguồn, citation, placeholder và mức chắc chắn.
guideline-update Cập nhật trang wiki khi có guideline mới hoặc thay đổi thực hành.
write-synthesis Tổng hợp nhiều source note thành bài trả lời câu hỏi cụ thể.
lint-wiki Kiểm tra hygiene, cấu trúc, index, log, placeholder.
distill Biến workflow lặp lại hoặc lỗi lặp lại thành skill hoặc rule mới.

4.5. schema/: luật dữ liệu và luật văn phong

File Nội dung nên có
citation-policy.md Quy tắc citation: claim nào cần nguồn, format citation anchor, cấm citation mơ hồ.
page-types.md Định nghĩa các loại trang: source note, disease, drug, trial, synthesis, evidence map.
taxonomy.md Chuẩn phân loại chuyên ngành: cardiology, endocrinology, nephrology, infectious disease, geriatrics.
style-guide.md Chuẩn tiếng Việt học thuật, cách dùng thuật ngữ Anh-Việt, cách viết heading, bảng, claim.

4.6. scripts/ và local-ai/: phần tự động hóa

File/script Mục đích
scripts/validate.py Kiểm tra hợp đồng repo: thư mục bắt buộc, skill contract, hygiene, title markdown, placeholder, index/log.
scripts/audit-source-notes.py Audit hàng loạt source note: metadata, section bắt buộc, citation anchors, claim cards.
scripts/auto-ingest.py Tự động match file raw với pipeline trong ingest-registry.json.
scripts/ingest-registry.json Bảng cấu hình pipeline ingest theo loại file, path, regex filename, step cần chạy.
local-ai/prompts/secondbrain-system.md System prompt cục bộ cho Ollama/RAG: luật không hallucinate, ưu tiên wiki, báo thiếu nguồn.
local-ai/scripts/ingest-and-audit.sh Pipeline shell cho guideline/article: prepare → audit → optional index/log.
local-ai/scripts/ingest-lecture-and-audit.sh Pipeline riêng cho lecture PPTX/PDF: tạo source note giảng dạy và audit.
local-ai/scripts/audit-source-note.sh Audit một source note đơn lẻ.
local-ai/scripts/rag-audit.sh Kết hợp retrieval từ wiki với Ollama để kiểm tra câu trả lời/claim.
local-ai/rag/simple_rag.py RAG cục bộ đơn giản: index markdown và trả lời dựa trên retrieval.

5. Khung code lõi của hệ thống

5.1. Khung AGENTS.md

AGENTS.md nên giữ vai trò là router. Nó không chứa toàn bộ kiến thức y khoa, mà chỉ quyết định khi nào gọi skill nào và giới hạn quyền ghi file của mỗi workflow.


# AGENTS.md

## 1. Mission
LLM-Wiki-DUY is a source-grounded medical SecondBrain.
The agent must preserve source traceability, avoid unsupported claims,
and prefer audited wiki notes over unaudited memory.

## 2. Routing table

| User intent | Route | Allowed writes |
|---|---|---|
| Add new raw PDF/PPTX | ingest-source | raw/, logs/ |
| Write source note | write-source-note | wiki/source-notes/ |
| Audit source note | citation-audit | wiki/source-notes/, logs/ |
| Update disease page | write-synthesis or guideline-update | wiki/diseases/, wiki/synthesis/ |
| Compare guidelines | guideline-update | wiki/guidelines/, contradiction-notes/ |
| Lint repo | lint-wiki | logs/, no clinical content changes |

## 3. Core rules
- Do not edit raw/ content.
- Do not create clinical claims without source anchors.
- Do not update wiki/index.md before source note audit is clean.
- Do not use lecture as guideline unless the lecture cites its primary source.
- No placeholders: TODO, Citation needed, Pending, Chờ Agent.

5.2. Khung SKILL.md

---
name: write-source-note
version: 0.1.0
status: active
triggers:
  - "write source note"
  - "ingest guideline"
  - "tạo source note"
dependencies:
  - schema/citation-policy.md
  - schema/page-types.md
owner: LLM-Wiki-DUY
updated: 2026-05-13
---

# write-source-note

## What
Create a source-grounded Markdown note from a raw source.

## When
Use after a file has been placed under raw/ and before synthesis.

## How
1. Read only the specified source.
2. Extract metadata.
3. Define scope.
4. Create teaching/clinical points.
5. Create claim cards with source anchors.
6. Run citation audit.

## Examples
...

## Pitfalls
- Do not treat lecture content as guideline-level evidence.
- Do not invent references.

## Changelog
- 0.1.0: Initial version.

5.3. Template source note


# 2025 ACC/AHA ACS Guideline

---
source_type: guideline
official_title: "2025 ACC/AHA/... Guideline for ACS"
year: 2025
society_or_authors: "ACC/AHA/..."
journal_or_publisher: "Circulation"
doi: "..."
pmid: "..."
original_file: "raw/guidelines/cardiology/2025_ACC_AHA_ACS_Guideline.pdf"
accessed_date: "2026-05-13"
audit_status: "draft | audited | needs_review"
---

## Scope

## Why this source matters

## Key clinical messages

## Recommendations and evidence

## Claim cards

### ACS-ANTIPLATELET-001
Claim:

Source anchor:

Evidence type:

Certainty:

Clinical use:

Audit status:

## References

## Audit notes

5.4. Template claim registry


# HFPEF-THER-001

Claim:
SGLT2 inhibitors reduce heart failure hospitalization in symptomatic HFpEF.

Canonical wording:
In adults with symptomatic HFpEF, SGLT2 inhibitors are recommended or should be considered to reduce heart failure hospitalization, unless contraindicated.

Supported by:
- wiki/source-notes/emperor-preserved-trial.md
- wiki/source-notes/deliver-trial.md
- wiki/source-notes/esc-heart-failure-guideline.md
- wiki/source-notes/aha-acc-hfsa-heart-failure-guideline.md

Evidence type:
Randomized controlled trials + guideline recommendations.

Certainty:
High.

Clinical caveats:
Assess eGFR, ketoacidosis risk, volume status, genital infection risk, and perioperative status.

Status:
Audited.

5.5. Template synthesis page


# SGLT2 inhibitor initiation after decompensated HFpEF

## Clinical question
In a patient hospitalized for decompensated HFpEF, should SGLT2 inhibitor be initiated after stabilization?

## PICO
- P:
- I:
- C:
- O:

## Bottom line

## Evidence summary

## Guideline alignment

## Patient selection

## Contraindications and cautions

## Practical checklist before prescribing

## Claim links

## Related source notes

## Last reviewed

5.6. ingest-registry.json

{
  "pipelines": [
    {
      "name": "guideline-pdf",
      "match": {
        "extensions": [".pdf"],
        "path_contains": ["raw/guidelines"],
        "filename_regex": "(ESC|ACC|AHA|KDIGO|ADA|EASL|AASLD)"
      },
      "steps": [
        "prepare_source_note",
        "citation_audit",
        "update_index_optional",
        "append_log"
      ]
    },
    {
      "name": "lecture-pptx",
      "match": {
        "extensions": [".pptx", ".pdf"],
        "path_contains": ["raw/lectures"]
      },
      "steps": [
        "prepare_lecture_source_note",
        "citation_audit"
      ]
    }
  ]
}

5.7. validate.py: vai trò logic

validate.py không cần hiểu y khoa sâu; nó cần kiểm tra contract kỹ thuật và hygiene của repo. Những kiểm tra nên có:

  • Các thư mục bắt buộc tồn tại: raw, wiki, skills, schema, scripts, logs.
  • wiki/index.md và logs/log.md tồn tại, có heading hợp lệ.
  • Không có rác: .DS_Store, .tmp, pycache, file backup không cần thiết.
  • Mỗi Markdown trong wiki/ có title cấp 1 ở dòng đầu hoặc gần đầu.
  • Mỗi SKILL.md có YAML front matter đủ trường và đủ section bắt buộc.
  • Không có placeholder nguy hiểm: TODO, Citation needed, Pending, Chờ Agent.
  • Source note có metadata original_file hợp lệ.
  • Source note có các section tối thiểu: Scope, Key points, Claim cards, References/Audit notes.

6. Thiết kế Agent và routing trong AGENTS.md

Agent AI trong dự án này nên được hiểu như một nhóm vai trò phối hợp, không phải một Agent đơn lẻ. Mỗi vai trò có quyền đọc/ghi khác nhau để tránh tạo kiến thức không kiểm soát.

Agent/Skill Input Output Quyền ghi
Ingest Agent File PDF/PPTX/DOCX/raw path File đặt đúng raw/, metadata sơ bộ raw/, logs/
Source Note Agent raw file + yêu cầu ingest wiki/source-notes/*.md wiki/source-notes/
Citation Audit Agent source note audit report, sửa lỗi citation/section wiki/source-notes/, logs/
Claim Registry Agent claim cards đã audit claim-registry/*.md wiki/claim-registry/
Contradiction Agent nhiều source note/guideline contradiction-notes/*.md wiki/contradiction-notes/
Guideline Update Agent guideline mới + guideline cũ guidelines page, disease/drug update proposal wiki/guidelines/, wiki/synthesis/
Synthesis Agent nhiều source note + câu hỏi PICO synthesis/*.md wiki/synthesis/
Teaching Agent synthesis/disease/source notes teaching-notes/*.md wiki/teaching-notes/
Lint Agent repo báo lỗi hygiene/contract logs/ hoặc không ghi

6.1. Luồng quyết định routing

User request
  |
  |-- "Tôi có file mới" / "ingest guideline" / "ingest lecture"
  |       -> ingest-source -> write-source-note -> citation-audit
  |
  |-- "Tạo disease page" / "Tổng quan bệnh"
  |       -> check source-notes -> write-synthesis/disease page
  |
  |-- "So sánh guideline" / "có gì mới"
  |       -> guideline-update -> contradiction-notes if needed
  |
  |-- "Hỏi câu lâm sàng"
  |       -> retrieve wiki -> synthesis answer -> cite source notes/claim registry
  |
  |-- "Tạo bài giảng/MCQ/slide"
  |       -> teaching-notes using audited synthesis/source notes
  |
  |-- "Bị lỗi validate/git/script"
          -> lint-wiki or guide

6.2. Nguyên tắc phân quyền ghi file

  • write-source-note không được cập nhật wiki/index.md nếu chưa audit sạch.
  • citation-audit không được tự tạo guideline mới nếu chỉ đang audit source note.
  • guideline-update được đề xuất cập nhật disease/drug/synthesis nhưng nên ghi rõ nguồn thay đổi.
  • teaching-notes không được tạo claim mới ngoài những claim đã có trong source note/synthesis.
  • lint-wiki không được sửa nội dung lâm sàng, chỉ sửa hygiene hoặc báo lỗi.

7. Quy trình xây dựng từng bước

Giai đoạn 0. Chuẩn bị môi trường

  • Cài Git và tạo repo SecondBrain-YKhoa.
  • Cài Python 3 và tạo môi trường script cơ bản.
  • Cài Cursor để chỉnh code, prompt và chạy Agent workflow.
  • Cài Ollama và model phù hợp cho local audit/RAG, ví dụ llama3.2 hoặc model tiếng Việt/y khoa tốt hơn nếu có.
  • Thiết lập quy ước terminal: luôn chạy validate trước commit, luôn kiểm tra git status trước push.
git init
mkdir -p raw wiki/source-notes skills schema scripts logs local-ai/prompts local-ai/scripts local-ai/rag
python3 scripts/validate.py
git status --short

Giai đoạn 1. Tạo contract của repo

  1. Tạo README.md mô tả mục tiêu dự án.
  2. Tạo AGENTS.md với mission, routing table và core rules.
  3. Tạo schema/citation-policy.md, page-types.md, taxonomy.md, style-guide.md.
  4. Tạo wiki/index.md và logs/log.md với heading ban đầu.
  5. Tạo scripts/validate.py bản tối thiểu để kiểm tra sự tồn tại của các đường dẫn bắt buộc.

Giai đoạn 2. Tạo skills lõi

Bắt đầu từ các skills tối thiểu: execute, guide, ingest-source, write-source-note, citation-audit, write-synthesis, lint-wiki, distill. Mỗi skill phải có contract giống nhau để validator kiểm tra được.

skills/write-source-note/SKILL.md
skills/write-source-note/SKILL_vi.md
skills/citation-audit/SKILL.md
skills/citation-audit/SKILL_vi.md
skills/write-synthesis/SKILL.md
skills/lint-wiki/SKILL.md

Giai đoạn 3. Xây validator đủ nghiêm

Validator là hàng rào kỹ thuật quan trọng nhất. Nó không thay thế thẩm định y khoa nhưng giúp tránh lỗi cấu trúc. Sau mỗi lần sửa AGENTS, skills, schema hoặc wiki, phải chạy validate.

python3 scripts/validate.py

# Nếu có lỗi:

# 1. Đọc lỗi cụ thể.

# 2. Sửa đúng file.

# 3. Chạy lại validate.

# 4. Chỉ commit khi validate OK.

Giai đoạn 4. Pilot ingest 1–3 guideline

Không nên ingest hàng loạt ngay. Cần pilot với vài guideline chất lượng cao để kiểm tra template source note, audit rule, validator và index/log. Dự án đã đi theo hướng này với guideline tim mạch như ESC hypertension, ESC AF, ACC/AHA/HRS AF và ACS.


# Ví dụ guideline
raw/guidelines/cardiology/2025_ACC_AHA_ACS_Guideline.pdf
wiki/source-notes/2025-acc-aha-acs-guideline.md

local-ai/scripts/ingest-and-audit.sh prepare   raw/guidelines/cardiology/2025_ACC_AHA_ACS_Guideline.pdf   wiki/source-notes/2025-acc-aha-acs-guideline.md   "2025 ACC/AHA ACS Guideline"

local-ai/scripts/ingest-and-audit.sh audit   wiki/source-notes/2025-acc-aha-acs-guideline.md

Giai đoạn 5. Tạo quy trình ingest lecture

Lecture cần workflow riêng vì bài giảng thường chứa nội dung diễn giải, hình ảnh, slide và nguồn tham khảo không đồng đều. Agent phải ghi rõ learning objectives, teaching points, references trên slide và không dùng lecture như guideline nếu không rõ nguồn gốc.

@raw/lectures/vi/endocrinology/Viemgiapthoangqua_baisoanDuy.pptx
@wiki/source-notes/lecture-endocrinology-viemgiapthoangqua-baisoanduy.md

Ingest lecture source note. Tiếng Việt học thuật.
1. Chỉ dùng file đính kèm.
2. Không sửa raw/.
3. Không cập nhật wiki/index.md và logs/log.md ở bước này.
4. Điền learning objectives, teaching points, references trên slide.
5. Không dùng lecture như guideline nếu không có nguồn gốc rõ.
6. Claims index + Claim cards.
7. Không placeholder: Citation needed, TODO, Pending, Chờ Agent.

Sau đó:
local-ai/scripts/ingest-lecture-and-audit.sh audit   wiki/source-notes/lecture-endocrinology-viemgiapthoangqua-baisoanduy.md

Giai đoạn 6. Tạo RAG cục bộ

RAG cục bộ dùng để truy xuất source note và synthesis khi hỏi Agent. Ở giai đoạn đầu, simple_rag.py có thể index toàn bộ Markdown trong wiki/ và trả về các đoạn liên quan. Giai đoạn sau có thể thay bằng vector database tốt hơn.

python3 local-ai/rag/simple_rag.py index wiki/
python3 local-ai/rag/simple_rag.py answer "Tiêu chuẩn chẩn đoán suy tim cấp là gì?"

Giai đoạn 7. Đóng vòng audit → index → log → commit

python3 scripts/validate.py
git status --short
git add wiki/source-notes/2025-acc-aha-acs-guideline.md scripts/validate.py logs/log.md wiki/index.md
git commit -m "ingest and audit 2025 ACC AHA ACS guideline"
git push

8. Workflow vận hành hằng ngày

8.1. Workflow thêm một nguồn mới

1. Đưa file vào raw/ đúng thư mục.
2. Đổi tên file rõ ràng, không dấu hoặc có quy ước thống nhất.
3. Tạo source note trong wiki/source-notes/.
4. Chạy audit source note.
5. Sửa lỗi metadata, section, claim, citation.
6. Chạy validate toàn repo.
7. Nếu sạch, cập nhật wiki/index.md và logs/log.md.
8. Commit bằng Git.

8.2. Workflow hỏi một câu lâm sàng

Câu hỏi lâm sàng
  -> kiểm tra wiki/synthesis có bài tương ứng chưa
  -> nếu chưa, truy source-notes + trials + guidelines + claim-registry
  -> tạo câu trả lời có cấu trúc PICO hoặc clinical reasoning
  -> chỉ dùng claim có nguồn
  -> nếu thiếu nguồn, báo thiếu và đề xuất ingest thêm
  -> nếu có mâu thuẫn, ghi contradiction note hoặc cảnh báo

8.3. Workflow tạo teaching note

source-notes + synthesis + disease page
  -> xác định đối tượng học: Y3/Y6/nội trú/bác sĩ
  -> learning objectives K-S-A
  -> outline slide
  -> script giảng
  -> MCQ/OSCE nếu cần
  -> map CLO nếu là học phần
  -> lưu wiki/teaching-notes/

8.4. Workflow sửa lỗi validator

python3 scripts/validate.py

# đọc lỗi

# sửa đúng file
python3 scripts/validate.py

# nếu OK:
git status --short
git add <files>
git commit -m "fix validator issues"

9. Quy trình ingest guideline, lecture, trial và textbook

9.1. Guideline

  • Ưu tiên metadata chính thức: title, society, year, journal, DOI/PMID, URL nếu có.
  • Scope phải rõ: guideline này áp dụng cho bệnh/câu hỏi nào, không áp dụng cho gì.
  • Khuyến cáo nên tách thành claim cards, ghi class of recommendation và level of evidence nếu guideline có.
  • Sau audit, cập nhật guideline page hoặc disease/drug page nếu có thay đổi thực hành.

9.2. Lecture

  • Ghi learning objectives, teaching points và references xuất hiện trên slide.
  • Phân biệt nội dung giảng viên diễn giải với guideline/trial nguồn gốc.
  • Nếu slide không có nguồn, đánh dấu claim cần thận trọng hoặc không đưa vào claim registry.
  • Lecture source note hữu ích cho teaching-notes nhưng không nên dùng làm bằng chứng cao nhất cho quyết định lâm sàng.

9.3. Trial

  • Trial note nên theo PICOS: population, intervention, comparator, outcomes, study design.
  • Ghi inclusion/exclusion, baseline risk, primary outcome, secondary outcome, adverse events, limitation.
  • Tách kết quả tuyệt đối và tương đối nếu có: HR/RR/OR, ARR, NNT, CI, p-value.
  • Liên kết trial với disease/drug/synthesis page liên quan.

9.4. Textbook

  • Textbook phù hợp cho cơ chế bệnh sinh, sinh lý, định nghĩa nền tảng và giải thích kinh điển.
  • Không dùng textbook cũ để phủ định guideline mới nếu guideline cập nhật dựa trên trial mới.
  • Textbook note nên ghi edition, chapter, tác giả chương và phạm vi nội dung.

10. Quy trình audit claim và chống hallucination

Trong hệ thống này, “claim” là một mệnh đề có thể đúng/sai hoặc cần bằng chứng, đặc biệt nếu ảnh hưởng đến chẩn đoán, điều trị, tiên lượng, phân tầng nguy cơ hoặc giáo dục y khoa. Audit claim là cách biến nội dung LLM từ văn bản trôi nổi thành tri thức có kiểm định.

10.1. Các loại claim cần audit

Loại claim Ví dụ Yêu cầu nguồn
Claim chẩn đoán HFpEF cần triệu chứng suy tim, LVEF bảo tồn và bằng chứng tăng áp lực đổ đầy. Guideline hoặc consensus.
Claim điều trị SGLT2 inhibitor giảm nhập viện suy tim ở HFpEF. Trial chính + guideline.
Claim chống chỉ định DOAC không dùng trong hẹp hai lá trung bình-nặng do thấp. Guideline + trial nếu có.
Claim liều thuốc Alteplase low-dose slow infusion trong kẹt van cơ học. Guideline, review chuyên sâu, registry/series nếu guideline hạn chế.
Claim dịch tễ Tỷ lệ hiện mắc hoặc nguy cơ. Review, registry, guideline, nguồn dữ liệu dịch tễ.

10.2. Audit checklist

  • Claim có được viết rõ, không mơ hồ không?
  • Claim có đúng phạm vi dân số không?
  • Claim có citation anchor về source note hoặc tài liệu gốc không?
  • Nguồn có phù hợp loại claim không: guideline cho khuyến cáo, trial cho hiệu quả, textbook cho cơ chế?
  • Có mâu thuẫn với guideline mới hơn không?
  • Có ngoại lệ quan trọng không?
  • Có placeholder hoặc citation giả không?
  • Claim có nên đưa vào claim-registry không?

10.3. Xử lý mâu thuẫn

Nếu phát hiện mâu thuẫn:
1. Không tự hòa giải bằng suy đoán.
2. Ghi rõ nguồn A nói gì, nguồn B nói gì.
3. Kiểm tra năm xuất bản và phạm vi áp dụng.
4. Nếu guideline mới hơn thay đổi thực hành, ưu tiên guideline mới nhưng vẫn ghi caveat.
5. Tạo wiki/contradiction-notes/<topic>.md nếu mâu thuẫn quan trọng.

11. Quy trình tạo disease/drug/trial/synthesis page

11.1. Disease page


# Heart failure with preserved ejection fraction

## Definition

## Epidemiology

## Pathophysiology

## Diagnostic approach

## Phenotypes

## Differential diagnosis

## Treatment

## Follow-up

## Special populations

## Key claims

## Evidence links

## Related source notes

## Last reviewed

11.2. Drug page


# Empagliflozin

## Drug class

## Mechanism of action

## Indications

## Dose and administration

## Renal considerations

## Contraindications

## Adverse effects

## Monitoring

## Trial evidence

## Guideline recommendations

## Practical prescribing checklist

## Related claims

## Last reviewed

11.3. Trial page


# EMPEROR-Preserved

## Full citation

## Clinical question

## PICOS

## Design

## Population

## Intervention and comparator

## Outcomes

## Results

## Safety

## Limitations

## Applicability

## Related guideline recommendations

## Related claims

11.4. Synthesis page

Synthesis page nên trả lời một câu hỏi đủ hẹp. Đây là tầng gần nhất với câu trả lời cuối của Agent. Ví dụ tốt: “oxygen therapy in ACS with SpO2 > 90%”, “SGLT2i after decompensated HFpEF”, “DOAC in moderate-to-severe mitral stenosis”.

12. Prompt mẫu cho Cursor/Agent

12.1. Prompt ingest guideline

@raw/guidelines/cardiology/<file>.pdf
@wiki/source-notes/<out>.md

Ingest guideline source note. Tiếng Việt học thuật.
Yêu cầu:
1. Chỉ dùng file đính kèm.
2. Không sửa raw/.
3. Tạo metadata đầy đủ: title, society, year, DOI/PMID nếu có, original_file.
4. Viết Scope, Why this source matters, Key clinical messages.
5. Tạo Claim cards cho các khuyến cáo quan trọng.
6. Nếu guideline có COR/LOE, ghi đầy đủ.
7. Không dùng placeholder: TODO, Citation needed, Pending, Chờ Agent.
8. Không cập nhật wiki/index.md và logs/log.md trước khi audit sạch.

Sau đó chạy:
local-ai/scripts/ingest-and-audit.sh audit wiki/source-notes/<out>.md

12.2. Prompt tạo disease page

Tạo disease note tại:
wiki/diseases/<disease>.md

Chỉ sử dụng các nguồn trong:
- wiki/source-notes/
- wiki/guidelines/
- wiki/trials/
- wiki/claim-registry/

Yêu cầu:
1. Không tạo claim mới nếu không có nguồn.
2. Mỗi khuyến cáo chẩn đoán/điều trị phải liên kết về source note hoặc claim registry.
3. Cấu trúc gồm Definition, Epidemiology, Pathophysiology, Diagnosis, Treatment, Follow-up, Key claims.
4. Nếu có khác biệt guideline, ghi vào mục Guideline differences và đề xuất contradiction-note.
5. Tiếng Việt học thuật, thuật ngữ Anh-Việt khi cần.

12.3. Prompt audit source note

Audit file:
@wiki/source-notes/<file>.md

Yêu cầu:
1. Kiểm tra metadata, đặc biệt original_file.
2. Kiểm tra các section bắt buộc.
3. Kiểm tra claim cards: claim rõ, source anchor rõ, evidence type, certainty, audit status.
4. Tìm placeholder: TODO, Citation needed, Pending, Chờ Agent.
5. Không thêm claim mới nếu không có nguồn trong file.
6. Xuất danh sách lỗi và sửa trực tiếp nếu an toàn.
7. Sau audit, chạy scripts/validate.py.

12.4. Prompt hỏi câu lâm sàng dựa trên wiki

Dựa trên wiki hiện có, trả lời câu hỏi:
<clinical question>

Yêu cầu:
1. Ưu tiên wiki/synthesis nếu có.
2. Nếu chưa có synthesis, truy wiki/source-notes, wiki/trials, wiki/guidelines, wiki/claim-registry.
3. Trả lời theo cấu trúc: Bottom line, Clinical reasoning, Evidence, Practical checklist, Caveats.
4. Nếu thiếu nguồn trong wiki, nói rõ thiếu nguồn và đề xuất file cần ingest.
5. Không dùng trí nhớ ngoài wiki để tạo khuyến cáo chắc chắn nếu không có nguồn.

12.5. Prompt debugging repo

Tôi đang gặp lỗi validate/git/script sau:
<paste terminal output>

Hãy phân tích:
1. Lỗi nằm ở file nào?
2. Nguyên nhân kỹ thuật là gì?
3. Sửa tối thiểu như thế nào?
4. Lệnh terminal cần chạy tiếp theo là gì?
5. Không thay đổi nội dung lâm sàng nếu không cần.

13. Checklist kiểm soát chất lượng

13.1. Checklist trước khi commit

  • git status –short đã được xem.
  • python3 scripts/validate.py chạy OK.
  • Không còn file rác .DS_Store, .tmp, pycache không cần thiết.
  • Source note có original_file đúng đường dẫn.
  • Không còn placeholder TODO/Citation needed/Pending/Chờ Agent.
  • wiki/index.md chỉ cập nhật sau khi source note có audit sạch.
  • logs/log.md có entry ngắn gọn, không ghi lâm sàng dài dòng.
  • Commit message mô tả đúng thay đổi.

13.2. Checklist chất lượng source note

  • Metadata đủ và chính xác.
  • Scope rõ: nguồn này nói về gì và không nói về gì.
  • Key points không vượt quá nội dung nguồn.
  • Claim cards đủ anchor, evidence type và certainty.
  • References không bịa, không để rỗng nếu tài liệu có reference.
  • Audit notes ghi vấn đề còn nghi ngờ nếu có.

13.3. Checklist chất lượng synthesis

  • Câu hỏi đủ hẹp, có thể trả lời bằng bằng chứng hiện có.
  • Có bottom line rõ nhưng không quá chắc nếu nguồn yếu.
  • Có phân biệt guideline, trial, textbook, lecture.
  • Có caveat và ngoại lệ quan trọng.
  • Có liên kết về claim registry hoặc source notes.
  • Có Last reviewed để biết độ mới.

14. Lộ trình phát triển tiếp theo

14.1. Việc nên làm ngay

  1. Ổn định validate.py và audit-source-notes.py để bắt lỗi source note thiếu section, thiếu original_file, placeholder, title sai.
  2. Chuẩn hóa template source note cho guideline, lecture, trial và textbook riêng biệt.
  3. Hoàn thiện ingest-lecture-and-audit.sh vì lecture PPTX đang là nhóm nguồn quan trọng cho giảng dạy.
  4. Tạo 5–10 source notes tim mạch chất lượng cao trước khi mở rộng hàng loạt.
  5. Tạo thử 2 disease pages: acute coronary syndrome và heart failure with preserved ejection fraction.
  6. Tạo thử 2 synthesis pages: SGLT2i in HFpEF after decompensation; oxygen therapy when SpO2 > 90%.
  7. Tạo claim-registry ban đầu cho HFpEF, ACS, anticoagulation in AF/mitral stenosis.

14.2. Việc nên làm trong 2–4 tuần

  • Tự động hóa auto-ingest.py dựa trên ingest-registry.json để giảm lặp thao tác.
  • Tăng cường RAG: index wiki theo chunk, trả về file path và heading rõ ràng.
  • Tạo command “ask-wiki” để hỏi trực tiếp dựa trên source notes/synthesis.
  • Thêm stale guideline check: cảnh báo khi guideline cũ hơn guideline mới cùng topic.
  • Tạo evidence-map cho các chủ đề trọng điểm: HFpEF, ACS antiplatelet, anticoagulation in AF, mitral valve disease.
  • Tạo teaching-notes tự động từ disease/synthesis cho bài giảng, MCQ và CLO mapping.

14.3. Việc nên làm trong 1–3 tháng

  • Xây vector database cục bộ thay cho simple_rag.py nếu số lượng tài liệu tăng lớn.
  • Tạo dashboard index hoặc static site để duyệt wiki dễ hơn.
  • Tạo hệ thống claim ID thống nhất theo chuyên ngành: CARD-HF-THER-001, CARD-ACS-DX-001.
  • Tạo pipeline xuất Word/PowerPoint từ teaching-notes.
  • Tích hợp Zotero hoặc citation manager để kiểm soát DOI/PMID/reference metadata.
  • Tạo benchmark câu hỏi lâm sàng để kiểm tra Agent có trả lời đúng theo wiki không.

14.4. Mục tiêu dài hạn

  • SecondBrain trở thành kho tri thức y khoa cá nhân có khả năng trả lời câu hỏi lâm sàng dựa trên nguồn đã audit.
  • Có khả năng cập nhật guideline định kỳ và cảnh báo các synthesis/disease/drug page bị lỗi thời.
  • Có khả năng sinh bài giảng, MCQ, đề cương nghiên cứu và tổng quan học thuật từ cùng một nền tri thức.
  • Có quy trình kiểm định chống hallucination ở mức claim, không chỉ ở mức citation chung chung.
  • Có thể triển khai offline/cục bộ để bảo vệ dữ liệu và giảm phụ thuộc nền tảng bên ngoài.

15. Phụ lục lệnh terminal thường dùng

15.1. Kiểm tra repo

python3 scripts/validate.py
git status --short
grep -R "TODO\|Citation needed\|Pending\|Chờ Agent" wiki skills schema logs || true

15.2. Xóa file rác macOS

find . -name .DS_Store -delete
rm -rf .tmp
find . -type d -name __pycache__ -prune -exec rm -rf {} +

15.3. Ingest guideline

local-ai/scripts/ingest-and-audit.sh prepare   raw/guidelines/cardiology/<file>.pdf   wiki/source-notes/<source-note>.md   "<Official title>"

local-ai/scripts/ingest-and-audit.sh audit   wiki/source-notes/<source-note>.md

15.4. Ingest lecture

local-ai/scripts/ingest-lecture-and-audit.sh prepare   raw/lectures/vi/<specialty>/<file>.pptx   wiki/source-notes/lecture-<specialty>-<topic>.md   "<Lecture title>"

local-ai/scripts/ingest-lecture-and-audit.sh audit   wiki/source-notes/lecture-<specialty>-<topic>.md

15.5. Commit an toàn

python3 scripts/validate.py
git status --short
git add AGENTS.md README.md schema/ skills/ scripts/ wiki/ logs/
git commit -m "<clear message>"
git push

15.6. Lệnh hỏi Ollama cục bộ

ollama run llama3.2 "Dựa trên wiki/source-notes, hãy tóm tắt các claim chính về HFpEF. Không tạo claim không nguồn."

Kết luận

Hướng đúng của dự án là tiếp tục củng cố tầng nền: validator, source note template, audit claim, claim registry và RAG cục bộ. Chỉ khi tầng nguồn đã sạch, việc tạo disease page, drug page, synthesis page và teaching note mới có độ tin cậy cao. Với cấu trúc hiện tại, SecondBrain-YKhoa có thể phát triển thành một Agent AI y khoa cá nhân hóa, có khả năng trả lời dựa trên bằng chứng, hỗ trợ giảng dạy và nghiên cứu, đồng thời giảm đáng kể nguy cơ hallucination so với hỏi LLM trực tiếp không có kho nguồn.