Hans Lin 林思翰15 downloadsRead-only local pseudonymization for MD, TXT, CSV, DOCX, and XLSX with manual review.
Hans SafeDoc 是 Obsidian 電腦版的本機文件去識別化外掛。它只讀取來源,讓使用者逐項審核疑似敏感資料,再建立新的安全副本;原始文件不會被覆寫。

| 純合成原始文件 | Hans SafeDoc 安全副本 |
|---|---|
![]() |
![]() |

Hans SafeDoc 會盡量找出疑似敏感資料,但不能保證完整,也不構成法律上的匿名化認定。處理正式資料前請保留來源備份、逐項人工確認,並先用合成文件熟悉流程。
v1.3 支援下列唯讀來源:
.md):嚴格 UTF-8,輸出新副本。.txt):嚴格 UTF-8;UTF-16、NUL 與不安全編碼會阻擋。.csv):用確定性 parser 自動判斷逗號、Tab 或分號;只有結果模糊時才詢問。欄數不一致與試算表主動內容會阻擋。.docx):支援通過精確allowlist的文字、表格、頁首、頁尾、註腳與安全圖片結構。圖片不做OCR,metadata、超連結、主題與圖片必須逐項確認後原樣保留;修訂、巨集、OLE、外部內容及未知結構會阻擋。.xlsx):支援通過精確allowlist的shared/inline文字、格式化識別碼、隱藏工作表與合併儲存格。工作表名稱、定義名稱、表格名稱、metadata與超連結必須逐項確認;公式、註解、外部資料、巨集、pivot及未知結構會阻擋。PDF 不由外掛直接解析。必須先由本機 AI Agent 以確定性工具逐頁轉成 Markdown,確認沒有漏頁或掃描頁,再把該 MD 交給 Hans SafeDoc。原始 PDF 與未安全化 MD 優先留在 Vault 外。
舊版 .doc/.xls、RTF、ODT/ODS、圖片、音訊、影片、Obsidian 畫布(Canvas)、Obsidian 資料庫檢視(Bases)、壓縮檔與其他未列格式都會阻擋。Obsidian 手機版不支援。
人名、組織、專案、產品、部門、系統與自訂詞可匯入工作階段 JSON 客戶字典做精確比對;格式範例見 examples/dictionary.simple.example.json。字典不做模糊猜測、不寫入 Vault 或外掛設定,鎖定工作區或關閉外掛後會清除,且所有結果仍必須人工確認。自動偵測不保證完整,也不是法律上的匿名化判定。
MD/TXT/CSV/DOCX/XLSX 的固定規則可獨立使用,不需要安裝 Ollama(離線模型執行工具)或 LLM(大型語言模型)。正式版不提供模型下載、離線模型匯入或模型推論:第三方候選未通過正式分發的授權/來源審查,零外部權重的自建候選也未達既定precision與recall門檻,因此全部排除於release資產及production runtime之外。
.safe-package.zip 與 .analysis-request.json;交給其他工具時必須兩份一起提供,並要求只回傳符合 result-package.schema.json 的 UTF-8 JSON。原生安全副本保留給本機版面檢查,不作為 Result JSON 的雜湊綁定來源。Hans SafeDoc Restored/<Job>-results[-N]/,不覆寫原始文件、安全輸出或 AI 回傳檔。還原副本再次包含個資,不應上傳雲端。請複製首次教學或內建說明中的完整「本機操作」指令。指令會要求 Agent:原始文件不上雲、PDF 先在本機逐頁轉 MD、CSV 只用確定性 parser 判斷、遇人工審核立即停下、不得替使用者批次確認,且只有重新開檔與殘留檢查通過後才能回報安全副本。
請複製首次教學或內建說明中的完整指令,並只提供配對的 .safe-package.zip 與 .analysis-request.json。指令會限制 AI 不得讀取原始檔或還原個資、要求逐字保留每一個 ⟦PB:…⟧ 安全代碼,且只回傳符合 result-package.schema.json 的單一 UTF-8 JSON;完整性無法確認時必須停止。
hans-safedoc 官方 listing 的「Add to Obsidian」啟用前,請使用下列手動安裝方式。
manifest.version 完全相同版本的 main.js、manifest.json、styles.css。<Obsidian Vault>/.obsidian/plugins/hans-safedoc/。docs/MASTER-SPEC.md:唯一最高規格docs/DECISION-REGISTER.md:已鎖定決策docs/IMPLEMENTATION-PLAN.md:固定 Merge Order 與 Epicdocs/ACCEPTANCE-MATRIX.md:127 項驗收schemas/:18 份 machine-readable data contractsdocs/THREAT-MODEL-V1.1.md:Hans SafeDoc 1.1 Phase 1 威脅模型docs/UX-STATE-MAP.md:畫面、狀態與按鈕規則docs/TAIWAN-SYNTHETIC-BASELINE.md:版本化臺灣繁中合成偵測基線docs/MIGRATION-AND-RECOVERY.md:備份、復原、刪除與遷移docs/RELEASE-CHECKLIST-V1.1.md:v1.1 Phase 1 Release Gatesdocs/ENGINEER-EXECUTION-PROTOCOL.md:不中斷執行規則MASTER-SPEC
→ JSON Schema
→ Acceptance Matrix
→ Golden Fixtures
→ Decision Register
→ Implementation Plan
→ GitHub Issue
→ Code comments
→ Existing code
reference/legacy-seed/ 只作為規則與測試起始素材,不是規格來源。回歸測試不得被用來宣稱企業資料準確率;它們只是最低安全基線。
0
發現未明確描述的實作細節時,依 ENGINEER-EXECUTION-PROTOCOL.md 的安全優先順序自行決定,不等待產品負責人。
只有以下四類可以阻擋 Release,但其他工作繼續:
BUILD-REPORT.md 列出:
Hans SafeDoc is a desktop-only Obsidian plugin for reviewing and pseudonymizing local documents without overwriting the originals. It supports read-only MD, TXT, CSV, DOCX, and XLSX sources and creates a new safe copy only after item-by-item review and artifact verification.
main.js, manifest.json, and styles.css from the GitHub Release matching manifest.version, then place them in <Vault>/.obsidian/plugins/hans-safedoc/ and restart Obsidian.result-package.schema.json, then choose the original Job and passphrase; Hans SafeDoc validates the Safe Package hash, document IDs, schema, and every token before writing a new Result Vault..doc and .xls, mobile Obsidian, and unsupported formats are not processed directly.