让 bash 看过的文件也能直接编辑,免去重复读取
29.9/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/14 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add ruaibeite/dsh-auto-observe该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · dev
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 19 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🟢 扫描:未发现敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描未发现敏感能力:最多只发网络请求、读取自身元数据或只读文件,未发现执行命令、文件写入或敏感信息读取。
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
当智能体从未用过 read 工具时(bash 查看不算),把编辑目标的当前版本记为一次观测,这样 fs 观测策略就不再以 FS_NOT_OBSERVED 拒绝编辑。
README
由 DeepSeek 最新模型翻译生成@ruaibeite/dsh-auto-observe
让「用 bash 看过、没用 read 工具读过」的文件也能编辑——修掉反复出现的
Error: cannot modify "…/index.vue": file has not been read — read the file, then retry
这个报错为什么会一直出现
dsh-fs-observation-policy 要求模型先读后改,而只有少数通道会登记观察记录:
| 通道 | 是否登记观察 |
| read 工具(含 offset/limit 分段读) | ✅ |
| 成功的 write / edit | ✅ |
| 读图片 | ✅ |
| bash:sed -n、awk 'NR>=…'、cat、python3 - <<PY | ❌ 不登记 |
而模型查代码时恰恰习惯用 bash。
展开完整文档(README 剩余 1 节)
@ruaibeite/dsh-auto-observe
让「用 bash 看过、没用 read 工具读过」的文件也能编辑——修掉反复出现的
Error: cannot modify "…/index.vue": file has not been read — read the file, then retry
这个报错为什么会一直出现
dsh-fs-observation-policy 要求模型先读后改,而只有少数通道会登记观察记录:
| 通道 | 是否登记观察 |
| read 工具(含 offset/limit 分段读) | ✅ |
| 成功的 write / edit | ✅ |
| 读图片 | ✅ |
| bash:sed -n、awk 'NR>=…'、cat、python3 - <<PY | ❌ 不登记 |
而模型查代码时恰恰习惯用 bash。实测一个真实会话的日志:1186 次 bash 对 114 次 read,其中 4 次编辑被拒,全部发生在「此前只有 bash 看过、read 次数为 0」的文件上:
| 被拒的文件 | 失败前的 read | 失败前的 bash(读过它) |
| docgen-ubuntu/README.md | 0 | 5(cat >>、sed -n) |
| web/.../clue/unassigned/index.vue | 0 | 28(awk 'NR>=168…'、python 脚本) |
| web/.../attachment/ClueAttachmentDialog.vue | 0 | 5(awk 'NR>=210…') |
也就是说:内容明明看过,只是看的通道不算数。模型随后只能「再读一次、重试」——每次多一个来回,长会话里反复发生。
它做什么
在 fs/edit-intent / fs/write-intent 这条 waterfall 上前置一个监听器(必须 prepend:策略的监听器不调用 next(),排在它后面就永远轮不到),规则只有三条:
1. 自己也监听 fs/observed,维护一份与策略同构的镜像账本(会话对象 → targetKey)。
目标已有记录 → 什么都不做,直接交回 waterfall:所以「文件在你读过之后被改过」的 FS_STALE_VERSION 保护原样保留,不会因为本插件而消失。
2. 目标没有记录时,用 ctx.fs.stat 取一次真实版本,然后按 read 工具的做法发出 fs/observed:存在 → {kind:'present', version},不存在 → {kind:'absent'}。
策略于是看到「刚读过」,返回正常的版本守卫。
3. 不是普通文件、拿不到会话归属(actor.agent.session 缺失)、stat 抛错 —— 一律不插手,原样交回。无归属时策略本来也不放行,替它决定就成了伪造。
代价,说清楚
模型可能确实没有看过内容(只是知道文件存在)。本插件记下的观察是关于文件的事实 (它此刻的真实版本),而不是「模型看过它」这个断言——放宽的是策略对「已读」的解释。
- edit(锚定替换)默认开:替换仍必须逐字匹配当前内容,匹配不上就失败,这层兜底还在;过期的 CAS 基准也不再被覆盖(见第 1 条)。
- write(整文件覆盖)默认关:盲覆盖没有逐字匹配兜底,一开就等于放弃「先读后写」这层保护。真要开就显式写 writes: true,并且知道自己在放弃什么。
- 每次介入都会打一行日志(默认开),安全放宽不该是无声的。
一个已知边界
镜像账本从本插件加载时开始记录。正常路径下这没有问题:插件要重启 Harness 才生效,而重启会同时清空策略的内存账本,两边都从零开始、不会错位。唯一的例外是在已经读过若干文件之后 才热启用本插件(例如在插件页里打开它)——那时这些文件的旧记录不在镜像里,本插件会为它们补登记一次当前版本,等于把这一次的过期判定放宽了。重启一次即回到同步状态。
安装
./install.sh # 装进 desktop profile(默认)
PROFILE_NAME=web ./install.sh # 装进别的 profile
装完重启 Harness(宿主插件不像客户端插件那样热重载)。确认挂载:
dsh --profile desktop --dump-config | grep -A3 fs-auto-observe
与 @deepseek-ai/dsh-fs-local + @deepseek-ai/dsh-fs-observation-policy + @deepseek-ai/dsh-tool-fs 组合使用;没有策略时它只是多一次 stat,不改变任何写入语义。
开发
node test/contract.mjs # 零依赖契约测试
测试用忠实复刻的 waterfall 与策略逻辑(逐字对照线上实现:队列 shift 语义、异步监听器、 WeakMap<owner, Map<targetKey, record>> 账本、editIntent 的三种结果),覆盖:
- 基线复现:不装插件时,未读编辑确实被拒(就是你看到的那条报错);
- 装上后同一场景放行,且断言「登记发生在策略裁决之前」;
- 已有记录时零干预(stat 调用次数为 0);
- 过期场景下策略仍拿旧版本当 CAS 基准(保护未被削弱);
- 无会话归属不伪造、缺失目标登记为 absent、非普通文件与 IO 失败原样交回;
- prepend 注册位置、writes/edits/log 三个开关。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
ruaibeite/dsh-auto-observe
让 bash 看过的文件也能直接编辑,免去重复读取
相关插件 · 开发 / 工程
隐私简历生成器reactive-resume/reactive-resume
Reactive Resume 已迁至 GitHub 上的…
★ 45,125已汉化MCP
71.7
AI 架构文档生成器sopaco/deepwiki-rs
🚀 Litho 已进化为 Terrain —— 给你的 AI 智能体一张会呼吸的代码库地图。
★ 3,157已汉化DSH
70.8
长时任务执行闭环AMAP-ML/LongHorizon-Harness
面向 Computer-Use Agent 的 Loop Engineering
★ 1,764已汉化DSH
70.5
AI 编程纪律方法包GanyuanRan/Aegis
让 AI 编程 agent 变得可信:少返工、更安全、说“完成”前先给证据。
★ 1,384已汉化DSH
69.6
多代理编排运行时Enderfga/claw-orchestrator
面向编程智能体的运行时。把 Claude Code、Codex、Antigravity、Grok…
★ 586已汉化MCP
69.4
记忆进化插件csyangwen/dsh-memory-evolve
dsh-memory-evolve 使用场景指南
★ 461已汉化DSH
67.9