Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 0 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,3 @@
---
layout: default
title: Agent Engineering Lab
description: 面向中文开发者的 Agent Systems Engineering 可执行实验室:用任务合同、证据、Trace、Dataset、Eval 和 Regression 证明 Agent 行为。
image: /assets/og-agent-engineering-lab.png
last_modified_at: 2026-07-28
---

# Agent Engineering Lab

> 从最小 Workflow 到可验证、可恢复、可演进的 Agent 系统。
Expand Down
4 changes: 2 additions & 2 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ relative_links:
collections: true
readme_index:
enabled: true
remove_originals: false
with_frontmatter: true
remove_originals: true
with_frontmatter: false
defaults:
- scope:
path: ""
Expand Down
6 changes: 0 additions & 6 deletions labs/00-no-agent-baseline/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Agent、Workflow 与普通程序
description: 先做确定性基线,再判断任务是否需要模型和工具循环。
---

# 00-no-agent-baseline · Agent、Workflow 与普通程序

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/01-typed-io/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Typed I/O 与结构化结果
description: 用 RunRequest、Budget、Evidence 和 RunResult 把成功与失败说清楚。
---

# 01-typed-io · Typed I/O 与结构化结果

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/02-tool-contracts/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: 工具合同与错误语义
description: 把工具当正式 API,显式声明参数、权限、副作用、幂等与错误。
---

# 02-tool-contracts · 工具合同与错误语义

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/03-langchain-agent/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: LangChain create_agent
description: 在确定性权限外壳中接入标准模型与工具循环,并要求结构化引用。
---

# 03-langchain-agent · LangChain create_agent

> 状态:`implemented`。实现已存在;涉及外部模型的行为仍需单独 live 验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/04-middleware-budget/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Middleware、Policy 与预算
description: 用代码层 middleware 和 policy 限制模型、工具、步骤与权限。
---

# 04-middleware-budget · Middleware、Policy 与预算

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/05-context-engineering/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Context Engineering
description: 区分模型上下文、工具上下文、runtime context、state 和 store。
---

# 05-context-engineering · Context Engineering

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/06-langgraph-runtime/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: LangGraph Runtime
description: 把同一任务实现为显式状态图,比较额外复杂度带来的能力。
---

# 06-langgraph-runtime · LangGraph Runtime

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/07-persistence-hitl/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Persistence、Interrupt 与 Resume
description: 注入 checkpointer,按 thread 保存状态,并通过 interrupt 暂停审批。
---

# 07-persistence-hitl · Persistence、Interrupt 与 Resume

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/08-evidence-first-rag/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Evidence-first Retrieval
description: 搜索结果先成为结构化 Evidence,再由 writer 生成带 ID 的结论。
---

# 08-evidence-first-rag · Evidence-first Retrieval

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/09-memory-engineering/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Memory Engineering
description: 把 thread state 与 semantic、episodic、procedural memory 分开。
---

# 09-memory-engineering · Memory Engineering

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/10-observability/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Observability 与 Trace
description: 记录节点、工具、状态和终止原因,不暴露隐藏推理。
---

# 10-observability · Observability 与 Trace

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/11-agent-evals/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Final、Step 与 Trajectory Eval
description: 先用确定性 grader 检查状态、证据、工具和轨迹,再考虑语义 Judge。
---

# 11-agent-evals · Final、Step 与 Trajectory Eval

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/12-regression-engineering/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Regression Engineering
description: 把 unknown、注入、越权和预算失败固化为版本化数据集。
---

# 12-regression-engineering · Regression Engineering

> 状态:`executable`。离线实现与自动化验收均已接入。
Expand Down
6 changes: 0 additions & 6 deletions labs/13-deployment/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Agent Server 与发布合同
description: 用 langgraph.json 注册图,并把部署前门禁与线上状态分开。
---

# 13-deployment · Agent Server 与发布合同

> 状态:`configured`。部署或集成合同已配置;外部结果以实际 receipt 为准。
Expand Down
6 changes: 0 additions & 6 deletions labs/14-production-loop/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Production Trace → Dataset → Regression
description: 只把经筛选和脱敏的真实失败 Trace 提升为离线回归样例。
---

# 14-production-loop · Production Trace → Dataset → Regression

> 状态:`scaffold`。当前只有实验合同,不代表能力已实现或验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Agent Engineering Labs
description: 15 个核心实验与 10 个前沿实验的可执行学习路径。
---

# Agent Engineering Labs

课程不是按框架 API 排序,而是按任务合同、工具、上下文、状态、证据和评测能力推进。状态字段是证据边界,不是进度装饰。
Expand Down
6 changes: 0 additions & 6 deletions labs/f01-filesystem-context/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Filesystem Context
description: 研究何时用文件系统卸载上下文,并测试权限和信息召回。
---

# f01-filesystem-context · Filesystem Context

> 状态:`scaffold`。当前只有实验合同,不代表能力已实现或验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/f02-context-compaction/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Context Compaction
description: 比较 trim、summary 和 notes 的信息损失、成本与延迟。
---

# f02-context-compaction · Context Compaction

> 状态:`scaffold`。当前只有实验合同,不代表能力已实现或验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/f03-agent-skills/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Agent Skills
description: 将程序性知识按需加载,同时审计来源、版本和不可信指令。
---

# f03-agent-skills · Agent Skills

> 状态:`scaffold`。当前只有实验合同,不代表能力已实现或验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/f04-deep-agents/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Deep Agents Harness
description: 用可选适配器比较规划、文件系统和 subagents 是否改善长任务。
---

# f04-deep-agents · Deep Agents Harness

> 状态:`implemented`。实现已存在;涉及外部模型的行为仍需单独 live 验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/f05-subagents/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Subagents
description: 只为上下文隔离或可测并行收益引入子 Agent。
---

# f05-subagents · Subagents

> 状态:`scaffold`。当前只有实验合同,不代表能力已实现或验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/f06-sandboxed-code/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Sandboxed Code Execution
description: 代码执行只进入隔离环境,并测试文件、网络、时间和资源边界。
---

# f06-sandboxed-code · Sandboxed Code Execution

> 状态:`scaffold`。当前只有实验合同,不代表能力已实现或验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/f07-mcp/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: MCP Adapter
description: 把 MCP 放在内部 Tool Contract 之外的边界适配层。
---

# f07-mcp · MCP Adapter

> 状态:`scaffold`。当前只有实验合同,不代表能力已实现或验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/f08-a2a/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: A2A
description: 只在跨团队、跨服务和远程任务生命周期确实存在时采用 A2A。
---

# f08-a2a · A2A

> 状态:`scaffold`。当前只有实验合同,不代表能力已实现或验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/f09-online-evals/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Online Evals
description: 对真实流量设置采样、成本和隐私策略,并把失败回流离线数据集。
---

# f09-online-evals · Online Evals

> 状态:`scaffold`。当前只有实验合同,不代表能力已实现或验证。
Expand Down
6 changes: 0 additions & 6 deletions labs/f10-adaptive-routing/README.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,3 @@
---
layout: default
title: Adaptive Routing
description: 用质量、成本和延迟数据决定模型或架构路由,不凭感觉升级复杂度。
---

# f10-adaptive-routing · Adaptive Routing

> 状态:`scaffold`。当前只有实验合同,不代表能力已实现或验证。
Expand Down
24 changes: 24 additions & 0 deletions scripts/check_site.py
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,15 @@ def public_markdown(root: Path) -> list[Path]:
return sorted(path for path in direct + nested if path.is_file())


def github_readmes(root: Path) -> list[Path]:
excluded = {".venv", "_site", "legacy", "vendor"}
return sorted(
path
for path in root.glob("**/README.md")
if not excluded.intersection(path.relative_to(root).parts)
)


def check_source(root: Path) -> list[str]:
errors: list[str] = []
readme = (root / "README.md").read_text(encoding="utf-8")
Expand All @@ -35,12 +44,27 @@ def check_source(root: Path) -> list[str]:
for stale in ("4 周、16 篇,从", "langchain-community==1.0.4 #"):
if stale in readme:
errors.append(f"README retained stale V1 claim: {stale}")
for path in github_readmes(root):
text = path.read_text(encoding="utf-8")
if text.startswith("---\n"):
errors.append(
f"{path.relative_to(root)} must not contain Jekyll front matter; use _config.yml"
)

config = yaml.safe_load((root / "_config.yml").read_text(encoding="utf-8"))
if config.get("title") != "Agent Engineering Lab":
errors.append("_config.yml title drift")
if "legacy/" not in config.get("exclude", []):
errors.append("legacy/ must be excluded from V2 Pages build")
if "jekyll-readme-index" not in config.get("plugins", []):
errors.append("jekyll-readme-index must render front-matter-free README files")
readme_index = config.get("readme_index", {})
if (
readme_index.get("enabled") is not True
or readme_index.get("remove_originals") is not True
or readme_index.get("with_frontmatter") is not False
):
errors.append("readme_index must render README only, without front matter or raw copies")

lab_pages = sorted((root / "labs").glob("*/README.md"))
if len(lab_pages) != 25:
Expand Down
12 changes: 0 additions & 12 deletions scripts/generate_curriculum.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,12 +24,6 @@ def load_curriculum(root: Path) -> dict[str, Any]:
def render_index(curriculum: dict[str, Any]) -> str:
labs = sorted(curriculum["labs"], key=lambda item: item["order"])
lines = [
"---",
"layout: default",
"title: Agent Engineering Labs",
"description: 15 个核心实验与 10 个前沿实验的可执行学习路径。",
"---",
"",
"# Agent Engineering Labs",
"",
"课程不是按框架 API 排序,而是按任务合同、工具、上下文、状态、证据和评测能力推进。状态字段是证据边界,不是进度装饰。",
Expand Down Expand Up @@ -77,12 +71,6 @@ def render_lab(lab: dict[str, Any]) -> str:
for path in lab["references"]
]
lines = [
"---",
"layout: default",
"title: " + lab["title"],
"description: " + lab["summary"],
"---",
"",
f"# {lab['id']} · {lab['title']}",
"",
f"> 状态:`{lab['status']}`。{STATUS_NOTES[lab['status']]}",
Expand Down