deepseek-harness
deepseek-ai
DeepSeek Harness: Everything is a Plugin.
meimiaoji-creator/meow-file-view
meow-file-view 解决「AI 改完文件,我却要切到 VS Code 才能看它到底改了什么」的问题。它把一个轻量文件查看器直接嵌进 DSH 对话窗:左侧目录树懒加载浏览工作区,右侧预览 Markdown(含 TOC / mermaid / 图片)、源码高亮、甚至直接编辑保存;模型每回合产出/修改的文件会以 chips 行挂在回合尾部,点一下直达该文件,命中 git 变更还能一键看 diff。 零 DSH 源码改动——独立 bundle,经 dsh 插件 --profile web add 装进 web profile,与官方插件平级共存。
PROJECT TOPICS
PROJECT README
dsh-plugin for DeepSeek Harness(DSH):在对话窗查看工作区文件——输入框「文件」按钮 + 右侧滑出面板,目录树 + 预览/源码/编辑 + 回合产物直达 + Git 差异视图。
meow-file-view 解决「AI 改完文件,我却要切到 VS Code 才能看它到底改了什么」的问题。它把一个轻量文件查看器直接嵌进 DSH 对话窗:左侧目录树懒加载浏览工作区,右侧预览 Markdown(含 TOC / mermaid / 图片)、源码高亮、甚至直接编辑保存;模型每回合产出/修改的文件会以 chips 行挂在回合尾部,点一下直达该文件,命中 git 变更还能一键看 diff。
零 DSH 源码改动——独立 bundle,经 dsh 插件 --profile web add 装进 web profile,与官方插件平级共存。
通过 dsh 官方插件管理器安装(profile = web):
dsh 插件 --profile web add github:meimiaoji-creator/meow-file-view
若你的 dsh 版本子命令为英文,等价写法:
dsh plugin --profile web add github:meimiaoji-creator/meow-file-view
本地开发调试(指向本仓库检出目录):
dsh 插件 --profile web add link:./
安装完成后,重启 dsh web 即可生效:输入框右侧出现「文件」按钮,设置弹窗多出 meow-file-view(Git 差异)配置节。
安装后会发生什么:插件向你的 dsh web profile 注册 3 条本地 HTTP 路由(查看器页面 / 静态资源 / 文件 API),并在对话窗 UI 注入 4 个界面元素(「文件」按钮、右侧面板、回合产物行、设置节)。它不会改动 dsh 本体、不装任何额外依赖、不发起任何外部网络请求。
node_modules / .git,可配置);树根自动跟随会话工作区。Ctrl+S 保存、Tab 两空格;保存走临时文件 + rename 原子替换,脏状态有关闭守卫。插件配置 edit: false 可整体关掉写入口。maxBytes)禁编辑,防止丢失未读入的尾部内容。png / jpg / jpeg / gif / webp / bmp / ico 直接在面板查看(20MB 上限,超限明确报错);svg 故意排除,避免同源脚本执行面。
.git,再确认 git 命令可用),文件有改动/未跟踪时 chip 长出 Diff 按钮 → 差异视图(工作区+暂存区 vs HEAD;untracked 文件全文按新增行渲染)。dsh 设置弹窗新增 meow-file-view 节:gitExePath(git 可执行文件路径兜底)与 repoRoots 覆盖表(工作区 ≠ 仓库根时逐行指定)。保存即生效,持久化到插件根 git-config.json,无需重启。
cordis.patch.yml 的 config 字段(全部可选):
| 字段 | 缺省 | 说明 |
|---|---|---|
root |
会话工作区 | 目录树根覆盖(相对工作区解析) |
maxBytes |
1048576(1MB) |
单文本文件读取上限(超限截断展示 + 禁编辑) |
exclude |
['node_modules', '.git'] |
目录树隐藏名 |
edit |
true |
是否允许浏览器端编辑并保存 md |
maxImageBytes |
20971520(20MB) |
单图片读取上限(raw 端点 + md 内嵌图片共用,超限 413) |
注意:
config显式给{}而非空值(空会解析成 null,插件 apply 会崩)。
本插件不向模型提供任何工具、不注入系统提示词——它纯粹是给人用的 UI。浏览器端通过同源 API 读写:
| 端点 | 方法 | 作用 |
|---|---|---|
/api/meow-file-view/tree |
GET | 单层目录列表(?workspace=&path=) |
/api/meow-file-view/content |
GET | 文本内容(附 editAllowed) |
/api/meow-file-view/root |
GET | 当前树根 |
/api/meow-file-view/raw |
GET | 图片字节直出(MIME 白名单 + 大小上限) |
/api/meow-file-view/save |
POST | 保存 md(config.edit 开关;原子替换) |
/api/meow-file-view/git/probe |
POST | 产物 git 状态探测(changed/untracked/unchanged) |
/api/meow-file-view/git/diff |
GET | 文件 vs HEAD 差异 |
/api/meow-file-view/git/config |
GET/POST | git 配置读写(设置页持久化) |
页面本身:/meow-file-view(自包含查看器)+ /meow-file-view/static/*(marked / highlight.js / DOMPurify / mermaid 随插件分发,磁盘读 + 穿越防护)。
maxBytes / maxImageBytes 上限约束,exclude 名单隐藏。.md 文件,拒绝 .git 内路径,临时文件写入 + rename 原子替换(edit: false 可整体关闭);git-config.json:设置页保存的 gitExePath / repoRoots。/meow-file-view、/meow-file-view/static/*、/api/meow-file-view/*(见上表,全部本地同源,无 CORS 暴露)。git --version / git status --porcelain / git diff HEAD(-c core.quotepath=false --no-color --no-ext-diff),且仅在产物探测命中后触发;不动用户的暂存区。ctx.webServer(inject: ['webServer'])。conversation.input.right(文件按钮)、shell.overlay(右侧面板)、conversation.chat.turnTail(产物行)、settings.section(Git 差异设置)。ctx.tools / ctx.systemPrompt 零调用)/api/meow-file-view/*,无 telemetry| 项目 | 要求 |
|---|---|
| DSH profile | 仅 web(强依赖 ctx.webServer) |
| DSH runtime | @deepseek-ai/cordis ^0.1.0 |
| 运行平台 | Node ≥ 22(与 dsh 自身要求一致),ESM only |
| Git 差异功能 | 可选:本机装了 git 才出现 Diff 按钮 |
inject 声明式服务注入)peerDependencies: @deepseek-ai/cordis ^0.1.0dsh.client.inject: @deepseek-ai/dsh-client-runtime、@deepseek-ai/dsh-client-ui-conversation、@deepseek-ai/dsh-client-ui-layoutstatic/ 分发,跑在面板 iframe 独立 window,与 dsh 主 SPA 零冲突本仓库是发布仓库(只含编译产物 lib/ + static/ + bundle 声明,不含 src 源码)。源码开发在内部 monorepo 进行;本仓库的使用方式:
npm install # 安装 devDependencies(typescript,仅类型检查用)
npm test # node --test(需 test/ 目录,发布仓库默认无测试文件)
改动 lib/ 内代码前请先在上游源码仓库改完重新编译,再同步产物过来。
MIT © meimiaoji-creator
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: 无有效分类标签。