Back to home@Guard42

dsh-humanize

Humanize 模式 — humanfia 流理念 × DeepSeek Harness 的 agent 预设:Flow 编排 · SHA-256 流锁 · HMAC 评审门禁 · 事件回放恢复 · 一行命令安装 · 可定制领域变体

Stars
0
Language
JavaScript
Created
Aug 24, 2026
Updated
Aug 24, 2026
GitHub repo

Introduction

dsh-humanize

Humanize 模式 — humanfia 流理念 × DeepSeek Harness
把「围绕流构建」的纪律原生移植进 DeepSeek Harness 的 agent 预设:
阶段带裁判、锁有哈希、评审先行、事件为权威、可定制成领域变体。

Release MIT License dsh-plugin Platforms

独立社区开源项目,与深度求索(DeepSeek)及 humanfia 团队均无隶属、合作、授权或背书关系。
中文 · English

dsh-humanize 是一个 DeepSeek Harnessagent preset(智能体预设)。安装后,你的编码代理会以 Humanize 纪律工作:

We build the flow around the agent. 多阶段目标变成显式的流——阶段带裁判命令、锁带哈希、运行前先评审、事件日志高于记忆。"Lean accepts it, or it does not":验证命令 exit 0,阶段才算数;"The review is the next prompt":未过审的锁绝不执行。

核心机制一览:

  • Flow 内核 — 多阶段目标 → 阶段图;每阶段挂裁判命令,exit 0 才算数。
  • 流锁身份 — 语义规范化 + SHA-256 → flk_<digest> 不可变锁;加载时重验,防篡改。
  • 评审门禁 — HMAC 签名绑定;approved / rejected / bypassed 终态不可变;拒绝理由折回草案。
  • 可恢复运行 — append-only events.jsonl 是唯一权威;中断后 flow_resume 从回放继续——"周四停下的循环,周四继续"。
  • Trace 导出 — 每次运行留痕,导出 Markdown 时间线或可导入 ui.perfetto.dev 的 Chrome-JSON。
  • 哈希锚定编辑 — 整文件 SHA-256 锚点校验后再做字面替换,杜绝"凭记忆改错文件"。

致谢与灵感来源

本项目的直接灵感来源与方法论贡献来自 humanfia 团队与 humanize2 框架。没有这些项目,就没有这个预设:

  • humanfia — humanfia 团队主页,「围绕流构建」理念的源头
  • humanfia/humanize2 — 编排、执行、观测 agent 流的框架;本预设的流生命周期、锁身份、评审门禁与事件回放语义均以其为蓝本
  • humanfia/oh-my-humanize — 工作流原生的终端编码代理;其哈希锚定编辑与技能组织方式被本预设继承
  • humanfia/humanize-plugin — 本预设工具面的直系前身(flow_suggest/check/lock/review/run 的 MCP 插件形态)

同时感谢:

  • DeepSeek Harness 与 DeepSeek AI — 上游运行平台:模型路由、沙箱、凭据存储、Web GUI 与 subagents 均来自宿主
  • awesome-dsh-plugin — 社区插件名录与生态

逐项能力对照(哪些机制级对齐、哪些由宿主等价承担、哪些明确是非目标)见 docs/parity.md

安装

方式一:作为 dsh 插件一键安装(推荐)

本仓库同时是一个 DSH 插件包(bundle):内置的安装器桥会在 DSH 启动时自动把预设同步进预设根目录;升级插件版本后重启,未被手动修改过的文件会自动更新(用户改过的文件永不覆盖)。

dsh plugin --profile web add github:Guard42/dsh-humanize

重启 DSH,在预设选择器里选择 「Humanize 模式」 即可。安装器桥的设计参考了 ChongCyrus/Vibe-Mathematics 的先例。

方式二:PowerShell 一行命令(Windows)

powershell -NoProfile -ExecutionPolicy Bypass -Command "iex(irm 'https://raw.githubusercontent.com/Guard42/dsh-humanize/main/tools/install.ps1')"

方式三:bash 一行命令(macOS / Linux)

curl -fsSL https://raw.githubusercontent.com/Guard42/dsh-humanize/main/tools/install.sh | bash

方式四:手动克隆

git clone https://github.com/Guard42/dsh-humanize.git
cd dsh-humanize
powershell -NoProfile -ExecutionPolicy Bypass -File tools\install.ps1

更新与卸载

  • 更新:重跑一次安装命令即可幂等覆盖。
  • 卸载:删除 ~/.dsh/.agent-presets/humanize 目录后重启部署。

[!WARNING] 直接 dsh plugin add 一个只含预设文件的仓库并不会激活它——本仓库能这样做,是因为它声明了 dsh.bundle 清单并自带安装器桥(启动时把预设同步进 ~/.dsh/.agent-presets/humanize)。没有这层桥的纯 preset 仍需手动复制,参见 dsh-expert-mode 的踩坑说明

若安装或同步时报 ACCESS_DENIED:目标目录多半在杀软/HIPS 文件防护范围内(实测火绒 sysdiag 会放行新建、拦截既有文件的写入)。把 %USERPROFILE%\.dsh 加入白名单后重跑即可;更新已安装预设前建议先重启部署,避免进程占用旧文件。

快速上手

选好「Humanize 模式」预设后,直接布置一个多阶段任务:

你: 把测试套件从 Jest 迁到 Vitest,改完全部测试必须绿。

代理: 这个多阶段目标我写成 flow ——
  flow_draft    三个阶段:迁移配置 → 全量替换 → 测试全绿门禁
  flow_check    结构校验,零错误
  flow_lock     规范化+SHA-256 → flk_xxxxxxxx(不可变)
  flow_review_prepare 生成 review.md 给你过目

你: approve(或给出拒绝理由,代理折回草案重新提交)

代理: flow_run → 各阶段子代理干活、裁判命令把关
      中断了?没关系:flow_resume 从 events.jsonl 回放继续,
      已完成的阶段绝不重跑。

定制与领域特化

这是本预设最重要的开放性:它不是一个固化的产品,而是一个可以生长的底座。

你可以在 DeepSeek Harness 中向大模型发出请求:

帮我往humanize模式中加入几种XXXX工具,以加强其在YYYY领域的能力,并且成为一个新的agent preset保存下来,命名为humanize-ZZZZ

这条请求背后真实发生的事情:

  1. 加工具 — 代理在 plugins/ 下新增模块并 ctx.tools.register({...}) 注册(参数用 JSON Schema,实现只依赖 node: 内置模块——零 npm 依赖是设计红线);需要共享状态的服务用 ctx.provide('名字', api) 发布,并在 agent.cordis.ymlhumanize 组内登记。

  2. 加技能 — 在 skills/<name>/SKILL.md 写入领域方法论(frontmatter:name / description),预设自带的技能扫描会自动发现。

  3. 调 persona — 按领域改写组合文件里的行为准则文本。

  4. 落成新预设 — 一条命令把当前定制保存为独立预设,与原版并存互不干扰:

    powershell -NoProfile -ExecutionPolicy Bypass -File tools\install.ps1 -PresetName humanize-ZZZZ
    
    PRESET_NAME=humanize-ZZZZ bash tools/install.sh
    
  5. 选用 — 重启后在预设选择器里会同时出现「Humanize 模式」和「humanize-ZZZZ」,按任务随时切换。

几个方向示例(工具与技能的具体形态由你和代理共同设计):

领域(YYYY)可加入的工具(XXXX)示例可沉淀的技能
量化研究行情数据拉取器、回测结果校验器、因子显著性检验裁判因子研究全流程方法论
论文写作写作纪律审计封装、引用完整性检查、期刊格式校验投稿前自查清单
竞赛建模求解器调用封装、数据清洗管道、论文模板渲染建模赛三阶段方法论

四条设计红线对变体同样生效(详见下文二次开发指南):本地模块禁止 import npm 包、服务必须在 isolate realm 组内、events.jsonl 是唯一权威、评审决策一次写入永不降级。

工具面(15 个模型工具)

工具作用
flow_draft写入完整 FlowDraft(整文档替换)
flow_check结构校验,产出诊断;锁定要求零错误
flow_lock规范化 + SHA-256 → flk_<digest> 不可变锁
flow_list列出工作区全部 flows:drafts / locks / reviews / runs
flow_show渲染一条 flow 为可读图:阶段、裁判命令、路由
flow_review_prepare生成 HMAC 签名评审绑定 + 可读 review.md
flow_review_decide唯一决策工具:approved / rejected / bypassed,终态不可变
flow_run校验签名绑定 → 调度就绪节点 → 立即返回 runId
flow_status从事件日志重放单次运行:节点状态、激活数、工件
flow_resume中断后恢复:已完成阶段绝不重跑
flow_stop取消运行:中止在途激活,进度保留至最近落定事件
trace_exportmd 时间线 / chrome-json(Perfetto)/ jsonl 三种导出
edit_anchored哈希锚定编辑:expectSha256 不匹配即拒绝写入
hash_file计算文件当前 SHA-256(配合 edit_anchored 使用)
model_catalog列出可用 provider 路由与模型,供 flow 节点选型

配置

编辑 humanize.config.json(缺省即下表默认值),重启会话生效:

默认说明
stateRootMode"workspace"workspace → <cwd>/.humanize;home → ~/.dsh/humanize
defaultExecutor"spawn"节点缺省执行器 spawn | fork
nodeModelDefault""子代理模型 "provider/model""model";空 = 继承会话模型
maxParallel2每 run 并发激活上限
verifyTimeoutMs600000裁判命令缺省超时

子代理模型三级优先级:节点 model → flow 顶层 model → 配置 nodeModelDefault → 继承会话模型。gate 节点不跑代理,其 model 字段忽略。

架构

DeepSeek Harness 宿主(模型路由 · sandbox/approval · 凭据存储 · Web GUI · subagents 注册表)
└─ humanize 预设(isolate realm 组,随目录安装,零构建零依赖)
   ├─ persona                     流优先的行为准则({{model}}/{{cwd}} 由宿主解析)
   ├─ skills/humanize-flow        教模型正确编写与驾驶 flow 的技能
   ├─ plugins/flow-kernel.mjs     纯函数内核:文档模型 · 规范化 · SHA-256 · check · 谓词
   ├─ plugins/humanize-store.mjs  持久化服务:草稿 · 锁 · HMAC 评审存储 · 事件日志
   └─ plugins/tool-flow.mjs       15 个模型工具 + 事件回放调度器

宿主职责与预设职责严格分层:shell 执行走宿主沙箱,子代理走宿主注册表,预设只贡献"流"这一层纪律,不触碰凭据、不放宽任何宿主约束。

目录结构

agent.cordis.yml        组合:standard 全部能力 + humanize 运行时组(isolate realm)
preset.yml              roster 元数据
humanize.config.json    预设级配置
plugins/
  flow-kernel.mjs       纯函数内核(无 I/O)
  humanize-store.mjs    持久化 + HMAC 评审存储 + 事件日志
  tool-flow.mjs         15 个模型工具 + 事件回放调度器
skills/humanize-flow/   flow 编写技能
bridge/installer.mjs    dsh bundle 安装器桥(plugin 安装形态)
package.json            dsh.bundle 清单(dsh plugin add 入口)
cordis.patch.yml        bundle patch:向宿主注入安装器桥
tools/                  冒烟测试 · 组合检查器 · 文档检查器 · 一键安装器
docs/design.md          移植设计规格
docs/parity.md          与 humanfia 生态的能力对齐审计

与 humanfia 原版的对应

原版机制本预设实现
FlowDraft → FlowLock(canonical bytes, flk_<digest>flow-kernel 规范化 + identityOf
Review Store(HMAC、终态、单一决策工具)reviews/ + review-mac.key + flow_review_decide
append-only 事件为权威、快照为缓存events.jsonl + replayRun
humanize-plugin 的 tmux window→run、pane→节点激活run 目录 + activation 事件(subagents spawn/fork 驱动)
hmz trace collect → Perfettotrace_export(chrome-json)
oh-my-pi/omp 的 hash-anchored editsedit_anchored

完整逐项对照(✅ 对齐 / 🔁 宿主等价 / 🚧 部分 / ⛔ 非目标 + 补齐路径)见 docs/parity.md

二次开发指南

加一个工具:在 tool-flow.mjsctx.tools.register({...}),参数 schema 用 JSON Schema 对象,execute(args, exec) 里通过 ctx.get('服务名') 消费宿主能力。

加一个服务:新模块导出 nameapply(ctx),用 ctx.provide('名字', api) 发布;在 agent.cordis.ymlhumanize 组内加一行 name: ./plugins/<模块>.mjs。同组消费者 inject: ['名字'] 即可解析;组内 isolate realm 保证跨会话安全。

换技能/提示词skills/ 直接加目录;persona 在组合文件里改文本。

调内核语义flow-kernel.mjs 是纯函数(无 I/O),改完跑冒烟:

node tools/test-humanize.mjs

设计红线(改代码前先读)

  • 本地模块禁止 import 任何 npm 包(用户目录没有 node_modules 解析链);只用 node: 内置。
  • 服务行必须在 isolate realm 组内,否则挂载审计拒绝(process-global service 泄漏)。
  • events.jsonl 是唯一权威:任何状态缓存都只是重建视图,不得反向成为事实来源。
  • 评审决策一次写入、永不覆盖;MAC 校验失败必须硬失败,不许降级放行。

参与

欢迎 Issue 与 PR。提交信息遵循 Conventional Commits;PR 前请确保三项本地检查全绿:

node tools/test-humanize.mjs
node tools/check-composition.mjs
node tools/check-docs.mjs

License

MIT © 2026 Guard42 and dsh-humanize contributors

特别感谢

特别感谢 humanfia 团队:humanize2oh-my-humanizehumanize-plugin 所代表的"围绕流构建"方法论,是这个项目的直接灵感来源与设计基石。

感谢 DeepSeek HarnessCordis 提供的插件化底座,感谢 awesome-dsh-plugin 社区的生态共建,以及每一个使用、反馈和参与的你。

Star History

Star History