2. 2行配置!让AI Agent自动读取需求文档

上一节把 DeepAgents 的基本骨架搭起来了,Agent 已经能正常对话。可测试工作里光会聊天不够------需求通常写在 Word、PDF、TXT 里,如果还靠人手复制粘贴,既慢,也容易漏。这一节要补上的,就是让 Agent 自己去读这些文档。

做法其实不复杂:给它配好 Skills,再挂上合适的 Backend。想读哪类文件,就放对应的 Skill:

skills/read-docx ------ 读 Word

skills/read-pdf ------ 读 PDF

skills/read-txt ------ 读 Txt

本文配套的动画视频在:《2. 2行配置!让Agent自动读取需求文》

DeepAgents 的 skills 参数,作用就是把这些本地技能挂到 Agent 上。任务落到某类文档时,它会按 Skill 里的说明去解析。Skill.md 的写法、以及各类文档怎么读,前面都讲过,这里不再展开。

不过 Skills 本身不会凭空生效,还得有 Backend 托底。Backend 负责技能发现、文件读写和命令执行,常见几种可以先过一遍:

|-------------------|------------------------------|
| Backend | 说明 |
| StateBackend | 默认项。数据存在内存中的会话状态里,作用域为当前线程 |
| StoreBackend | 数据存在内存中,经独立 Store 持久化,可跨线程访问 |
| FilesystemBackend | 读写本地文件,无 Shell 执行能力 |
| LocalShellBackend | 本地文件系统 + 本机 Shell 执行 |

读 Word、PDF 时,解析过程往往会走到执行本地脚本这一步,所以这里选 LocalShellBackend------既能访问本地文件,也能在本机跑命令。

动手写代码前,先把解析库装好:

复制代码
pip install python-docx PyPDF2

然后在 create_deep_agent 里加两处配置就够了。一是 skills,指向 skills 目录,让 Agent 能发现并加载本地技能;二是 backend,实例化 LocalShellBackend。创建时这几个参数要注意:

root_dir=os.getcwd():把脚本运行时的当前目录,设成文件读写和命令执行的根路径

virtual_mode=True:阻止路径穿越,禁止用 .. 等方式访问上级目录

inherit_env=True:继承当前环境变量,确保 python 等命令可用

配置齐了,再给 Agent 一条提示词,让它去读 docs 目录下的需求文档。把要求说清楚即可:先看目录里有哪些文件,再按格式选用合适的读取方式,表格内容也要一并读出。完整代码如下:

复制代码
import os
from dotenv import load_dotenv
from deepagents import create_deep_agent
from deepagents.backends import LocalShellBackend
load_dotenv()
os.environ["OPENAI_API_KEY"] = os.getenv("API_KEY")
os.environ["OPENAI_BASE_URL"] = os.getenv("BASE_URL")
model = f"openai:{os.getenv('MODEL')}"

def create_test_agent():
    return create_deep_agent(
        model=model,
        system_prompt="HarmonyOS 自动化测试专家。",
        skills=["./skills/"],
        backend=LocalShellBackend(root_dir=os.getcwd(), virtual_mode=True, inherit_env=True),
        debug=True,
    )

def main():
    agent = create_test_agent()
    result = agent.invoke(
        {
            "messages": [
                {
                    "role": "user",
                    "content": (
                        "docs/ 目录下有需求文档,请读取所有文档的完整内容(包括表格)。先查看有哪些文件,再选用合适的方式读取。"
                    ),
                }
            ]
        }
    )
    print(result["messages"][-1].content[0]["text"])

if __name__ == "__main__":
    main()

跑起来后,Agent 会先查看 docs/ 下有哪些文件,再按类型调用 read-docx、read-pdf 或 read-txt,把正文和表格读进来。到这里,需求文档就进到 Agent 的上下文里了。

本文配套的动画视频在:《2. 2行配置!让Agent自动读取需求文》