在设置面板里编辑并生成 AGENTS.md 规则文件
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Ytibu/dsh-agents-md该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · skill
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 30 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 44 处,展示前 35 条)
- 读取本地文件lib/index.js:72
return { exists: true, content: await readFile(file, 'utf8') } - 写入本地文件lib/index.js:89
await copyFile(file, candidate, constants.COPYFILE_EXCL) - 写入本地文件lib/index.js:105
await mkdir(dirname(file), { recursive: true }) - 写入本地文件lib/index.js:106
await writeFile(file, content, 'utf8') - 发起网络请求lib/client.js:169
fetch("/api/agents-md/global", { cache: "no-store" }) - 发起网络请求lib/client.js:189
fetch("/api/agents-md/global", { - 发起网络请求lib/client.js:253
fetch("/api/agents-md/project?workspace=" + encodeURIComponent(selectedId), { cache: "no-store" }) - 发起网络请求lib/client.js:277
fetch("/api/agents-md/project?workspace=" + encodeURIComponent(selectedId), { - 发起网络请求lib/client.js:345
fetch("/api/agents-md/models", { cache: "no-store" }) - 发起网络请求lib/client.js:391
fetch("/api/agents-md/compose", { - 读取本地文件check-contracts.mjs:44
if (existsSync(candidate)) return candidate - 读取本地文件check-contracts.mjs:52
const fd = readFileSync(file) - 读取本地文件check-contracts.mjs:150
console.log(`文件大小: ${(statSync(asarPath).size / 1024 / 1024).toFixed(1)} MiB\n`) - 读取本地文件check-contracts.mjs:195
if (existsSync(manifestPath)) { - 读取本地文件check-contracts.mjs:196
const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) - 读取本地文件check-live.mjs:27
const manifest = JSON.parse(readFileSync(join(here, 'package.json'), 'utf8')) - 发起网络请求check-live.mjs:40
const response = await fetch(baseUrl + path, { signal: AbortSignal.timeout(10_000) }) - 读取本地文件check-live.mjs:66
const stats = statSync(file) - 读取本地文件check-live.mjs:111
const onDisk = readFileSync(clientFile, 'utf8') - 发起网络请求check-live.mjs:118
const response = await fetch(bundleUrl, { signal: AbortSignal.timeout(10_000) }) - 读取本地文件test-client-contract.mjs:21
const hostSource = readFileSync(join(here, 'lib/index.js'), 'utf8') - 读取本地文件test-client-contract.mjs:22
const clientSource = readFileSync(join(here, 'lib/client.js'), 'utf8') - 读取本地文件test-client-contract.mjs:23
const manifest = JSON.parse(readFileSync(join(here, 'package.json'), 'utf8')) - 读取本地文件test-client-contract.mjs:92
const patchFile = readFileSync(join(here, 'cordis.patch.yml'), 'utf8') - 发起网络请求test-smoke.mjs:108
return route.fetch(request) - 写入本地文件test-smoke.mjs:127
await mkdir(workspace.path, { recursive: true }) - 读取本地文件test-smoke.mjs:177
check('全局 POST 真的落盘', (await readFile(globalFile, 'utf8')).includes('中文注释')) - 读取本地文件test-smoke.mjs:213
check('项目 POST 落盘', (await readFile(join(workspace.path, 'AGENTS.md'), 'utf8')).includes('v1')) - 读取本地文件test-smoke.mjs:222
check('备份内容是旧版本', (await readFile(backupPath, 'utf8')).includes('v1')) - 读取本地文件test-smoke.mjs:223
check('当前文件是新版本', (await readFile(join(workspace.path, 'AGENTS.md'), 'utf8')).includes('v2')) - 读取本地文件test-smoke.mjs:238
const sameMsBackups = (await readdir(workspace.path)).filter((entry) => entry.startsWith('AGENTS.md.bak-1700000000000')) - 读取本地文件test-smoke.mjs:242
sameMsContents.push((await readFile(join(workspace.path, entry), 'utf8')).trim()) - 写入本地文件test-smoke.mjs:349
await mkdir(blankHome, { recursive: true }) - 写入本地文件test-smoke.mjs:350
await writeFile(join(blankHome, 'AGENTS.md'), ' \n', 'utf8') - 删除本地文件递归test-smoke.mjs:458
await rm(root, { recursive: true, force: true })
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 编辑全局规则
- 编辑项目规则
- 生成项目级规则
在 DeepSeek Harness 设置面板里编辑与生成 AGENTS.md:改全局规则、改项目规则、按「合并全局规则」或「直接覆盖」生成项目级规则。仅适用于 DSH 0.2.0-rc.2。
README
由 DeepSeek 最新模型翻译生成dsh-agents-md
给 DeepSeek Harness 加一个 AGENTS.md 的可视化编辑器。
不用再手动找文件、手动复制粘贴——在设置面板里点几下,就能编辑和生成 AGENTS.md。
适用版本:DSH 0.2.0-rc.2(详见文末兼容性)
它解决什么问题
DSH 会读取 AGENTS.md 里的规则来决定怎么干活。但手动管理这些文件很麻烦:
| 你可能遇到的麻烦 | 这个插件怎么办 |
| 找不到全局规则文件在哪,路径记不住 | 设置里直接打开编辑,页面会显示解析到的真实路径 |
| 换个项目就要再找一遍项目规则文件 | 下拉选工作区,直接编辑该项目的 AGENTS.md |
| 想让项目规则「整体继承全局规则,再加上项目特有的要求」,只能手动复制粘贴 | 选「合并全局规则」,AI 帮你融合成一份完整规则 |
| 不小心把已有规则覆盖没了 | 写入前自动备份成 AGENTS.md.bak-<时间戳>,同一毫秒内的多次保存也不会互相覆盖 |
插件不改变 DSH 的任何行为,只是给这些文件加了一个好用的编辑界面。
三个功能
1. 编辑全局规则
读写全局规则文件——它对所有项目生效。
展开完整文档(README 剩余 1 节)
dsh-agents-md
给 DeepSeek Harness 加一个 AGENTS.md 的可视化编辑器。
不用再手动找文件、手动复制粘贴——在设置面板里点几下,就能编辑和生成 AGENTS.md。
适用版本:DSH 0.2.0-rc.2(详见文末兼容性)
它解决什么问题
DSH 会读取 AGENTS.md 里的规则来决定怎么干活。但手动管理这些文件很麻烦:
| 你可能遇到的麻烦 | 这个插件怎么办 |
| 找不到全局规则文件在哪,路径记不住 | 设置里直接打开编辑,页面会显示解析到的真实路径 |
| 换个项目就要再找一遍项目规则文件 | 下拉选工作区,直接编辑该项目的 AGENTS.md |
| 想让项目规则「整体继承全局规则,再加上项目特有的要求」,只能手动复制粘贴 | 选「合并全局规则」,AI 帮你融合成一份完整规则 |
| 不小心把已有规则覆盖没了 | 写入前自动备份成 AGENTS.md.bak-<时间戳>,同一毫秒内的多次保存也不会互相覆盖 |
插件不改变 DSH 的任何行为,只是给这些文件加了一个好用的编辑界面。
三个功能
1. 编辑全局规则
读写全局规则文件——它对所有项目生效。
- 路径解析与 DSH 完全一致:优先 $DSH_HOME/AGENTS.md,没设置就用 ~/.dsh/AGENTS.md
- 文件不存在时,保存会自动创建
2. 编辑项目规则
读写指定项目根目录下的 AGENTS.md。
- 从下拉列表选工作区,编辑它根目录的 AGENTS.md
- 同样支持自动创建与自动备份
3. 生成项目规则(这是最省事的一个)
你只需要用大白话写下你想要的规则,插件帮你生成规范的 AGENTS.md:
1. 选一个工作区
2. 写下你的要求,比如:
这个项目必须用 pnpm,不要用 npm 提交信息用中文改数据库前先写迁移脚本
3. 选一种生成方式(见下表)
4. 先预览,确认后才写入——在你点「确认写入」之前,磁盘上不会有任何改动
| 生成方式 | 做什么 | 什么时候用 |
| 合并全局规则 | 调 AI 把你的输入和全局 AGENTS.md 融合成一份完整规则:保留全局里仍然有效的要求,重复的合并,冲突时以你的项目规则为准 | 想让项目既遵守全局约定,又有自己的额外要求 |
| 直接覆盖 | 直接用你的输入生成,不参考全局规则 | 这个项目完全独立,不需要继承全局 |
全局规则文件不存在或为空时,「合并全局规则」会直接使用你输入的内容,不会报错。
生效时机
保存后:
- 新会话:立即生效
- 当前会话:在下一次文件操作后感知到新规则
(由 DSH 内置的动态检测机制负责,插件本身不做热重载。)
安装
以下内容面向愿意动手的使用者。
装进任意 DSH profile(目录形如 $DSH_HOME/profiles/<名字>)需要两步。
第一步:在 profile 的 package.json 里加上依赖,然后在 profile 目录执行 pnpm install:
"dsh-agents-md": "file:/绝对路径/to/dsh-agents-md"
当前 DSH 0.2.0-rc.2 没有随附 dsh CLI,所以上面这种 profile 手动安装是唯一可用的方式。
等 CLI 随版本发布后,也可以直接用 dsh plugin --profile web add Ytibu/dsh-agents-md——本插件的 package.json 已按该约定声明 dsh.bundle.patch 与 dsh.client,无需改动。
第二步:在同一个 package.json 的 dsh.profile.bundles 数组里加上插件名:
"dsh": {
"profile": {
"bundles": [
"@deepseek-ai/dsh-base",
"@deepseek-ai/dsh-web-app",
"dsh-agents-md"
]
}
}
只加 dependencies 不会让插件装载——必须同时加进 bundles。
最后重启 dsh web,打开 设置 → 「AGENTS.md 管理」。
本地开发时怎么让改动生效
file: 依赖在 pnpm 的 hoisted linker 下是硬链接,因此:
- 原地编辑已有文件会自动同步,不用重装
- 新增/重命名文件,或用「写临时文件再 rename」的原子保存(会断硬链接)时,需要重新 pnpm install
想彻底避开这类不确定性,可以把 profile 里的目录换成指向源码的联接:
Remove-Item "<profile>\node_modules\dsh-agents-md" -Recurse -Force
New-Item -ItemType Junction -Path "<profile>\node_modules\dsh-agents-md" -Target "<源码目录>"
另外:同步的只是文件,插件模块要重启 dsh web 才会重新加载(Client 半边随页面刷新更新,Host 半边不会)。
兼容性
仅适用于 DSH 0.2.0-rc.2
| 项 | 值 |
| 开发与测试所依据的 DSH 版本 | 0.2.0-rc.2 |
| 对应应用包 | @deepseek-ai/dsh-desktop / @deepseek-ai/dsh-desktop-runtime 0.2.0-rc.2 |
| 分发渠道 | nightly |
本插件用的是 DSH 内部契约,不是稳定的公开 API。 版本一变,下列接口可能改名或消失,插件会随之失效(通常表现为设置页入口消失,或路由 404): ctx.connection.fetch.register · ctx.workspaceRegistry · ctx.llm.stream · ctx.agentDefaultModel.currentSelection · slots 服务与 settings.section 槽位 · window.__ModuleLoader__.load
换 DSH 版本后请先跑一次自检:
node check-contracts.mjs
它直接读你本机安装的 DSH 源码,打印你的版本并逐项核对上述契约;退出码 0 表示兼容。你的版本与 0.2.0-rc.2 不一致时,这个脚本的结论比本文档更可信。
常见问题
设置里看不到「AGENTS.md 管理」入口? 最常见的原因是只加了 dependencies、没加进 dsh.profile.bundles(两步缺一不可),然后需要重启 dsh web 并刷新页面。
页面提示 401 / 会话未通过鉴权? 这是预期行为——接口受 DSH 鉴权保护,非浏览器会话访问会被拒绝。刷新页面重新登录即可。
改了源码但没生效? 分两层:文件同步(file: 依赖是硬链接,原地编辑自动跟随,新增文件需重装)与模块加载(Host 半边必须重启 dsh web)。
更多症状(合并失败、降级提示、备份文件、EBUSY、换版本后失效)见 TROUBLESHOOTING.md。
给开发者
工作原理与自检脚本
Host(lib/index.js)用 ctx.connection.fetch.register 注册 5 条 Fetch 路由,挂在 Connection 的 /api 通道上——因此自动落进 Host/Origin 栅栏与浏览器鉴权:
| 路由 | 方法 | 作用 |
| /api/agents-md/global | GET / POST | 读 / 写全局 AGENTS.md |
| /api/agents-md/project?workspace=<id> | GET / POST | 读 / 写 <工作区>/AGENTS.md |
| /api/agents-md/compose | POST | 生成内容,不落盘 |
| /api/agents-md/workspaces | GET | 工作区列表 |
| /api/agents-md/models | GET | 模型目录 |
必须走 connection.fetch:若改用 ctx.webServer.register 注册 kind:'exact' 的 /api/... 路由,会遮蔽 Connection 的 /api 前缀栅栏(webServer 的路由匹配是「先查 exact 表,未命中再最长前缀」),使只读接口失去鉴权。
Client(lib/client.js)是手写 __ModuleLoader__.load bundle,注册 settings.section 槽位,零构建。
自检脚本
node test-smoke.mjs # 离线冒烟测试(65 项断言,不需要运行中的 DSH)
node test-client-contract.mjs # 客户端契约测试(19 项断言,锁住 host/client 接口一致)
node check-contracts.mjs # 兼容性自检:核对本机 DSH 是否满足所依赖的契约
node check-live.mjs # 运行态自检:栅栏是否生效 + client bundle 是否注入
目录结构
dsh-agents-md/
├── cordis.patch.yml # bundle patch:插入插件层 ├── package.json # 含 dsh.compat(记录测试版本与依赖契约) ├── lib/ │ ├── index.js # Host:5 条 connection.fetch 路由 │ └── client.js # Client:手写 __ModuleLoader__ bundle ├── test-smoke.mjs # 离线冒烟测试 ├── test-client-contract.mjs # 客户端契约测试 ├── check-contracts.mjs # 兼容性自检 ├── check-live.mjs # 运行态自检 ├── CHANGELOG.md # 更新日志 └── TROUBLESHOOTING.md # 故障排查
参与贡献
欢迎贡献。提 issue 请务必附上你的 DSH 版本和 node check-contracts.mjs 的完整输出——这两样能直接区分「版本不兼容」还是「代码有问题」。仓库里有问题模板会提醒你填。
改动代码前请读一下 CONTRIBUTING.md,重点只有一条:新增对 DSH 内部契约的依赖时,要同步更新 check-contracts.mjs 和本文档的兼容性表格——这是插件最容易在 DSH 升级时静默失效的地方。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Ytibu/dsh-agents-md
在设置面板里编辑并生成 AGENTS.md 规则文件
相关插件 · 技能 / 提示词
人设统管ZiChuanLan/agent-purge
一份系统提示词,喂给多个 coding…
★ 931已汉化DSH
73.8
人物画像蒸馏titanwings/distilly
Distilly — 把他们的思考方式提炼成可复用的技能,供任何智能体或机器人使用。原名 Colleague Skill(原同事 Skill)。
★ 25,659已汉化DSH
71.3
推理工作空间套件Tiger3807861189/J-Space-Cognition-Suite
J-Space 是面向复杂推理、大型仓库工程、子代理协作与授权安全分析的推理时工作空间和控制套件。
★ 2,957已汉化DSH
70.5
两阶段工具锚定预设xiaobright/dsh-anchored-standard
实验性 DeepSeek Harness agent preset…
★ 3,742已汉化DSH
70.1
智能体工作流编排nrslib/takt
不再日夜盯着 AI 编码智能体。
★ 1,402已汉化DSH
70
Agent 运行时手册Electricitysheep/dsh-handbook
DeepSeek Harness dsh 从 0 到 1 深度手册:安装/插件开发/性能调优/实测案例/同模型多…
★ 827已汉化DSH
68.7