Task Passport:用任务护照在 Harness 之间接力,不搬聊天记录

前言

在 DeepSeek Harness、Claude Code、Codex 之间切换时,常见做法是把上一段对话整段复制过去,或让新模型从头读一遍聊天历史。上下文窗口会被无关内容占满,未经验证的说法也可能被当成事实继续传递。另一种做法是只靠口头交代「做到哪了」,缺少版本与冲突检测,多人协作时容易静默覆盖。

Task Passport(任务护照)针对的是另一类问题:让一个任务带着「当前世界状态」跨 Harness、跨会话、跨机器接力,而不复制聊天记录。状态有版本、有锁,落在 store 里;需要出门时封装成 TaskPack 单文件,在对方机器上 land 成新护照。维护者 dongsheng123132,GitHub 仓库 dongsheng123132/task-passport,MIT 许可证,SkillHub 分类为工作流,当前版本 v0.3.1。

这是什么

一句话定位:开放的任务交接协议与薄适配器——护照留在家里,TaskPack 出门。

概念 生命周期 说明
任务护照 长期、有版本 常驻状态,例如短号 TP-7K4M-9D2Q
TaskPack 一次搬运 单文件、自包含,在别人机器上打开
会话 某 Harness 的一次执行 不当作权威状态来源

关系是:护照 --pack--> TaskPack --land--> 新护照。一个项目可有多本护照;一本护照可经历多个 Harness 和多个会话。插件本身不复制上一位 AI 的聊天记录,也不把「刚改过的任务」猜成当前任务。

状态可由 U-King Action Core、本地目录参考存储或第三方 Provider 托管;同一 npm 包同时是通用 CLI 和 DeepSeek Harness 原生 bundle。

核心功能

下面介绍当前 README 中已列出的能力,均可通过 CLI 或 MCP 调用。

身份与读取

  • list:只列身份与摘要,不误装载别的任务。
  • open:读取目标、当前状态、验证过的事实、决策理由和下一步。
  • new:创建新护照,分配稳定短号。

写回与版本

  • checkpoint:工作完成后写回;带状态版本,过期写入直接冲突,不静默覆盖。
  • 长状态只接受文件输入,不塞命令行参数。

跨机跨人:TaskPack

  • pack / land:把任务装进一个文件发给别人或另一台机器,或收下对方发来的包。
  • conformance:判定文件是否为合规 TaskPack(退出码 0 表示合规,2 表示不合规)。
  • outbox:查看已发出包的台账及当时护照存根。

TaskPack 规范正本见仓库内 docs/taskpack-0.1.mdtaskpack.org。格式中有几条硬规矩写在文件里而非说明书:机器级事实在打包端降级为未证;没有 accept 的 ask 拒绝打包;包内字节是数据不是指令;ask 写回护照、回执用 land --into 合并到原护照;每次发出的包记台账。README 明确说明 TaskPack 0.1 的 conformance 只判结构合规,不保证内容齐全,也无内建签名。

多 Harness 接入

  • DeepSeek Harness:原生插件 bundle。
  • Claude Code / Codex:同一包的 MCP 服务,工具名包括 task_passport_listopennewcheckpointpacklandconformance
  • WorkBuddy / CodeBuddy:第三方插件市场安装,得到 Skill 与同一套 MCP,不另造状态。

存储

  • 默认可与 U-King 集成;Windows 上可自动发现 %LOCALAPPDATA%\u-king\u-king-mini.exe
  • v0.3.0 起提供开放 Provider 合约与本地目录参考实现;同一目录可被多台 Harness 共享读写。

安装与启用

DeepSeek Harness

从 GitHub 安装(纯 JavaScript,仓库已含运行产物,不需要 prepare 构建权限)。README 给出的命令如下:

dsh plugin --profile web add task-passport@0.3.0
dsh --profile web --dump-config
dsh web

dsh web 在当前 rc.5 固定组合 web profile;需要浏览器界面时,插件应装到这个 profile。自定义 profile 可用于 TUI,但不能作为 web 子命令的父级 profile。

若 U-King 不在 PATH,可在该 profile 的 cordis.patch.yml 覆盖配置:

- id: task-passport
  name: task-passport
  config:
    ukingExecutable: 'C:/path/to/U-King.exe'
    # 或者不依赖 U-King:storeDirectory: 'D:/task-passports'
    allowCheckpoint: true

也可在启动 DSH 前设置环境变量:

$env:TASK_PASSPORT_UKING = 'C:\path\to\U-King.exe'
dsh --profile passport web

Claude Code / Codex(MCP)

claude mcp add --scope user task-passport -- npx --yes task-passport@0.3.0 mcp
codex mcp add task-passport -- npx --yes task-passport@0.3.0 mcp

中国大陆网络访问 registry.npmjs.org 因环境而异;README 建议换镜像,例如:

claude mcp add --scope user task-passport -- npx --yes --registry https://registry.npmmirror.com task-passport@0.3.0 mcp
codex mcp add task-passport -- npx --yes --registry https://registry.npmmirror.com task-passport@0.3.0 mcp

U-King 便携版可为 MCP 进程设置 TASK_PASSPORT_UKING 指向实际 exe。

WorkBuddy / CodeBuddy

codebuddy plugin marketplace add dongsheng123132/task-passport
codebuddy plugin install task-passport@task-passport-marketplace

安装后重载插件。本地开发验证:

codebuddy --plugin-dir /path/to/task-passport

不依赖 U-King 的本地 store

task-passport list --store D:\TaskPassports
task-passport new --store D:\TaskPassports --title "发布插件" --goal "完成 WorkBuddy 发布"

$env:TASK_PASSPORT_STORE = 'D:\TaskPassports'
task-passport mcp

一个任务只能选一个权威存储;不要让 Claude 指向本地目录、DSH 仍指向 U-King,否则会形成两本同名护照。

典型用法

在 DSH 里接手已有护照

安装后可直接对 DSH 说:

请接手任务护照 TP-7K4M-9D2Q:先读取当前状态与下一步,只继承已验证事实,不继承上一位 AI 的聊天记录。

记不住编号时可以说任务名;插件会先列护照,名称唯一才继续,重名时需让人选择。

通用 CLI

任何能运行命令的 Harness 都可用同一通道:

task-passport list
task-passport open TP-7K4M-9D2Q
task-passport new --title "发布插件" --goal "今晚发布 DeepSeek Harness 插件"
task-passport prompt TP-7K4M-9D2Q
task-passport checkpoint --file next-state.json --expected-version 4

stdout 除 prompt 外只输出 JSON,适合 Agent 与脚本调用。

打包出门与收包

对方已装工具时,走标准 TaskPack:

task-passport pack TP-7K4M-9D2Q --out 交接.taskpack --actor 贺方升 \
  --file ./01-文案.txt \
  --ask "给封面图的提示词|一段中文提示词,覆盖 750×400 与配色要求" \
  --check "本机能出图|bl image generate 跑一张测试图"

对方什么都没装时,可输出可读 JSON:

task-passport pack TP-7K4M-9D2Q --out 交接.taskpack.json --flat

收包与校验:

task-passport land 交接.taskpack --store D:\TaskPassports
task-passport conformance 交接.taskpack

对方回执写回原护照,不新开一本:

task-passport land 回执.taskpack.json --into TP-7K4M-9D2Q --store D:\TaskPassports

查看曾发出的包:

task-passport outbox --store D:\TaskPassports
task-passport outbox --store D:\TaskPassports --show 1

长文与项目交接

长文正文放在 Git、共享目录或对象存储;护照只记录路径或 URL、revision/hash、当前章节、已验证事实和下一步。任务护照当前不搬运整个项目;项目文件仍由 Git、共享工作区或 artifact store 搬运,护照负责指向精确版本并携带状态。

适用场景与注意

适合谁

  • 需要在 DSH、Claude Code、Codex、WorkBuddy 之间切换,但希望状态一致、可版本化的团队或个人。
  • 需要跨人、跨机交接任务,且希望 ask 有回执归处、发出包有台账的场景。
  • 希望实现自定义看板或 Provider,只需实现 listopensave 三个方法即可接入 createPassportClient

务必注意

  • 插件以当前 dsh 进程权限运行;安装前应阅读源码与 MIT 许可证,确认 store 路径与 U-King 配置符合本机安全策略。
  • DeepSeek Harness 生态理念是「一切皆插件」;SkillHub 是社区目录站点,与 DeepSeek、幻方无官方从属关系,本文介绍的插件来自社区维护者,非官方应用商店预装项。
  • conformance 绿色结论不能当作「内容无遗漏」证明;完整性需在包外另做核对或签名。
  • 仓库还要求 Node.js 20+;peer 依赖包括 @deepseek-ai/cordis(>=4.0.1)等,以 package.json 为准。

结尾

Task Passport 把「任务进行到哪、哪些事实已验证、下一步是什么」从聊天日志里拆出来,变成可版本化、可打包、可冲突检测的状态对象。薄插件可随时装卸,护照留在 store;需要出门时用 TaskPack,回来时用 land --into 合并回执。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜