本页目录
Context EngineeringNote 17

01 Input context:启动时上下文

它是什么

它是什么

Input context 是 Agent 启动时就进入系统上下文的信息,包括 system_prompt、memory、skills 和工具描述。它解决的问题是:哪些规则、长期约定和可发现能力应该每次运行前就被 Agent 知道。memory 是始终注入,skills 是先发现元信息、需要时再读完整内容。

最小代码

文件:deepagent_src/context_engineering_teach/01_input_context.py

agent = create_deep_agent(
    model=model,
    backend=backend,
    system_prompt="You teach Deep Agents context engineering.",
    memory=["/memories/AGENTS.md"],
    skills=["/skills/"],
)

运行

uv run python deepagent_src/context_engineering_teach/01_input_context.py

预期输出:

input context real agent ok

验证方式

脚本会读取 /memories/AGENTS.md,格式化 memory prompt;同时扫描 /skills/ 下的 skill frontmatter,确认 context-scout 被发现。最后会真实调用一次 Agent。

常见误区

别把大段业务资料全塞进 system_prompt。总是相关、短小稳定的规则放 memory;按任务才用的工作流放 skills。

相关资源

  • 查看示例代码:deepagent_src/context_engineering_teach/01_input_context.py
    from __future__ import annotations
    
    from pathlib import Path
    
    from deepagents import MemoryMiddleware, create_deep_agent
    from deepagents.backends import FilesystemBackend
    from deepagents.middleware.skills import SkillsMiddleware, _list_skills_with_errors
    
    from _model import get_real_model
    from deepagent_src.agent_output import invoke_and_pretty_print
    
    
    ROOT_DIR = Path(__file__).resolve().parent
    WORKSPACE_DIR = ROOT_DIR / "workspace"
    MEMORY_PATH = "/memories/AGENTS.md"
    SKILL_SOURCE = "/skills/"
    
    
    def main() -> None:
        backend = FilesystemBackend(root_dir=WORKSPACE_DIR, virtual_mode=True)
    
        agent = create_deep_agent(
            model=get_real_model(),
            backend=backend,
            system_prompt="You teach Deep Agents context engineering.",
            memory=[MEMORY_PATH],
            skills=[SKILL_SOURCE],
        )
    
        memory_file = backend.download_files([MEMORY_PATH])[0]
        assert memory_file.error is None
        assert memory_file.content is not None
    
        memory_prompt = MemoryMiddleware(
            backend=backend,
            sources=[MEMORY_PATH],
        )._format_agent_memory({MEMORY_PATH: memory_file.content.decode("utf-8")})
    
        skills, error = _list_skills_with_errors(backend, SKILL_SOURCE)
        skills_prompt = SkillsMiddleware(
            backend=backend,
            sources=[SKILL_SOURCE],
        )._format_skills_list(skills)
    
        assert agent is not None
        assert error is None
        assert "Prefer concise Chinese explanations" in memory_prompt
        assert "context-scout" in skills_prompt
    
        result = invoke_and_pretty_print(
            agent,
            {
                "messages": [
                    {
                        "role": "user",
                        "content": (
                            "用一句中文说明你启动时能看到哪些 input context。"
                            "只回答一句话。"
                        ),
                    }
                ]
            }
        )
        assert result["messages"][-1].content
        print("input context real agent ok")
    
    
    if __name__ == "__main__":
        main()