description: "用 git 工作树快照把每个顶层轮次改动的文件记录为持久的 workspace/changes Session 事件;配置、仓库分档与覆盖规则。"
English | 中文
本插件把每个顶层轮次改动了哪些文件、每个文件的增删行数记录为 workspace/changes Session 事件。它在轮次开始和结束时用 git 对工作树做快照,比较两次快照,并补上 git 覆盖不到的文件工具编辑。Web 的改动文件卡片渲染该事件;模型看不到它。
正式提供的 Web bundle 挂载本插件。任何具备 subprocess 能力且 Host 上有 git 可执行文件的组合都可以挂载它:
- name: '@deepseek-ai/dsh-workspace-changes'
config:
maxFiles: 500
| 字段 | 默认值 | 含义 |
|---|---|---|
dshHome |
$DSH_HOME,其次 ~/.dsh |
Harness home,其 workspace-changes/ 目录存放影子仓库 |
timeoutMs |
30000 |
单条 git 命令允许运行的毫秒数,超时则放弃本轮记录 |
outputMaxBytes |
8388608 |
每条命令保留的 git 输出字节数,diff 列表更大时放弃本轮记录 |
maxFiles |
500 |
单个事件携带的最大文件数;total 仍报告完整数量 |
shadowExcludes |
.git/、.dsh/、node_modules/、构建与缓存目录 |
影子仓库的 info/exclude 模式 |
每个有工作目录且不是子代理来源的 Session 都会被记录;子代理 Session 不记录。工作目录位于 git 仓库内时,快照通过私有 index 写入该仓库的对象库,仓库自己的 index、工作树和 ref 保持不变,用户此前未提交的改动也不会进入摘要。工作目录不在任何仓库内时,快照写入 Harness home 下的影子仓库,其工作树就是该工作目录;shadowExcludes 模式代替缺失的 .gitignore,位于工作目录内的 Harness home 会被自动排除。工作目录内的嵌套仓库和 submodule 记录为 gitlink,其内部改动不会出现。没有 git 时——或者 macOS 上只有 /usr/bin/git 的开发者工具桩程序时——本插件不记录任何内容,并记录一次日志。
文件工具改动但快照覆盖不到的文件,由这些工具随结果持久化的 hunk 补入:匹配忽略模式的文件,以及仓库或影子工作树之外的文件。/tmp 与平台临时目录下的文件被排除,除非它们位于工作目录内。这些文件的行数按记录的 hunk 累加,因此同一轮内对一个文件的重复编辑可能把一行计算多次。快照覆盖范围之外通过 shell 命令做出的改动不会被记录。
每个文件携带持久的 path——位于工作目录内时为相对路径,否则为绝对路径——以及用于排序和标签的 display 路径:相对路径,仓库内位于工作目录之上的文件为 ../ 路径,家目录下的文件为 ~ 路径,其余为绝对路径。文件按 display 的码元顺序排序,因此上级路径和绝对路径排在工作目录自身文件之前。事件还携带两次快照的 tree id。
无,因为记录器只追加一条仅写日志、只有客户端读取的 workspace/changes 事件,不注册任何面向模型的内容。
这里的内容不会进入模型请求,因此不影响提供方缓存复用。
path 中保留原生分隔符;display 始终用斜杠分隔。