把编辑器里选中的代码行作为引用插入对话草稿
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
相关生态插件(非 dsh 原生,按其对应运行时安装)
git clone https://github.com/pandarayc/dsh-editor-context.git状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:仅索引
是什么
生态应用
桌面端 / Web 外壳,不以 dsh plugin add 安装
装得上吗
本站尚未做安装检查
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 11 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件发起外部网络请求
查看扫描证据(共 14 处,展示前 14 条)
- 读取本地文件lib/index.js:88
const info = await stat(file); - 读取本地文件lib/index.js:97
names = await readdir(dir); - 读取本地文件lib/index.js:107
const info = await stat(candidate); - 发起网络请求lib/client.js:100
const response = await fetch(ENDPOINT, { signal, cache: 'no-store', credentials: 'same-origin' }); - 发起网络请求lib/client.js:379
const response = await fetch(`${NEXT_ENDPOINT}?since=${String(since)}`, { - 发起网络请求lib/client.js:472
const response = await fetch(EDITORS_ENDPOINT, { - 发起网络请求lib/client.js:493
const response = await fetch(`${ENDPOINT}?pid=${encodeURIComponent(option.id)}`, { - 读取本地文件lib/state.js:43
return parseWindowState(JSON.parse(await readFile(path, 'utf8'))); - 写入本地文件lib/log.js:42
ready ??= mkdir(dirname(file), { recursive: true }).catch(() => undefined); - 读取本地文件lib/log.js:46
const info = await stat(file).catch(() => undefined); - 写入本地文件lib/log.js:47
if (info !== undefined && info.size > MAX_BYTES) await writeFile(file, '', 'utf8'); - 写入本地文件lib/log.js:49
await appendFile(file, line, 'utf8'); - 读取本地文件lib/registry.js:106
names = await readdir(endpointsDir(stateDir)); - 读取本地文件lib/registry.js:115
raw = JSON.parse(await readFile(join(endpointsDir(stateDir), name), 'utf8'));
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-editor-context
English ·
把「你正在 Cursor / VS Code 里看的那几行」变成 DSH 输入框里的一张 chip。
在输入框打 @,选编辑器位置,chip 落进你的草稿。发出去,模型收到文件与行区间:
@/data/project/qihuan/hallsrv/internal/logic/logic_purchase/limit.go#L146-L154
这就是全部功能。位置之所以进入对话,是因为你把它写进了自己的句子——没有任何东西在你背后注入——所以不需要编号去区分,不需要开关去关闭自动注入,也没有任何配置。
你自己打出来的引用,不需要这些。
前置
- DSH,跑 web profile(dsh web)
- 编辑器半边:Editor Context,市场里的 pandarayc.editor-context-bridge (链接), 0.5.0 以上。它负责写 ~/.editor-context/windows/.json,并在 ~/.editor-context/endpoints/ 里公布本插件要拨的 WebSocket。
展开完整文档(README 剩余 1 节)
dsh-editor-context English · 把「你正在 Cursor / VS Code 里看的那几行」变成 DSH 输入框里的一张 chip。 在输入框打 @,选编辑器位置,chip 落进你的草稿。发出去,模型收到文件与行区间: @/data/project/qihuan/hallsrv/internal/logic/logic_purchase/limit.go#L146-L154 这就是全部功能。位置之所以进入对话,是因为你把它写进了自己的句子——没有任何东西在你背后注入——所以不需要编号去区分,不需要开关去关闭自动注入,也没有任何配置。 你自己打出来的引用,不需要这些。 前置 - DSH,跑 web profile(dsh web) - 编辑器半边:Editor Context,市场里的 pandarayc.editor-context-bridge (链接), 0.5.0 以上。它负责写 ~/.editor-context/windows/.json,并在 ~/.editor-context/endpoints/ 里公布本插件要拨的 WebSocket。 安装 dsh plugin --profile web add github:pandarayc/dsh-editor-context 或者用本地检出: dsh plugin --profile web add /path/to/dsh-editor-context 然后重启 dsh-web —— 插件在进程启动时加载 包还没发到 npm,所以 dsh plugin --profile web add dsh-editor-context 现在解析不了;在发之前用上面的仓库形式。 用法 在输入框打 @,菜单里会多一组编辑器位置,只有一行——你现在在哪: @ ├─ 编辑器位置 │ limit.go:146-154 hallsrv/internal/logic/…/limit.go └─ reference src/… tests/… … 选中后 chip 落进草稿,是你句子的一个词:可以放在句子中间、可以改、可以删、可以不发——它就是普通的草稿文本。回放历史里它同样是 chip。 chip 显示的是短标签(limit.go:146-154),但模型收到的是完整 token:发送前每个引用都会经其属主的 codec 展开,所以模型拿到的是能直接打开的地址,不是一个标签。 | 你插入的 | 模型收到的 | | @<绝对路径>#L146 | 光标停在第 146 行 | | @<绝对路径>#L146-L154 | 选中了 146-154 行 | 模型拿到的是绝对路径:状态文件里的 relativePath 相对于编辑器工作区,和 agent 的工作目录通常不是一回事,read 打不开。 为什么用 #L:DSH 自带的文件规则把 @ 后面到空白之前的一切当作路径,所以 @path:12-34 会被它连冒号一起吞进路径,变成两条规则争同一段文本。# 不在那个语法里,这个 token 的归属因此是明确的;而 #L 又是模型从代码托管平台早就熟悉的行号写法。 从编辑器直接发,不用切窗口 同一个位置也可以在 Cursor / VS Code 里送出来:编辑器标题栏上的 Add to Bot。 点下去 chip 就出现在你的草稿里,所以你可以连着指三处,然后用一句话一起问。 Cursor:在 limit.go:146-154 上点 Add to Bot ↓ 扩展通过自己的 WebSocket 推一帧 delivery ↓ 本插件已经连着,同一 tick 收到 ↓ 你打开的标签页上挂着一个 parked 长轮询,它醒来并插入 DSH 输入框:[limit.go:146-154] ← 已在草稿里,未发送 扩展是 WebSocket 服务端,本插件是客户端。这个方向不是随便定的:Node 自带 WebSocket 客户端但不带服务端,所以需要依赖的那一半正好是住在 VSIX 里的扩展——这也是本插件至今一个依赖都没有的原因。 两跳都不是定时器。编辑器推送;插件的长轮询一直挂着,直到有东西要交给浏览器。空闲会话是一个打开的 socket 加一个挂起的响应,不是每秒一次请求。 投递里除了地址和行区间还带文本。投递是快照不是指针:指针在文件被编辑、移动、回滚的那一刻就失效了,然后 agent 在推理已经不存在的代码。 配置 - id: editor-context name: dsh-editor-context config: stateDir: "~/.editor-context" # 编辑器扩展发布状态的目录 maxAgeSeconds: 3600 # 超过这个时间的读数视为过期 http: false # 关掉整个功能 httpPath: /editor-context/position 插件在 DSH 的 web server 上挂三条只读路由——GET /editor-context/position(当前读数)、 GET /editor-context/next(长轮询)、GET /editor-context/editors(连上了哪些编辑器窗口),浏览器半边靠它们拿读数。返回的是地址与行区间,不含文件内容。被扩展 excludeGlobs 排除的路径返回 404——排除规则不会泄露它本想藏起来的那个路径。 这些路由在 DSH 的 SPA 兜底之前匹配,因此不额外鉴权。它的定位是本机(默认如此); http: false 可以整个去掉。 排查 | 现象 | 查什么 | | 打 @ 没有编辑器位置这一组 | cat ~/.editor-context/windows/.json——没有文件说明扩展没装或没激活 | | 有这一行,但位置是旧的 | 读数超过了 maxAgeSeconds;在编辑器里动一下光标 | | 某些文件里没有这一行 | 命中扩展侧的 editorContext.excludeGlobs。这是有意为之:连路径都不发布 | | 完全没反应 | curl -s http://127.0.0.1:3080/editor-context/editors——没有行说明没有编辑器连上;refused 状态会写明原因 | 已知限制 - 路径含空格需要引号形式:@"a b.go"#L12。解析规则支持,候选列表目前还产不出这个形态。 - 点 chip 不会跳回编辑器。 编辑器扩展只写文件,没有反向通道。 - 排除规则在扩展侧配置,不在这里。插件自己没有任何规则,也不需要:它只能提供扩展愿意发布的东西。 目录 lib/state.js 位置文档:一套 schema,一个解析器 lib/registry.js host:哪些编辑器窗口在公布端点、在哪 lib/link.js host:每个窗口一个订阅者,按 registry 对账 lib/subscribe.js host:拨通某个编辑器窗口的 WebSocket 客户端 lib/deliveries.js host:那条 socket 与浏览器之间的队列 lib/http.js host:三条只读路由,纯函数、可单测 lib/index.js host:挂路由 + token 语法提示段 lib/client.js 浏览器:@ 候选源 + UserText 规则 + chip 组件 + 把编辑器送来的位置插进草稿的 intake 这是双面包:host 半边跑在 DSH 进程里,浏览器半边由 DSH 的 client module 系统按 dsh.client 声明喂给页面。浏览器半边是手写的、没有构建步骤,只 import 了 react;跨包一律走 cordis service(ctx.inputTriggers / ctx.uiConversation / ctx.slots)。 npm test # 82 passed 七个文件:test/editor-context.test.mjs(读取端、配置、apply 到底注册了什么)、 test/http.test.mjs(三条路由与浏览器载荷)、test/deliveries.test.mjs(队列)、 test/subscribe.test.mjs(socket 客户端,对着假 socket)、test/registry.test.mjs 与 test/link.test.mjs(发现与成员对账)、test/client.test.mjs(加载真实 bundle,用假的 window.__ModuleLoader__ 与 require,断言的是要发出去的字节)。 关于「为什么这个插件不可能往对话里塞东西」「它以前塞过什么」,以及客户端那三个容易踩的点:docs/internals.md。 License MIT
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
pandarayc/dsh-editor-context
把编辑器里选中的代码行作为引用插入对话草稿
相关插件 · 其他
模型破甲清洗HunYiSage/dsh-purge
⚔️ DeepSeek Harness 网络安全红队工具dsh-purge
★ 16,993已汉化DeepSeek 客户端
73
女娲蒸馏alchaincyf/nuwa-skill
输入名人名字,提炼其思维模型与决策方式供你调用
★ 37,308已汉化DSH
72
逆向分析桥接Fanqi89/dsh-rea
REA(Reverse Engineer Anything)MCP 桥接,用来把 REA 逆向工具接入 DSH 插件
★ 51已汉化DSH
72
语音女友beiyege-01/dsh-voice-ai-girlfriend
语音 AI 女友Voice AI girlfriend for DeepSeek Harness:Whisper…
★ 888已汉化DSH
71.6
红队越狱测试套件Minglink/dsh-infinite-gen-5
DeepSeek v4.1 flash 逆向工具无限五代 求 Star 收藏 ⭐欢迎大家提交项目的改进
★ 3,759已汉化DSH
71.4
协同办公空间dream-num/univer-workspace
一个让人类与 AI Agent 共同创作、协作和审阅的开源 Office 工作空间。
★ 2,269已汉化DSH
70.8
这是你的仓库?认领条目