ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s

This commit is contained in:
2026-08-20 13:12:50 +00:00
commit b119135836
10275 changed files with 3284984 additions and 0 deletions
+123
View File
@@ -0,0 +1,123 @@
#!/bin/bash
# Build the Vietnamese translation as a single PDF.
# Requirements: pandoc, xelatex, ElegantBook class, rsvg-convert/librsvg,
# and fonts that support Vietnamese + CJK fallback.
# Usage: cd book-vi && bash build_pdf.sh
set -e
set -o pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
cd "$SCRIPT_DIR"
# Homebrew and MacTeX often are not visible inside non-login shells.
export PATH="/opt/homebrew/bin:/usr/local/bin:/Library/TeX/texbin:$PATH"
for cmd in pandoc xelatex rsvg-convert python3; do
if ! command -v "$cmd" >/dev/null 2>&1; then
echo "Error: $cmd not found in PATH." >&2
if [ "$cmd" = "xelatex" ]; then
echo "If MacTeX is installed, run: export PATH=\"/Library/TeX/texbin:\\$PATH\"" >&2
echo "Then check: /Library/TeX/texbin/xelatex --version" >&2
elif [ "$cmd" = "rsvg-convert" ]; then
echo "Install it with: brew install librsvg" >&2
elif [ "$cmd" = "pandoc" ]; then
echo "Install it with: brew install pandoc" >&2
fi
exit 1
fi
done
OUT="AI-Agents-in-Depth-Bojie-Li-v2.0-vi.pdf"
CHAPTERS=(
introduction.vi.md
glossary.vi.md
chapter1.vi.md
chapter2.vi.md
chapter3.vi.md
chapter4.vi.md
chapter5.vi.md
chapter6.vi.md
chapter7.vi.md
chapter8.vi.md
chapter9.vi.md
chapter10.vi.md
afterword.vi.md
)
for ch in "${CHAPTERS[@]}"; do
if [ ! -f "$ch" ]; then
echo "Error: $ch not found. Run the translation step first." >&2
exit 1
fi
done
echo "Checking Vietnamese SVG layout..."
python3 fix_svg_text_layout.py --check
echo "Building Vietnamese PDF from ${#CHAPTERS[@]} files..."
echo "Note: after the initial Pandoc warnings, XeLaTeX may be quiet for several minutes."
echo "Full build log: build_pdf_vi.log"
LOG="build_pdf_vi.log"
: > "$LOG"
pandoc "${CHAPTERS[@]}" \
-o "$OUT" \
--from markdown+lists_without_preceding_blankline \
--pdf-engine=xelatex \
--pdf-engine-opt=-interaction=nonstopmode \
--pdf-engine-opt=-halt-on-error \
--pdf-engine-opt=-file-line-error \
--lua-filter=crossref.lua \
--lua-filter=experiment_box.lua \
--toc \
--toc-depth=3 \
--number-sections \
-V documentclass=elegantbook \
-V classoption=lang=cn \
-V classoption=fontset=fandol \
-V classoption=cyan \
-V classoption=device=normal \
-V author="Lý Bác Kiệt" \
--metadata title-meta="Hiểu sâu về AI Agent: Nguyên lý thiết kế và thực hành kỹ thuật" \
--metadata author-meta="Lý Bác Kiệt" \
-H preamble.tex \
--include-before-body=cover.tex \
--highlight-style=kate \
--columns=80 \
> "$LOG" 2>&1 &
PANDOC_PID=$!
START_TIME=$(date +%s)
while kill -0 "$PANDOC_PID" >/dev/null 2>&1; do
sleep 30
if ! kill -0 "$PANDOC_PID" >/dev/null 2>&1; then
break
fi
NOW=$(date +%s)
ELAPSED=$((NOW - START_TIME))
echo "Still building... ${ELAPSED}s elapsed. Last log lines:"
tail -5 "$LOG" || true
echo "---"
done
if ! wait "$PANDOC_PID"; then
echo "PDF build failed. Last 80 log lines:" >&2
tail -80 "$LOG" >&2 || true
exit 1
fi
cat "$LOG"
if [ -f "$OUT" ]; then
SIZE=$(du -h "$OUT" | cut -f1)
PAGES=$(pdfinfo "$OUT" 2>/dev/null | awk '/^Pages:/ {print $2; exit}')
PAGES=${PAGES:-?}
echo ""
echo "Done: $OUT ($SIZE, $PAGES pages)"
else
echo "Error: PDF generation failed" >&2
exit 1
fi