为 DeepSeek Harness 提供的 Agent 预设:在 PTC 编码模式之上叠加自引用 Cordis 工具集(动态插件、运行时检视)与预设编写技能;物化文件带逐文件 sha256 标记,用户改过的预设升级与卸载时都不会被覆盖。
安装
# npm 包(预构建)
dsh plugin --profile web add dsh-ptc-cordis-preset
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:KannaKuron/dsh-ptc-cordis-preset
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。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
简体中文 | English
PTC 模式基础上的创造模式 —— 给 DeepSeek Harness (DSH) 补上第四种组合:Code Mode 工具编排 × 创造能力。
DSH 内置四个 preset:标准(standard)、PTC(code,dsh 0.1.2 起改名为 ptc,标准之上用 Code Mode SDK 把工具呈现为一个 TypeScript 程序)、极简(minimal)、创造(cordis,标准之上叠加自引用 Cordis 工具与 preset 创作指导)。
内置的创造模式建立在标准模式之上。本插件提供缺失的那一格:PTC 创造模式(ptc-cordis)—— PTC 模式的全部能力原样保留(包括 tool-presentation 的 Code Mode 呈现),叠加创造模式的全部增量:
- 🧬 自引用 Cordis 工具 —
cordis_inspect/cordis_define/cordis_run/cordis_stop/cordis_undefine:读运行时、定义/运行/停止动态插件包 - 📐 双平面创作指导 persona — 主机组合 vs Agent preset 的取舍规则,外加 Code Mode 下的组合方式(把 cordis 工具当 SDK 函数写进
run_code程序) - 📚 composition 创作技能随行 —
editing-cordis-compositions/cordis-plugin-development两个 skill 跟着 preset 走 - ⏰🔔 官方时间上下文与提醒工具自动随行(v0.17.0) — dsh 0.2.1 起官方全工具模式内置请求时钟上下文(
time-context)与提醒工具(schedule_*,子代理不可用);本插件在 0.2.1+ 宿主上探测到对应包即自动纳入组合,与官方 patch 逐行对齐;旧宿主行为不变,无需升级 dsh 也能继续用 - 🎛️ workflow 开关(设置卡,v0.8.0) — 官方 PTC 模式自 dsh 0.1.2-alpha.4 起默认不提供 workflow 工具(
run_code已是唯一模型编排面),而创造模式保留它;本插件默认提供(继承创造模式能力,与历史版本一致)。设置 → 插件 → 「PTC 创造模式」卡片可一键切换:切换即时重注册,新会话即刻生效(已打开的会话保持原组合);需要 dsh ≥ 0.1.2
也就是说:在 PTC 创造模式的会话里,你可以让模型一边用 Code Mode 单程序组合多步操作,一边检查活运行时、试验动态插件、创作新的 agent preset。
安装
dsh plugin --profile web add dsh-ptc-cordis-preset # npm 公开包
# 源码与 Release: https://github.com/KannaKuron/dsh-ptc-cordis-preset
本插件是纯 JS、零构建、零依赖,安装不触发 pnpm 构建脚本,无需 allowBuilds 放行。装完重启 DSH(host 半变更),新建会话时在模式选择器里选 「PTC 创造模式」 即可。
工作原理
dsh 0.1.7 起 preset 是声明式的:插件通过 ctx.agentPresets.register() 直接把定义注册进名录,不再物化任何目录。本插件在启动时注册 ptc-cordis(组合数据在 src/composition.js,镜像官方 cordis preset 行集 + PTC 呈现增量),workflow / Python 后端两个开关翻转时先摘旧、再挂新地即时重注册:
- 组合镜像:行集与官方
packages/bundle/web-app/presets/cordis.patch.yml逐行对齐,由两份官方捕获(tests/fixtures/official-preset-rows*.json,0.1.7 与 0.2.1)在冒烟测试里双向锁死——官方加行/改默认值,测试立刻变红 - 技能随部署走:创作技能不存快照,组合行
customSkillDirs指向本机已安装的@deepseek-ai/dsh-agent-preset旁的skills/目录,DSH 升级即自动跟随(0.2.1 起官方新增的cordis-plugin-development技能自动可用) - dsh 0.2.1 增量探测:官方 0.2.1 给全工具 preset 加了
time-context与tool-schedule两行(外加子代理的 schedule_* deny)。这两行仅在宿主模块基可解析到对应包时加入(probeHostExtras,与挂载同一解析基准)——0.2.1+ 宿主自动获得,旧宿主逐字节保持 0.1.7 行集,engines.dsh维持>=0.1.7-rc不抬门槛 - 旧物化残留清理:v0.16.0 前本插件会物化
~/.dsh/.agent-presets/ptc-cordis/;如今启动时按.plugin-managed.json标记守卫清理——未改动的自动删除,你改过的只提示不碰
更新与卸载
- 更新:市场页「更新」按钮或重跑安装命令 → 重启 DSH → 名录条目即为新版本
- 卸载:市场页卸载 → 名录条目随之消失,没有目录残留;v0.16.0 前物化的旧目录若从未改动会被启动清理自动带走,改过的保留、交给你处理
- 想基于它改出自己的模式?在模式选择器里复制成新 preset 再改副本
npm 安装的插件由 dshmarket 按注册表版本检测更新。常见原因:
- 30 分钟 TTL 缓存——刚发布就刷新会缓存"无更新",期间再刷直接吃缓存。访问
/dsh-market/updates?force=1强制刷新。 - 安装时机晚于发布——装的时候已是最新版(版本号可在市场页或
node_modules/dsh-ptc-cordis-preset/package.json里确认),没有更新按钮是正确行为。
更新命令(dshmarket 之外的手动方式):
dsh plugin --profile web add dsh-ptc-cordis-preset
使用
- 新建会话 → 模式选择器选 PTC 创造模式
- 正常用 Code Mode(
run_code组合多步操作);cordis_inspect等工具就在 SDK 里,和别的工具一样调用 - 让它创作 preset / 试验动态插件时,它会自动加载随行的两个创作技能
⚠️ 信任边界与内置创造模式一致:
cordis_define/cordis_run会在活运行时上执行模型写的 JavaScript。把 PTC 创造模式的会话当作 shell 访问对待。
✅ 与内置创造模式同进程共存(v0.4.0 起):宿主面 runner 的 inspect 注册表遇重复 provider id 即抛错,是"一个进程只能开一个 cordis 模式会话"的唯一根源(v0.2.0 曾用 isolate realm 规避,代价是掐断浏览器桥,v0.3.0 移除)。v0.4.0 提供兼容 shim:注册先走原路径,仅在撞"已注册"时改为替换条目(同包 manifest 等价,身份守卫 disposer 保持拆卸一致)—— 两个 preset 共用唯一宿主 runner,审批卡/Client Provider/Client 激活/动态工具全通(已实测:双模式同进程挂载 + 9 个 Provider 含 5 个 client 侧全部应答)。
⚠️ 0.6.3 修复了 shim 的安装时机:此前在插件启动时一次性采样
cordisInspect,而宿主 runner 行激活晚于插件行,真机启动时该服务尚未提供,shim 静默未安装——于是只要进程内(哪怕只是曾经)挂载过内置创造模式,ptc-cordis就会一直撞 "Provider is already registered",直到重启 dsh;且关闭/归档会话并不卸载 standing 挂载,所以"现在没有创造模式会话"不代表竞争消失。现在 shim 通过ctx.inject(['cordisInspect'])在服务就绪的那一刻安装,与行激活顺序无关。shim 依旧防御式:形状探测不过即自动退回 v0.3.0 裸挂行为(仅打日志,不影响启动);上游若原生容忍重复注册,原路径自然成功,shim 成为 no-op。根治仍建议上游把 runner 按会话多实例化。
界面语言
设置卡跟随 DSH 的语言设置(ctx.locale)实时切换,内置 21 本词典:简繁中文(含 zh-HK / zh-MO / zh-TW)、英语、日语、韩语、德语、法语、意大利语、葡萄牙语、俄语、荷兰语、波兰语、瑞典语、土耳其语、印尼语、越南语、泰语、印地语、阿拉伯语。词典一门一条躺在 src/client.js 的 LOCALES 表里(条目前面是一行 /* locale: <tag> */ 标记),并整体注册进 DSH 的 locale 注册表(ctx.locale.register)。
解析顺序是「精确 tag → 主语言子标签 → 英文」,zh-Hant-* 归港式繁体;英文始终是键完整的那一本,所以任何未覆盖的语言都回退英文,不会露出键名。查表按当前 locale 每次实时解析(按 tag 缓存),卡片同时订阅 ctx.locale.subscribe,切换语言当场重绘、不必刷新页面。
冒烟测试强制每本词典的键集与中文完全相等——缺键只会静默回退英文,卡片就成了半翻译状态,那正是这条测试要挡住的。第三语言为机器辅助翻译,欢迎在 issue / PR 里指正。
从源码构建与测试
git clone https://github.com/KannaKuron/dsh-ptc-cordis-preset.git
cd dsh-ptc-cordis-preset
npm test # node --test,52 项冒烟测试(无网络、无构建;数量以 npm test 输出为准)
本插件无构建步骤:src/index.js 与 src/composition.js 即发布产物。
tests/fixtures/official-preset-rows.json(0.1.7 捕获)与 tests/fixtures/official-preset-rows.0.2.1.json(0.2.1 捕获)是官方 dsh 预设行的捕获(解析 loader 方言、按 profile 宿主求值 !!js 后的结果),用来把本插件的声明式组合双向锁在官方文本上——组合漂移会直接让 npm test 变红。换 dsh 版本后重建:用 dsh 检出里的 packages/bundle/web-app/presets/{cordis,ptc}.patch.yml 跑 node tools/gen-official-preset-fixture.mjs(路径可用 DSH_CHECKOUT / DESKTOP_BUILD 覆盖;本机 Windows 姿势见 CHANGELOG v0.17.0)。
与 dsh-gitbash-shell 联动
与 dsh-gitbash-shell(v0.2.0+)同装时,两个插件在三个面上配合(改动见 CHANGELOG v0.14.0,对应本仓库 issue #1 与对方 issue #7)。
组合与名录显示名跟随 Git Bash
本插件物化 PTC 创造模式 时检测对方的 gitBash 宿主能力服务:两插件合用 → 使用
assets/agent.cordis.gitbash.yml(tool-bash 启用、tool-pwsh 禁用,即 Git Bash 版);
未安装或非 Windows → 使用默认 assets/agent.cordis.yml。能力开关变化会触发一次
自动刷新(仅限未修改的 preset),无需新增模式、无需手工改文件。
名录里的显示名与描述同样跟随这一侧:Git Bash 活动时显示 PTC 创造模式 · Git Bash,
描述追加 (Shell 使用 Git Bash),与对方四个 * · Git Bash 变体的命名风格一致;非 Git Bash
时仍是 PTC 创造模式。旧宿主(物化路径)自 v0.6.0 起一直如此;v0.13.0 的声明式重写一度把
显示名硬编码,只有 dsh ≥ 0.1.7 的新宿主会丢后缀,已在 v0.14.0 修好。名称以
assets/preset.gitbash.yml 的 name: 为单一事实来源,冒烟测试锁住两边同名,防止再次漂移。
发布 ptcCordisPreset 协作能力
启动时(两个宿主时代都发,且早于时代分流)本插件向运行时发布一个能力服务:
{ id: 'ptc-cordis', gitBashActive: true /* 非 Git Bash 侧为 false */ }
对方据此判断「这个 preset 已经在 Git Bash 上覆盖了创造模式」,从而在用户打开去重开关时不再
注册它自己的 创造模式 · Git Bash。因为对方是靠**「服务出现」这一事件**做决定的,本插件
先做完有界(1 秒)的 gitBash 能力探测、再发布——发布出去的值就是终值,不会出现
「先发 false、之后再翻成 true」而对方已经错过的情况。没有安装对方的宿主上这个服务同样发布
(gitBashActive: false),「服务缺席」因此只表示本插件没挂载。
设置卡上的共享去重开关
对方的 创造模式 · Git Bash 与本插件(联动后已是 Git Bash 版)指向同一件事,同装时模式选择器里
会出现两条。v0.14.0 起本插件的设置卡多出一行 「与 dsh-gitbash-shell 去重」:
- 默认关(显示为「保留两个」),不改变任何现有行为;
- 只有一份状态:这一行不存自己的值,而是通过
ctx.configForms.get('gitbash-shell')绑定 对方那一行的suppressPeerCordis字段,并subscribe对方的变更——两处设置卡显示的是 同一个开关,任一侧改动另一侧立即同步; - 对方的行不存在(未安装)时这一行不渲染,本插件设置卡退回原来的单行形态;
- 版本要求:去重真正生效需要 dsh-gitbash-shell ≥ 0.25.0(开关本体)与本插件 ≥ 0.14.0(协作能力)同时满足,名录里才会少掉那一条;
- 旧宿主边界:只有 dsh ≥ 0.1.7 上两侧都能改(新宿主才有
configForms);旧宿主 (≤ 0.1.6)在本插件卡里看不到这一行,只能在对方自己的设置面里改,并按对方的启动时语义生效。
若你的
ptc-cordis目录由旧版本物化且已处于 unmodified 状态,升级后首次启动 会自动刷新;若被手工修改过,删除~/.dsh/.agent-presets/ptc-cordis再重启即可 以新逻辑重新物化。
致谢与许可
- 合成组合与技能内容派生自 @deepseek-ai/dsh 内置 preset(MIT),运行时从本机安装拷贝,遵循其许可
- 本仓库代码:MIT
run_code 后端开关(v0.15.0,默认关)
设置 → 插件 → 「PTC 创造模式」卡片新增一行 run_code 后端:
- Node / TypeScript(默认):run_code 使用 dsh 官方 Node PTC 后端,与官方
ptc组合逐字节一致。 - Python(实验性):改用 dsh 实验性 CPython 后端
@deepseek-ai/dsh-experimental-ptc-runtime-python(随本插件安装,无需二次安装)。run_code 的语言、生成的 Python SDK 提示词与工具呈现会自动切换(由 provider 的language/executionInstructions驱动)。
要求与边界:
- 平台:仅 POSIX(macOS / Linux)。Windows 上实验后端在加载期直接抛错,本插件保持官方 Node 后端并在日志给出指引。
- 解释器:需要 CPython ≥ 3.10。插件按「显式
pythonBin→DSH_PYTHON→ dsh 运行时自带 →/opt/homebrew/bin、/usr/local/bin→ PATH →/usr/bin/python3」逐个探测,并把胜出的绝对路径冻结给 provider;桌面端 GUI 的 PATH 通常只有 macOS 自带的 3.9,必要时brew install python@3.12,或在行 Config 里填pythonBin指向你的解释器。 - 与 workflow 互斥:
workflow-ptc硬要求 TypeScript 运行时,官方 Python 组合同样禁用 workflow;开启期间本插件把workflow-ptc/tool-workflow强制关闭(你的 workflow 设置值保留,关掉后恢复)。 - 生效时机:重启 dsh 后生效(切换发生在 profile patch 层,启动时求值)。卡片状态与 dsh-gitbash-shell 的设置卡共享同一份值,任一侧改动两侧即时同步。
- 不可用时:插件不会切换后端——保持官方 Node 后端,并在宿主日志打印可执行指引(缺解释器 / 缺包 / 平台不支持)。
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 32318
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 4452
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1132
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 504
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 496
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 447
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。