上手 DeepSeek Harness · 第 01 题 · English

第 1 课:装好 DeepSeek Harness、装上 FlyPython Skill、让 Agent 取回课程

检查点 l0110 分自我报告——认领码来自 verify.pyDeepSeek Harness

先把 DeepSeek Harness 跑起来,装好 FlyPython Skill 并打开联网权限,让 Agent 取回本课文件——你不下载任何东西,然后让 starter 的失败变得客观。

六门 Agent 工具课共用同一道题。DeepSeek Harness 专属步骤仍在补写——补齐并通过审核前,本页 canonical 指向主课程的对应题目

第 1 课:装好 DeepSeek Harness、装上 FlyPython Skill、让 Agent 取回课程

目标

本课结束时,DeepSeek Harness 已经跑起来、FlyPython Skill 已装好(联网权限已 打开),Agent 已把本课文件取回你的工作目录——你没有手动下载任何 东西。文件夹就位后,你运行课程的客观检查命令,并解释「starter 失败」在测试名里的含义。本课不改任何代码。

第 1 步——把 DeepSeek Harness 跑起来

装好 DeepSeek Harness(deepseek-harness 项目的 Python 包)并配置好模型插件——你自己提供的 API key 或本地 端点——在一个空工作目录里启动会话。

第 2 步——(可选)预装 FlyPython Skill

这一步可选:第 3 步的开课句子会直接从 URL 读取 Skill,不装也能上课——预装只是省掉一次权限往返。

Harness 会读取项目根目录的 AGENTS.md

curl -s https://flypython.com/skills/flypython/SKILL.md >> AGENTS.md

Agent 请求联网时批准;如果沙箱禁网,就自己跑 curl,把文件粘贴 过去。

Skill 只是一个文件,在每个工具里都一样:它告诉 Agent 如何为你 授权、取课程文件、验证、提交认领码。

第 3 步——让 Agent 取回本课文件(你不下载)

在工作目录里新开一个会话/对话/线程,粘贴这一句话:

Read https://flypython.com/skills/flypython/SKILL.md and start the FlyPython course hands-on-with-deepseek-harness.

Agent 会给你一个授权链接和一组短码。打开链接、登录、核对码与 Agent 显示的一致后点「允许」,然后对 Agent 说「好了」。它取一次 token,把本课文件写到 courses/hands-on-with-deepseek-harness/

前提:这些课程需要一个能执行命令并且能联网的编码 Agent。 只能聊天的网页 AI 做不了。

为什么有这一课

AI 写的 Python 大多是同一种死法:演示输入能跑,真实输入一到,脚本 在第 3 行崩掉——或者更糟,悄悄算出一个错的数。修复不从更好的 提示词开始,而从把「坏了」变成一条任何人都能跑、且得到相同答案的 命令开始。DeepSeek Harness 再加一层:你跑的 Agent 是组装出来的 ——模型、工具、存储、循环都是 cordis.yml 里接好的插件——它走的 每一步都落进可检查、可搜索、可重放的只增轨迹日志。「相信我」变成 「这是轨迹」。

热身(2 分钟)

打开 starter/report_tool.py,从头读到尾。它看起来很合理:带 docstring 的函数、类型标注、CLI。这正是 AI 生成代码的样子—— 表面干净、行为缺失。现在打开 TASK.md,放在手边。

本课内容

本课文件现在已经位于 courses/hands-on-with-deepseek-harness/——你这边没有发生任何下载。 让 Agent 先只读不动手:

“读 COURSE.md——它是本文件夹的教学契约。再读 TASK.md 和 starter/report_tool.py。不要改任何文件。告诉我测试期望哪些行为、 starter 缺了哪些。”

趁它读的时候,运行学员命令——整个课程你只需要这一条检查命令:

python verify.py

你会看到 starter 复现五类真实世界故障,外加两个端到端后果——共七个具名失败测试——并与测试名一一对应:

失败的测试真实含义
test_load_json_records_returns_list_of_dicts工具只处理 CSV;API 场景直接崩
test_unsupported_suffix_raises_value_error一个 .xlsx 上传变成莫名其妙的崩溃,而不是清楚的拒绝
test_invalid_records_are_isolated_with_reasons一个空单元格中止整个运行——没有部分报告,没有原因
test_group_totals_are_rounded_to_two_decimals0.1 + 0.2 在报告里打印成 0.30000000000000004
test_write_report_creates_missing_parent_directories工具无法写进新建的输出目录
test_run_scenario_writes_report_filetest_main_prints_summary_and_returns_zero上述问题的端到端后果

想看缺失行为对应的失败测试名,维护者命令会打印它们:

python verify.py starter --expect-failure

(参考答案 solution/ 是给维护者证明目标可达用的。你不需要运行 它,它也从来不是完成标准——你的实现(starter/)才是。)

现在做 Harness 原生的一步:检查会话轨迹。找到 Agent 读 TASK.md、 跑(或被告知)verify 命令、产出总结的那几步。轨迹是只增的——它是 发生之事的底账,也是以后让 Agent 工作可审计的依据。

练习

挑一个你最有代入感的场景皮肤(excel-reportdata-monitorapi-tool),打开它的数据文件,找出会被拒绝的行。先不看运行结果, 写下每个坏行会触发哪个测试,再对照上面的表自查——并在轨迹里找到 Agent 得出相同结论的那一步。

检查点

在课程文件夹里运行 python verify.py。不看材料能回答下面三个 问题即算通过:

  1. 哪五个行为把 starter 和 solution 区分开?其中哪两个失败测试是它们的端到端后果?
  2. python verify.py 为什么故意以非零退出——它在报告什么状态? 为什么这是成功条件而不是报错?
  3. 在轨迹的哪个位置能证明 Agent 确实读过 TASK.md

本检查点的认领码已经在默认命令的输出里——能回答这些问题之后再 提交。

预期证据

默认命令的完整输出记录、你找到的轨迹步骤、加你的三个答案。保留好 ——第 4 课还会用到。

提示

卡住了?逐条打开。

提示 1 —— 本检查点考察什么

先复现失败再动手修:python verify.py 必须把 l03 和 l04 显示为 [open]starter --expect-failure 会打印点名测试)——你自己跑也好、Agent 的 shell 工具跑也好,命令就是证据。

提示 2 —— 一切皆插件

DeepSeek Harness 的 Agent 是组装出来的,不是内置的:模型、工具、会话存储、循环本身都是 cordis.yml 里接好的插件。某个行为没有,答案通常是插件——不是某个开关。

提示 3 —— 轨迹就是你的记录

每一步都落进可事后检查的只增会话/轨迹日志。读回轨迹才能验证 Agent 实际做了什么——而不是它声称做了什么。

提示 4 —— 完成的标志

你能说出套件证明了哪九种行为、为什么 starter 伪造不出来。python verify.py 随即显示本检查点的认领码。

提交

做完了?记录它。

提交 verify.py progress 为本检查点打印的 8 位认领码——浏览器里交,或让你的 Agent 直接交。

浏览器

提交认领码

你的 Agent自动提交

让 Agent 解题并自动提交

把这题交给它(悬停出现复制按钮)——解题、验证、提交全程自动:

请完成 FlyPython 挑战课程「上手 DeepSeek Harness」(course id course-deepseek-harness)的检查点 l01。
机读简报:https://flypython.com/api/challenges/hands-on-with-deepseek-harness
打开课程文件夹,先读 TASK.md——它就是契约。
规则:最小变更、不新增依赖、绝不修改 tests/ 或 solution/。
用 python verify.py 检查直到门控通过,把每个认领码告诉我。
目标:只做检查点 l01 这一道题,完成后立即提交。

用你Agent 页生成的令牌(环境变量 FLYPYTHON_TOKEN),它可以直接记录结果:

curl -X POST https://flypython.com/api/claims \
  -H "Authorization: Bearer $FLYPYTHON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"claims":[{"course":"hands-on-with-deepseek-harness","checkpoint":"l01","code":"<8-char code>"}]}'

或一次性安装完整的 FlyPython Agent Skill,连粘贴都省了。

文件

starter 与验证器

解题在你的机器上运行——Agent 通过 /api/challenges/hands-on-with-deepseek-harness/files 自己取回课程文件,你无需手动下载。想直接读源码?在 GitHub 上查看文件夹 ↗