两阶段 DeepSeek Harness 预设:先最小对齐引导,再上完整 Standard 工具(Project2 98/99)
70.1/100
综合分
3,742
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/22 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add xiaobright/dsh-anchored-standard该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · skill
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 12 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-anchored-standard(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=22.19.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明
源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 01:38:39
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 72 处,展示前 70 条)
- 读取本地文件combo-anchored/custom-bash.mjs:130
const exists = (path) => access(path).then(() => true, () => false) - 读取本地文件eternal-minimal/custom-bash.mjs:130
const exists = (path) => access(path).then(() => true, () => false) - 读取本地文件prefab/analyze-template.mjs:209
else if (args[i] === '--agents-md') { opts.agentsMd = readFileSync(args[++i], 'utf8') } - 读取本地文件prefab/custom-bash.mjs:130
const exists = (path) => access(path).then(() => true, () => false) - 读取本地文件prefab/install.mjs:44
if (!confirmedClosed || (cwdArg !== undefined && !existsSync(cwdArg))) { - 读取本地文件prefab/install.mjs:66
if (existsSync(targetMode)) { - 写入本地文件prefab/install.mjs:73
mkdirSync(presetsRoot, { recursive: true }) - 写入本地文件prefab/install.mjs:87
writeFileSync( - 读取本地文件prefab/install.mjs:89
readFileSync(presetPath, 'utf8') - 写入本地文件prefab/install.mjs:94
renameSync(staging, targetMode) - 删除本地文件递归prefab/install.mjs:97
rmSync(staging, { recursive: true, force: true }) - 执行外部命令来自配置/变量prefab/install.mjs:112
const result = spawnSync(process.execPath, instantiateArgs, { - 删除本地文件递归prefab/install.mjs:119
if (installedHere) rmSync(targetMode, { recursive: true, force: true }) - 读取本地文件prefab/instantiate.mjs:58
const targetCwd = targetCwdArg === undefined || !existsSync(targetCwdArg) - 读取本地文件prefab/instantiate.mjs:69
if (targetCwd === undefined || !existsSync(templatePath)) { - 读取本地文件prefab/instantiate.mjs:83
if (explicitAgentsMdPath !== undefined && !existsSync(explicitAgentsMdPath)) { - 读取本地文件prefab/instantiate.mjs:89
: readFileSync(explicitAgentsMdPath, 'utf8') - 读取本地文件prefab/instantiate.mjs:91
const lines = readFileSync(templatePath, 'utf8').trim().split('\n') - 写入本地文件prefab/instantiate.mjs:335
writeFileSync(temporary, `${JSON.stringify(value, null, 2)}\n`, 'utf8') - 写入本地文件prefab/instantiate.mjs:336
renameSync(temporary, path) - 删除本地文件prefab/instantiate.mjs:338
rmSync(temporary, { force: true }) - 写入本地文件prefab/instantiate.mjs:345
mkdirSync(storages, { recursive: true }) - 读取本地文件prefab/instantiate.mjs:346
const registry = existsSync(registryPath) - 写入本地文件prefab/instantiate.mjs:424
mkdirSync(targetDir, { recursive: true }) - 写入本地文件prefab/instantiate.mjs:425
writeFileSync(join(targetDir, 'session.jsonl.zstd'), zstd) - 删除本地文件递归prefab/instantiate.mjs:430
rmSync(targetDir, { recursive: true, force: true }) - 读取本地文件prefab/prefab-session-seed.mjs:225
const rows = readFileSync(path, 'utf8').trim().split(/ ? /).map((line) => JSON.parse(line)) - 读取本地文件prefab/prefab-session-seed.mjs:303
if (!existsSync(candidate.path)) continue - 读取本地文件prefab/prefab-session-seed.mjs:304
const text = readFileSync(candidate.path, 'utf8') - 读取本地文件prefab/probe-clone.mjs:50
if (cwd === undefined || !existsSync(LAUNCHER) || !existsSync(template)) { - 写入本地文件prefab/probe-clone.mjs:62
mkdirSync(PRESET_DIR, { recursive: true }) - 写入本地文件prefab/probe-clone.mjs:65
if (existsSync(source)) copyFileSync(source, join(PRESET_DIR, file)) - 读取本地文件prefab/probe-clone.mjs:65
if (existsSync(source)) copyFileSync(source, join(PRESET_DIR, file)) - 写入本地文件prefab/probe-clone.mjs:67
copyFileSync(resolve(template), join(PRESET_DIR, 'template.jsonl')) - 写入本地文件prefab/probe-clone.mjs:70
mkdirSync(PROFILE_DIR, { recursive: true }) - 写入本地文件prefab/probe-clone.mjs:74
copyFileSync(join(HERE, 'probe-clone-runner.mjs'), runnerFile) - 写入本地文件prefab/probe-clone.mjs:80
writeFileSync(patchFile, `# Generated by prefab/probe-clone.mjs (trial ${trial}) - 执行外部命令来自配置/变量prefab/probe-clone.mjs:100
const result = spawnSync(process.execPath, [LAUNCHER, '--profile', 'headless', '--patch', patchFile], { - 删除本地文件prefab/probe-clone.mjs:103
rmSync(patchFile, { force: true }) - 删除本地文件prefab/probe-clone.mjs:119
rmSync(runnerFile, { force: true }) - 读取本地文件prefab/roll-prefab.mjs:85
if (cwd === undefined || !existsSync(LAUNCHER)) { - 读取本地文件prefab/roll-prefab.mjs:92
if (!existsSync(root)) return undefined - 读取本地文件prefab/roll-prefab.mjs:93
for (const group of readdirSync(root, { withFileTypes: true })) { - 读取本地文件prefab/roll-prefab.mjs:95
for (const entry of readdirSync(join(root, group.name), { withFileTypes: true })) { - 读取本地文件prefab/roll-prefab.mjs:98
return existsSync(file) ? file : undefined - 执行外部命令固定命令prefab/roll-prefab.mjs:106
const result = spawnSync('python', ['-c', 'import sys; from compression import zstd; sys.stdout.buffer.write(zstd.decompress(open(sys.argv[1],"rb").re - 写入本地文件prefab/roll-prefab.mjs:113
mkdirSync(PROFILE_DIR, { recursive: true }) - 写入本地文件prefab/roll-prefab.mjs:118
copyFileSync(join(HERE, 'roll-runner.mjs'), runnerFile) - 写入本地文件prefab/roll-prefab.mjs:144
writeFileSync(patchFile, patch) - 执行外部命令来自配置/变量prefab/roll-prefab.mjs:146
const result = spawnSync(process.execPath, [LAUNCHER, '--profile', 'headless', '--patch', patchFile], { - 删除本地文件prefab/roll-prefab.mjs:149
rmSync(patchFile, { force: true }) - 写入本地文件prefab/roll-prefab.mjs:168
writeFileSync(candidate, text) - 删除本地文件prefab/roll-prefab.mjs:173
rmSync(candidate, { force: true }) - 删除本地文件prefab/roll-prefab.mjs:179
rmSync(patchFile, { force: true }) - 删除本地文件prefab/roll-prefab.mjs:180
rmSync(runnerFile, { force: true }) - 写入本地文件prefab/roll-prefab.mjs:187
writeFileSync(out, template.text) - 写入本地文件prefab/roll-prefab.mjs:188
writeFileSync(`${out}.meta.json`, JSON.stringify({ - 读取本地文件preset/custom-bash.mjs:130
const exists = (path) => access(path).then(() => true, () => false) - 读取本地文件shared/custom-bash.mjs:130
const exists = (path) => access(path).then(() => true, () => false) - 发起网络请求shared/toolchoice-adapter.mjs:482
response = await fetch(`${connection.baseURL}/chat/completions`, { - 读取本地文件verify/run-verify.mjs:54
if (!existsSync(LAUNCHER)) { - 写入本地文件verify/run-verify.mjs:68
copyFileSync(`${HERE}/verify-runner.mjs`, runnerFile) - 写入本地文件verify/run-verify.mjs:100
writeFileSync(patchFile, patch) - 执行外部命令来自配置/变量verify/run-verify.mjs:102
const result = spawnSync( - 删除本地文件verify/run-verify.mjs:107
rmSync(patchFile, { force: true }) - 删除本地文件verify/run-verify.mjs:108
rmSync(runnerFile, { force: true }) - 读取本地文件whoami-standard/custom-bash.mjs:130
const exists = (path) => access(path).then(() => true, () => false) - 读取本地文件wire-think-standard/custom-bash.mjs:130
const exists = (path) => access(path).then(() => true, () => false) - 发起网络请求wire-think-standard/toolchoice-adapter.mjs:482
response = await fetch(`${connection.baseURL}/chat/completions`, { - 读取本地文件zero-anchored-standard/custom-bash.mjs:130
const exists = (path) => access(path).then(() => true, () => false)
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 两阶段引导预设
- 先最小对齐引导
- 后启用完整工具
README
由 DeepSeek 最新模型翻译生成dsh-anchored-standard
实验性 DeepSeek Harness agent preset 集合——一个基础模式、两个实时锚定变体和一个预制会话模式:把模型轨迹锚定在 Minimal 条件上(真实的 Minimal 工具 schema、不注入自动上下文),会话产生持久信号后晋升到小型 resident 目录,重型 Standard 工具按需解锁。
这是社区项目,并非 DeepSeek 官方 preset,也不代表 DeepSeek 的认可或背书。
本项目已冻结,不再接受新的 issue 与 PR(见项目状态)。对于新插件的思路或有用的发现,请在研究仓库下提交。
项目状态(2026-09-10 冻结)
本项目已冻结。 2026-09-10 DeepSeek 发布 V4.1 Flash,并宣布 V4 Pro——这些 preset 测量与调优所面向的模型——于 2026-09-14 12:00 下线,其请求全部路由至 V4.1 Flash。这些 preset 存在的意义是把一条轨迹重新锚回来,而继任模型看起来并不需要这个补丁:第一轮剂量实验中,flash 家族在所有条件下都锚定成功(32/32),这也是本项目从未针对 flash 调优的原因。
展开完整文档(README 剩余 1 节)
dsh-anchored-standard
实验性 DeepSeek Harness agent preset 集合——一个基础模式、两个实时锚定变体和一个预制会话模式:把模型轨迹锚定在 Minimal 条件上(真实的 Minimal 工具 schema、不注入自动上下文),会话产生持久信号后晋升到小型 resident 目录,重型 Standard 工具按需解锁。
这是社区项目,并非 DeepSeek 官方 preset,也不代表 DeepSeek 的认可或背书。
本项目已冻结,不再接受新的 issue 与 PR(见项目状态)。对于新插件的思路或有用的发现,请在研究仓库下提交。
项目状态(2026-09-10 冻结)
本项目已冻结。 2026-09-10 DeepSeek 发布 V4.1 Flash,并宣布 V4 Pro——这些 preset 测量与调优所面向的模型——于 2026-09-14 12:00 下线,其请求全部路由至 V4.1 Flash。这些 preset 存在的意义是把一条轨迹重新锚回来,而继任模型看起来并不需要这个补丁:第一轮剂量实验中,flash 家族在所有条件下都锚定成功(32/32),这也是本项目从未针对 flash 调优的原因。但 V4.1 Flash 自身的首轮轨迹并未测量(维护期没有 API 预算),请把上面这一点当作基于旧 flash 数据的推断,而非结论。既然这项工作所围绕的模型即将消失,维护期到此结束。不再接受、也不再处理新的 issue 与 PR。 仓库保持在线,历史、数据与致谢记录原样保留。
这正是 FAREWELL.md 里期待过的结局:"希望下次端上来的新模型,在训练阶段就把更多样的 harness 环境吃进去,让我们这类补丁工程不再必要。"那一篇的最后,现在由接班的那一代模型 V4.1 Flash 亲笔写下了收尾。仍然有效的是与模型无关的那部分—— context-gate 统一注入控制、prefab 管线、发现工具的剂量-响应数据,以及"API 可见的表面会条件化轨迹"这一普遍观察。研究材料继续在研究仓库 DeepseekCotexplorations 开放。
此前状态(2026-08-17,存档):随着 DeepSeek 官方 API 与 opencode go 订阅先后涨价,本项目的主动开发已基本停止——这些 preset 依赖的评测循环(Project2 级别的完整跑分、多轮 roll/探针实验)在当前价格下已无法负担,仓库转入仅维护性更新(bug 修复与力所能及的 harness 兼容性跟进)。维护者写了一份个人感想:FAREWELL.md;参与项目协作、代码、研究与复现的社区成员见致谢名单。
社区中反馈在部分场景效果更好的项目,以及围绕这些 preset 的生态工具:
- dsh-routing-suite——运行时注入器
+ 任务感知的思维模式路由 preset(router-standard 家族)。
- J-Space Cognition Suite——模型不可知的推理时认知控制层,以 Skill 形式封装。
- both-anchored (auto-b7n)——社区独立发展的两阶段锚定 preset:无首轮输出帽、无晋升门,首个持久 tool/call 或 assistant/message 即晋升,晋升后以 wire 裁剪保持完整 PTC SDK(#85 反馈与实验数据随研究仓库收录,样本量与边界声明见原贡献)。
- dsh-recovery——零依赖的自愈 CLI + watchdog 插件:坏预设隔离/回滚、安全模式白名单与启动探测。
模式总览
| 模式 | 目录 | 首次模型请求 | 锚定机制 | 晋升信号 | 代价 |
| Anchored Standard | preset/ | 2 个工具(Minimal 对) | Minimal 工具 schema | 首次持久 tool/call 或 assistant/message(promoteOn: either) | 无 |
| Zero-Anchored Standard | zero-anchored-standard/ | 0 个工具 | 一轮固定锚定消息 | 锚定回复(assistant/message) | 多一次模型调用 |
| Whoami Standard | whoami-standard/ | 0 个工具 | 一轮"你是谁"自我介绍 | 自我介绍回复(assistant/message) | 多一次模型调用 |
| Prefab Anchored Standard | prefab/ | 已 roll 的历史种子 | 内置成功轨迹 | 种子中已经晋升 | 实例化不调用模型 |
| Eternal Minimal | eternal-minimal/ | 永远只有 2 个工具 | 可见目录永不增长;重型工具经 dshx bash 网关真实执行 | 无(无阶段概念) | 无 |
| Wire Think-Execute Standard | wire-think-standard/ | 工具在场 + wire 层 tool_choice: none | 思考步路由到兄弟 provider | 按轮:steer 本身 | 每轮 +1 调用、前缀缓存抖动 |
| Combo Anchored | combo-anchored/ | 每轮用户消息先 0 工具深思 | 思考/执行分离 + 深度闸门 + 深思滴灌三行独立拼装 | 按机制各自生效 | 每轮 +1 调用 |
每个模式目录都自包含,可单独复制安装到任意 id(见安装)。Prefab 在模式选中后直接原位预填充当前空会话,不需要针对每个工作区导入或离线实例化。
术语
- 轨迹(trajectory)——模型首条思维链的风格。Minimal 条件产生 "We need…" 首行; Standard 条件产生 "Let me…"(standard-like)首行。
- 锚定(anchor)——决定首轮轨迹的首请求条件。Issue #11 分离出三个杠杆:工具 schema、输出预算、注入提醒。
- bootstrap 阶段——会话的请求 #1:bootstrap 工具对、无自动注入上下文、可选输出封顶。
- 晋升(promotion)——结束 bootstrap 阶段的持久会话事件。基础模式:首次 tool/call 或 assistant/message(先到者为准);变体:锚定回复。
- 持久(durable)——已写入会话事件日志。阶段状态从持久事件推导,resume 和 reload 不丢失。
- resident 目录——晋升后的工具集:bootstrap 对 + 发现工具 + 模型已显式解锁的工具。
- 发现工具(discovery tools)——dev_tool_search、skill_search、skill_load:重型 Standard 工具的按需解锁面。
- 物化副本(materialized copy)——shared/ 插件在模式目录内的已提交副本,由 npm run sync 生成。
工作原理
基础模式的请求生命周期(变体只改首轮,见各自章节):
用户第一条消息 │ ▼ ┌ 请求 #1 ─ bootstrap 阶段 ─────────────────────────────────┐ │ 工具 : bash + str_replace_editor(Minimal 真实工具对) │ │ 上下文 : 无 AGENTS.md 摘要、无技能目录提醒 │ │ 预算 : adapter 默认值(bootstrapMaxTokens 可选) │ └────────────────────────────────────────────────────────────┘ │ 首次持久 tool/call 或 assistant/message ▼ 晋升——从持久事件推导,resume 安全 ┌ 请求 #2 起 ─ resident 阶段 ───────────────────────────────┐ │ 工具 : bootstrap 对 + 发现工具 + 已解锁工具 │ │ 上下文 : 恢复常规注入 │ │ 预算 : adapter 默认值(封顶在晋升时剥离) │ └────────────────────────────────────────────────────────────┘
决定首轮轨迹的三个杠杆(issue #11):
1. 工具 schema——adapter 默认 maxTokens(256000)下的决定变量。真实 Minimal 对 5/5 锚定;所有 standard 系 schema 11/11 落入 standard-like。
2. 输出预算——首请求 1024 封顶同样能锚定轨迹(26/32),且独立于工具描述。
该测量的首轮回复都装得进帽值;一旦首轮实际输出超过帽值,截断-续写循环反而放大漂移(we 指纹有帽 0.17 vs 无帽 0.98,见 #85)。
基础模式不设此杠杆(bootstrapMaxTokens 为 opt-in)。
3. 注入提醒——AGENTS.md/CLAUDE.md 摘要和可用技能提醒。技能目录在场时锚定完全无法复现(0/9);bootstrap 期间两者都被剥离。
为什么这样做
DeepSeek V4 Pro 会强烈依赖 API 中可见的工具目录选择执行轨迹。在 Project2 评测中, Standard 和 PTC 分别得到 91、92 分,官方 Minimal 得到 99、96 分;但如果全程停留在 Minimal,又会失去 Standard 的大部分工具。
Anchored Standard 把"首次轨迹选择"和"后续完整工具能力"拆开:
1. 保持 Minimal 的完整 system prompt;
2. 首次模型请求暴露 Minimal 预设的真实工具 schema——持久 bash + str_replace_editor,与官方 Minimal 组装逐字节一致(上述杠杆 1);
3. 首次请求同时压制所有自动注入的上下文——在 harness 的两条统一注入路径上拦截,而不是按来源点名(置首的 context-gate 行;杠杆 3)。会话未晋升期间:装配的动态 runtime-context 贡献被清空(覆盖整个 SystemPrompt.context() 家族:沙箱/审批策略快照和任何第三方上下文提供者),pre-step 瀑布只保留本轮 CLAIMED 的消息批次加一个很小的 kind 白名单(用户主动的技能手势放行;技能目录、AGENTS.md 摘要、time/tmux 上下文、hooks、未知第三方注入默认全剥)。晋升后门打开,循环自身的快照投影会在下一个请求恰好差分注入一条全新 runtime-context 消息——首轮极简、二轮注入。
compaction/end 边界同样会重新关门;
4. 会话出现首次持久晋升信号(tool/call 或首次 assistant/message,先到者为准)后晋升到 resident 目录:bootstrap 对 + 发现工具 + 模型已通过 dev_tool_search 显式解锁的工具。晋升时一次性倒出完整 Standard 目录会把轨迹拉回 standard-like(晋升后回退问题),因此重型工具——web_search、subagent、 workflow 等——保持一次 dev_tool_search 即可取用。请求 #1 恒为 bootstrap 目录,请求 #2 恒为 resident 目录,纯文字首答不再把会话困死在 bootstrap (tool-bootstrap 行的 promoteOn 可选 either 默认 / tool-call / assistant-message);
5. 从持久 session event 推导阶段,resume 和 reload 不会丢失状态。
所有平台的 bootstrap 目录相同:Minimal 工具对(bash/str_replace_editor)。preset 的 shell 是持久 PTY bash(Standard 的沙箱 bash 行被禁用——两者在同一个层里注册同名 bash,工具注册表拒绝重复;Windows 本来就没有沙箱 bash)。Windows 上晋升后的目录仍包含 pwsh。
实测结果
Anchored 系列在 Project2 上完成了三轮 V4 Pro 验证,分数为 98、99、99。出处说明(issue #60):那三轮早于当前实现——当时用的是 Minimal 系统提示 + 首请求 pwsh + read 工具面,晋升后放开到完整 25 工具 Standard 目录;精确的 Minimal 对(持久 bash + str_replace_editor)加小 resident 目录是之后才引入的。默认内置的通用 prefab 已移除 Project2 专属 warm-up 事实,但在 API 涨价前没有重新跑完整评测,因此不能把上述分数直接归因于通用模板。
独立复现情况:轨迹锚定被强复现,但能力差在小样本下未决——见 #65 (锚定按预设 9/9 完全分离;anchored−standard +3.3,95% CI [−2.6, +9.3])与 #51 (多环境 11 轮,Ability 85–90,未复现 98/99)。上述分数请视为我们的原始观测,而非已确立的效应量。
研究记录统一放在配套的探索仓库 DeepseekCotexplorations (数据与方法;本仓库只放代码):
- 工具面剂量 + Project2 复现——方法、各轮口径、工具面实验和限制。
- 锚定质量块量化 + 单请求探针方法论——prefab 模板质量模型与涨价后的低成本评估循环。
开发过程记录(做了什么、为什么、踩坑清单)留在本仓库的 HANDOFF.md 与 HANDOFF-2.md。
配置参考
所有开关都是各模式 agent.cordis.yml 中的行。未知键在 preset 挂载时报错。
context-gate(在 preset/、zero-anchored-standard/、whoami-standard/ 中均挂在 FIRST 行——瀑布注册顺序使门成为最外层变换;插件本体在 shared/context-gate.mjs,可供任何其他需要统一注入控制的组合单独复用):
| 键 | 默认值 | 含义 |
| promoteOn | either | 晋升触发:either / tool-call / assistant-message(两个变体用 assistant-message)。 |
| includeSubagents | false | 子 agent 同样过门(基础模式与 whoami 设 true;与 bootstrap 行保持一致)。 |
| enabled | true | false 关闭两条拦截路径(不动行集合即可做 A/B)。 |
| allowKinds | [skill-invocation] | claimed 批次之外放行的 source.kind;[] 表示只保留 claimed 批次。 |
注入控制的分工:会话相位级抑制(一切以晋升边界为键)归 context-gate。
两个有文档说明的例外保留各自的枚举式 suppressedContextSources,因为门的相位机覆盖不了它们的作用域:think-phase/wire-think 的 think-step 级剥离(按步而非按会话相位),以及 eternal-minimal 的永驻逐请求剥离(没有晋升边界;且已冻结在其实测记录所用的配置下)。
tool-bootstrap(位于 preset/agent.cordis.yml;紧跟在 context-gate 之后挂载):
| 键 | 默认值 | 含义 |
| bootstrapTools | [bash, str_replace_editor] | 请求 #1 可见的工具。 |
| promoteOn | either | 晋升触发:either / tool-call / assistant-message。 |
| bootstrapMaxTokens | 未设 | 请求 #1 的可选输出封顶;晋升后剥离。帽值低于首轮实际输出时会截断并放大漂移(#85),故默认不设。 |
| includeSubagents | false | 子 agent 同样走 bootstrap 阶段(基础模式设 true)。 |
| compactionTools | [] | compaction 边界到再晋升之间可用的额外工具。 |
zero-tool-bootstrap(位于 zero-anchored-standard/ 和 whoami-standard/): compactionTools 语义相同(晋升恒为首次 assistant/message),另有 includeSubagents——子 agent 是否也走锚定阶段(whoami-standard 设 true, zero-anchored-standard 为 false)。上下文抑制不在此行——两个变体均在首行挂载 context-gate(promoteOn: assistant-message);原来的 suppressedContextSources 键现在会在挂载时报错。
anchor-turn(两个变体):text——合成的首条用户消息(zero-anchored 默认 "This round is a test. Tools are not open yet; all tools will open next round.", whoami 为"你是谁");includeSubagents——子 agent 是否也走锚定轮。
eternal-minimal(位于 eternal-minimal/;该行必须保持 FIRST):
| 键 | 默认值 | 含义 |
| guide | true | 在系统提示追加简短 dshx 能力指南;false 保持 persona 字节纯净。 |
| gateway | true | 拦截 dshx shell 命令并真实执行对应工具;false 只留裸 Minimal 对。 |
| gatewayCommand | dshx | 拦截命令词。 |
| maxGatewayChars | 12000 | 单次网关结果负载上限。 |
| suppressedContextSources | [agent-instructions, skill-catalog] | 每个请求都剥离(没有晋升边界;有意保留枚举实现,见上方分工说明)。 |
cot-drip(位于 combo-anchored/):
| 键 | 默认值 | 含义 |
| every | 4 | 每第 N 个工具结果附带一次深思节拍;0 关闭滴灌。 |
| maxPerTurn | 1 | 每轮节拍上限。 |
| text | 内置节拍 | 提醒文本(一句 "We …" 重述剩余目标)。 |
| includeSubagents | false | 子 agent 的调用是否也滴灌。 |
toolchoice-adapter(位于 wire-think-standard/;该行必须保持首个本地行):
| 键 | 默认值 | 含义 |
| provider | deepseek-wire-think | 兄弟路由 id;重复注册触发 DUPLICATE_ADAPTER(被捕获并降级)。 |
| toolChoice | none | 工具定义在场时发送的 wire tool_choice。 |
| baseURL / apiKeyEnv | settings/env | 行配置优先,其次 llm-deepseek settings 段,最后 DEEPSEEK_BASE_URL / DEEPSEEK_API_KEY。 |
| logprobs | false | opt-in 研究钩子:请求 token logprobs 并记录每请求均值摘要。 |
wire-think(位于 wire-think-standard/):mode / suppressedContextSources / includeSubagents / steerText 语义同 think-phase,另有 provider(须与 toolchoice-adapter 行一致)和 defaultProvider(执行步还原的路由,默认 deepseek-official)。
instruction-hint(所有模式):promoteOn 与各模式晋升语义对齐(基础模式 either,变体 assistant-message)——那条一次性的"存在指令文件,先读再动手" 提示等晋升后才注入。
仓库布局
preset/ Anchored Standard——基础模式 zero-anchored-standard/ 变体:固定零工具锚定轮 whoami-standard/ 变体:"你是谁"锚定轮,子 agent 继承 eternal-minimal/ 变体:Minimal 对永恒 + dshx bash 网关 wire-think-standard/ 变体:wire 层条件(工具定义在场 + 调用禁止) combo-anchored/ 组合包:思考分离 + 闸门 + 滴灌三行拼装 shared/ 多模式共用插件的唯一源 scripts/sync-modes.mjs 把 shared/ 插件物化到每个模式目录 test/ 零依赖测试套件(npm test) verify/ 一次性 headless 验证 runner prefab/ Prefab Anchored Standard + 内置会话模板
prefab/ 默认提供通用模板,并把 Project2 专用模板保留为显式 opt-in。二者都包含真实模型推理,使用前请阅读该模式的安装说明。
不变量,由 npm run check 强制:
- 每个模式目录自包含:单独复制即可安装;agent.cordis.yml 的行只能引用 ./本地.mjs,绝不允许 ../。
- 多模式共用插件只在 shared/ 存一份;模式目录里的副本是生成的。编辑 shared/、运行 npm run sync、两者一起提交——绝不直接改物化副本。
- context-gate 行保持 preset/agent.cordis.yml 的 FIRST 行(门必须先于所有注入插件注册),tool-bootstrap 紧随其后。zero-anchored-standard/ 与 whoami-standard/ 中的 context-gate 行同样必须保持 FIRST 行。
本仓库刻意不提供 AGENTS.md/CLAUDE.md:这套 preset 的机制核心就是干净的首请求——恰恰要从首请求里剥离这些指令文件摘要(issue #6:注入在场时 0/9 锚定)。仓库里放一个只会喂给后续轮次,与被文档描述的机制自相矛盾。助手需要的一切都在本 README 中。
兼容范围
开发和验证版本:
- DeepSeek Harness 0.1.0-rc.5
- 仓库提交 47f9438
- Windows / Node.js 24
DeepSeek Harness 0.1.3-alpha.1 移除了公开的 session.events 数组,改为
session.snapshotEvents()(冻结副本,缓存随每次 append 失效)。自 PR
#88 起,所有历史扫描优先使用 snapshotEvents(),并在旧版上回退到 session.events,因此 preset 在新旧 harness 上都能加载。验证方式为对照 0.1.3-alpha.1 源码(插件触及的 session API 面 + 插件钩子名)与 mock 测试套件,未在该构建上实机运行。
DeepSeek Harness 0.1.3-alpha.2 把 dsh-persona 行的 text 键换成了必填的 prefix(另有可选 suffix),于是每个模式的 preset 都挂载失败,报 invalid config: $.prefix missing required value。自 PR #90 起,persona 行改用 prefix:——persona 文本本身未动(仍与官方 0.1.3 minimal 的 persona 行逐字节一致),字节纯净的 Minimal 锚定条件不受影响。这一段是单向迁移:同一行不能同时写两个键(未知键会在挂载时报错),因此在 dsh 0.1.3-alpha.1 及更早版本上必须把 text: 改回来——每个模式目录改一行,或使用 #90 之前的提交。
持久 shell 的 shellPath 按环境自适应:/bin/bash 存在的传统主机保持 terminal-bash 插件的默认行为不变;仅当该绝对路径不存在(如 NixOS,bash 位于 Nix store 中)时才回退为 bash(PATH 查找)。自带 /bin/bash 的主机行为与之前完全一致,回退分支只在默认值会导致每次 bash 调用都报 "PTY shell exited during startup" 的环境上生效。
在 0.1.0-rc.5 源码检出上,bootstrapMaxTokens 能到达实际首请求(首份 request/header 记录封顶值,adapterDefaults 为空),因为 llm.prepareCall 只在提案 config 没有 maxTokens 时才物化默认值。issue #11 观察到的一个预构建 profile 包(CLI launcher 报告 0.1.0-rc.6)会用 adapterDefaults.maxTokens 覆盖提案封顶,在那里该封顶不生效。因此默认组装只依赖 Minimal 工具 schema(256000 下无需封顶即可锚定),bootstrapMaxTokens 作为 standard 系 bootstrap 的 opt-in 保留。
DeepSeek Harness 目前仍是开发者预览版,官方明确说明未来会有破坏性变更。本 preset 是 Standard 组装的完整快照;升级 Harness 后,应先对照上游改动再继续使用。
安装
Prefab 模式推荐由 AI agent 一键安装:把本仓库交给编程 agent,让它执行 安装 Agent 操作契约。Agent 报告 INSTALL READY 后,启动 DSH,在目标工作区选择 Prefab Anchored Standard 模式并新建会话,然后直接发送真实任务提示词。该命令默认安装通用模板;Project2 评测模板必须显式传入 --template project2,并默认使用独立 preset id。
克隆本仓库,将整个 preset 目录复制到用户 preset 根目录,并将目标目录命名为 anchored-standard。仓库中的每个模式目录都是自包含的:zero-anchored-standard/、 whoami-standard/、prefab/、eternal-minimal/、wire-think-standard/、 combo-anchored/ 变体以同样方式安装,可只装其中一个、多个或全部,不依赖其他目录(见下文各自的章节)。prefab/ 会为手动切换到该模式的会话,以及创建时已将其作为默认 preset 的会话自动预填充内置模板;按 prefab/README.md 操作。
PowerShell:
$target = Join-Path $env:USERPROFILE '.dsh\.agent-presets\anchored-standard'
if (Test-Path -LiteralPath $target) { throw "Preset already exists: $target" }
New-Item -ItemType Directory -Force -Path (Split-Path -Parent $target) | Out-Null
Copy-Item -Recurse -LiteralPath '.\preset' -Destination $target
Linux/macOS:
dsh_home="${DSH_HOME:-$HOME/.dsh}"
mkdir -p "$dsh_home/.agent-presets"
test ! -e "$dsh_home/.agent-presets/anchored-standard"
cp -R preset "$dsh_home/.agent-presets/anchored-standard"
完整重启 DeepSeek Harness,新建空 session,选择 Anchored Standard (experimental)。
不要在已经产生内容的会话中途切换 preset。
验证加载
导出 session JSONL,检查 request/header。复现清单(issue #11 明确要求前两项,因为这两项正是决定锚定的变量):
- 首请求 config.maxTokens 值:未配置 bootstrapMaxTokens(默认)时,首份 header 记录 adapter 默认值(如 256000 且 adapterDefaults.maxTokens: true);配置封顶时记录封顶值(如 1024 且无 maxTokens adapterDefault)。
- 首请求工具 schema 来源:首份 header 的 tools 必须恰好是 ["bash", "str_replace_editor"]——官方 Minimal 预设的真实 schema,而不是 Standard 的 pwsh/read。
- 第一次请求的消息中不应包含 AGENTS.md/CLAUDE.md 摘要或可用技能目录提醒——只有用户消息与 Minimal persona 系统提示;
- 首次工具调用或首次助手回复后,下一份变更 header 应包含晋升后的 resident 目录: bootstrap 对 + dev_tool_search/skill_search/skill_load + 模型已解锁的工具;
- 此后的请求应保持该 resident 集(只通过显式 dev_tool_search 解锁增长),并恢复常规上下文注入。
本仓库的零依赖测试:
npm test
重要行为
- 默认 promoteOn: either:会话在首次持久 tool/call 或 首次 assistant/message (先到者为准)后晋升——请求 #1 见 bootstrap 目录,之后所有请求见 resident 目录;纯文字首答也会在请求 #2 晋升。改为 promoteOn: tool-call 可恢复原行为(首答不调工具则永不晋升);
- 工具执行即使失败,只要 tool/call 已持久化,下一步仍会晋升;
- 首请求输出预算默认不封顶:Minimal 工具 schema 在 adapter 默认 maxTokens 下即可锚定,bootstrapMaxTokens 是 opt-in。设置后首请求被封顶,晋升后显式去掉封顶(下一次请求的 seed proposal 会继承上一份 header 的 maxTokens);
- 晋升目录是 resident 集——bootstrap 对 + 发现工具 + 模型经 dev_tool_search 解锁的一切——而非完整 Standard 倒出。Standard 的沙箱 bash 行保持禁用,改用持久 shell(同名、同层,见"为什么这样做")。read/write/edit 解锁后继续使用沙箱文件系统,str_replace_editor 使用 preset 自己的本地 fs;
- bootstrap 工具缺失时降级为完整目录并一次性告警,不再让请求失败,组合漂移不会锁死会话;非法的 promoteOn 值会在 preset 挂载时报错;
- 晋升判定按会话在进程内记忆化,持久事件扫描每会话每进程只执行一次。
- 会话未晋升期间,context-gate 插件关闭两条统一注入路径:装配的 runtime-context 贡献被清空(整个 SystemPrompt.context() 家族,无需按来源枚举),pre-step 瀑布只保留 claimed 批次加 allowKinds 条目。晋升时循环的快照投影恰好差分注入一条全新 runtime-context 消息;门自身出错时降级为保留全部消息,绝不吞掉上下文。
- 工具目录在晋升时变化一次,之后每次 dev_tool_search 解锁新工具再变化;前缀缓存连续性在这些点上断开;
- preset 与 shell 访问具有相同信任等级,安装前应自行审阅文件;
- 插件不会发起网络请求,也不增加遥测。
- Minimal persona 有意保持极简(You are a helpful software engineer assistant., complete: true)——锚定所测量的逐字节纯净条件。副作用:模型没有身份锚定,在身份类问题上可能回落到训练先验(实测 deepseek-v4-pro 被问"你是谁?"时自称 "I am Claude";见 #81)。
如需固定身份而不改动工具 schema,在 persona 的 text: 后追加官方身份句—— You are a helpful software engineer assistant. You are an AI agent powered by DeepSeek Harness. ——并重建会话。这会偏离被测条件,若在意精确锚定请自行验证首轮轨迹(参见 #49)。
排障:主机重启后重复注入的 instruction-hint
instruction-hint 通过扫描 session.events 的持久事件,将提示控制在每个会话至多注入一条。该扫描是预防而非保证:若主机重启后的首个 agent/pre-step 在会话日志物化之前运行,扫描会看到空事件列表而再次注入。旧版本还使用确定性 id(instruction-hint-<sessionId>),重复注入与原始消息冲突会导致历史停止组装;改为唯一 id 后,重复注入只会浪费少量上下文 token。旧日志若曾因该冲突断裂,修复时应按 source.kind === 'instruction-hint' 去重(旧行共享同一 id;新行不再共享)。
Zero-Anchored Standard(实验)
这是不改变上面 Anchored Standard 逻辑的额外测试模式。它沿用同一套 Minimal 对齐的 system prompt,但首轮不再暴露两个工具,而是先注入一轮固定的零工具锚定对话:
1. 用户发出第一条消息时,anchor-turn 插件会把固定消息——"This round is a test. Tools are not open yet; all tools will open next round."——插到它前面;
2. 第一个真实模型请求携带 0 个工具,首条思维链因此走零注入的 "we" 轨迹;
3. 锚定回复落库后开放 resident 目录,真实消息带着它继续。
锚定发生在第一条消息到达时而不是会话创建时,因此新建会话仍然可以先切换模式;子 agent 始终看到 resident 目录。
实测行为(opencode-go、DeepSeek V4 Pro、reasoningEffort=max):锚定请求稳定为 "we" 风格且 let me 为 0;后续带工具请求会回到 "The user wants…/Let me" 风格。因此该模式用于对比"零工具首轮是否值得多一次模型调用",并不承诺工具轮次保持 "we" 风格。
以独立 preset id 安装:
dsh_home="${DSH_HOME:-$HOME/.dsh}"
mkdir -p "$dsh_home/.agent-presets"
test ! -e "$dsh_home/.agent-presets/zero-anchored-standard"
cp -R zero-anchored-standard "$dsh_home/.agent-presets/zero-anchored-standard"
重启 DeepSeek Harness,新建空白会话,选择 Zero-Anchored Standard (experimental),然后发送第一条消息。
Whoami Standard(实验)
"零工具锚定"思路的易用性变体:首轮不是固定测试语,而是一句自然的自我介绍提示("你是谁"),用户的第一条真实消息自动推迟到下一轮。无论你第一条发什么,会话都会先热身一轮,等你真实的消息进来时一切就绪:
1. 用户发出第一条消息时,anchor-turn 插件把固定消息——"你是谁"——prepend 到 next-turn 收件队列、排在真实消息前面;
2. dsh 每轮只消费一条 next-turn 消息,因此第一个模型请求只看到锚定消息、携带 0 个工具,模型回复自我介绍,该回复即晋升信号;
3. 下一轮才轮到真实消息,此时晋升后的 resident 目录(shell、str_replace_editor、发现类工具)已解锁,重型 Standard 工具一次 dev_tool_search 即可取用。
锚定文本可通过 anchor-turn 行的 text 配置(默认"你是谁")。锚定发生在第一条消息到达时而非会话创建时,新建会话仍可先切换模式。
全功能子 agent(full-powered subagents)
Whoami Standard 默认在 zero-tool-bootstrap 与 anchor-turn 两行都设置了 includeSubagents: true,因此会话派生的子 agent 与顶层会话继承同一套锚定流程:
1. 新派生子 agent 的首个模型请求只看到"你是谁"锚定消息,工具目录为空;
2. 子 agent 的自我介绍回复即晋升信号;
3. 委托任务在下一轮执行,此时已带着晋升后的 resident 目录(shell、 str_replace_editor、发现类工具)。
将两行的 includeSubagents 设为 false 可恢复普通行为(子 agent 直接以 resident 目录起步)。每个子 agent 的锚定轮固定多一次模型调用——重委托的会话按子 agent 数量累计。
zero-anchored-standard 默认保持子 agent 直接起步;若要在那里启用同样的流程,需在其 zero-tool-bootstrap 与 anchor-turn 行设置 includeSubagents: true(其锚定文本仍是固定测试语)。
本模式自身的代价是每个会话固定多一次模型调用——即使第一条消息很紧急也会先跑自我介绍轮。
该目录自包含,可单独安装,也可与其他模式任意组合安装。
以独立 preset id 安装:
dsh_home="${DSH_HOME:-$HOME/.dsh}"
mkdir -p "$dsh_home/.agent-presets"
test ! -e "$dsh_home/.agent-presets/whoami-standard"
cp -R whoami-standard "$dsh_home/.agent-presets/whoami-standard"
重启 DeepSeek Harness,新建空白会话,选择 Whoami Standard (experimental),然后发送第一条消息——自我介绍轮先跑,你的消息在下一轮带着完整工具被回答。
Eternal Minimal(实验)
"让模型以为从未离开极简模式":模型可见目录整个会话恒等于 Minimal 对(bash + str_replace_editor)——没有锚定轮、没有晋升、没有发现工具、目录永不增长——同时完整 Standard 工具集保持注册,并通过 dshx bash 网关 真实执行:
dshx list # 列出所有网关工具 dshx web_search '{"query": "..."}' # 真实执行 web_search dshx read_image '{"path": "..."}' # 真实执行 read_image
1. 永恒对:system-prompt/assemble 在每个请求上只保留 shell + str_replace_editor(思考步、compaction 后、子 agent——一切请求),自动注入上下文全程剥离(没有按晋升边界抑制的概念)。
2. 网关:tools/pre-execute 监听器拦截以 dshx 开头的 bash 命令,经
ctx.tools.execute()(完整注册表管线——策略、guard、执行、渲染)分发,
并把渲染输出作为命令结果返回。deny 通道是派发前替换结果的唯一受支持手段,因此网关负载带错误标记——每条负载都明确说明工具已执行、输出在后,模型将其读作输出。真实工具确实跑了:用户看到真实效果(文件、搜索、子 agent),与按名调用无异。
3. 指南:系统提示追加简短 dshx 能力指南(guide: false 可得字节纯净的 Minimal persona),让模型在不增加第三个可见工具的前提下知道网关存在。
网关拒绝分发 shell/str_replace_editor 本身("请直接调用"),这也使递归不可能发生。未知工具、JSON 格式错误、工具失败都以可读负载返回。gateway: false 可得到无拦截的纯双工具会话。
以独立 preset id 安装:
dsh_home="${DSH_HOME:-$HOME/.dsh}"
mkdir -p "$dsh_home/.agent-presets"
test ! -e "$dsh_home/.agent-presets/eternal-minimal"
cp -R eternal-minimal "$dsh_home/.agent-presets/eternal-minimal"
重启 DeepSeek Harness,新建空白会话,选择 Eternal Minimal (experimental),照常工作——模型编写 shell 命令,dshx … 行真实运行重型 Standard 工具。
Wire Think-Execute Standard(实验)
wire 层模式:每轮用户消息先跑一个思考步——请求中工具定义在场、wire 层禁止调用(tool_choice: "none")——然后一条 steering 通知在官方 provider 上打开执行阶段,带着 resident 目录。
tool_choice 不在 harness GenerateOptions 词汇内(官方 deepseek adapter 明确标注为 MVP cut),因此需要走受支持的 wire 接缝:
1. 兄弟路由:toolchoice-adapter.mjs(第 1 行)注册一个零依赖的 DeepSeek chat-completions adapter,挂在自己的 provider id (deepseek-wire-think)下,在工具定义在场时向 wire 放 tool_choice: "none"。官方 DeepSeekAdapter 无法被包装(wire body 在私有 generator 里构建),因此该文件 vendor 了官方 serialize/SSE/translate 管线的最小协议忠实子集——相同的 assistant 消息细节(content: "" 永不为 null、reasoning_content 只在 tool-call 轮回放、工具结果转 role: "tool" 并带 (no output) 兜底)和相同的 usage/finish 翻译。连接事实的解析顺序是行配置 > llm-deepseek settings 段 > 环境变量,与官方行完全一致,同一个 DEEPSEEK_API_KEY 同时服务两条路由。
2. 按步路由:wire-think.mjs 保持思考步的组装目录原样不动(这正是被复现的条件),只在 agent/request 瀑布里换 provider——冻结的 loop 内建请求与日志可重建性不变。执行步(以及所有子 agent)被路由回捕获的原始 provider,即使折叠的会话 header 把思考路由播种进了下一步的种子配置。
3. Steer + resident:agent/turn-stopping 每轮恰好 steer 一次(从持久 steering/message 事件重建,resume 安全),执行步看到晋升的 RESIDENT 集。
降级阶梯:兄弟路由未注册(行被删、或另一个 preset 已挂载同一 id—— DUPLICATE_ADAPTER 被捕获并告警)时,思考步退回零工具条件——组合错误绝不会弄坏会话。mode: first-turn 把路由(及其代价)限制在会话的首个用户轮。
采用前需要知道的代价:思考/执行交替每轮两次切换请求前缀中的 tools 块,DeepSeek 前缀缓存从首个变化 token 起失效(provider id 本身对后端缓存不可见;发散的是 tools 块)。每次切换追加一条 request/header 变更事件。adapter 行设 logprobs: true 可开启 opt-in 研究钩子—— adapter 请求 token logprobs 并记录每请求均值摘要(harness StreamChunk 词汇没有 logprob 数据的表面,插件今天能做的只有记日志;这个日志流正是离线轨迹分析要消费的东西)。
以独立 preset id 安装:
dsh_home="${DSH_HOME:-$HOME/.dsh}"
mkdir -p "$dsh_home/.agent-presets"
test ! -e "$dsh_home/.agent-presets/wire-think-standard"
cp -R wire-think-standard "$dsh_home/.agent-presets/wire-think-standard"
Combo Anchored(实验)——插件组合包
"一切皆插件"的展示位:三个正交锚定机制以独立行拼装,各自带开关,改 agent.cordis.yml 里的一行即可删除或重调。它们在轮次的不同时刻攻击工具前的深思塌缩:
| 行 | 机制 | 负责的时刻 |
| think-phase | 零工具思考步 + steering 通知 | 轮次开场 |
| deliberation-gate | 深度闸门拦截浅轮次的首工具调用 | 首个动作 |
| cot-drip | 每第 N 个工具结果后一条 "We …" 节拍(tools/post-execute additionalContexts——不拦截、不报错) | 漫长的中段 |
mode: every-turn 下思考步每轮开场,闸门兜住绕过它的路径(steering 续步、恢复的会话、直奔工具的跟进),滴灌在长工具回路中维持深思。默认值刻意温和(minChars: 400、every: 4、每轮一拍),按负载调整。把 think-phase 行换成 wire-think + toolchoice-adapter 可把开场升级为 wire 层条件(见上),代价是兄弟路由及其前缀缓存代价。
探索过并否决的方向:纯 Code Mode 呈现(presentAs('code') 把目录折叠为单个 run_code 工具)——单工具表面在兄弟项目的评测中明显劣于双工具条件;文本诡称有工具与幽灵 tool_call 历史——实践中都不是可靠锚。
官方生态要求
DeepSeek 当前建议社区作者把插件放在自己的 GitHub 项目中,并为仓库添加 dsh-plugin topic 方便发现。官方仓库目前不接受外部 PR,也没有强制社区插件仓库模板。原文见官方 CONTRIBUTING.zh.md。
许可证
MIT。preset/agent.cordis.yml 基于 DeepSeek Harness Standard preset 修改,原始 DeepSeek 版权和 MIT 许可声明保留在 NOTICE 中。预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
xiaobright/dsh-anchored-standard
两阶段 DeepSeek Harness 预设:先最小对齐引导,再上完整 Standard 工具(Project2 98/99)
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份人设,统一管理多个 coding agent。
★ 991已汉化DSH
73.9
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7
金融交易技能包Minara-AI/minara-skills
Minara 是一套 AI…
★ 347已汉化DSH
66.7