due-diligence-agents 完整教學

zoharbabin/due-diligence-agents — 開源法醫式 M&A 盡職調查工具:13 個 AI agent 平行分析資料室,跨 9 個領域交叉比對,每個發現追溯到確切引文。


1. 專案定位與核心價值

1.1 解決什麼問題

在併購(M&A; Mergers & Acquisitions)盡職調查(Due Diligence; DD)流程中,企業發展團隊面臨三大瓶頸:

  1. 資訊孤島:法律、財務、商務各自產出報告,彼此不交叉比對。同一主體(subject)可能在合約中有控制權變更(change of control)條款風險,同時在財務面有營收集中度(revenue concentration)問題,但無人串接。
  2. 時程壓縮:DD 期程從六週壓到三週,範圍不減但人力不增。
  3. 篩選漏斗:每年篩選 200-1,000+ 家標的公司,最終成交 1-10 家(1-3% conversion rate),大量 DD 成本沉沒。

1.2 核心價值主張

  • 平行多領域分析:9 個領域專家 agent 同時閱讀所有文件,不重複、不遺漏
  • 自動交叉比對:symbolic trigger rules 偵測跨領域依賴,連結人工不易發現的關聯
  • 每個發現可溯源:每個 finding 附帶確切頁碼、原文引文、嚴重度評級
  • 品質守門員:5 個 blocking quality gate,不合格就停止,不產出不可靠的報告
  • 完全本機執行:文件只作為 LLM API 呼叫離開本機,不蒐集遙測、不外傳資料

1.3 適用對象

角色使用場景
企業發展團隊(Corp Dev)標的公司篩選、DD 加速
私募基金(PE/VC)投資組合 DD、跨案追蹤
法律團隊合約審查、條款搜尋
顧問公司加速工作流、降低成本
獨立研究員公司盡調、風險評估

2. 安裝指南

2.1 系統需求

  • Python: >= 3.12
  • LLM 提供者(擇一):
    • Anthropic API(ANTHROPIC_API_KEY
    • AWS Bedrock(AWS_PROFILEAWS_ACCESS_KEY_ID
    • Google Vertex AI(ANTHROPIC_VERTEX_PROJECT_ID
    • Anthropic-compatible gateway(ANTHROPIC_AUTH_TOKEN
  • Claude CLI:需安裝 Claude Agent SDK CLI binary

2.2 安裝方式

推薦(含 PDF 支援):

1pip install 'dd-agents[pdf]'

macOS Homebrew:

1brew install zoharbabin/due-diligence-agents/dd-agents

Docker:

1docker pull zoharbabin/dd-agents
2docker run -v ./data_room:/data -e ANTHROPIC_API_KEY=$ANTHROPIC_API_KEY dd-agents run /data/deal-config.json

開發環境:

1git clone https://github.com/zoharbabin/due-diligence-agents.git
2cd due-diligence-agents
3pip install -e ".[dev,vector,ocr]"
4pre-commit install

2.3 環境變數設定

1# .env 檔案範例
2ANTHROPIC_API_KEY=sk-ant-xxx          # Anthropic 直連
3# 或 Bedrock
4AWS_PROFILE=my-profile
5AWS_ACCESS_KEY_ID=AKIA...
6# 或 Vertex
7ANTHROPIC_VERTEX_PROJECT_ID=my-gcp-project

2.4 驗證安裝

1dd-agents version                     # 顯示版本(v1.17.0)
2dd-agents doctor                      # 系統診斷
3dd-agents doctor --config deal.json   # 預檢 deal config

3. 核心架構解析

3.1 架構總覽


graph TB
    subgraph Input["輸入層"]
        DR["Data Room
PDF / Word / Excel / Image / Audio"] DC["deal-config.json
買方 / 標的 / 領域設定"] end subgraph Extraction["文件萃取層"] EP["Extraction Pipeline
PyMuPDF / GLM-OCR / Whisper / MarkItDown"] FC["Formula Audit
Excel 公式稽核"] QA1["Quality Gate 1
萃取品質檢查"] end subgraph Agents["13 Agent 分析層"] subgraph Specialists["9 Domain Specialists(平行執行)"] S1["Legal Agent"] S2["Finance Agent"] S3["Commercial Agent"] S4["ProductTech Agent"] S5["Cybersecurity Agent"] S6["HR Agent"] S7["Tax Agent"] S8["Regulatory Agent"] S9["ESG Agent"] end subgraph Synthesis["4 Orchestration Agents"] J["Judge Agent
對抗性驗證"] ES["Executive Synthesis
Go / No-Go 信號"] RF["Red Flag Scanner
快速 Triage"] AI["Acquirer Intelligence
買方論述對齊"] end end subgraph CrossDomain["交叉分析層"] CD["Cross-Domain Analysis
Symbolic Trigger Rules"] ER["Entity Resolution
公司名稱匹配"] KB["Deal Knowledge Base
知識圖譜 + Chronicle"] end subgraph QualityGates["品質守門"] QG["5 Blocking Quality Gates
31 QA Checks"] MG["Merge & Audit
去重 / 數值驗證 / 引文核實"] end subgraph Output["輸出層"] HTML["Interactive HTML Report
Go/No-Go + 漸進揭示"] XLSX["16-sheet Excel Report
結構化 Findings"] JSON["Per-subject JSON
Findings + Citations"] IC["IC Memo
投委會備忘錄"] end DR --> EP DC --> EP EP --> FC FC --> QA1 QA1 --> Specialists Specialists --> CD CD --> J J --> MG MG --> QG QG --> ES ES --> Output RF -.->|quick-scan| Output AI -.->|buyer thesis| ES style Input fill:#e8f4f8,stroke:#2196F3 style Extraction fill:#fff3e0,stroke:#FF9800 style Agents fill:#f3e5f5,stroke:#9C27B0 style CrossDomain fill:#e8f5e9,stroke:#4CAF50 style QualityGates fill:#fce4ec,stroke:#F44336 style Output fill:#e0f2f1,stroke:#009688

3.2 38-Step Pipeline 概要

管線分為以下主要階段:

  1. 文件發現與萃取(Steps 1-8):掃描 data room、萃取文字、建立索引、公式稽核
  2. 實體解析(Steps 9-12):公司名稱標準化、子公司對應、前身識別
  3. 領域分析(Steps 13-20):9 個 specialist agent 平行分析所有主體
  4. 交叉比對(Steps 21-26):symbolic trigger rules 偵測跨領域依賴
  5. 品質驗證(Steps 27-32):Judge agent、31 QA checks、引文驗證
  6. 綜合判定(Steps 33-36):Executive Synthesis、severity calibration、Go/No-Go
  7. 報告生成(Steps 37-38):HTML / Excel / JSON / IC Memo

3.3 關鍵模組對照

目錄功能檔案數
src/dd_agents/agents/13 agent 定義 + prompt templates~30
src/dd_agents/extraction/文件萃取(PDF / Office / OCR / 音檔)~17
src/dd_agents/reporting/HTML / Excel / PDF 報告生成~40+
src/dd_agents/knowledge/Deal Knowledge Base + Chronicle~10
src/dd_agents/chat/多輪互動問答引擎~6
src/dd_agents/query/結構化 finding 查詢~3
src/dd_agents/search/合約搜尋(prompt-driven)~5
src/dd_agents/tools/MCP server + agent 工具~19
src/dd_agents/models/Pydantic 資料模型~16
src/dd_agents/validation/品質驗證邏輯~5

4. 主要功能與 API 詳解

4.1 完整管線分析

 1# 基本執行
 2dd-agents run deal-config.json
 3
 4# 指定模型
 5dd-agents run deal-config.json --model claude-sonnet-4-20250514
 6
 7# 經濟模式
 8dd-agents run deal-config.json --model-profile economy
 9
10# 從特定步驟恢復
11dd-agents run deal-config.json --resume-from 16

deal-config.json 結構:

 1{
 2  "config_version": "1.0.0",
 3  "buyer": {
 4    "name": "BUYER_COMPANY_NAME",
 5    "ticker": "",
 6    "notes": ""
 7  },
 8  "target": {
 9    "name": "TARGET_COMPANY_NAME",
10    "subsidiaries": [],
11    "previous_names": []
12  },
13  "agent_models": {
14    "legal": { "provider": "bedrock", "model": "anthropic.claude-sonnet-4-20250514-v1:0" }
15  }
16}

4.2 快速 Red Flag 掃描

1dd-agents run deal-config.json --quick-scan --model-profile economy

產出 GREEN / YELLOW / RED 信號,覆蓋 8 個 deal-killer 類別。適合早期篩選。

4.3 合約搜尋

1dd-agents search prompts.json --data-room ./data_room

使用 plain JSON 定義搜尋欄位,任何法律專業人員都能撰寫:

1{
2  "name": "Change of Control Analysis",
3  "columns": [
4    {
5      "name": "Consent Required",
6      "prompt": "Does this agreement require consent upon a change of control? Answer YES, NO, or NOT_ADDRESSED."
7    }
8  ]
9}

內建搜尋模板涵蓋:change_of_controlip_ownershipnon_competepayment_termsauto_renewalsla_commitmentsdata_privacytermination_rights

4.4 Post-Run 工具

 1# 多輪互動問答(含記憶)
 2dd-agents chat --report _dd/forensic-dd/runs/latest
 3
 4# 結構化查詢
 5dd-agents query --report _dd/forensic-dd/runs/latest
 6
 7# 成本報表
 8dd-agents cost _dd/forensic-dd/runs/latest
 9
10# 資料室品質評估
11dd-agents assess ./data_room
12
13# 多案追蹤
14dd-agents portfolio add "Deal A" --data-room ./data_room_a
15
16# 系統診斷
17dd-agents doctor --config deal-config.json
18
19# 報告差異比較
20dd-agents diff run1/ run2/

4.5 CLI 自動化支援

1# JSON 輸出(適合 CI/CD)
2dd-agents assess ./data_room --json
3dd-agents validate _dd/forensic-dd/runs/latest --json
4dd-agents query --report runs/latest --json

5. 應用場景與實戰範例

5.1 場景一:PE 基金標的篩選

1# Step 1: 初始化 deal config
2dd-agents init my-deal --data-room ./target_dataroom \
3  --deal-type acquisition --buyer "Alpha PE" --target "TargetCo"
4
5# Step 2: 快速 triage(5-10 分鐘)
6dd-agents run my-deal/deal-config.json --quick-scan --model-profile economy
7
8# Step 3: 確認值得深入後,跑完整分析(30-120 分鐘,依資料量)
9dd-agents run my-deal/deal-config.json

5.2 場景二:合約條款批次搜尋

1# 對 200 份合約搜尋 change of control 條款
2dd-agents search examples/search/change_of_control.json --data-room ./contracts/
3
4# 搜尋結果為 Excel,每份合約一列,每個問題一欄

5.3 場景三:跨 run 累積知識

1# 第一次 run
2dd-agents run deal-config.json
3
4# 新增文件後再跑一次,自動累積到 Deal Knowledge Base
5dd-agents run deal-config.json
6
7# 比較兩次結果
8dd-agents diff _dd/forensic-dd/runs/001/ _dd/forensic-dd/runs/002/

5.4 場景四:Per-Agent Provider Routing

1{
2  "agent_models": {
3    "legal": { "provider": "bedrock", "model": "anthropic.claude-sonnet-4-20250514-v1:0" },
4    "finance": { "provider": "anthropic", "model": "claude-sonnet-4-20250514" },
5    "cybersecurity": { "provider": "vertex" }
6  }
7}

不同 agent 可路由到不同 LLM provider,適合有多雲架構的團隊。


6. 資安掃描報告

6.1 掃描範圍

掃描 227 個 Python 模組,檢查項目包含:subprocesseval/execos.systempickle__import__、HTTP 請求、密碼/金鑰處理、shell injection。

6.2 掃描結果

🟡 中風險 — subprocess 使用(已有防護)

檔案行號說明
extraction/transcribe.py:190subprocess.runWhisper 音檔轉錄,有 # noqa: S603 標記
extraction/markitdown.py:139subprocess.runMarkItDown 文件轉換
extraction/pipeline.py:1507subprocess.run萃取管線
tools/run_export_script.py:325subprocess.run匯出腳本執行器
cli.py:55,65subprocess.runCLI 子命令呼叫
cli_auto_config.py:61,223subprocess.run自動配置

緩解措施run_export_script.py 內建完整 sandbox — 明確封鎖 evalexec__import__os.systemos.popen 等危險呼叫,並維護 import 黑名單(包含 requestshttpxurllibsubprocess 等 70+ 項)。

🟢 低風險 — 網路安全防護完善

項目狀態
SSRF 防護net_safety.py 實作完整 — IP 黑名單(private/link-local/loopback)、scheme 白名單(僅 HTTPS)、DNS rebinding 防護
URL 驗證validate_url() + resolve_and_validate() 雙層防護
HTTP redirect_NoRedirectHandler 封鎖不安全重導向
Credential 處理✅ 環境變數讀取,不寫入輸出 artifact

🟢 低風險 — 其他

項目狀態
__import__僅在 transcribe.py 用於 pathlib 動態載入,非使用者可控
API Key 參考僅在 cli.py 用於 credential hint 顯示,不外洩
Eval/exec未發現任何 eval()exec() 直接呼叫
Pickle未使用
Read-only 設計✅ 工具不修改 data room 檔案

6.3 總體評級

🟢 低風險 — 專案展現出色的安全意識。net_safety.py 的 SSRF 防護、run_export_script.py 的 sandbox、read-only 設計、no-telemetry 政策,以及完整的 SECURITY.md 安全政策文件,均顯示此為生產等級的安全考量。唯 subprocess 使用較頻繁,建議部署時注意輸入來源可控性。


7. FAQ 常見問題

Q1: 需要多少 LLM API 成本?

完整 DD 的成本取決於文件數量與模型選擇。dd-agents cost <run_dir> 可查看詳細的 per-provider、per-model 成本明細。使用 --model-profile economy + --quick-scan 可大幅降低成本。

Q2: 支援哪些文件格式?

PDF、Word (.docx)、Excel (.xlsx,含公式稽核)、PowerPoint (.pptx)、圖片(vision-based OCR)、音檔(Whisper 轉錄)。受密碼保護的 Excel 會標記為 [PASSWORD-PROTECTED SPREADSHEET]

Q3: 可以自訂 agent 嗎?

可以。三種方式:

  1. deal-config.json:啟停特定領域 agent
  2. Prompt 客製化:覆寫 prompt template(per-deal 或 per-agent)
  3. 外部 agent 擴充:透過 pip entry-point dd_agents.specialists 註冊自訂 agent

Q4: 可以用 AWS Bedrock 或 Google Vertex 嗎?

可以。v1.14.0 起支援 per-agent provider routing,不同 agent 可路由到不同 provider。設定在 deal-config.jsonagent_models 欄位。

Q5: Pipeline 失敗可以恢復嗎?

可以。使用 --resume-from <step> 從指定步驟恢復,已完成的步驟不會重跑。

Q6: 如何確保報告品質?

管線內建 5 個 blocking quality gate + 31 個 QA checks。Judge agent 對抗性驗證 specialist 發現。品質不達標時管線停止,不會產出不可靠的報告。

Q7: 資料會外洩嗎?

不會。所有分析在本機執行。文件內容只作為 LLM API 呼叫發送到你設定的 LLM endpoint。不蒐集遙測、不外傳分析結果。API key 僅從環境變數讀取,不寫入任何輸出。


8. 進階技巧與最佳實踐

8.1 資料室準備

1# 先評估資料室品質
2dd-agents assess ./data_room
3
4# 常見建議:
5# - 解壓 .zip/.rar 後再跑管線
6# - 確保 PDF 不是純圖片掃描(否則需 OCR)
7# - Excel 公式完整(不要只貼值)
8# - 檔案命名含公司名或主體名(有助 entity resolution)

8.2 多案平行管理

1# 建立投資組合追蹤
2dd-agents portfolio add "Deal Alpha" --data-room ./alpha/
3dd-agents portfolio add "Deal Beta" --data-room ./beta/
4
5# 每個 deal 的 Knowledge Base 獨立累積

8.3 成本最佳化

  • Quick scan 先行:先跑 --quick-scan --model-profile economy,GREEN 才跑完整
  • Per-agent routing:高風險領域用高階模型,低風險用經濟模型
  • Vision cost 追蹤:v1.16.0 起自動計入 vision extraction 的 LLM 花費
  • Cost readerdd-agents cost <run_dir> 顯示 per-provider breakdown

8.4 CI/CD 整合

1# JSON 輸出 + jq 判斷
2VERDICT=$(dd-agents assess ./data_room --json | jq -r '.verdict')
3if [ "$VERDICT" = "RED" ]; then
4  echo "Data room quality too low"
5  exit 1
6fi

8.5 自訂 Prompt 客製化

1# 專案層級客製化
2.dd-agents/
3  customization/
4    legal.md       # 覆寫 Legal agent prompt
5    finance.md     # 覆寫 Finance agent prompt

9. 整合進其他工作流

9.1 與 LiteLLM Gateway 搭配

1# examples/litellm-gateway/config.yaml
2model_list:
3  - model_name: claude-sonnet
4    litellm_params:
5      model: anthropic/claude-sonnet-4-20250514

讓多個 agent 共享 LiteLLM gateway,統一管理 rate limit 和 fallback。

9.2 與 Agno 框架整合

專案提供 examples/agno-bindu/ 範例,展示如何將 DD agent 嵌入 Agno agent 框架。

9.3 MCP Server 模式

1# 啟動 MCP server(供其他 AI 工具呼叫)
2dd-agents mcp-server

工具清單包含:search_in_fileget_page_contentverify_citationvalidate_findingresolve_entityextract_documentread_office 等。

9.4 與 CI/CD Pipeline 整合

1# GitHub Actions 範例
2- name: DD Assessment
3  run: |
4    pip install 'dd-agents[pdf]'
5    dd-agents assess ./data_room --json > assessment.json
6    dd-agents run deal-config.json --quick-scan --json

10. 重點摘要 Checklist

  • 安裝 dd-agents[pdf] 並設定 LLM provider 環境變數
  • dd-agents doctor 驗證安裝
  • 準備 deal-config.json(buyer / target / 領域設定)
  • 先用 dd-agents assess 評估資料室品質
  • Quick scan 先行:--quick-scan --model-profile economy
  • 完整分析:dd-agents run deal-config.json
  • 檢視 HTML 報告:_dd/forensic-dd/runs/latest/report/dd_report.html
  • 互動問答:dd-agents chat --report runs/latest
  • 檢查成本:dd-agents cost runs/latest
  • 了解 13 agent 架構:9 specialists + 4 orchestration
  • 了解 5 blocking quality gate + 31 QA checks
  • 合約搜尋:dd-agents search prompts.json
  • 多案管理:dd-agents portfolio

11. 進一步閱讀

官方文件

背景知識


12. 與 AI-Knowledge Template (AIKT) 的關聯性

12.1 AIKT Layer 22 (company-intel) vs. due-diligence-agents 比較

AIKT 的 Layer 22(company-intel)與本專案同屬「公司盡職調查」領域,但設計哲學、執行方式與輸出格式有顯著差異:

維度AIKT Layer 22 (company-intel)due-diligence-agents
定位輕量級情資收集 + 會前會準備深度法醫式 DD,法律/財務等級
輸入公開資訊(web / SEC / LinkedIn)機密 data room(PDF / Word / Excel)
觸發dd: / ci: / meeting: prefixCLI dd-agents run
Agent 數量1(Claude 本體 + web search)13(9 specialists + 4 orchestration)
領域覆蓋7-phase pipeline(公司概況 → 競爭 → 財務 → 技術 → 團隊 → 風險 → 總結)9 domain(Legal / Finance / Commercial / ProductTech / Cyber / HR / Tax / Regulatory / ESG)
交叉比對無自動交叉比對Symbolic trigger rules + cross-domain analysis
品質控管人工審閱5 blocking gates + 31 QA checks + Judge agent
引文追溯附來源 URL每個 finding 附確切頁碼 + 原文引文
輸出格式Markdown + quarkdown HTMLHTML + 16-sheet Excel + JSON + IC Memo
知識累積無跨 run 累積Deal Knowledge Base + Chronicle + Entity Resolution Cache
成本低(web search + 1 LLM session)高(13 agent × N documents × LLM calls)
執行時間5-15 分鐘30-120+ 分鐘
機密處理projects/company-intel-*/ gitignored全本機 + no-telemetry

12.2 互補性分析

這兩個工具在 DD 流程中處於不同階段,互補性極高:

 1┌─────────────────────────────────────────────────────────┐
 2│                M&A DD 工作流程                           │
 3│                                                         │
 4│  Phase 1: 標的篩選     Phase 2: 初步 DD      Phase 3: 深度 DD   │
 5│  ┌──────────────┐    ┌──────────────┐    ┌──────────────┐   │
 6│  │ AIKT L22     │    │ dd-agents    │    │ dd-agents    │   │
 7│  │ company-intel│───>│ --quick-scan │───>│ full run     │   │
 8│  │              │    │              │    │              │   │
 9│  │ 公開情資收集  │    │ Red Flag     │    │ 13 agent     │   │
10│  │ 7-phase      │    │ Triage       │    │ 38-step      │   │
11│  │ 5-15 min     │    │ 5-10 min     │    │ 30-120 min   │   │
12│  └──────────────┘    └──────────────┘    └──────────────┘   │
13│                                                         │
14│  決策: GO/HOLD/NO-GO  決策: GREEN/YELLOW/RED  決策: Go/No-Go   │
15└─────────────────────────────────────────────────────────┘

Phase 1 → Phase 2 的資訊傳遞:AIKT Layer 22 的公開情資(競爭對手、團隊背景、技術評估、風險初判)可直接寫入 deal-config.jsonbuyer.notestarget.notes,讓 dd-agents 的 Acquirer Intelligence agent 有更好的 context。

Phase 2 → Phase 3 的漏斗效果:dd-agents 的 --quick-scan 產出 GREEN / YELLOW / RED,與 AIKT Layer 22 的 GO / HOLD / NO-GO 形成雙重篩選,減少無效的完整 DD 投入。

12.3 整合建議

方案 A:串接工作流(推薦)

  1. 用 AIKT dd: <公司名> 做公開情資收集
  2. 將 Layer 22 的 markdown 產出中的關鍵發現,摘錄到 deal-config.json
  3. dd-agents run --quick-scan 做初步 triage
  4. GREEN 時啟動完整 dd-agents run

方案 B:雙向知識補充

  • dd-agents 的完整 DD 報告(HTML / Excel)可用 AIKT 的 docling: 萃取為 markdown,再用 pq: 做 RAG 問答
  • dd-agents 的 Deal Knowledge Base 可作為 AIKT paper-qa-lite 的知識來源

方案 C:AIKT 新 Layer 構想

未來可考慮將 dd-agents 作為 AIKT 的 Layer 23 正式整合:

  • 前綴 dd-run: <deal-config路徑> 觸發完整管線
  • 產出自動走 quarkdown 排版 + Discord 打包
  • Deal Knowledge Base 與 AIKT 的 graphify 知識圖合併

12.4 方法論差異

方法論AIKT Layer 22due-diligence-agents
資訊來源公開資料(OSINT)機密文件(data room)
分析框架通用 7-phase(人力可行)專業 9-domain(需 LLM 平行)
驗證機制人工 review gate自動化 Judge + QA checks
可追溯性URL 來源頁碼 + 引文 + citation verification score
擴展性新 phase = 新 prompt 段落新 agent = pip entry-point
授權考量公開資料,無授權風險機密文件,需 NDA / clean room

12.5 總結

due-diligence-agents 填補了 AIKT Layer 22 在「深度 DD + 機密文件分析」的空白。Layer 22 擅長快速、低成本的公開情資收集;due-diligence-agents 擅長深度、法醫等級的機密文件交叉分析。兩者串接可形成完整的 M&A DD 工作流,從標的篩選到最終 Go/No-Go 決策,覆蓋整個盡調生命週期。


來源: https://github.com/zoharbabin/due-diligence-agents (v1.17.0, Apache-2.0) 最後更新: 2026-06-23 AIKT 版本: AI-Knowledge Template v1, Layer 22 (company-intel)