RESTRICTED / 限閱 — 內部使用 Internal Use Only

Ajna Chakra

FDE 培訓平台 / FDE Training Platform

六週培訓計畫,培養世界級的前線部署工程師
A 6-week program to build world-class Forward Deployed Engineers

指揮中心概念圖 / Command Center Concept
指揮中心概念圖 / Command Center Concept

什麼是 Ajna Chakra / What Is Ajna Chakra

「你就是客戶眼中的產品。每一次互動,都決定了他們對整個公司的認知。」
"You are the product in the customer's eyes. Every interaction shapes their perception of the entire company."

Ajna Chakra 是為台灣國防部和泰國軍方打造的防禦情報平台。我們的客戶不是普通的企業用戶 — 他們是守護國家安全的軍事情報官員。他們的時間極其寶貴,他們的信任極其難得,他們面對的威脅是真實的。

Ajna Chakra is a defense intelligence platform built for Taiwan's Ministry of National Defense (MoND) and the Royal Thai Armed Forces (RTARF). Our customers are military intelligence officers who guard national security.

特色 Feature說明 Description
完整氣隙部署所有 AI 推理在本地執行,零外部連線 / All AI inference local, zero external connectivity
三語支援 Trilingual繁體中文、英文、泰文的 NER 及 UI / ZH-TW, EN, TH NER and UI
資訊戰模擬 InfoSim獨有的多代理人資訊作戰模擬引擎 / Unique multi-agent information warfare simulation
知識圖譜Apache AGE 驅動的情報實體關係分析 / Intelligence entity relationship analysis
OODA 決策循環自動化觀察-定向-決策-行動循環 / Automated Observe-Orient-Decide-Act cycle
插件系統FDE 可安全擴充平台而不修改核心代碼 / Safely extend without modifying core
總擁有成本 TCO五年成本約為 Palantir 的 1/15 / ~1/15 of Palantir over 5 years

什麼是 FDE / What Is an FDE

FDE(Forward Deployed Engineer,前線部署工程師)是公司派駐到客戶現場的高級技術人員。你不只是工程師 — 你是顧問、培訓師、故障排除專家、以及客戶最信賴的技術夥伴。

An FDE is a senior technical professional deployed to the customer site. You are a consultant, trainer, troubleshooter, and the customer's most trusted technical partner.

FDE 團隊部署 / FDE Team Deployment
FDE 團隊部署 / FDE Team Deployment
維度 Dimension一般工程師 Regular EngineerFDE
工作地點辦公室 Office客戶現場 Customer site
主要對象同事 Colleagues軍方情報官員 Military intel officers
溝通方式技術語言 Technical簡明的軍事術語 Clear military terms
成功指標功能完成 Feature shipped客戶成功使用 Customer productive
部署方式CI/CD pipeline氣隙離線安裝 Air-gap offline
問題處理在 Slack 上求助現場獨立解決 Solve independently

FDE 三大支柱 / The Three Pillars

「FDE 不是碰巧去拜訪客戶的軟體工程師。FDE 是碰巧會寫程式的值得信賴的顧問。」
"An FDE is not a software engineer who happens to visit clients. An FDE is a trusted advisor who happens to write code."
🏠

主人翁思維
Ownership Thinking

你擁有整個部署的成敗。不只是程式碼,是整個結果。如果出了問題,你來修復。你不指責總部,不指責產品。

🧠

軍事同理心
Military Empathy

你的客戶保護國家安全。他們對停機的容忍度是零。在軍事部署中,停機可能意味著生命損失和威脅未被發現。

🔥

主動追求卓越
Proactive Excellence

不要等問題出現 — 預見它們。不要等需求 — 建議改進。永遠讓客戶比你來之前處於更好的狀態。

FDE 十誡 / The 10 FDE Commandments

這些是不可妥協的。記住它們。實踐它們。

These are non-negotiable. Memorize them. Live them.

  1. 永遠不在客戶面前說「不行」/ Never say "impossible" 說:「我們可以這樣做。」「讓我探索方案。」「目前還沒有,但這裡有替代方法。」
    Say: "Here's what we can do." "Let me explore options." "Here's an alternative."
  2. 你就是公司 / You ARE the company 你說的每一句話、做出的每一個承諾都反映了整個組織。客戶不會區分你和公司。
    Every word, every promise reflects the entire organization.
  3. 先聽,再說 / Listen first, speak second 客戶要求的和客戶需要的往往是兩回事。你只有透過深度聆聽才能發現。
    What the customer asks for and needs are often different. Only deep listening reveals this.
  4. 準備三倍 / Prepare 3x what you think you'll need 過度準備的 FDE 看起來毫不費力地專業。為你的備用計畫準備備用計畫。
    The over-prepared FDE looks effortlessly competent. Backup plans for your backup plans.
  5. 紀錄一切 / Document everything 如果沒有寫下來,就等於沒有發生。撰寫你的部署筆記時,假設閱讀者從未見過客戶環境。
    If it's not written down, it didn't happen. Write as if the next FDE has never seen this environment.
  6. 承諾少,交付多 / Under-promise, over-deliver 如果你覺得需要 2 小時,說 4 小時。然後提前交付。信任通過持續超越期望而累積。
    Think 2 hours? Say 4. Deliver early. Trust compounds through exceeded expectations.
  7. 當天回覆 / Same-day response 即使答案是「我正在調查」。沉默滋生焦慮,焦慮滋生不信任。
    Even if the answer is "I'm looking into it." Silence breeds anxiety, anxiety breeds distrust.
  8. 不留問題過夜 / Never leave a known problem unfixed overnight 軍事環境中,夜間壞掉的情報系統是不可接受的作戰風險。
    In military contexts, a broken intel system overnight is an unacceptable operational risk.
  9. 教人釣魚 / Teach the customer to fish 目標不是讓客戶依賴你,而是讓他們自給自足。「我們現在大部分事情都可以自己處理了」— 這是勝利。
    Your goal is self-sufficiency, not dependency. "We can handle most things ourselves now" — that's victory.
  10. 保持謙遜 / Stay humble 你是工具的專家,他們是任務的專家。那位上校在情報分析領域花了 25 年。
    You know the tool, they know the mission. That colonel has 25 years in intel analysis.
🎬
影片教學 / Video Tutorial
FDE 角色介紹 — CEO 歡迎影片 / CEO Welcome Message
錄製要點 / Recording Notes:
"CEO shares the company vision, why FDEs are critical to the mission, and personal stories of customer impact. Film in the office with Ajna Chakra branding visible. 5-7 minutes, bilingual subtitles."
01
系統架構 / System Architecture Week 1-2 | Day 2-3

平台概覽 / Platform Overview

系統架構圖 / System Architecture Diagram
系統架構圖 / System Architecture Diagram

完整資料流 / End-to-End Data Flow

External Sources
外部來源
Connectors
連接器
Redis Streams
Pipeline
Ontology Engine
本體論引擎
Knowledge Graph
+ Vector Store
+ TimescaleDB
Analysis Engines
分析引擎
LLM Engine
Analyst UI
React 19

以一個解放軍戰機進入 ADIZ 的事件為例,追蹤數據從進入系統到呈現在分析官面前的完整路徑:

Trace a PLA aircraft ADIZ incursion event from ingestion to analyst screen:

  1. MND ADIZ Connector → scrapes MND website for ADIZ report
  2. Raw event → published to Redis Streams (pipeline:raw)
  3. Enrichment Worker → LLM extracts entities (aircraft type, quantity, location)
  4. Military NER → maps "殲-16" to J-16 in KB (term ID, trilingual names)
  5. BGE-M3 → generates 1024-dim embedding for the event text
  6. Resolution Worker → deduplicates entities, resolves to existing ontology objects
  7. Graph links created → J-16 squadron → PLA Eastern Theater → Taiwan Strait
  8. Analysis Worker → computes threat score (6-signal composite: 0.73)
  9. Alert rules evaluatedADIZ_HIGH_ACTIVITY alert triggered
  10. IntelligenceBus → publishes AlertTriggered event
  11. WebSocket → pushes real-time alert to connected frontend clients
  12. Dashboard → shows updated threat score, timeline event, alert ribbon

21 模組走讀 / 21 Modules Walkthrough

層級 Layer模組 ModulesFDE 重要性
Layer 1 連接器 Connectorsconnectors/ (MND ADIZ, AIS, News, Satellite, Cyber), gateway/高 HIGH
Layer 2 管線 Pipelinepipeline/ (enrichment, resolution, persist), intelligence/中 MED
Layer 3 本體論 Ontologyontology/, services/高 HIGH
Layer 4 NLP + 分析nlp/, imagery/, analysis/, graph/, search/, security/中 MED
Layer 5 進階分析tactical/, loop/, abi/, killchain/, wargame/, synthesis/, infosim/, collaboration/高 HIGH
Layer 6 LLM 引擎llm/ (providers: claude, ollama)高 HIGH
Layer 7 API28 個 REST 路由器 + WebSocket中 MED
Layer 8 前端React 19, MapLibre, D3.js, Recharts中 MED

資料接收層 / Ingestion Layer

資料連接器與情報來源 / Data Connectors and Intelligence Feeds
資料連接器與情報來源 / Data Connectors and Intelligence Feeds

分析層 / Analysis Layer

AI 威脅分析 / AI-Powered Threat Analysis
AI 威脅分析 / AI-Powered Threat Analysis

視覺化層 / Visualization Layer

戰術顯示介面 / Military Tactical Display
戰術顯示介面 / Military Tactical Display

資料流與 LLM 架構 / Data Flow & LLM Architecture

LLM 提供者抽象層 / LLM Provider Abstraction

LLMClient
(Protocol)
Claude API
開發環境
Ollama
氣隙部署
vLLM
未來擴充
模型 Model用途 Purpose大小 Size
qwen2.5:14b中文情報分析 Chinese intelligence analysis~9 GB
llama3.1:8b英文分析推理 English analysis/reasoning~5 GB
bge-m3多語言嵌入(語義搜索)Multilingual embeddings~600 MB
llava圖像分析(衛星影像)Vision analysis~4 GB

ReACT 簡報代理 / ReACT Briefing Agent

  1. PLAN: 分析任務,決定需要哪些情報
  2. TOOL CALL: 查詢知識圖譜、搜索相關事件 (query_entities, search_events, graph_traverse)
  3. OBSERVE: 分析工具返回的結果
  4. THINK: 判斷是否需要更多資訊
  5. REPEAT steps 2-4 (max iterations: 5)
  6. GENERATE: 產生結構化簡報
🎬
影片教學 / Video Tutorial
系統架構完整導覽 / Full Architecture Walkthrough
錄製要點 / Recording Notes:
"Senior engineer walks through the entire system architecture using live diagrams and code. Show data flowing through each layer. Demonstrate with a real ADIZ incursion event. 15-20 minutes."

前端架構 / Frontend Architecture

目錄 Directory功能 Function對應後端
Dashboard/威脅總覽、警報、摘要analysis/
COP/通用作戰圖(地圖 + 實體)ontology/, MapLibre
Synthesis/ReACT 簡報產生器synthesis/
InfoSim/資訊戰模擬infosim/
Loop/OODA 四象限儀表板loop/
Graph/知識圖譜探索器graph/
Tactical/對手側寫tactical/
Wargame/兵棋推演wargame/
KillChain/F2T2EA 殺傷鏈killchain/
Chat/自然語言查詢api/chat

架構知識測驗 / Architecture Quiz

1. 在氣隙部署中,LLM 推理引擎使用哪個?/ Which LLM engine is used in air-gap deployment?
2. Ajna Chakra 使用哪個資料庫進行圖查詢?/ Which database extension handles graph queries?
3. 管線使用什麼作為訊息佇列?/ What is used as the message queue for the pipeline?
4. InfoSim 引擎有幾種代理人類型?/ How many agent types does the InfoSim engine have?
5. 中文情報分析使用哪個 LLM 模型?/ Which model handles Chinese intelligence analysis?
02
技術能力 / Technical Skills Week 1-2 | Day 4-10

技能自評矩陣 / Skills Self-Assessment Matrix

開發者工作站 / Developer Workstation
開發者工作站 / Developer Workstation

獨立評估你在以下每個領域的能力等級。誠實是進步的前提。

Honestly assess your skill level in each area. Honesty is the prerequisite for improvement.

Python Async / FastAPI

Ajna Chakra 後端全部使用 async/await。所有 LLM 呼叫必須通過抽象層。

Python — FastAPI Endpoint Example
from fastapi import APIRouter, Depends, HTTPException
from pydantic import BaseModel
from ajna.services.ontology import OntologyService
from ajna.security.auth import require_role, Role

router = APIRouter(prefix="/api/v1/entities", tags=["entities"])

class EntityResponse(BaseModel):
    id: str
    name: str
    threat_score: float
    classification: str

@router.get("/{entity_id}", response_model=EntityResponse)
async def get_entity(
    entity_id: str,
    svc: OntologyService = Depends(),
    user = Depends(require_role(Role.ANALYST)),
):
    entity = await svc.get_by_id(entity_id)
    if not entity:
        raise HTTPException(404, "Entity not found")
    return entity

React / TypeScript

TypeScript — React Component with TanStack Query
import { useQuery } from '@tanstack/react-query';
import { api } from '../lib/api';

interface Entity {
  id: string;
  name: string;
  threatScore: number;
}

export function EntityList() {
  const { data, isLoading, error } = useQuery({
    queryKey: ['entities'],
    queryFn: () => api.get<Entity[]>('/api/v1/entities'),
  });

  if (isLoading) return <div>Loading...</div>;
  if (error) return <div>Error: {error.message}</div>;

  return (
    <ul>
      {data?.map(e => (
        <li key={e.id}>{e.name} — {e.threatScore}</li>
      ))}
    </ul>
  );
}

PostgreSQL + 擴充套件 / Extensions

PostGIS 地理空間查詢

SQL — PostGIS: Find entities within Taiwan ADIZ
-- 找出台灣 ADIZ 內的所有實體
SELECT o.name, o.properties->>'type' AS entity_type,
       ST_AsGeoJSON(o.location) AS geojson
FROM ontology_objects o
WHERE ST_Within(o.location, ST_GeomFromGeoJSON('...'));

pgvector 語義搜索

SQL — pgvector: Semantic similarity search
-- 找出語義上最相似的 5 個事件
SELECT e.title, e.summary,
       1 - (e.embedding <=> query_embedding) AS similarity
FROM events e
ORDER BY e.embedding <=> query_embedding
LIMIT 5;

Apache AGE 圖查詢 (Cypher)

SQL — Apache AGE: Find PLA subordinate units
SELECT * FROM cypher('ajna_graph', $$
    MATCH (tc:MilitaryUnit {name: 'PLA Eastern Theater Command'})
          -[:COMMANDS*1..3]->(unit)
    RETURN unit.name, unit.type
$$) AS (name agtype, type agtype);

Docker / Kubernetes

容器編排視覺化 / Container Orchestration
容器編排視覺化 / Container Orchestration
bash — Essential Docker commands for FDE
# 檢查所有服務狀態
docker compose -f docker-compose.airgap.yml ps

# 查看後端日誌
docker compose logs backend --tail=100 -f

# 重啟特定服務
docker compose restart backend

# 資料庫備份
docker compose exec -T postgres pg_dump -U ajna ajna | gzip > backup.sql.gz

# Ollama 模型管理
docker compose exec ollama ollama list
docker compose exec ollama ollama run qwen2.5:14b "分析以下情報..."
🎬
影片教學 / Video Tutorial
本地開發環境設置教學 / Local Dev Setup Tutorial
錄製要點 / Recording Notes:
"Screen recording of complete local dev environment setup. Show docker compose up, verify health, seed demo data, explore UI. Address common issues. 10-15 minutes."

LLM / AI 引擎

核心原則:所有 LLM 呼叫必須通過抽象層,永遠不直接呼叫特定提供者。

bash — Key environment variables for air-gap LLM
AJNA_LLM_PROVIDER=ollama
AJNA_OLLAMA_BASE_URL=http://ollama:11434
AJNA_LLM_MODEL_CHINESE=qwen2.5:14b
AJNA_LLM_MODEL_ENGLISH=llama3.1:8b
AJNA_EMBEDDING_MODEL=bge-m3

InfoSim 七種代理人類型 / InfoSim Agent Types

代理人 Agent角色 Role
STATE_MEDIA國家媒體 — 官方敘事發布
BOT_NETWORK機器人網絡 — 大規模訊息擴散
OFFICIAL_GOV官方政府 — 政策聲明
DOMESTIC_MEDIA國內媒體 — 訊息放大或反駁
FOREIGN_MEDIA外國媒體 — 國際輿論
KOL意見領袖 — 影響力節點
CIVILIAN平民 — 訊息接收與傳播
03
部署 / Deployment Week 3-4 | Day 11-15

三種部署方式比較 / Deployment Methods Comparison

方式 Method適用場景節點數GPU複雜度
Tier 1: Docker Compose
單機部署
評估、小型部署、POC 1 選配 RTX 4090+
Tier 2: Kubernetes + Helm
叢集部署
生產環境、中等規模 3-5 1-2x A100
Tier 3: 軍規高可用
Military HA
正式軍事部署 10-20 2+ A100 80GB

Docker Compose 部署 / Docker Compose Deployment

單機部署架構 / Single Server Deployment
單機部署架構 / Single Server Deployment
bash — Complete Tier 1 deployment steps
# Step 1: Configure environment variables
cp .env.example .env
# Edit .env with customer-specific values

# Step 2: Build Docker images
docker compose build

# Step 3: Start infrastructure
docker compose up -d postgres redis ollama

# Step 4: Initialize database extensions
docker compose exec postgres bash /docker-entrypoint-initdb.d/init_db.sh

# Step 5: Run database migrations
docker compose exec backend alembic upgrade head

# Step 6: Pull LLM models
docker compose exec ollama ollama pull qwen2.5:14b
docker compose exec ollama ollama pull bge-m3

# Step 7: Start all services
docker compose up -d

# Step 8: Verify
curl -s http://localhost:8000/health | python3 -m json.tool

Kubernetes + Helm 部署

Kubernetes 叢集架構 / Kubernetes Cluster
Kubernetes 叢集架構 / Kubernetes Cluster
bash — Kubernetes + Helm deployment
# Configure Helm values
cp deploy/helm/ajna-chakra/values.yaml deploy/helm/ajna-chakra/values-custom.yaml

# Install the chart
helm install ajna deploy/helm/ajna-chakra \
  -f deploy/helm/ajna-chakra/values-custom.yaml \
  --namespace ajna --create-namespace

# Wait for all pods
kubectl get pods -n ajna -w

# Run database migrations
kubectl exec -n ajna deploy/ajna-backend -- alembic upgrade head

# Verify
curl -sk https://ajna.local/health

氣隙離線部署 / Air-Gap Deployment CRITICAL SKILL

重要:氣隙部署是 FDE 最核心的技能。在客戶現場,你不會有 Stack Overflow、GitHub、或任何外部資源。一切都必須從打包好的離線包中完成。
Air-gap deployment is THE most critical FDE skill. On-site, you have NO external resources whatsoever.
氣隙機房 / Air-Gapped Server Room
氣隙機房 / Air-Gapped Server Room

Step 1: 打包離線安裝包 / Build Air-Gap Package

bash — Build air-gap package (on internet-connected machine)
# Pull LLM models first
ollama pull qwen2.5:14b && ollama pull llama3.1:8b && ollama pull bge-m3

# Build package
cd deploy/airgap
bash package.sh

# Generate checksum
sha256sum ajna-airgap-*.tar.gz > ajna-airgap.sha256

# Copy to encrypted USB drive(s)

Step 2: 現場安裝 / On-Site Installation

bash — Air-gap installation on customer hardware
# 1. Transfer from USB
cp /media/usb/ajna-airgap-*.tar.gz /opt/
cd /opt

# 2. Verify integrity
sha256sum -c ajna-airgap.sha256
# Expected: OK

# 3. Extract and install
tar xzf ajna-airgap-*.tar.gz
cd ajna-airgap-*/
sudo bash scripts/install.sh

# 4. Monitor startup
docker compose -f /opt/ajna/docker-compose.airgap.yml ps

# 5. Run verification
sudo bash /opt/ajna/scripts/verify.sh
# ALL checks must show PASS

# 6. CRITICAL: Verify air-gap
curl -s --connect-timeout 5 https://google.com
# This MUST FAIL. If it succeeds, STOP and report.
🎬
影片教學 / Video Tutorial
Air-Gap 完整部署演示 / Complete Air-Gap Deployment Demo
錄製要點 / Recording Notes:
"Full air-gap deployment from USB to verified running system. Show every step including checksum verification, install.sh execution, service startup monitoring, verify.sh output, and air-gap connectivity check. Record on a clean VM. 20-25 minutes."

監控系統 / Monitoring (Prometheus + Grafana)

Grafana 監控儀表板 / Grafana Monitoring Dashboard
Grafana 監控儀表板 / Grafana Monitoring Dashboard

Ajna Chakra 核心指標 / Key Metrics

指標 Metric類型含義
ajna_http_requests_totalCounterHTTP 請求總數
ajna_http_request_duration_secondsHistogram請求延遲分佈
ajna_pipeline_backlogGauge管線待處理事件數
ajna_llm_calls_totalCounterLLM 呼叫總數
ajna_llm_duration_secondsHistogramLLM 呼叫延遲
ajna_active_websocketsGauge活躍 WebSocket 連線

故障排除指南 / Troubleshooting Guide

以下是最常見的 10 個問題。遇到問題時先查閱此表,30 分鐘內無法解決則升級處理。

#1 PostgreSQL 無法啟動

可能原因: AJNA_DB_PASSWORD 與初始化時的密碼不符。

修復: 檢查日誌 docker compose logs postgres。修正 .env 密碼或刪除 volume 重新初始化(注意:會遺失數據,先備份)。

預防: 初始設置後永遠不要更改 DB 密碼。

#2 資料庫擴充缺失 / DB Extensions Missing

可能原因: init_db.sh 安裝時未執行。

修復: docker compose exec postgres bash /docker-entrypoint-initdb.d/init_db.sh

#3 LLM 模型錯誤 / LLM Model Errors

可能原因: 模型未載入、Ollama OOM、模型檔案損壞。

修復: 列出模型 ollama list,缺失則從離線包重新載入。OOM 則切換小模型 (qwen2.5:7b)。

#4 地圖圖磚無法載入 (Air-Gap)

可能原因: Tile 數據不存在或未掛載。

修復: 驗證 /opt/ajna/tiles/ 存在且非空。檢查 compose file 的 volume mount。

#5 管線積壓 / Pipeline Backlog Growing

可能原因: Enrichment workers 慢於 ingestion 速率(GPU 不足)。

修復: 檢查 redis-cli XLEN raw_ingestion。Scale workers 或使用較小 LLM 模型。

#6 WebSocket 斷線

修復: 檢查 Nginx proxy_read_timeout (應為 3600s),確認有 proxy_set_header UpgradeConnection "upgrade"

#7 認證失敗 / JWT Authentication Failures

修復: 驗證 AJNA_JWT_SECRET 一致性。Secret 變更後所有用戶須重新登入。

#8 搜尋效能低落 / Slow Search

修復: 確認 pgvector extension 已載入。VACUUM ANALYZE。檢查 vector index。

#9 磁碟空間不足 / Disk Space Low

修復: df -h + docker system df -v。清理未用映像 docker image prune -f。輪替日誌。歸檔舊備份。

#10 插件當機 / Plugin Crash

修復: 檢查日誌 grep plugin。Sandbox 自動恢復。反覆當機則停用:curl -X DELETE /api/v1/plugins/<id>

04
安全與插件 / Security & Plugins Week 3-4 | Day 16-20

安全架構概覽 / Security Architecture

安全防禦層次 / Security Defense Layers
安全防禦層次 / Security Defense Layers

四級分類系統與 RBAC / 4-Tier Classification & RBAC

數據分級 / Data Classification

等級中文英文存取角色
Tier 1公開UNCLASSIFIEDAll roles
Tier 2限閱RESTRICTEDANALYST+
Tier 3機密CONFIDENTIALSENIOR_ANALYST+
Tier 4極機密SECRETCOMMANDER+

五層角色階層 / RBAC Hierarchy

VIEWER
只讀
ANALYST
分析操作
SENIOR_ANALYST
進階分析 + OODA
COMMANDER
核准決策 + SECRET
ADMINISTRATOR
全系統管理

審計日誌與 OSINT Gateway / Audit & Gateway Security

AuditMiddleware 記錄所有變更操作:用戶身份、資源類型、操作類型、IP、時間戳。

OSINT Gateway 安全控制

域名 Domain來源 Source
www.mnd.gov.tw台灣國防部 Taiwan MoND
data.aishub.netAIS 船舶追蹤 Maritime tracking
feeds.reuters.com路透社新聞 Reuters
api.cvedetails.comCVE 漏洞資料庫

安全控制:域名白名單(僅 4 個核准域名)、SSRF 防護(14 個私有 IP 範圍被封鎖)、DNS 重綁定防護、協議白名單、角色限制(ADMINISTRATOR only)、完整審計記錄。

插件開發指南 / Plugin Development Guide

插件架構圖 / Plugin Architecture
插件架構圖 / Plugin Architecture
核心安全原則:插件在隔離的子程序中運行,崩潰不會影響核心平台。
Plugins run in isolated subprocesses; crashes do not affect the core platform.

Plugin Manifest 結構

JSON — Plugin manifest.json
{
  "name": "custom-connector-example",
  "version": "1.0.0",
  "description": "Example custom data connector",
  "entry_point": "main.py",
  "capabilities": ["db_write", "network"],
  "config_schema": {
    "api_url": {"type": "string", "required": true},
    "poll_interval_seconds": {"type": "integer", "default": 300}
  }
}
🎬
影片教學 / Video Tutorial
插件開發完整教學 / Plugin Development Tutorial
錄製要點 / Recording Notes:
"Build a custom RSS connector plugin from scratch. Show manifest creation, main.py implementation, JSON IPC, capability declarations, installation via API, and testing. 15-20 minutes."

動手:建立你的第一個插件 / Hands-On: Build Your First Plugin

任務:建立自定義 RSS 新聞連接器插件

  1. 建立 manifest.json 宣告能力 (db_write, network)
  2. 實作 main.py 入口點 — 從 stdin 讀取 JSON 請求
  3. 實作 RSS 數據拉取和轉換邏輯
  4. 通過 Plugin API 安裝:curl -X POST /api/v1/plugins/install -F "plugin=@plugin.zip"
  5. 驗證插件已載入:curl /api/v1/plugins
05
客戶端技能 / Client Skills Week 5 | Day 21-25

軍事文化指南 / Military Culture Guide

台灣 Taiwan

台灣軍事環境 / Taiwan Military Setting
台灣軍事環境 / Taiwan Military Setting
面向指導
語言繁體中文為官方語言。所有文件、介面預設繁體中文。
決策方式共識尋求但尊重階層。聯繫人常需「往上呈」才能承諾。
稱謂永遠使用軍階:處長、上校、少將。未被邀請前不要用名字。
溝通方式可能間接。「我們再研究看看」常意味「不行」。學會聽言外之意。
茶文化泡茶是重要的關係建立方式。被邀請時欣然接受。
準時至少提前 15 分鐘到場。遲到表示不尊重。

泰國 Thailand

泰國軍事環境 / Royal Thai Armed Forces
泰國軍事環境 / Royal Thai Armed Forces
面向指導
關係優先必須先建立信任和關係。第一次會議可能完全是彼此認識。
面子至關重要。永遠不要公開讓人尷尬。Demo 失敗時自己承擔責任。
合掌禮 Wai學習正確的手位和彎腰程度。做對了表示尊重。
階層極度尊重資深者。讓他們先進房間、先坐下、先發言。
王室深受敬仰。絕不隨意評論王室。冒犯君主法律嚴格執行。
佛教價值觀影響商業文化。謙遜和避免衝突是核心。攻擊性策略會適得其反。

溝通技巧 / Communication Techniques

工程師簡報場景 / Engineer Presenting to Officers
工程師簡報場景 / Engineer Presenting to Officers

BLUF 格式 / Bottom Line Up Front

軍事專業人員接受過結論先行的溝通訓練。先講結論,再提供支持細節。
Not: "We analyzed the logs and found that the ingestion pipeline was hitting a memory limit due to..."
Instead: "The pipeline is fixed. Root cause was a memory limit. Here's what changed."

用軍事類比解釋技術概念

技術概念不好的解釋好的解釋
知識圖譜"我們用 Apache AGE 建了圖資料庫...""就像您在白板上畫的箭頭和連線,但由電腦自動維護和更新。"
氣隙部署"所有容器在沒有外部連線的環境中運行...""整個系統完全在您的機房內運行。沒有任何數據會離開您的網路。"
威脅評分"我們使用 6 個信號的加權複合分數...""系統綜合考慮六個因素計算 0-1 的威脅等級,就像天氣預報的確信度。"
🎬
影片教學 / Video Tutorial
客戶溝通模擬演練 / Client Communication Role-Play
錄製要點 / Recording Notes:
"Role-play scenarios: demo failure, feature request, hostile IT team, scope creep. Show good vs bad responses. Two FDEs acting out each scenario. 15-20 minutes."

現場部署協議 / On-Site Deployment Protocol

典型兩天部署時間線 / Typical 2-Day Timeline

第一天 Day 1: 硬體設置與基礎安裝

08:00-08:30
抵達、安全報到 / Arrival, security check-in
08:30-09:00
與 IT 團隊會面、驗證硬體 / Meet IT team, verify hardware
09:00-10:00
網路配置、IP 分配、防火牆 / Network config, IP, firewall
10:00-12:00
基礎安裝 install.sh / Base installation
FDE solo
13:00-15:30
資料庫初始化 + LLM 模型載入 + 驗證
15:30-17:00
verify.sh 完整驗證 + Day 1 總結

第二天 Day 2: 資料整合、培訓、交付

08:00-10:30
配置數據源、灌入數據 / Configure connectors, load data
11:00-14:00
分析官培訓(兩場)/ Analyst training sessions
14:00-15:00
管理員培訓 / Admin training
15:00-15:30
交付文件簽署 / Handoff documentation
15:30-17:00
正式交付簡報 + Q&A / Formal handoff briefing

困難情境處理 / Handling Difficult Situations

衡量 FDE 的標準不是一切順利時的表現,而是出了問題時的表現。

情境 1: 現場展示中發現重大錯誤 / Critical bug during live demo

內心:恐慌。外在:冷靜專業。

  1. 立即承認:「謝謝您發現這個問題。讓我現在立刻調查。」
  2. 能 5 分鐘內修好就當場修 — 沒有什麼比在壓力下現場解決問題更能展示能力。
  3. 不能立即修復?精確記錄並給出時程。
  4. 在承諾時間之前跟進。
  5. 解決後用簡單語言解釋根本原因。
情境 2: 客戶要求不存在的功能 / Feature request
  1. 確認需求:「能告訴我更多您會如何在工作流程中使用嗎?」
  2. 展示目前可用功能。
  3. 能用插件系統實現?提出時程。
  4. 需要核心更改?坦誠提交高優先級需求。
  5. 未確認前永不承諾。
情境 3: 現場部署失敗 / Deployment failure on-site
  1. 保持冷靜。客戶在觀察你的反應。你沉著,他們信任你。
  2. 清楚且具體地溝通:「[具體組件] 遇到問題。預計解決時間:[時間]。」
  3. 長時間修復?每 30 分鐘更新狀態。最糟糕的是失聯。
  4. 解決後進行根本原因分析,透明分享。
  5. 將此情境添加到故障排除指南。
情境 4: 客戶 IT 團隊敵意 / Hostile IT team
  1. 定位為盟友:「我是來幫助你們團隊成功的。你們才是運行這個系統的人。」
  2. 自由分享知識。讓他們在老闆面前表現出色。
  3. 在每個決策中納入他們。永遠不要繞過他們。
  4. 部署後他們應該感到被賦能,而不是被取代。
情境 5: 發現安全問題 / Security issue discovered
  1. 謹慎記錄:確切寫下你發現了什麼、何時、如何。
  2. 先向團隊主管報告。
  3. 通過正規渠道溝通(你的 POC 和他們的安全官)。
  4. 絕對不要在任務範圍之外討論客戶安全問題。
情境 6: 超出合約範圍的要求 / Out-of-scope request
  1. 不要拒絕,也不要立即同意。
  2. 確認並調查:「讓我看看我們能做什麼。」
  3. 小事且能建立善意?就去做。不要斤斤計較。
  4. 重大事項?提議修改範圍,準備正式提案。

信任方程式 / The Trust Equation

Trust = (Credibility + Reliability + Intimacy) / Self-Interest
信任 = (專業能力 + 可靠性 + 親近感) / 自利心
Source: David Maister, The Trusted Advisor

專業能力 Credibility

深入了解產品和國防領域。承認不知道的事 — 「我今天會查明並回覆你」比錯誤答案更有信譽。

可靠性 Reliability

做你說過要做的事,每次,沒有例外。說星期五?星期四就交。說 0900 到?0845 就到。

親近感 Intimacy

記住名字和細節。記住陳上尉的女兒剛上大學。把他們視為人,不僅是客戶。

低自利心 Low Self-Interest

把客戶需求放第一。不推銷不需要的功能。當你真正為他們行事 — 信任倍增。

06
結業認證 / Capstone & Certification Week 6 | Day 26-30

結業專案 / Capstone Project

獨立部署場景 / Solo Deployment Scenario
獨立部署場景 / Solo Deployment Scenario
結業專案模擬真實的客戶部署場景。每位 FDE 必須獨立完成。
The capstone simulates a real customer deployment. Each FDE must complete it solo.

專案內容 / Project Scope

  1. 氣隙部署 Air-Gap Deploy: 在乾淨 VM 上從 USB 完成完整安裝(全程無外部網路)
  2. 客製化 Customize: 配置數據源、建立用戶帳戶、安裝自製插件
  3. 驗證 Validate: 通過所有 verify.sh 檢查,生成 ReACT 簡報,執行 InfoSim 場景
  4. 培訓 Train: 向評估委員(扮演軍方分析官)進行 30 分鐘培訓演示
  5. 故障排除 Troubleshoot: 處理評估委員注入的 2 個隨機故障
  6. 文件 Document: 提交完整的部署後報告
🎬
影片教學 / Video Tutorial
認證考核說明 / Certification Assessment Overview
錄製要點 / Recording Notes:
"Training director explains capstone requirements, evaluation criteria, and certification levels. Show examples of excellent vs acceptable vs failing performance. 10 minutes."

認證等級 / Certification Levels

認證徽章系統 / Certification Badge System
認證徽章系統 / Certification Badge System
🥉
Associate FDE
初級 FDE / 可伴隨資深 FDE 部署
🥈
FDE
正式 FDE / 可獨立部署 Tier 1
🥇
Senior FDE
資深 FDE / 可獨立部署 Tier 2-3
🌟
Lead FDE
首席 FDE / 可帶領團隊、培訓新人

評估標準 / Evaluation Criteria

領域權重通過標準
技術能力 Technical40%氣隙部署成功、故障排除通過、插件開發完成
溝通能力 Communication25%培訓演示流暢、BLUF 格式、軍事類比使用得當
文件品質 Documentation15%部署後報告完整、格式專業
問題解決 Problem-solving20%在壓力下冷靜處理注入故障

30/60/90 天目標 / 30/60/90 Day Goals

30 天 / 30 Days

  • 完成一次伴隨資深 FDE 的實際客戶部署 / Complete one shadowed deployment
  • 獨立完成 Tier 1 氣隙部署(實驗室環境)/ Solo Tier 1 air-gap deploy (lab)
  • 通過所有技術能力驗證 / Pass all technical competency checks

60 天 / 60 Days

  • 獨立完成第一次客戶 Tier 1 部署 / Solo customer Tier 1 deployment
  • 開發至少一個客戶自定義插件 / Develop at least one custom plugin
  • 建立一份客戶培訓材料 / Create one customer training document
  • 貢獻一個故障排除案例到知識庫 / Contribute one troubleshooting case

90 天 / 90 Days

  • 獨立處理第一個 P2 級客戶問題 / Handle first P2 customer issue solo
  • 建立與至少一位客戶聯繫人的信任關係 / Build trust with at least one customer POC
  • 完成 Senior FDE 認證資格(如適用)/ Qualify for Senior FDE cert (if applicable)
  • 指導一位新的 FDE 受訓者 / Mentor one new FDE trainee
A
附錄 / Appendix Quick Reference & Resources

快速參考卡 / Quick Reference Cards

Docker Compose 常用指令
DC="docker compose -f /opt/ajna/docker-compose.airgap.yml" $DC ps — 查看所有服務狀態 $DC logs backend --tail=100 — 查看後端日誌 $DC restart backend — 重啟後端 $DC exec postgres pg_isready -U ajna — 檢查 DB $DC exec redis redis-cli ping — 檢查 Redis $DC exec ollama ollama list — 列出 LLM 模型
Kubernetes 常用指令
kubectl get pods -n ajna — 列出所有 Pod kubectl logs -n ajna deploy/ajna-backend — 查看日誌 kubectl exec -n ajna deploy/ajna-backend -- alembic current kubectl rollout restart -n ajna deploy/ajna-backend helm upgrade ajna deploy/helm/ajna-chakra -f values.yaml
PostgreSQL 管理指令
pg_isready -U ajna — 檢查連線 pg_dump -U ajna ajna | gzip > backup.sql.gz — 備份 SELECT extname FROM pg_extension; — 列出擴充 SELECT PostGIS_Version(); — PostGIS 版本 VACUUM ANALYZE; — 效能維護
API 常用端點
GET /health — 系統健康檢查 GET /api/v1/ontology/objects — 實體列表 GET /api/v1/loop/status — OODA 狀態 POST /api/v1/synthesis/briefings — 生成簡報 GET /api/v1/audit/entries — 審計日誌 GET /api/v1/plugins — 插件列表 GET /metrics — Prometheus 指標

推薦學習資源 / Recommended Resources

類別資源備註
Python AsyncPython Docs: asyncio官方文件,必讀
FastAPIFastAPI Official Tutorial完整教學
SQLAlchemySQLAlchemy 2.0 Async Guide重點:AsyncSession
ReactReact Official Docs (react.dev)Hook patterns
TanStack QueryTanStack Query Docs重點:useQuery, useMutation
PostgreSQLPostgreSQL Admin Guide備份、監控、效能
PostGISPostGIS Introduction地理空間基礎
DockerDocker Official Getting Startedmulti-stage builds
KubernetesKubernetes Official TutorialsPods, Services, Deployments
HelmHelm Official DocsChart 開發
Military IntelJP 2-0: Joint Intelligence美軍情報準則
Client SkillsThe Trusted Advisor (Maister)信任方程式來源

軍事術語表 / Military Glossary

縮寫全稱中文
ADIZAir Defense Identification Zone防空識別區
AISAutomatic Identification System自動識別系統(船舶)
BLUFBottom Line Up Front結論先行
COACourse of Action行動方案
COPCommon Operational Picture通用作戰圖
DIBDefense Intelligence Bureau國防情報局
DTIDefense Technology Institute國防科技研究所(泰國)
F2T2EAFind, Fix, Track, Target, Engage, Assess殺傷鏈六階段
MIBMilitary Intelligence Bureau軍事情報局
MoNDMinistry of National Defense國防部
NERNamed Entity Recognition命名實體辨識
OODAObserve, Orient, Decide, Act觀察、定向、決策、行動
ORBATOrder of Battle戰鬥序列
OSINTOpen Source Intelligence公開來源情報
PLAPeople's Liberation Army中國人民解放軍
POCPoint of Contact聯繫人
RBACRole-Based Access Control角色存取控制
RTARFRoyal Thai Armed Forces皇家泰國武裝部隊
RTNRoyal Thai Navy皇家泰國海軍
SIGINTSignals Intelligence信號情報
SSRFServer-Side Request Forgery伺服器端請求偽造

部署後報告範本 / Post-Deployment Report Template

部署後報告 / Post-Deployment Report 客戶 / Customer: __________ 部署日期 / Date: __________ FDE Team: __________ 部署類型 / Type: [ ] Tier 1 [ ] Tier 2 [ ] Tier 3 網路模式 / Network: [ ] Air-gap [ ] DMZ+Gateway [ ] VPN 硬體清單 / Hardware Inventory Item Model Serial IP Rack ---- ----- ------ -- ---- 軟體版本 / Software Versions Docker: ______ Ajna Backend: ______ PostgreSQL: ______ Ollama: ______ LLM Chinese: ______ LLM English: ______ 設定摘要 / Config Summary Connectors: [ ] ADIZ [ ] AIS [ ] News [ ] Custom OSINT Gateway: [ ] ON [ ] OFF Exercise Mode: [ ] Available Decision Loop: [ ] ON (tick: ___s) 偏差紀錄 / Deviations # Description Resolution - ----------- ---------- 客戶反饋 / Customer Feedback ________________________________ FDE Signature: __________ Date: __________ Customer POC: __________
團隊合影佔位 / Team Photo Placeholder
團隊合影佔位 / Team Photo Placeholder
AJNA CHAKRA
FDE Training Platform v1.0 | Classification: RESTRICTED
Last Updated: 2026-03-23
Ajna Chakra FDE Team