磁盘持久化的执行规划插件:以 .trail 目录承载里程碑/步骤状态机、依赖标注、审计事件与复盘纪要,提供 dsh 工具、CLI 与技能三种接口。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:JohnXu22786/file-planning
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
trailmap(轨迹地图)
磁盘持久化的执行规划插件:把多步骤任务的计划、执行状态、考察笔记与复盘纪要
全部落在工作区 .trail/ 目录里。会话中断、上下文压缩、换会话重启都不丢方向——
恢复后读一眼状态即可继续。
- 状态机驱动:步骤
待办 → 进行中 → 完成(可取消/复活),依赖未满足的 步骤自动标记为「受阻」;里程碑与计划状态由步骤派生,无需手工维护。 - 计划模板生成器:按任务类型(调研/开发/文档/空白)一键生成里程碑骨架, 自动接好步骤依赖,创建后仍可随时增删改。
- 依赖标注:步骤可声明依赖,
start受依赖门控;循环依赖会被检测并阻断。 - 审计事件流:每次推进都写入追加式事件记录,复盘自动引用,过程可追溯。
- 复盘纪要:收尾时自动汇总里程碑/步骤/取消项/时间线,手写回顾区跨次生成 保留。
- 确定性收尾闸门:
check判定全部步骤闭合且结构无问题,避免"以为做完了"。 - 三种接口:dsh 工具(10 个
trailmap_*)、独立 CLI(trail)、技能 (SKILL.md),共享同一核心。
快速开始(CLI,零依赖)
node bin/trail.js init "为工具链添加回归测试" --kind blank
node bin/trail.js status
node bin/trail.js start m1-1
# ……执行工作……
node bin/trail.js finish m1-1
node bin/trail.js check # 收尾闸门(步骤闭合后通过)
node bin/trail.js debrief --close # 复盘 + 归档
(--kind blank 只有一个步骤,便于把建轨迹→推进→收尾全流程跑通;--kind build
会生成完整里程碑骨架,见命令速查与 docs/format.md。)
(或 npm link 后直接使用 trail 命令;TRAILMAP_DIR 环境变量指定工作区,
缺省为当前目录。)
在 DSH 中安装
dsh plugin --profile demo add github:JohnXu22786/file-planning
接入 dsh(插件化 harness)
dsh plugin --profile demo add ./file-planning
dsh --profile demo --dump-config # 应出现 dsh-plugin-trailmap 补丁层
dsh --profile demo
harness 通过 cordis.patch.yml 插入插件行,Cordis 注入 ctx.tools 并注册全部
工具;模型即可调用 trailmap_* 完成建计划/推进/复盘全流程。技能放在
skill/trailmap/。详见 docs/integration.md。
工作区文件
<工作区>/.trail/
├── map.json # 唯一事实源(计划 + 状态 + 审计事件)
├── map.md # 渲染视图:状态行 / 下一步 / 勾选清单
├── fieldnotes.md # 考察笔记
├── journal.md # 行程日志
├── debrief.md # 复盘纪要
├── .active # 活动计划指针(多计划)
└── plans/<别名>/ # 平行计划
.trail/ 默认不纳入版本控制。文件格式与状态机详见
docs/format.md。
命令速查
| 命令 | 作用 |
|---|---|
trail init <目标> [--kind …] [--name 别名] |
建轨迹(模板骨架 + 依赖接线) |
trail status [--history] [--json] |
状态总览 |
trail start/finish/drop/reopen <步骤ID> |
步骤状态机(drop 需 --reason) |
trail amend … |
中途修正计划结构 |
trail note <文本> [--section 小节] |
考察笔记 |
trail journal <文本> |
行程日志 |
trail check [--json] |
完成判定闸门(未通过时退出码 1;--json 模式退出码恒 0,以 ok 字段为准) |
trail debrief [--close] / trail close |
复盘(+归档) |
trail render |
手工编辑 map.json 后重生成视图 |
trail plans / switch <别名> / switch root |
多计划管理 |
开发
node --test # 全部单元测试(node 内置测试运行器,零依赖)
lib/machine.js:纯状态机(转移/派生/校验/循环检测)lib/ops.js:操作层(CLI 与 dsh adapter 共用)adapter/index.js:dsh 工具插件入口scripts/adapter-smoke.mjs:对真实@deepseek-ai/dsh-tools的冒烟验证。 运行方式:新建临时目录,npm init -y && npm pkg set type=module,npm i @deepseek-ai/dsh-tools @deepseek-ai/cordis,把本脚本复制到临时目录根, 并把lib/、adapter/两个目录也复制过去,执行node adapter-smoke.mjs
目录结构
file-planning/
├── adapter/ # dsh 插件入口(Cordis plugin)
├── lib/ # 核心库(零依赖):machine/store/render/templates/ops/cli
├── bin/trail.js # CLI 入口
├── skill/trailmap/ # 技能(SKILL.md)
├── scripts/ # 冒烟验证脚本
├── test/ # 单元测试(node --test)
├── docs/ # 接入说明 / 文件格式约定
├── examples/ # 示例工作区(完整执行完毕的轨迹)
├── cordis.patch.yml # bundle 补丁层
└── package.json # bundle 清单(dsh.bundle)
许可
MIT,见 LICENSE。
链接
同类插件
Q00/ouroboros#integrations/dsh-plugin★ 6144
通过 DSH MCP 客户端挂载 Ouroboros 的纯配置包,在 DSH 中提供 36 个涵盖需求访谈、Seed、执行、评估与演化流程的工具。
loopx-project/loopx#dsh-loopx-plugin★ 6111
LoopX——面向长周期 Agent 的提供商中立、本地优先状态内核与控制平面:在 DeepSeek Harness 执行层之上持久化 Goal、Todo、门禁、证据、配额、恢复与交接状态;插件负责引导安装 CLI 与技能、准入有界的同会话续跑,并为精确绑定的工作循环提供本地 GoalBar。
chuspeeism/dashi-taskboard#deepseek-harness★ 3262
把当前已安装并运行中的 Codex Taskboard 嵌入 DeepSeek Harness 侧边栏,并通过 Launcher 运行时描述文件连接,而不是使用固定端口。
NanmiCoder/dsh-agent-teams★ 1848
AgentTeams 多智能体团队。
EthanYoQ/AI-Novel-Writer#dsh-ai-novel-writer★ 1205
安装专用 AI 小说创作预设与工作台:提供带修订号的本地项目资产、紧凑侧边工作台,以及需要原生审批的逐文件变更。
tong-io/tongflow#dsh-tongflow★ 1034
基于 TongFlow 的“片场”插件,用于图片、配音、音乐与视频制作:agent 为每个资产生成 TongFlow 工作流文件(.tongflow.json)并通过 TongFlow 插件执行,内嵌工作流画布,按镜头/角色/take 组织项目,附漫剧模板;以 @tongflow 开头的会话进入 Studio 界面。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。