CDS 模式(Chen's DS)
一个把「多智能体协作」真正跑起来的工作模式,装进 DeepSeek Harness。
你和唯一的主人格晨对话。它带着 56 个人格分头干活,互相直接交接,最后把结果交回你手上。
56 是怎么算的:主模式 21 个(A/B/C/D/E 五组)+ 网络安全模式 35 个(八组)。两个模式各自还有一位"晨"——主模式的晨和它的安全模式版本。所以你实际会看到 58 份人格卡,但对你说话的自始至终只有一个。
一、这是什么
大多数 AI 编程助手的工作方式是:你问,它答。
CDS 模式不一样。你面对的是一个人格 —— 晨。它不会立刻动手,而是先问清楚,然后把活拆开、派人、验收,最后给你一个交代。
用一句话说:它把"一个人干活"变成了"一个团队干活,但只有一个人跟你汇报"。
| 你可能遇到的麻烦 | CDS 的做法 |
|---|---|
| 需求没说清,AI 就开始写,写完发现方向错了 | 晨先问 5 道题校准专业度,再问需求,不问清不动手 |
| AI 说"已经修好了",你一测还是坏的 | 修完必须由另一个人格验证,而且验证方式是重放原问题,不是自己说"好了" |
| 每次改都冒出新的坏 | 每轮必须报净变化量,连续 5 轮不收敛就自动熔断停下来 |
| 代码一看就是 AI 写的,一股塑料味 | 有专人(D4)专门抓 AI 味,而且有一票否决权 |
| 聊天里说过的话,下次就不记得了 | 所有结论必须落盘成文件,以文件为准,不以对话记忆为准 |
| 问着问着,AI 自己把活干了,派出去的人没派 | 明文禁止抢活,晨越权产出的东西直接作废 |
| 一堆 AI 同时干活,互相覆盖 | 同批并行但有互斥切片声明,禁止重复劳动 |
二、核心是什么:九条铁律
整个模式的行为由九条规则锁死。这些不是口号,违反会有明确后果。
| # | 铁律 | 违反了会怎样 |
|---|---|---|
| L1 | 只有晨能跟你说话。 其他人格不许直接输出 | 越权,输出作废 |
| L2 | 需求没澄清,不许开工。 首次对话做校准+需求采集,之后每次新要求先追问 5–10 题 | 违规开工,回退 |
| L3 | 不藏 bug。 所有问题都要进台账,连"知道但先不修"的也要写清理由 | 严重违规 |
| L4 | 循环必须收敛。 每轮修复后要给出这轮的净变化量 | 失控,触发熔断 |
| L5 | 改版本要你明确说。 你没说"更新/重构/改版本号",一切改动按普通功能问题处理 | 越权变更 |
| L6 | 同组不许互相掩盖。 发现了别人的 bug 必须写进台账,不许偷偷改掉不记录 | 违规 |
| L7 | 结论必须落盘。 人格之间的结论以文件为准 | 无效结论 |
| L8 | 派活要交出完整人格卡。 只给路径等于没派,子 Agent 会变成普通助手 | 无效委任,产物作废 |
| L9 | 问你必须用提问工具(结构化选项卡片),不许一大段散文问你 | 流程违规 |
其中 L2 和 L9 是你感受最直接的:晨会用选择题卡片问你,而不是丢一大段话让你自己找重点。
三、56 个人格,分两种模式
主模式:晨 + 21 个人格(日常开发、文档、设计)
晨 是主人格。另外 21 个分五组:
| 组 | 特质 | 成员 | 擅长的活 |
|---|---|---|---|
| 调查组 | 情感冷漠 | A1 官方派 · A2 复用派 · A3 个性化派 · A4 汇总验证 | 查资料、盘代码、去 AI 味、整合验证 |
| 设计组 | 贪欲 / 精进 | B1 古怪奇想 · B2 务实 · B3 美观与人因 · B4 汇总收口 | 出方案、务实红线、视觉与操作、一票收口 |
| 开发组 | 懒惰 + 完美主义 | C1 前端 · C2 后端 · C3 细节与修 bug · C4 安全层 | 写代码、跑一遍、修细节、安全清单 |
| 测试组 | 真诚 | D1 代码级跑测 · D2 实机体验 · D3 长远 bug · D4 AI 味猎手 · D5 安全红队 · D6 分类汇总 | 五个视角独立找问题,D4 有否决权 |
| 其他组 | —— | E1 文员 · E2 演示文稿 · E3 宣传片视频 | 一切文字、PPT、视频 |
附属模式:C-WEB 网络安全工作流(35 个人格)
做安全任务时启用,不影响日常开发。八个组:
| 组 | 特质 | 人数 | 干什么 |
|---|---|---|---|
| A 情报侦察 | 情感冷漠 | 4 | 资产边界、威胁情报、公开信息、供应链 |
| B 检测分析 | 求真 | 5 | 告警分诊、数字取证、漏洞分析、恶意代码、流量分析 |
| C 响应恢复 | 克制 | 4 | 执行响应、验证恢复、遏制策略、业务连续性 |
| D 治理合规 | 固执 | 4 | 策略门、报告复盘、合规、隐私 |
| E 安全架构与工程 | 远见 | 6 | 架构、应用安全、云安全、身份、数据安全、密码学 |
| F 攻防对抗 | 攻防思维 | 4 | 渗透测试、红队、逆向、漏洞研究 |
| G 安全运营与自动化 | 效率 | 3 | 检测工程、安全自动化、安全工具开发 |
| I 实时防御反击 | 快准狠 | 5 | 实时指挥、攻击阻断、欺骗防御、攻击溯源、反击执行 |
安全模式有两条特别的设计:
D-web1 是「策略门」,连晨都不能绕过它。 任何会改变系统状态的动作都要过它,判定只有三种结果:允许 / 需审批 / 拒绝。没有第四种 —— "先做着,同时补审批"不算一种结果,算违规。
D-web4 有一票否决权。 涉及个人数据的操作,它可以直接否掉,不需要请示晨,但必须给出不涉及个人数据的替代路径。
四、最有意思的设计:晨不许抢活
这是整个模式里最反直觉、也最实用的一条。
AI 手上什么工具都有。默认行为倾向就是"顺手把这块也写了"。 一旦晨自己动手,派出去的人格就永远不会被派出去 —— 而模式承诺的所有保障(测试组的真诚、B4 的收口、D4 的 AI 味否决、A 组的对立验证)就全部不会发生。
所以有一条明文判据:
如果晨产出了一份本该由某个人格落盘的东西,那就是抢活,产物作废,退回去重做。
晨只被允许写"编排记录"类的文件,业务产物一律不许碰。
还有配套的症状 → 人格对照表:什么症状派给谁,表里有的不许自己硬上;表里没有的,先考虑该不该新增人格,或者停下来问你。
五、什么时候会停下来等你
这条很重要 —— 不是每件事都会来烦你。
| 必须停下来问你 | 不许停,自己继续 |
|---|---|
| 需求摘要等你确认 | 轮内推进(调查 → 设计 → 开发 → 测试) |
| 接手项目时等你确认「不可动清单」 | 修 bug → 复测这个循环 |
| 判定为版本变更 / 推倒重做 | 单个子任务完成(这不叫停点) |
| 熔断触发 | —— |
| 需求出现矛盾 | —— |
| 碰到安全红线 | —— |
| 准备交付 | —— |
另外还有一条纪律:不要每派完一个人格就来汇报一句。 那是骚扰,不是负责。
六、怎么防"越修越乱"
模式内置了六种熔断,达到条件自动停下:
| 编号 | 触发条件 | 含义 |
|---|---|---|
| CB-1 | 连续 5 轮测试循环没收敛 | 陷入死循环 |
| CB-2 | 任一轮新增 3 个以上致命 bug | 修引入的问题比修掉的多 |
| CB-3 | 代码连续 3 轮净增长,且 bug 没减少 | 越修越乱 |
| CB-4 | 你和晨在需求上出现无法用选择题收敛的分歧 | 方向性分歧 |
| CB-5 | 预算/时间到上限 | 资源熔断 |
| CB-6 | 同一个 bug"修"了 3 次还没好 | 根因判断错了 |
问题分成五级,从 S1(致命)到 S5(建议)。其中有一条硬规定:
"不报错但结果是错的"这类问题,至少按 S2 算,跟它是不是核心功能无关。
静默错误数据是最危险的 —— 界面一切正常,账却算错了。
七、装完之后你看到什么
两张预设卡片
| 卡片 | 说明 |
|---|---|
| CDS 模式(晨的DS) | 日常用这个。 零实验依赖,一定激活 |
| CDS 模式 · 同伴频道版 | 多挂 Agent Teams:人格之间可直接互相说话、共享任务板 |
协同功能只在第二张卡里。 第一张卡故意不挂任何实验包 —— 实验包出问题时,CDS 主体仍然能用。
选「同伴频道版」的会话,对话头部会多一个 Agent Teams 入口,点开能看到队友名册、共享任务板、点进某个队友的会话。
看不到协同入口,只有一个原因:你选的是第一张卡。
八、安装
前置条件:装好 DeepSeek Harness,能跑 dsh web。不需要 npm 登录,本包零外部依赖。
四种装法,选一种就行。推荐先看第一种(最省事),或者直接跳到第四种(最不依赖网络)。
方式一:Web 界面装(最省事)
打开 DSH 的 Web 界面(
dsh web后面板)侧边栏点 Plugins
点 Add plugin
在输入框里填仓库地址:
https://github.com/DRQRTS/dsh-cds-mode选好 Registry(默认即可),勾选上方的信任确认框
点 Install
重启
dsh web
注意信任框里那句话:已安装的插件不会自动更新 —— 升级的做法是卸载再装新版本。
勾选它代表你确认了这一点。装插件会在你的 profile 里执行包里的代码(这是插件机制的通用性质,不是本包的特殊要求)。装之前你可以自己读一遍
index.js,约 400 行,只用 Node 内建模块。
方式二:命令行装(适合脚本化)
dsh plugin --profile web add https://github.com/DRQRTS/dsh-cds-mode
(web 是你的 profile 名。不指定 --profile 会报错,这个参数是必需的。)
装完同样重启。
方式三:让 agent 装
在一个 DSH 会话里说:
agent 会调用 plugin_manager 工具的 install_bundle。这一步需要 danger-full-access 权限。
方式四:从压缩包装(不依赖 GitHub)
如果 GitHub 连不上(中国大陆常见,见下面第十一节),用这条:
mkdir -p ~/dsh-bundles
unzip dsh-cds-mode-1.5.0.zip -d ~/dsh-bundles
# 得到 ~/dsh-bundles/package/
然后让 agent 装这个目录:
plugin_manager action: install_bundle
target: /绝对路径/到/解压出的/package
为什么强调"长期保留":安装用软链接方式,DSH 会指向这个目录。目录删了,插件就加载失败。
install_bundle接受 registry 包、git 地址、tarball、绝对路径四种。不接受.zip本身 —— 所以要先解压。路径必须是绝对路径。
四种装法对比
| 方式 | 需要 GitHub 可达 | 需要重启 | 适合 |
|---|---|---|---|
| Web 界面 | 是 | 是 | 大多数人 |
| 命令行 | 是 | 是 | 批量 / 脚本 |
| agent 工具 | 视 spec 而定 | 是 | 已经习惯用对话 |
| 压缩包 | 否 | 是 | GitHub 不通时 |
最后一步:重启
dsh web
重启是必需的,刷新页面不够。 JS 模块是进程启动时加载的,新增或替换一个包必须重启才会加载。
然后新建会话,预设里选「CDS 模式」。
卸载与升级
卸载:Web 界面的 Plugins 页找到 CDS 卡片 → 卸载;或让 agent 执行
plugin_manager action: remove_bundle target: @local/dsh-cds-mode
升级:因为插件不自动更新,升级 = 先卸载,再按上面任一方式装新版本,然后重启。
卸载不影响你的项目产物 —— 那些在你的项目工作区里。
九、装完怎么验(三步)
第一步 · 卡片不标红。 打开预设列表,两张 CDS 卡片应当没有红色「加载失败」徽标。有的话,把诊断原文贴出来 —— 那是逐行的,会直接写明哪一行、什么原因。
第二步 · 它知道自己是谁。 新开会话问:
你是谁?
应当得到晨的自述。再问:
你手上的 CDS 规范里有几条铁律?第一条是什么?
应当答出 九条,第一条是「晨是唯一对用户说话的人格」。
第三步 · 提问走工具。 随便说个需求,比如"帮我做个管理学生作业的小工具"。应当看到晨弹出选择题卡片(不是一大段散文),每批不超过 5 题,而且第二批发问接得上你的回答 —— 你答"就我们班用",它就不该再问支付、发票、备案。
十、常见问题
| 现象 | 原因 | 怎么办 |
|---|---|---|
| 预设列表里没有 CDS 卡片 | 装完没重启 | 重启 dsh web |
| 卡片标红「加载失败」 | 某一行激活失败 | 把诊断原文给发布者 |
| 诊断说「内置语料缺失」 | 压缩包不完整 | 重新解压完整压缩包 |
安装时报 Cannot access GitHub |
GitHub 连不上 | 见第十一节:配代理,或改用压缩包方式 |
| 侧边栏没有 Plugins 页 | 这个 profile 没有托管 | 改用命令行或 agent 工具 |
| 模型说"我是 coding agent…" | 选的是别的预设 | 确认会话预设是「CDS 模式」 |
| 找不到任何协同入口 | 用的是「CDS 模式」 | 换「CDS 模式 · 同伴频道版」 |
重复安装报 ambiguous-install |
同一目标已装 | 正常现象,重启即可 |
| 装了新版没变化 | 插件不自动更新 | 先卸载再装新版,然后重启 |
| 缓存命中率突然变低 | 语料被改过(前缀变了) | 看包内 cds/CHANGELOG.md 的缓存影响记录 |
十一、GitHub 连不上怎么办
这是中国大陆用户最可能卡住的地方,所以单独说。
插件本身不需要联网(零外部依赖、语料随包自带)。但前三种安装方式都要访问 GitHub(要 clone 仓库)。
症状
- Web 界面弹
Cannot access GitHub或GitHub connection timed out - 命令行里
git ls-remote或dsh plugin add卡住约 22 秒后失败 - 报错形如
Failed to connect to github.com port 443
怎么办
办法一:给 git 配代理(如果你有代理)
git config --global http.proxy http://127.0.0.1:7890
git config --global https.proxy http://127.0.0.1:7890
把端口换成你自己的。配完验证:
git ls-remote https://github.com/DRQRTS/dsh-cds-mode HEAD
能打印出一串 commit hash 就通了。
办法二:改用压缩包方式(不需要代理,最稳)
按第八节的方式四,把 zip 解压到本地目录,让 agent 从绝对路径安装。这条路完全绕开 GitHub 和 npm registry。
顺带说明:npm registry 的国内镜像(npmmirror)帮不了这个问题 —— 它镜像的是 registry 上的包,不镜像 GitHub 仓库。所以「换镜像」对 GitHub 地址无效,这就是 Web 界面会提示
Try another way的原因。
十二、要如实说明的几点
能保证的
零外部依赖:核心代码只 import Node 内建模块。不会因为某个包解析不到而在你机器上失效(这条是踩过坑之后定死的)。
自带完整验证:包内两套校验脚本共 203 项断言,覆盖结构、接线、可移植性、真实装载。你可以自己跑:
node _verify3.mjs && node _verify-corpus.mjs语料可核对:
node _sync-corpus.mjs --check会逐字节比对包内语料与源语料。.zip与.tgz内容逐字节一致,两种格式都用独立解压器验证过。
要如实说明的
- 「同伴频道版」依赖两个实验包(
dsh-experimental-agent-team/dsh-experimental-tool-agent-team)和一个实验 UI 包。它们无稳定性承诺;上游若破坏性变更,那张卡可能激活失败。这不影响「CDS 模式」(保底卡)。 - 同一批并发上限 8 个实例。这是刻意的,不是缺陷。
- 本包按 DSH
0.2.0-rc.2开发。换 DSH 大版本前,请先跑一遍上面的验证脚本。 - 四个功能面尚未在真实会话中做端到端验证:预设不标红、子 Agent 角色扮演、提问走工具、同伴频道界面与队友互发。203 项断言覆盖的是"接线对、语料全、能装载",不是"跑起来好用"。第一次用建议按第九节的三步验一遍。
关于安全模式的边界
- 反击执行(I-web5)有准入七项,缺一项直接拒收,不接受"先做后补""口头同意""情况紧急"。
- 还有一份**"绝对不做"清单**:入侵、破坏、DDoS、植入后门、窃取数据、攻击未列入范围的目标、对自然人报复 —— 无论授权书写得多宽,都不做。
- 理由很简单:授权可以扩大"允许做什么",但不能把犯罪行为变成合法行为。
十三、想改点什么
改语料:包内 cds/ 就是全部规范文本。改完重启。
用自己的语料库:把 cds/ 复制到别处,在 cordis.patch.yml 的 cds-mode 行加 corpusDir 指向它。
别打开 liveReload:它会在语料变化时改写系统提示前缀,打掉本会话的提示词缓存。这个模式很在意缓存命中 —— 改了语料就重启,别靠热重载。
卸载:plugin_manager action: remove_bundle target: @local/dsh-cds-mode。卸载后预设卡片消失,系统提示恢复默认。你的项目产物不受影响(它们在你的项目工作区里)。
十四、文件在哪
dsh-cds-mode/ ← GitHub 仓库根目录(也是 bundle 根目录)
├── README.md ← 中文(默认,本文件)
├── README.en.md ← English
├── README.ja.md ← 日本語
├── INSTALL.md ← 安装与故障排查(偏操作)
├── LICENSE ← MIT 许可证正文
├── package.json ← 包定义:名称、版本、dsh.bundle.patch 指向
├── index.js ← 插件本体,约 400 行,零外部依赖
├── cordis.patch.yml ← 预设与挂载配置(两个预设 + 同伴频道行)
├── icon.svg ← 图标源文件:单色 currentColor,跟随主题
├── icon.png ← 图标位图 512×512(浅底用,透明背景)
├── icon-dark.png ← 图标位图 512×512(深底用,透明背景)
├── icon-64.png ← 图标位图 64×64
├── locale/ ← 界面上显示的名称与描述
└── cds/ ← 全部规范语料(90 个文件)
├── CORE.md 运行契约:九条铁律、状态机、门禁、委任协议、编排纪律
├── README.md 模式总入口与人格总览
├── CHANGELOG.md 变更记录(含每次缓存失效登记)
├── personas/ 晨 + 21 个人格委任书 + 5 份组索引
│ └── web/ 网络安全模式的 36 份(含 chen-web)
├── workflow/ 5 条工作流(新项目 / 接手 / 迭代 / 熔断 / 网络安全)
├── protocol/ 协同协议、产物契约、bug 分类法
├── questions/ 提问总纲 + 题库(校准 / 新项目 / 接手 / 追问)
├── selfrescue/ 省钱部分:缓存命中与前缀稳定化
└── web/ 网络安全工作流的 8 份支撑文档
想深入了解,从 cds/CORE.md 开始 —— 那是运行契约,其余都围绕它展开。
校验脚本(可选,自测用)
仓库里还有几个只用于开发和校验的文件,安装插件用不到它们:
| 文件 | 作用 |
|---|---|
_verify3.mjs |
插件层校验:结构、接线、可移植性、真实装载 |
_verify-corpus.mjs |
语料层校验:委任书要素、组特质一致性、死链 |
_sync-corpus.mjs |
语料同步(--check 只比对不写入) |
_check-specs.mjs |
验证各种安装写法能否被官方解析器接受 |
_check-icon.mjs |
校验图标 SVG:结构、几何、主题跟随 |
_check-locale.mjs |
按字节检查 locale JSON(防编码损坏) |
_compare-extract.mjs |
比对"解压产物 vs 源"是否逐字节一致 |
_patch-reader.mjs |
零依赖的 patch 结构读取器 |
_zip.mjs |
零依赖的 ZIP 写入器 |
_pack.mjs |
打包出 .zip 与 .tgz |
你可以自己跑前两个(共 228 项断言):
node _verify3.mjs && node _verify-corpus.mjs
No comments yet. Be the first to write one.