WeKnora
Tencent
Open-source LLM knowledge platform: turn raw documents into a queryable RAG, an autonomous reasoning agent, and a self-maintaining Wiki.
PROJECT TOPICS
INSTALL REFERENCE
dsh plugin --profile web add github:dkjsiogu/dsh-file-path
该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。
PROJECT README
A DeepSeek Harness (dsh) plugin that lets the Web composer accept files and
folders the built-in attachment path does not support — PDFs, archives, Office
documents, large files, whole directories — by inserting their absolute
paths as plain text instead of uploading them as message attachments.
This is a community plugin. It is not an official DeepSeek plugin and is not affiliated with or endorsed by DeepSeek.
dsh's version-one attachment path accepts PNG, JPEG, WebP, and GIF only.
Dropping a PDF into the composer currently announces "only images are
supported" and drops the file. Browsers do not expose the absolute host path of
a dragged File for security reasons, so a web page cannot read the path out
of the drag event — even when the page is served by a local CLI.
dsh-file-path recovers the original path using the local dsh host itself:
filePathBridge/resolvePath RPC on the dsh process.~ by default) for a same-name, same-size, same-hash file and returns its
original absolute path. Nothing is copied or written.A paperclip button in the composer tool row also opens a dialog for manually typing an absolute or workspace-relative path.
Pack and install the built tarball:
npm run build
npm pack
dsh plugin --profile web add ./dsh-file-path-0.1.x.tgz
Or install a published version:
dsh plugin --profile web add dsh-file-path
Or install from git (the prepare script builds the artifacts; pnpm ≥10 asks
you to allow that build once, and dsh prints the exact allowBuilds snippet):
dsh plugin --profile web add github:<you>/dsh-file-path#<commit-sha>
Then boot dsh web as usual:
dsh --profile web --port 3080
The Web profile already contains the Web app bundle. For a custom profile, make sure
@deepseek-ai/dsh-web-appis indsh.profile.bundlesbeforedsh-file-path.
The bundle patch inserts one host row. Override its config in the profile's
cordis.patch.yml or any later layer:
- id: file-path
config:
importSubdir: .dsh-files # fallback copy location
maxFileBytes: 104857600 # decoded bytes per fallback import
searchRoots: # original-path search roots
- '~'
# - /mnt
searchMaxEntries: 50000 # directory entries visited per lookup
searchSkipNames: # directory basenames skipped
- .git
- node_modules
- .npm
- .cache
- .dsh
- .Trash
maxResolveBytes: 4294967296 # max file size for hash lookup
searchRoots entries must be absolute or start with ~. The session
workspace is always searched first. Symlinks are not followed.importSubdir must be one relative segment (no /, \, ..). Invalid
values fail the plugin load loudly.searchMaxEntries bounds traversal and
maxResolveBytes bounds the hashed candidate size.lib/index.js): a self-contained Cordis service registered as
ctx.filePathBridge. It registers strict Typert Remote descriptors for
filePathBridge/resolvePath, filePathBridge/importFile, and
filePathBridge/describe, so wire input is schema-validated on both sides.
resolvePath walks the search roots for a content-identical file and returns
its absolute path. importFile is the explicit fallback: it writes the
decoded base64 payload below importSubdir with a
temporary-file-plus-rename publication path.lib/client.js): a dsh.client module that mounts the
three Remote methods, registers locale dictionaries, and contributes a small
control to the conversation.input.right slot. Capture-phase document
listeners take over drops and file-only pastes that contain a non-image;
all-image batches pass through untouched, images inside a mixed batch are
re-dispatched to the default composer listener, and a synthetic dragend
resets the default drop overlay.resolvePath only reports the path of a file whose exact bytes the browser
already sent as the lookup digest; it never writes and never returns a path
that does not match the dropped content.importSubdir; path
traversal through the file name is stripped./api/filePathBridge/*.Requires Node >=22.19.
npm install
npm run check # typecheck + tests + build
npm test # host service and composer control tests
npm pack # built tarball
The build script (scripts/build.mjs) emits the ESM host half and the
window.__ModuleLoader__.load CJS-factory browser half; tsc emits the
declaration files under lib/types.
CLASSIFICATION EVIDENCE
系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: file-attachments。