🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

论文模式 sevenhsu7/dsh-paper-mode

DeepSeek Harness
sevenhsu714 天前有提交已提供中文文档扫描:含敏感能力

为非编码工作自动归档产物并规范命名,保持工作区整洁

29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/10/19 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add sevenhsu7/dsh-paper-mode
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:待复验
是什么
dsh 原生插件 · skill
装得上吗
曾在 dsh 0.2.0-rc.2 下真实安装成功,但当前 dsh 已更新至 0.2.1-rc.5,本站尚未在新版下复验
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

读写/删除本地文件
查看扫描证据(共 24 处,展示前 20 条)
  • 读取本地文件
    save-core.js:109
    const stats = statSync(dotGit)
  • 读取本地文件
    save-core.js:112
    const content = readFileSync(dotGit, 'utf8')
  • 读取本地文件
    save-core.js:118
    if (existsSync(commonDirFile)) {
  • 读取本地文件
    save-core.js:119
    gitDir = resolve(gitDir, readFileSync(commonDirFile, 'utf8').trim())
  • 读取本地文件
    save-core.js:148
    if (existsSync(excludePath)) existing = readFileSync(excludePath, 'utf8')
  • 读取本地文件
    save-core.js:148
    if (existsSync(excludePath)) existing = readFileSync(excludePath, 'utf8')
  • 写入本地文件
    save-core.js:157
    mkdirSync(infoDir, { recursive: true })
  • 写入本地文件
    save-core.js:161
    writeFileSync(excludePath, `${existing}${needsNewline ? '\n' : ''}${marker}${pattern}\n`)
  • 写入本地文件
    save-core.js:281
    mkdirSync(targetDir, { recursive: true })
  • 写入本地文件
    save-core.js:297
    copyFileSync(args.source_path, dest)
  • 写入本地文件
    save-core.js:299
    writeFileSync(dest, args.content, 'utf8')
  • 写入本地文件
    scratch-core.js:65
    mkdirSync(dir, { recursive: true, mode: 0o700 })
  • 读取本地文件
    scratch-core.js:66
    if (!existsSync(join(root, SCRATCH_METADATA))) {
  • 写入本地文件
    scratch-core.js:67
    writeFileSync(
  • 读取本地文件
    scratch-core.js:81
    latest = statSync(root).mtimeMs
  • 读取本地文件
    scratch-core.js:83
    for (const entry of readdirSync(root, { withFileTypes: true })) {
  • 读取本地文件
    scratch-core.js:85
    const childLatest = entry.isDirectory() ? latestMtimeMs(child, depth + 1) : statSync(child).mtimeMs
  • 读取本地文件
    scratch-core.js:116
    entries = readdirSync(tmpRoot, { withFileTypes: true })
  • 读取本地文件
    scratch-core.js:131
    meta = JSON.parse(readFileSync(join(path, SCRATCH_METADATA), 'utf8'))
  • 删除本地文件递归
    scratch-core.js:140
    rmSync(path, { recursive: true, force: true })
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

DeepSeek Harness 的 Paper 模式——面向工作区的非编码工作预设:AI-Cooperate 归档、YYMMDD-项目-文件 命名、自动识别 git 仓库并只在本地忽略、自动清理系统临时暂存区(7 天)和 📑 会话徽标。

README

由 DeepSeek 最新模型翻译生成
DeepSeek Harness 的 Paper 模式 给 DeepSeek Harness 用的非编码工作模式 —— 带强制产物治理。 专为代码之外的一切而建:调研、分析、报告。按工作区自动归档 —— 整洁、一致、好找。 编码智能体擅长产出代码,却搞不定其他交付物:调研笔记、CSV、图表、截图、一次性脚本,最后全堆在工作区根目录,名字叫 report.md 或 最终版.md,而编码会话和分析会话在侧边栏里混成一团。 Paper 模式是 DSH 的智能体预设,给非编码工作单独定一套规矩 —— 而且它清楚自己跑在什么样的工作区里: | 保证 | 含义 | | 🧭 感知工作区 | 自动判断工作区是 git 仓库还是普通文件夹。代码仓库会把归档目录加进本地 .git/info/exclude,并隔离临时文件;普通文件夹只建归档目录,完全不碰 git。 | | 🗂 统一归档 | 所有产物都写进工作区的 AI-Cooperate/ 文件夹(也识别 AI-CoWork/、AI-Corporate/)。 | | 🏷 强制命名 | 文件名格式为 YYMMDD-<project-code>-<name>.<ext>,日期取真实系统时间,项目代码在会话内保持不变,重名时用 -2/-3 去重。绝不覆盖。
展开完整文档(README 剩余 1 节)
DeepSeek Harness 的 Paper 模式

给 DeepSeek Harness 用的非编码工作模式 —— 带强制产物治理。

专为代码之外的一切而建:调研、分析、报告。按工作区自动归档 —— 整洁、一致、好找。

编码智能体擅长产出代码,却搞不定其他交付物:调研笔记、CSV、图表、截图、一次性脚本,最后全堆在工作区根目录,名字叫 report.md 或 最终版.md,而编码会话和分析会话在侧边栏里混成一团。

Paper 模式是 DSH 的智能体预设,给非编码工作单独定一套规矩 —— 而且它清楚自己跑在什么样的工作区里:

| 保证 | 含义 |
| 🧭 感知工作区 | 自动判断工作区是 git 仓库还是普通文件夹。代码仓库会把归档目录加进本地 .git/info/exclude,并隔离临时文件;普通文件夹只建归档目录,完全不碰 git。 |
| 🗂 统一归档 | 所有产物都写进工作区的 AI-Cooperate/ 文件夹(也识别 AI-CoWork/、AI-Corporate/)。 |
| 🏷 强制命名 | 文件名格式为 YYMMDD-<project-code>-<name>.<ext>,日期取真实系统时间,项目代码在会话内保持不变,重名时用 -2/-3 去重。绝不覆盖。 |
| 🧹 临时文件不添乱 | 中间文件(临时脚本、中间数据、过程截图)通过 scratch 工具放进系统临时目录,自动清理 —— 绝不进工作区 —— 7 天后删除。 |
| 📑 会话可辨识 | 一个小型宿主插件给 Paper 会话标题加上 📑 前缀,侧边栏一眼看出哪些是分析、哪些是编码。 |

命名不是提示词里的建议:每个新文件都必须通过内置的 cowork_save 工具写入,由它在文件系统层面强制执行归档目录、日期/项目前缀、字符清洗、去重和绝不覆盖。

前后对比

安装

需要带插件/打包系统的 DSH 版本(桌面版或 dsh 命令行)。

dsh plugin --profile desktop add github:sevenhsu7/dsh-paper-mode

然后重启 DeepSeek Harness。设置 → 智能体预设里会出现新的 「Paper mode」 预设,新建任务的选择器里也有(自定义预设分组)。默认预设仍是 Standard —— Paper 模式要手动选,所以编码会话永远看不到它的规则。

为兼容性保留的内部 id 不变:预设 id cowork,包名 @local/dsh-cowork-preset,工具 cowork_save,仓库 sevenhsu7/dsh-paper-mode。只改了显示名和 emoji 徽标(💻 → 📑)。

备选方案:从本地克隆安装

git clone https://github.com/sevenhsu7/dsh-paper-mode.git
dsh plugin --profile desktop add ./dsh-paper-mode
或者在应用里用 Creator 模式(Settings → Agent presets → Creator),然后说:

用 plugin_manager 的 install_bundle 安装 /absolute/path/to/dsh-paper-mode 这个 bundle。

智能体可读的安装步骤

见 redskill.md,或技能文件 skills/install-paper-mode/SKILL.md。你可以把智能体指向该文件,然后说「安装这个」。

使用

1. 新建任务,选择 Paper mode。
2. 提出研究、分析、报告、文档、图表或数据处理需求。
3. 文件落在 <workspace>/AI-Cooperate/;某一步需要中间文件时,智能体会调用 scratch,在该目录里操作。
4. 会话标题以 📑 开头。

模式卡片与侧边栏

工作原理

本仓库是一个 DSH bundle(dsh.bundle.patch → cordis.patch.yml),提供四样东西:

1. preset-cowork —— 一份 @deepseek-ai/dsh-agent-preset 声明。它带全套标准工具(shell、文件读写与搜索、web、子代理、todo、plan、compaction……),外加 Paper mode 人设,并且刻意不挂载 agent-instructions,这样仓库 AGENTS.md 里的编码规则不会渗进分析会话。
2. cowork-save —— 预设插件,注册 cowork_save 工具。文件系统约定写在 save-core.js(纯逻辑,可单测),并以手写的 JSON-Schema 工具定义注册在 save-tool.js。该文件刻意不从 @deepseek-ai/ 导入任何东西:配置档把这个 bundle 当作链接包解析,裸模块名会从 bundle 自己的目录解析,而不是从 dsh 安装目录,导致预设激活失败。
3. paper-scratch —— 预设插件(scratch-tool.js,约定在 scratch-core.js),注册 scratch 工具:在 os.tmpdir() 下按会话建目录,名为 paper-YYMMDD-<project-code>-<session>,还可再加一层标签子目录。宿主插件(scratch-cleanup.js)每六小时清扫该命名空间,删除超过 7 天的目录,跳过活跃会话。
4. cowork-title-badge —— 宿主插件(index.js),监听 session/title 事件,给预设为 cowork(内部 id)的会话标题加上 📑 前缀。服务商标题一落地就加,兜底标题等宽限期过后再加,用户手动改名不动,标题超长会截断以符合 80 字节上限。

cowork-preset/
├─ package.json # bundle manifest + plugin exports
├─ cordis.patch.yml # preset declaration + plugin rows
├─ index.js # host plugin: 📑 session title badge
├─ save-tool.js # preset plugin: registers cowork_save (no dsh imports)
├─ save-core.js # enforced archive/naming logic (pure)
├─ scratch-tool.js # 预设插件:注册 scratch 工具 ├─ scratch-core.js # scratch 命名 + TTL 清理逻辑(纯函数) ├─ scratch-cleanup.js # 宿主插件:7 天 scratch 清理定时器 ├─ assets/ # README 插图 └─ skills/ # 智能体安装技能("redskill")

cowork_save

cowork_save(filename, content | source_path, project_code?, subdir?)

- 确定归档文件夹:AI-Cooperate/(名称保持不变),或已存在的 AI-CoWork/、AI-Corporate/、ai-corporate/。如果同时存在多个候选,工具会拒绝执行,让智能体向用户确认——绝不猜测,也不合并。
- 打上本地日期(YYMMDD)和项目代码(由你提供,或根据工作区文件夹名确定性推导,例如 acme → Acm,shop-app → SA)。
- 清理文件名(空格/下划线 → -,移除禁用字符,不重复添加日期前缀),并追加 -2、-3……而不是覆盖原文件。
- 通过 source_path 复制二进制文件,支持可选的 subdir 分组。
- 感知 Git:当工作区位于 git 仓库内(包括链接的 worktree)时,归档文件夹会追加到仓库本地的 .git/info/exclude——幂等操作,绝不写入受跟踪的 .gitignore。工具结果会报告 gitignored: exclude | already | not-a-repo | failed。

结果示例:AI-Cooperate/261018-AoC-竞品调研.md

命名结构

scratch

scratch(project_code?, label?)

在操作系统临时目录下创建(并返回)会话的 scratch 目录:

$TMPDIR/paper-261018-AoC-1f2e/ # 日期 + 项目代码 + 短会话 id

- 用于临时脚本、中间数据和过程截图——不要用于交付物,也绝不要把 scratch 写进工作区(包括 .tmp/)。
- 可选 label 会添加子目录(例如 charts);路径穿越片段会被丢弃。
- 目录以 0700 权限创建,带有 .paper-scratch.json 归属记录,并由 scratch-cleanup.js 在其最新文件超过 7 天后删除——除非所属会话仍然活跃。
- 在目录过期前,用 cowork_save 把值得保留的内容复制到归档中。

工作区检测

保存前,cowork_save 会检查工作区:

- 从工作区根目录向上走到最近的 .git——普通克隆是目录,链接的 worktree 是文件——以此区分代码仓库和普通文件夹。
- 代码仓库(包括 worktree 和嵌套工作区):归档会加入仓库本地的 .git/info/exclude,让 git status 保持干净;scratch 始终位于系统临时目录,绝不进入仓库。
- 普通文件夹:完全不处理 git——没有 .gitignore,没有 exclude 文件,只有归档。仅仅包含*仓库的目录(例如 work/ 文件夹)仍视为普通文件夹。

Git 仓库

如果工作区位于 git 仓库中,第一次执行 cowork_save 时,还会把归档文件夹加入仓库的本地 .git/info/exclude:

Paper mode archive (local only)
AI-Cooperate/

- 只影响当前这个克隆,不会改动被跟踪的文件,队友也看不到 diff。
- 支持嵌套工作区(页面模式不锚定路径)和链接工作树(使用公共 git 目录)。
- 幂等:模式已存在时报告为 already。
- 已被跟踪的归档文件夹不会被悄悄取消跟踪——git rm -r --cached AI-Cooperate 仍需你手动决定。

自定义

所有内容都在 cordis.patch.yml 里:

- 预设的显示名称 / 描述 / 排序(name、description、order);
- 人格规则(归档文件夹、临时文件策略、边界);
- 工具集(在预设的 plugins 列表里增删行)。

注意:DSH 只本地化内置预设。自定义预设的 name / description 会原样显示,所以请只选一种语言(仓库自带英文版;中文版保留在 cordis.patch.yml 的注释里)。

这是给智能体的提示词级约定,加上给保存工具的文件系统级约定;它不是操作系统沙箱。Paper mode 和 Standard mode 共用同一套 DSH 工作区和权限模型。

兼容性

- 挂载了 @deepseek-ai/dsh-web-app 的 DeepSeek Harness Desktop / dsh 配置档(包含会话标题和智能体预设)。
- 标题徽标依赖会话标题服务(由随附的 Web 应用挂载);没有该服务时,只会跳过 📑 徽标。
- Claude Code / Codex / Cursor 不读取这个预设;这些工具沿用各自的约定。

许可证

MIT — 见 LICENSE。

中文说明

Paper mode 是给 DeepSeek Harness 增加的一个「非编码工作模式」:选中它,AI 只做调研、分析、报告、文档、图表、表格、数据处理这类工作,并遵守一套产物治理规则:

- 产物统一写入工作区的 AI-Cooperate/(文件夹名保持不变;已有的 AI-CoWork/、AI-Corporate/ 也会识别);在 git 仓库里第一次保存会自动写进 .git/info/exclude(只影响本机,不动被跟踪的 .gitignore),git status 保持干净;
- 文件名强制为 YYMMDD-项目代码-文件名,日期取系统时间,项目代码整场会话一致,重名自动 -2/-3,绝不覆盖;
- 过程文件(临时脚本、中间数据、截图)不进工作区:通过 scratch 工具放到系统临时目录,7 天后自动清理;
- 自动识别工作区:是 git 仓库就自动写 .git/info/exclude、过程文件不进仓库;是普通文件夹就只创建归档目录,不做任何 git 操作;
- 会话标题自动带 📑,侧边栏一眼区分分析会话和编码会话;
- 最关键:规则只活在模式里。没选这个模式,规则就不存在——所以编码会话完全不受影响。

安装:

dsh plugin --profile desktop add github:sevenhsu7/dsh-paper-mode

重启 DSH 后,在 设置 → Agent 预设 里会出现「Paper mode」,新建任务时选择即可。默认模式仍是 Standard。

如果想让 AI 帮你装,把 redskill.md 丢给你的 Agent,说「照这个装」。
预览分享卡片长什么样 ↓sevenhsu7/dsh-paper-mode
分享 · DeepSeek Harness Hub
sevenhsu7/dsh-paper-mode

为非编码工作自动归档产物并规范命名,保持工作区整洁

回到顶部