跳至主要內容
返回學習中心
13對比閱讀 16 分鐘入門

對比 · 同一任務,兩種工作流程

DeepSeek Harness 與 Pi:用同一個錯誤比較工作流程

從一個可以觀察結果的任務開始:報表錯誤地統計了已退款訂單。建立兩份獨立專案,在兩邊都支援時選同一模型,並固定驗收測試。比較的是得到可審閱修改內容所需的工作,而不是兩段產品介紹。

最後驗證
2026年9月6日
指南原始碼基準
0.1.3-alpha.1
安裝狀態
以所選項目的紀錄為準
驗證範圍
  • 固定 DSH Alpha 原始碼與現行 Pi 官方 CLI、會話、擴充套件文件
  • 已在本機執行的訂單統計合成範例、參考修復與指定檔案復原
  • 沒有聲稱完成模型橫評或真實 Provider 業務任務
本頁目錄
  1. 哪些內容經過了實際驗證
  2. 先固定輸入和成功標準
  3. 為什麼在練習中這樣檢查
  4. 建立一個能看見錯誤的小專案
  5. 保留兩個相同起點的獨立目錄
  6. 在 DSH 中逐步完成任務
  7. 在 Pi 中完成同一個任務
  8. 給兩邊相同且有明確範圍的任務
  9. 獨立核驗,不能只讀 Agent 的結束語
  10. 比較你實際完成了哪些工作
  11. 有意識地暫停、繼續與復原
  12. 完成一次審閱後再選擇

哪些內容經過了實際驗證

先固定輸入和成功標準

輸入為 orders.csv、report.mjs 和 report.test.mjs。交付成果是 report.mjs 的小範圍修改、三項通過的斷言、總額 2000 和簡短解釋。不得修改輸入數據或削弱測試。記錄實際模型、Provider、工具配置、追加提示和耗時;條件不同時,不能把結果差異全歸因於 Harness。

為什麼在練習中這樣檢查

Pi 作者 Mario Zechner 在 2025 年的設計文章中強調可見的上下文與精簡工具集。落實到本題,就是記錄兩邊實際讀取哪些檔案,以及載入哪些額外指令。Anthropic 的 Agent 評估文章區分對話紀錄與最終結果,因此這裡既檢查工具日誌,也檢查儲存後的 report.mjs 和未被修改的測試,不能只替結束語評分。2025 年文章提供設計背景;目前 Pi 命令仍以現行文件為準。

建立一個能看見錯誤的小專案

準備 Node.js 24 和 Bash 終端,在全新的練習目錄中操作。命令適用於 macOS/Linux 的 Bash;Windows 可用 Git Bash 或 WSL。harness-lab 目錄必須尚不存在。範例專案無需 npm 依賴、帳戶、私人數據或生產檔案。CSV 特意不含引號內逗號,這不是通用 CSV 解析器練習。

bash
create_harness_lab() {
mkdir harness-lab || return
cd harness-lab || return
cat > orders.csv <<'CSV'
id,status,cents
A,paid,1200
B,refunded,700
C,paid,800
D,pending,400
CSV
cat > report.mjs <<'JS'
export function totalPaid(csv) {
  const rows = csv.trim().split(/\r?\n/).slice(1);
  return rows.map(row => row.split(','))
    .filter(([, status]) => status !== 'pending')
    .reduce((sum, [, , cents]) => sum + Number(cents), 0);
}
JS
cat > report.test.mjs <<'JS'
const { default: assert } = await import('node:assert/strict');
const { readFileSync } = await import('node:fs');
const { default: test } = await import('node:test');
const { totalPaid } = await import('./report.mjs');
const csv = readFileSync(new URL('./orders.csv', import.meta.url), 'utf8');
test('only paid orders count', () => assert.equal(totalPaid(csv), 2000));
test('refunds alone count as zero', () => assert.equal(totalPaid('id,status,cents\nB,refunded,700\n'), 0));
test('an empty ledger counts as zero', () => assert.equal(totalPaid('id,status,cents\n'), 0));
JS
cp report.mjs report.original.mjs
node --test report.test.mjs
}
create_harness_lab
建立三個檔案並重現錯誤

首次執行應有兩項斷言失敗、一項通過。錯誤實作把已退款訂單的 700 分計入,得到 2700,而正確結果是 2000。規則是只統計 status 為 paid 的行;refunded 與 pending 均不計入。金額統一使用整數分。

保留兩個相同起點的獨立目錄

在任一 Agent 修改檔案前執行複製。DSH 使用 harness-lab,Pi 使用 harness-lab-pi;兩邊都有相同錯誤實作和原始檔備份。會話分支不等於獨立工作樹,比較時不要讓兩個 Agent 同時修改一個目錄。

bash
copy_harness_lab() {
  (cd .. && test ! -e harness-lab-pi && cp -R harness-lab harness-lab-pi)
}
copy_harness_lab
複製尚未修改的練習專案

在 DSH 中逐步完成任務

  1. 01

    核對執行環境與模型

    先完成文末 Alpha 快速上手,使用其精確從原始碼建置方式。在 Settings → Models 中配置自己的 Provider 認證資訊,不把金鑰寫入提示詞,並記錄實際選中的模型。

  2. 02

    顯式選擇專案

    在 Web UI 選擇工作區,添加 harness-lab 的絕對路徑。新 Web UI 尚未選中工作區,即使 dsh 進程是從某個專案目錄啟動的。

  3. 03

    檢查實際權限

    這個一次性本地練習可在支援時使用 workspace-write 預設,並查看審批請求。它組合 workspace-write 沙箱模式和 ask 策略,邊界由已配置的執行器落實;不代表每次檔案寫入都會彈窗。

  4. 04

    執行並觀察

    發送下方共用提示詞,查看讀取、命令、修改和測試結果。請求存取練習目錄之外或安裝無關依賴時,先停止並收窄任務。

在 Pi 中完成同一個任務

按 Pi 官方快速上手安裝後,進入 harness-lab-pi。用 /login 和 /model 配置並選擇支援的模型,條件允許時與 DSH 一致。先用下方精簡工具集檢查檔案;禁用可選資源發現,避免比較時悄悄載入無關擴充套件或專案指令。

bash
npm install -g --ignore-scripts @earendil-works/pi-coding-agent
cd ../harness-lab-pi
安裝官方 Pi CLI,再進入它的獨立專案副本
bash
pi --no-extensions --no-skills --no-prompt-templates --no-themes --no-context-files --tools read,grep,find,ls
檢查階段:不提供 edit、write、bash 工具

Pi 沒有內建的檔案、程序、網路或認證資訊權限系統。工具允許清單限制模型可使用的工具,不改變程序的作業系統權限。不可信專案應放在容器、虛擬機或其他經過驗證的作業系統隔離環境中。官方隔離指南說明了為何只改變工具執行路徑,無法隔離仍在主機上執行的其他擴充套件。

bash
pi -c --no-extensions --no-skills --no-prompt-templates --no-themes --no-context-files --tools read,edit,write,bash,grep,find,ls
退出檢查會話,再帶上修復所需工具繼續該會話

給兩邊相同且有明確範圍的任務

text
在這個一次性練習專案中修復 report.mjs,使 totalPaid 只統計 paid 行。先讀 orders.csv 和 report.test.mjs,執行 node --test report.test.mjs 並報告原始失敗。不要改 orders.csv、report.test.mjs 或 report.original.mjs;不要安裝依賴或存取其他目錄。以最小實作修改完成修復,重跑全部三項斷言,並根據 orders.csv 計算總額。最後列出修改檔案、實際測試結果、總額和限制。命令因環境原因失敗時,請與斷言失敗明確區分。
可以直接複製的任務提示詞

獨立核驗,不能只讀 Agent 的結束語

bash
node --test report.test.mjs
node --input-type=module -e "import {readFileSync} from 'node:fs'; import {totalPaid} from './report.mjs'; console.log(totalPaid(readFileSync('orders.csv','utf8')))"
diff -u report.original.mjs report.mjs
在兩個專案目錄中分別親自執行

應看到三項測試通過,並單獨輸出總額 2000。diff 通常只把篩選條件改為 status === 'paid';其他實作只要遵守相同規則且保留測試,也可以接受。diff 發現檔案不同會返回 1,在這裡是預期結果,不是測試失敗。找不到 Node 或權限不足屬於環境失敗,不能據此判斷計算邏輯錯誤。

比較你實際完成了哪些工作

Token作用檢查項
起始上下文DSH:選擇工作區,檢查會話與工具。Pi:目前目錄及發現的上下文決定起點,本練習顯式關閉可選資源發現。記錄精確目錄與載入的上下文;相同提示詞不代表上下文相同。
審批與隔離DSH:預設組合沙箱和審批設定。Pi:可以控制工具暴露,更強的作業系統邊界需要另行配置。記錄實際邊界和人工審批,不能用彈窗次數衡量安全性。
計劃與委派DSH 的組合可包含計劃和子 Agent。Pi 核心把 plan-mode、子 Agent 等工作流程交給擴充套件或包。這個三檔案修復無需兩者。官方 plan-mode 範例展示擴充套件做法,本練習不要求額外安裝。
復核與繼續DSH 記錄會話事件日誌;Pi 提供 /session、/resume、/tree、/fork。保存經過測試的修改內容和交接說明。會話歷史提供上下文,但不會復原已編輯的檔案。
費用與速度模型、提示詞、已載入擴充套件和等待審批的時間都會影響結果。填寫觀察值或“未測量”;單個合成任務不能形成普遍排名。

有意識地暫停、繼續與復原

停止前讓 Agent 匯總目標、已改檔案、實際命令結果和下一步。DSH 中重新打開原會話並核對工作區;Pi 在同一專案執行 pi -c 繼續最近會話,或 pi -r 選擇會話。/tree、/fork 分支的是對話歷史,不會回復檔案。撤銷失敗嘗試前先保存嘗試檔案,再只復原練習實作。

bash
cp report.mjs report.attempt.mjs
cp report.original.mjs report.mjs
node --test report.test.mjs
保留嘗試結果,僅復原練習檔案

復原後應再次出現原來的兩項失敗,這是有意進行的復原檢查。保留 report.attempt.mjs 便於比較。在真實倉庫中應使用乾淨分支或工作樹,並逐檔案審閱復原;不要把本練習的覆蓋命令用於無關工作。

完成一次審閱後再選擇

如果日常工作適合共享 Web 工作台、可見的會話和工具狀態、組合式流程,可以試 DSH;如果已有終端工具鏈,更喜歡顯式 CLI 啟動與小型可擴充套件核心,可以試 Pi。完成相同任務並讀過 diff 後再決定。兩種介面都不能保證修改內容正確,也不會自行讓不可信程式碼變安全。

text
Harness/版本:
模型/Provider:
工作區及初始檔案:
實際工具/權限配置:
追加提示與人工審批:
測試:原始 __ 項失敗;最終 __ 項通過
實際總額:
修改檔案:
耗時/工具報告用量(或未測量):
復原結果:
剩餘限制:
保留一份簡短的比較記錄

帶著具體目標繼續

閱讀一手官方資料

常見問題

修改前需要了解的事項

關於格式、相容性、證據與回滾的簡明說明。

這篇指南核實哪些範圍?

本指南涵蓋:固定 DSH Alpha 原始碼與現行 Pi 官方 CLI、會話、擴充套件文件;已在本機執行的訂單統計合成範例、參考修復與指定檔案復原;沒有聲稱完成模型橫評或真實 Provider 業務任務

我應該先做什麼?

從一個可以觀察結果的任務開始:報表錯誤地統計了已退款訂單。建立兩份獨立專案,在兩邊都支援時選同一模型,並固定驗收測試。比較的是得到可審閱修改內容所需的工作,而不是兩段產品介紹。

最需要記住的邊界是什麼?

DSH 步驟採用從原始碼建置的 0.1.3-alpha.1,固定提交 d347e703908d0406b7a7ef80e3a0e594d86b2215。Pi 命令已依 2026 年 9 月 6 日的官方文件核對。訂單範例與參考修正已在本機執行;尚未用模型實測兩套提示詞的比較結果。

三項測試通過就能證明哪個 Harness 更好嗎?

不能。這只證明目前的實作通過範例中的三項檢查。若要得出更廣泛的結論,應增加比較任務,並保持模型、輸入和驗收標準一致。

DSH 和 Pi 能共用會話檔案嗎?

不要假設格式通用。可以複製專案和純文字交接說明,但應保留各自的會話檔案。DSH Alpha 的版本遷移不是 Pi 會話匯入工具。

這個範例需要安裝 plan-mode 外掛嗎?

不需要,簡短的檢查、修改、測試循環就夠了。確實需要相應流程時再閱讀官方 Pi 範例;載入擴充套件是單獨的信任決定。

繼續學習

檢視驗證證據並繼續操作

對比已釋出製品,或返回安裝文件。