开发、编排与安全开源项目

Matt Development Preset

规格到交付的开发 Agent

从需求追问、规格与工单推进到 TDD 实现和代码审查的受控开发预设。

项目 README(英文原文)

在 GitHub 中查看

dsh-matt-preset — Matt 工作流模式(DeepSeek Harness agent preset)

Matt Pocock 的 AI 编码工作流(ask-matt)运转的 DSH agent preset:grill 打磨想法 → 原型判定 → to-spec / to-tickets 拆票 → implement(内嵌 tdd)→ code-review,配 handoff 工具、定时任务 与工作区自主初始化。

这是什么规范

  • DSH agent preset@deepseek-ai/dsh-agent-presets 规范):一个 preset 目录 = preset.yml(roster 元数据:name/description/order)+ agent.cordis.yml (cordis 组合,即发现器认的 COMPOSITION_FILE)。安装位 = $DSH_HOME/.agent-presets/<id>/(user trust);preset id 必须匹配 /^[a-z0-9][a-z0-9-]*$/
  • 目录内的 .mjscordis 插件(导出 name/apply/inject),组合文件按 相对路径 ./xxx.mjs 引用——它们是这个 preset 的组成部分,不是独立发布的 npm 插件包。
  • DSH 插件(npm 包,作为 bundle 装进 profile,如 dsh-llm-mimo)的区别: 插件扩展宿主能力,preset 组合能力并定义会话表面;本仓库是后者。

特性

组件说明
persona(agent.cordis.yml系统提示词即完整 ask-matt 工作流地图 + WORKFLOW ENFORCEMENT 七门(入口路由 / implement 前置 / 决策边界 / 阶段声明 / 一会话一 issue / 外部动作门 / 票据出口,见 CONTEXT.md D19–D30);{{model}}/{{cwd}} 渲染时插值(tests/verify-persona.mjs 断言)。
handoff-tool.mjs写可移植交接文档 → 创建子会话(fork 带历史 / fresh 全新)→ 文档作为子会话首条 user 提示词,首轮立即开始;子会话自动 attach workspace、携带 model 路由。
scheduled-jobs.mjscron 定时任务(cron-parser):jobs_list/jobs_run/jobs_pause;失败可选通知显式配置的会话(notifySessionId,空 = 仅记日志)。
workflow-enforcer.mjsWORKFLOW GATES 提醒注入(D21 外部动作门):每 turn 基线 + 高危 tool/call 后一次性 ⚠ 追加;项目可放 workflow-gates.yml 覆盖清单(见 docs/workflow-enforcer.md)。
INITIALIZATION 人设段工作区无 CONTEXT.md 时自主探测(git/docs/语言信号)并建双骨架CONTEXT.md(领域)+ 空 docs/adr/ + AGENTS.md(行为指南,含 Agent skills 段;与 CLAUDE.md 绝不双建);tracker 首次用时由 setup 补齐。

曾试验两阶段 bootstrap(梁神模式,tool-bootstrap.mjs):实测仅对 DeepSeek V4 Pro 有效,对其他模型(含 V4 Flash)是副作用,已取消(见 CONTEXT.md D17),恢复全量表面。

安装

DSH 的 preset 没有包管理器:dsh plugin 只管 profile 的 npm 插件,GUI 设置里的 "复制 preset" 也只能复制 roster 上已有的 preset。preset 的官方安装位就是 user root 的 一个目录——放进去 dsh 启动时自动发现$DSH_HOME/.agent-presets/<id>/,id 匹配 /^[a-z0-9][a-z0-9-]*$/),不需要任何注册或配置。所以"安装"= 把本仓库放进那个位:

git clone https://github.com/ch1bug/dsh-matt-preset.git ~/.dsh/.agent-presets/dsh-matt-preset
npm install --prefix ~/.dsh cron-parser luxon   # scheduled-jobs 的依赖(用户自有目录,不碰部署包)

或一键(等价,含依赖):

curl -fsSL https://raw.githubusercontent.com/ch1bug/dsh-matt-preset/main/install.sh | bash

然后重启 dsh web(或新开会话),hero-chip 选择 "Matt 工作流模式"(没有就刷新一下页面)。

两个本机配置位(仓库版留空 = 关闭,安装后按你的环境填):

  • notifySessionId — 失败通知目标会话 id;
  • job-sync-skills.advisory.dir — 上游技能有更新时,在该工作区创建"待跟进"分析会话(未读即提醒)。

验证

# 依赖解析同部署:把测试的 @deepseek-ai 指到 dsh 安装的 node_modules
mkdir -p tests/node_modules
ln -s "$(dirname "$(dirname "$(readlink -f "$(which dsh)")")")/node_modules/@deepseek-ai" tests/node_modules/@deepseek-ai
node tests/verify.mjs              # 挂载套件:handoff 子会话 + 文档首条提示词 + model 路由 + jobs 全套 + workspace attach
node tests/verify-notify.mjs       # 失败通知端到端(live followup)
node tests/verify-persona.mjs      # persona 即系统提示词:{{model}}/{{cwd}} 渲染插值
node tests/verify-enforcer.mjs     # workflow-enforcer V1–V5(基线/高危一次性/scope/无噪音)
node tests/verify-production.mjs   # 生产级:真实 persona 全文 + 真实 minimal persona
# 其它机器部署路径不同时:
DSH_SHIPPED_PRESETS=<shipped agent-presets 目录> node tests/verify.mjs

目录

dsh-matt-preset/
├── preset.yml                    # roster 元数据(name/description/order)
├── agent.cordis.yml              # cordis 组合(persona=七门工作流人设 + 全量工具 + 三个内置插件)
├── handoff-tool.mjs              # 交接工具(fork/fresh 子会话 + 环境快照段)
├── scheduled-jobs.mjs            # 定时任务(cron + 失败通知)
├── workflow-enforcer.mjs         # WORKFLOW GATES 提醒注入
├── workflow-gates.yml.example    # 项目级高危清单模板
├── CONTEXT.md                    # 术语表 + 决策(D1–D30)
├── docs/adr/                     # 架构决策记录
├── docs/workflow-enforcer.md     # enforcer 使用文档
├── docs/workflow-session-boundaries.md  # 会话边界与成本模型设计视图
└── tests/                        # verify / verify-notify / verify-persona / verify-enforcer / verify-production

License

MIT。组合改编自 DeepSeek Harness 内置 preset(MIT,DeepSeek);曾含的 tool-bootstrap.mjs(来自 xiaobright/dsh-anchored-standard, MIT)已于 D17 移除,详见 NOTICE