用 Lightroom 引擎走完照片筛选调色归档全流程
29.7/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/9/29 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/yxj1915/dsh-shejing.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 38 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 50 处,展示前 50 条)
- 写入本地文件src/index.mjs:81
await mkdir(SHEJING_HOME, { recursive: true }) - 写入本地文件src/index.mjs:82
await writeFile( - 读取本地文件src/index.mjs:140
`· 桥接入口:${BRIDGE_ENTRY} ${existsSync(BRIDGE_ENTRY) ? '✓' : '✗ 缺失'}`, - 读取本地文件src/index.mjs:141
`· 内置 .lrplugin:${BUNDLED_LRPLUGIN} ${existsSync(path.join(BUNDLED_LRPLUGIN, 'Info.lua')) ? '✓' : '✗ 缺失'}`, - 读取本地文件src/index.mjs:144
`· 授权 token:${TOKEN_FILE} ${existsSync(TOKEN_FILE) ? '✓' : '✗ 未生成(请在 Lightroom 里 Start Server)'}`, - 发起网络请求lib/client.js:87
const response = await fetch(url, { headers: { accept: 'application/json' } }) - 读取本地文件src/lr/install.mjs:59
return createHash('sha256').update(await readFile(file)).digest('hex') - 读取本地文件src/lr/install.mjs:67
entries = await readdir(dir, { withFileTypes: true }) - 读取本地文件src/lr/install.mjs:81
await stat(target) - 写入本地文件src/lr/install.mjs:139
await mkdir(backedUpTo, { recursive: true }) - 写入本地文件src/lr/install.mjs:143
await copyFile(targetPath, path.join(backedUpTo, name)) - 写入本地文件src/lr/install.mjs:148
await mkdir(destination, { recursive: true }) - 写入本地文件src/lr/install.mjs:150
await copyFile(sourcePath, path.join(destination, name)) - 写入本地文件src/lr/install.mjs:164
await mkdir(SHEJING_HOME, { recursive: true }) - 写入本地文件src/lr/install.mjs:166
await writeFile( - 读取本地文件src/skill.mjs:63
const source = await readFile(SKILL_BODY_URL, 'utf8') - 读取本地文件src/stages/index.mjs:85
return readdirSync(dir) - 读取本地文件src/stages/index.mjs:102
return JSON.parse(await readFile(file, 'utf8')) - 写入本地文件src/stages/index.mjs:660
await writeFile(excludeFrom, JSON.stringify(args.exclude), 'utf8') - 读取本地文件src/gate/index.mjs:162
return JSON.parse(await readFile(file, 'utf8')) - 写入本地文件src/gate/index.mjs:203
await mkdir(path.dirname(approvedParamsFile()), { recursive: true }) - 写入本地文件src/gate/index.mjs:204
await writeFile(approvedParamsFile(), `${JSON.stringify(this.#cache, null, 2)}\n`, 'utf8') - 读取本地文件src/version.mjs:19
const parsed = JSON.parse(readFileSync(PACKAGE_JSON, 'utf8')) - 发起网络请求src/routes.mjs:149
async fetch() { - 发起网络请求src/routes.mjs:165
async fetch() { - 发起网络请求src/routes.mjs:191
async fetch(request) { - 写入本地文件src/batches.mjs:53
await mkdir(dir, { recursive: true }) - 读取本地文件src/batches.mjs:59
return JSON.parse(await readFile(path.join(batchDir, 'manifest.json'), 'utf8')) - 写入本地文件src/batches.mjs:68
await writeFile(file, `${JSON.stringify(manifest, null, 1)}\n`, 'utf8') - 读取本地文件src/python.mjs:37
const info = await stat(target) - 读取本地文件src/python.mjs:39
await access(target, constants.X_OK) - 读取本地文件src/python.mjs:49
const info = await stat(full) - 读取本地文件src/python.mjs:51
await access(full, constants.X_OK) - 读取本地文件src/python.mjs:81
runtimes = await readdir(root, { withFileTypes: true }) - 读取本地文件src/python.mjs:90
files = await readdir(binDir) - 执行外部命令来自配置/变量src/python.mjs:128
const child = spawn(python.command, [scriptPath, ...args], { - 读取本地文件src/rules.mjs:33
await stat(target) - 读取本地文件src/rules.mjs:46
return JSON.parse(await readFile(file, 'utf8')) - 写入本地文件src/rules.mjs:57
await mkdir(SHEJING_HOME, { recursive: true }) - 读取本地文件src/rules.mjs:58
const seed = await readFile(SEED_RULES_FILE, 'utf8') - 写入本地文件src/rules.mjs:63
await writeFile(RULES_FILE, seed, 'utf8') - 写入本地文件src/rules.mjs:64
await writeFile(META_FILE, `${JSON.stringify({ seedHash, seededAt: new Date().toISOString() }, null, 2)}\n`, 'utf8') - 读取本地文件src/rules.mjs:68
const live = await readFile(RULES_FILE, 'utf8') - 写入本地文件src/rules.mjs:85
await writeFile(RULES_FILE, seed, 'utf8') - 写入本地文件src/rules.mjs:86
await writeFile(META_FILE, `${JSON.stringify({ seedHash, updatedAt: new Date().toISOString() }, null, 2)}\n`, 'utf8') - 读取本地文件src/rules.mjs:96
const before = await readFile(RULES_FILE, 'utf8') - 写入本地文件src/rules.mjs:109
await writeFile(RULES_FILE, after, 'utf8') - 读取密钥环境变量lrbridge/dist/token.js:5
return (process.env.LIGHTROOM_MCP_TOKEN_PATH ?? - 读取本地文件lrbridge/dist/tool-handler.js:26
const bytes = await readFile(result.file_path); - 发起网络请求src/client/index.js:84
const response = await fetch(url, { headers: { accept: 'application/json' } })
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 照片筛选
- 调色处理
- 归档全流程
摄鲸 shejing:一套完整的照片工作流,用于 DeepSeek Harness 和 Adobe Lightroom Classic,流程依次为检查 → 筛选 → 整理 → 调色 → 校验 → 归档 → 复盘,并设有强制确认关卡。
README
由 DeepSeek 最新模型翻译生成摄鲸(dsh-shejing)
一个 DeepSeek Harness 插件,用 Adobe Lightroom Classic 自己的渲染引擎与目录数据库走完一条完整照片工作流:体检 → 剔除 → 整理 → 调色 → 验收 → 归档 → 复盘。
整个设计只有一个目标:让每一次失误都变成下一次的规则,而不是变成下一次的返工。
English docs: README.md
为什么会有这个东西
这套流程是从真实事故里长出来的,不是从白板上。其中两次决定了今天的所有设计:
- 25 张照片被整批染成紫红。 一套曲线参数没做单张验证就直接上了整批。那条曲线的首点
落在 (0, y) 且 y ≠ 0,导致 Lightroom 的样条在红/蓝通道上严重发散。诊断加回滚花了十几轮。
- 先调色后剔除,白调了 28 张连拍重复帧。
所以这个插件里最硬的一条规则——任何新参数组合必须先在一张上渲染、由你亲眼看过后才能批量——不是提示词里的一句话,而是由钩子强制执行、并由 DSH 原生路由给你的确认。你可以同意;模型无法伪造你的同意。
展开完整文档(README 剩余 1 节)
摄鲸(dsh-shejing) 一个 DeepSeek Harness 插件,用 Adobe Lightroom Classic 自己的渲染引擎与目录数据库走完一条完整照片工作流:体检 → 剔除 → 整理 → 调色 → 验收 → 归档 → 复盘。 整个设计只有一个目标:让每一次失误都变成下一次的规则,而不是变成下一次的返工。 English docs: README.md 为什么会有这个东西 这套流程是从真实事故里长出来的,不是从白板上。其中两次决定了今天的所有设计: - 25 张照片被整批染成紫红。 一套曲线参数没做单张验证就直接上了整批。那条曲线的首点 落在 (0, y) 且 y ≠ 0,导致 Lightroom 的样条在红/蓝通道上严重发散。诊断加回滚花了十几轮。 - 先调色后剔除,白调了 28 张连拍重复帧。 所以这个插件里最硬的一条规则——任何新参数组合必须先在一张上渲染、由你亲眼看过后才能批量——不是提示词里的一句话,而是由钩子强制执行、并由 DSH 原生路由给你的确认。你可以同意;模型无法伪造你的同意。 七个阶段 | 阶段 | 工具 | 门禁 | | 体检 | shejing_checkup | —(只读) | | 剔除 | shejing_cull | 标记/移动门禁 | | 整理 | shejing_organize | 不可逆门禁 | | 调色 | shejing_grade | 新参数门禁 | | 验收 | shejing_verify | —(只读) | | 归档 | shejing_archive | 导出确认 | | 复盘 | shejing_retro | 写入确认 | 另有 shejing_doctor(自检)与 shejing_batch_status(读账本)。 体检做连拍分组、组内清晰度与曝光跨度、类型判定(连拍 / 包围曝光 / 疑似焦点堆栈 / 全景)、高光与黑场溢出统计,并生成 contact sheet。它完全不碰 Lightroom——跑在导入之前。 剔除在源文件夹里建 可导入/ 与 非导入/ 并移动文件——同盘 rename,瞬时且可逆。 原件永不删除。 调色提供三种内置风格(A 暖调电影感 / B 清透日系 / C 浓郁黄昏)或显式参数,逐张建快照并渲染预览给你看。 环境要求 - macOS(Windows 尚未验证) - DSH 桌面客户端(Electron 应用)或 dsh web - Lightroom Classic 开着,且已加载本插件自带的增效工具 - Node.js ≥ 18(DSH 自带)。不需要另装 Python——DSH 自带运行时里已有 Pillow 与 numpy 安装 用 DSH 桌面客户端的插件管理器,或者: dsh plugin --profile add dsh-shejing 插件把自己注册为 profile 的一层,并自带技能(skill),所以不需要软链接、不需要往 ~/.dsh/skills 里拷任何东西。 装完必须重启 DSH。 客户端模块的元数据会缓存到重启为止,只刷新页面不会加载浏览器半边。 第一次使用让模型调 shejing_doctor:它会报告 Lightroom 增效工具是否已同步、授权 token 是否存在、桥接端口是否在监听。 安全模型 - 未经你同意不改任何东西。 体检与验收只读。 - 只标记,不删除。 非导入/ 永久保留;删原件是你的决定,永远不是工具的决定。 - 永不写 .lrcat。 Lightroom 目录数据库只读,而且只读副本。所有改动都走 Lightroom 自己的 API。 - 永不写 ProcessVersion(那会降级照片)。 - 参数门禁没有越权开关。 验证过的参数组合会进白名单,所以同一套风格不会问你第二次。 兼容性 内置的 Lightroom 桥接是 @pired/lightroom-mcp 的 fork(MIT,上游 Automaat/lightroom-mcp),带两处修复:本地化色标名、以及 create_collection 真正使用 parent 参数。 详见 THIRD-PARTY-NOTICES.md。 开发 node scripts/build-client.mjs # 构建浏览器半边(不需要任何打包工具链) node scripts/test.mjs # 插件注册面 + 全部门禁路径 + Python 侧测试 node scripts/regression.mjs # 真实批次的端到端回归(75 张约 15 分钟) scripts/regression.mjs 驱动的是真实工具实现,所以覆盖到参数翻译、路径解析、账本写入,而不只是 Python 脚本。它要求设置 DSH_HOME,以免写进你真实的 ~/.dsh。 设计取舍与理由见 docs/DESIGN.md。 许可 MIT,见 LICENSE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
yxj1915/dsh-shejing
用 Lightroom 引擎走完照片筛选调色归档全流程
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,359已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,514已汉化DSH
71.8
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,289已汉化DSH
71.6
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 92,675已汉化DSH
71.2
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,522已汉化DSH
71
这是你的仓库?认领条目