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
+134
View File
@@ -0,0 +1,134 @@
#!/usr/bin/env bash
# Assemble the MkDocs docs directory (`_web/`) from the book Markdown sources.
# Reader-facing Markdown, images, frontend assets, and linked JSON evidence are
# copied; code, PDFs and LaTeX sources are left out so the generated site stays
# small. The original sources are never modified.
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
DEST="$ROOT/_web"
rm -rf "$DEST"
mkdir -p "$DEST"
# Site homepage (root index.md).
cp "$ROOT/index.md" "$DEST/index.md"
# Translated site homepages (root index.<lang>.md), when present. The
# language switcher maps home <-> home for these editions (see
# scripts/site_i18n.py, which lists them in the generated catalog).
for home in "$ROOT"/index.*.md; do
[ -f "$home" ] || continue
cp "$home" "$DEST/$(basename "$home")"
done
# robots.txt at the site root (points crawlers at the auto-generated sitemap).
[ -f "$ROOT/robots.txt" ] && cp "$ROOT/robots.txt" "$DEST/robots.txt"
# The language editions, each with its images/ subfolder.
for lang in book book-en book-es book-id book-ru book-ta book-vi book-zhtw book-ja book-ar book-tr book-ko book-hu book-he; do
mkdir -p "$DEST/$lang"
cp -R "$ROOT/$lang" "$DEST/"
done
# Promote each chapter of the default (zh) edition to a directory index
# (book/chapterN.md -> book/chapterN/index.md) so mkdocs.yml can use
# navigation.indexes to attach the chapter prose to its nav section —
# clicking a chapter title in the sidebar then opens the chapter directly.
# The rendered URL is unchanged (/book/chapterN/, thanks to directory
# URLs). The file now lives one directory deeper, so its relative image
# references need a ../ prefix. Translated editions stay flat files: they
# are not listed in the nav, so they gain nothing from the promotion.
for n in 1 2 3 4 5 6 7 8 9 10; do
src="$DEST/book/chapter$n.md"
[ -f "$src" ] || continue
mkdir -p "$DEST/book/chapter$n"
sed \
-e 's|](images/|](../images/|g' \
-e 's|](../chapter|](../../chapter|g' \
"$src" > "$DEST/book/chapter$n/index.md"
rm "$src"
done
# The companion experiment directories (chapterN/). Each chapter has a
# README.md (experiment index) plus one subfolder per experiment, also
# documented by its own README.md. These are exposed under /chapterN/ so
# readers can step from the chapter prose straight into runnable code.
for ch in chapter1 chapter2 chapter3 chapter4 chapter5 \
chapter6 chapter7 chapter8 chapter9 chapter10; do
if [ -d "$ROOT/$ch" ]; then
cp -R "$ROOT/$ch" "$DEST/"
fi
done
# Copy site-level assets (JS/CSS for the language switcher) that MkDocs
# resolves relative to docs_dir.
cp -R "$ROOT/extras" "$DEST/extras"
# Site-wide static assets — logo, favicon, social OG images. Referenced by
# mkdocs.yml as `assets/<file>` (relative to docs_dir).
if [ -d "$ROOT/assets" ]; then
mkdir -p "$DEST/assets"
cp -R "$ROOT/assets/." "$DEST/assets/"
fi
# Keep reader-facing site assets, including JSON experiment evidence linked
# from chapter documentation. The helper is tested independently so changes to
# the publication allowlist do not silently introduce broken links.
python3 "$ROOT/scripts/clean_site_files.py" "$DEST"
# Drop bulk data files that some experiments bundle as their dataset but
# that don't belong in the reading site (hundreds of legal-doc markdown
# files would also slow the git-revision-date plugin to a crawl).
rm -rf \
"$DEST/chapter3/contextual-retrieval/laws" \
"$DEST/chapter3/agentic-rag/laws" \
2>/dev/null || true
# Vendored JavaScript dependencies can contain thousands of their own
# Markdown files. They are irrelevant to the book site and make MkDocs scan
# needlessly large directory trees after the file-type cleanup above.
find "$DEST" -type d -name node_modules -prune -exec rm -rf {} +
# Rewrite the relative links used inside the experiment READMEs so they
# resolve correctly in the MkDocs site. Source files are NOT modified —
# only the copies under _web/.
#
# The README source uses GitHub-style relative paths that don't survive
# MkDocs rendering. Two patterns appear in chapter index pages
# (`chapterN/README.md`):
# ../book/chapter1.md (point at the chapter prose)
# ../README.md (point at the repo root / homepage)
#
# MkDocs renders pages as directory URLs (`chapter1/`), so the `.md`
# suffix must be stripped. Keep the paths RELATIVE (no leading slash) so
# they keep working under the site's sub-path
# (`https://bojieli.github.io/ai-agent-book/`).
find "$DEST/chapter"* -type f -name '*.md' -print0 \
| xargs -0 sed -i.bak \
-e 's|\.\./book/\([a-zA-Z0-9_-]*\)\.md|../book/\1/|g' \
-e 's|\.\./README\.md|../|g'
# macOS sed needs the backup suffix above; clean up the .bak files.
find "$DEST" -name '*.md.bak' -delete
# Per-language experiment index pages (chapterN/README.<lang>.md) contain
# relative links like [exp](local_llm_serving/) that resolve correctly on
# the Chinese URL /chapterN/ but break on the translated URL
# /chapterN/README.<lang>/ (they'd resolve to /chapterN/README.<lang>/exp/,
# which 404s). Rewrite those relative links to be relative to /chapterN/
# by prefixing ../ — this makes them resolve to /chapterN/<exp>/ in any
# language edition.
#
# Only touches README.<lang>.md (not README.md, where the links already work),
# and only relative links that don't start with . / # http or contain :
#
# The "back to main README" links ](../docs/<locale>/README.md) point into
# docs/, which is never copied into the site's docs_dir — MkDocs leaves the
# raw href and it 404s. Map them to ../../ (the site home) instead.
find "$DEST/chapter"* -type f -name 'README.[a-zA-Z-]*.md' -print0 \
| xargs -0 sed -i.bak -E \
-e 's|\]\(([a-zA-Z][a-zA-Z0-9_-]*)/\)|](../\1/)|g' \
-e 's|\]\(\.\./docs/[a-zA-Z-]+/README\.md\)|](../../)|g'
find "$DEST" -name '*.md.bak' -delete
echo "Assembled docs into $DEST"