Files
deepseek-harness/packages/fs
sjw1231 14d3e53c19 feat(fs): ship apply_patch on and the observation policy off
Evaluation on the shipped compositions decided the defaults: the `dsh-base`
`tool-fs` row and the Web `standard` preset enable apply_patch, keeping the
SDK and Desktop `standard` tool sets equal (the SDK PTC overlay keeps the
base row while the Desktop PTC preset lists its own, which the parity
exceptions record); the `fs-observation-policy` row ships `disabled: true`,
so write, edit, and apply_patch mutate unconditionally in every profile, and
the package is classified as an optional product package.

The write and edit guidance stops citing the policy as the default and the
apply_patch guidance asks for enough hunk context instead of a prior read.
The two recordings that capture a policy refusal re-enable the row through a
per-scenario runtime.cordis.yml; the fixed-budget compaction scenarios pin
`applyPatch: false` so their recorded thresholds hold; every other sidecar
and recorded header follows. An upgrade guide records the default change.
2026-10-29 18:36:52 +08:00
..

description, kind
description kind
The filesystem package group: the ctx.fs provider contract, local and sandbox-enforcing backends, the read-before-edit policy plugin, and the model-facing file and search tools. package-group

packages/fs

English | 中文

Summary

The fs/ group gives agents durable, policy-governed access to files: the ctx.fs service contract in fs/, the host-filesystem and sandbox-enforcing backends in fs-local/ and fs-sandbox/, the read-before-edit policy in fs-observation-policy/, and the model-facing tools in tool-fs/ (read, read_image, write, edit, apply_patch) and tool-fs-search/ (glob, grep). A deployment mounts one backend, loads the policy for freshness-guarded mutations, and registers the tool packages the model should see; backends swap without touching the tools or the policy. File I/O takes no timeout by design: a deadline would kill work the OS still finishes, so cancellation is a best-effort signal at syscall boundaries.

Table of Contents


Packages

The packages below provide filesystem access and patch parsing; the subsystem reference owns the exhaustive contracts and the error taxonomy.

Package Role ctx key
fs/ ctx.fs service contract: execution-world paths, bounded text I/O, and atomic mutations with an optional version guard ctx.fs
fs-patch/ Pure Codex-style patch parsing and hunk application none
fs-local/ Host-filesystem backend: reads, writes, edits, patches, deletes, and moves real files on the local machine registers on ctx.fs
fs-sandbox/ Sandbox-enforcing backend: fences every mutation by the per-call sandbox mode while reads pass through registers on ctx.fs
fs-observation-policy/ Read-before-edit policy: records observed presence or absence and guards mutations through the fs/* events fs/* listeners
tool-fs/ Model-facing read, read_image, write, edit, and apply_patch tools plus their executor registers on ctx.tools
tool-fs-search/ Model-facing glob and grep discovery tools backed by the packaged ripgrep binary registers on ctx.tools
tool-str-replace-editor/ Standalone str_replace_editor tool: view, create, str_replace, and insert over ctx.fs registers on ctx.tools

The policy is a plugin, not a service the tools inject: removing it leaves the bare provider's unconditional mutation behavior instead of breaking the tools. The mode fence in fs-sandbox and the read-before-edit gate compose. tool-fs-search deliberately does not extend the provider contract — search is a process-backed ripgrep workflow, so filesystem backends stay free of a universal search API.


Start with the subsystem reference for the shared vocabulary and error taxonomy, then the decisions that shaped the family.

Dev Note

Working context for maintainers — click to expand

None.