dsh-tokensaver
DSH port of pi-tokensaver: keeps the tokensave semantic graph fresh and teaches the agent to prefer its semantic tools
AI 분석
核心用途是提升 Agent 对本地项目语义索引的利用率。适合已安装 tokensave 命令行工具、需要进行智能代码或文档检索的用户。
설치
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:Miku196/dsh-tokensave挂载配置(默认零配置,不用改任何文件)
dsh-tokensaver 是 bundle 插件(自带 cordis.patch.yml 声明,安装后即注册)。安装后无需修改任何配置——cordis.patch.yml 里不需要(也不应该)出现 tokensaver 条目:
- ❌ 不要
insert同名条目——重复声明会导致 dsh 崩溃; - ✅ 工具调用自动跟随会话工作目录、向上找最近索引、全新目录自动 init(见下"索引定位")。
仅在特殊需求时(如 headless/无会话场景需要固定操作根),在 $DSH_HOME/profiles/web/cordis.patch.yml 里按 id 定位的 config override 覆盖:
- id: tokensaver
config:
binary: tokensave # 可执行文件路径或 PATH 上的命令名(默认)
cwd: /path/to/your/project # 可选:固定操作根(默认跟随会话工作目录)
autoSync: true # 默认:启动时 init(无索引)/ sync(有索引)
config是整体替换:未写出的字段回落到插件的 schema 默认值。 0.2.0 起仅支持 cli 直连,MCP 模式(bridge: "mcp"+ dsh-mcp-client 行)已移除。
保存后 dsh web 会自动热重载(无需重启)。新会话中模型即可调用 tokensave_search、tokensave_callers 等工具。
配置
| 字段 | 默认 | 说明 |
|---|---|---|
binary | tokensave | 可执行文件路径或 PATH 命令名 |
cwd | 跟随会话工作目录 | 可选固定操作根。不配时每次工具调用自动使用当前会话工作目录(exec.agent.session.header.cwd),无需手动指定 |
bridge | cli | 历史字段(仅 cli):0.2.0 起 MCP 模式已移除,填 mcp 会报错 |
autoSync | true | 启动时 init(无索引)/ sync(有索引,含祖先索引根) |
syncTimeoutMs | 600000 | 同步超时 |
callTimeoutMs | 120000 | cli 模式单次工具调用超时 |
updateCheck | true | 启动时查 crates.io 是否有 tokensave 新版本,有则告警 |
updateCheckTimeoutMs | 10000 | 更新检查网络超时 |
promptOrder | 150 | 提示词 section 顺序(工具指导带 100–199) |
gitignoreHygiene | true | 自动把 .tokensave/ 加进 .gitignore |
索引定位(零配置,不用为每个文件夹建索引)
tokensave 只在精确目录找索引(不向上/向下查找),而索引覆盖整个目录树。插件因此自动补齐:
- 每次工具调用跟随当前会话工作目录(
cwd未配置时):目录或其任意祖先已有索引(.tokensave/tokensave.db)→ 直接使用该索引根,任何子目录、任何盘符(如D:\geo与C:\...\项目)下工具都自动可用; - 全新目录(向上找不到索引)→ 首次调用时自动
tokensave init建索引; - 安全保护:主目录(
~)及其直接子目录(Desktop/Documents/Downloads 等)永不自动 init——在这些位置工具会给出明确提示,避免误索引整个主目录; ~/.tokensave(tokensave 的全局配置目录)不会被误判为项目索引。
任何失败都优雅降级:binary 缺失时只告警,不阻塞 profile 启动,也不注入提示词(避免模型调用不存在的工具)。
索引定位(零配置,不用为每个文件夹建索引)
tokensave 只在精确目录找索引(不向上/向下查找),而索引覆盖整个目录树。插件因此自动补齐:
- 每次工具调用跟随当前会话工作目录(
cwd未配置时):目录或其任意祖先已有索引(.tokensave/tokensave.db)→ 直接使用该索引根,任何子目录、任何盘符(如D:\geo与C:\...\项目)下工具都自动可用; - 全新目录(向上找不到索引)→ 首次调用时自动
tokensave init建索引; - 安全保护:主目录(
~)及其直接子目录(Desktop/Documents/Downloads 等)永不自动 init——在这些位置工具会给出明确提示,避免误索引整个主目录; ~/.tokensave(tokensave 的全局配置目录)不会被误判为项目索引。
任何失败都优雅降级:binary 缺失时只告警,不阻塞 profile 启动,也不注入提示词(避免模型调用不存在的工具)。