dsh-ai-indexer:受 token 预算约束的 AI 项目索引

前言

在 DeepSeek Harness(DSH)里做智能体或插件开发,常见做法是每一轮对话都让模型重新读大量源码,上下文很快被占满,模块边界、对外契约和已知风险也难以在会话之间保持一致。手写一份项目说明又容易和代码脱节,维护成本高。

dsh-ai-indexer(维护者 cute-gugu,社区分类:记忆)面向上述问题:从源码注释派生索引,把全量信息留在磁盘,只把压缩后的快照按硬 token 上限注入对话;支持增量扫描与交付后复盘。索引事实来源是源码里的 @ai: 标记,插件不修改任何源码。

这是什么

一句话定位:给 AI 一份受 token 预算约束的项目索引,而不是每个会话重新读完整个代码库。

仓库:cute-gugu/dsh-ai-indexer
目录页:skillhub.cn 插件页

核心功能

下面按 README 归纳的四块能力说明(版本 0.1.0,MIT 许可证)。

增量扫描

只看改动过的文件,把项目折叠成「模块 + 契约 + 风险」三张表。没有 @ai: 标记的文件会按目录自动归组成模块,仍能得到结构图。

受控注入

全量索引写在 .ai-index/index.json 等文件,不占对话上下文。插件生成 .ai-index/snapshot.md,按 meta.json 里的 snapshotBudgetTokens(默认 1200)等配置裁剪后,可选前置进模型提示词。

交付后复盘

本轮改动完成后,通过工具 ai_index_review 或命令 /ai-index review 触发;走宿主原生问答卡片提问,结论追加到 .ai-index/decisions.json,可查、可审计。复盘由工具触发,而非交付钩子,避免每轮交付强制多跑一轮模型。

避免重复造轮子

动手实现通用设施(配置、事件总线、序列化、UI 基类等)之前,可用 ai_index_wheel 做轮子检索,并可回写检索结论做缓存。

标记规范

在任意语言的源码注释中写入下列标记(插件按注释语法抓取):

标记 作用
@ai:module <名字> 文件归属模块;省略时按目录自动归组
@ai:status done\|wip\|planned\|blocked\|deprecated\|frozen 模块状态,进进度看板
@ai:contract <说明或 函数名()> 对外承诺;函数名会与源码符号核对,不一致则报风险
@ai:risk <一句话> 已知风险,进风险面板
@ai:note <一句话> 给下一位读者的说明
@ai:deps <名字或相对路径> 依赖项;相对路径在磁盘上不存在时会告警
@ai:ref <项目或链接> 同类实现或参考来源
@ai:ecosystem <标签> 生态标签,用作轮子检索关键词
@ai:owner <子系统或人> 归属

示例(Lua):

--[[
@ai:module OptionsPanel
@ai:status wip
@ai:contract 输出:RegisterOption() 入参:table
@ai:risk 界面缩放未兼容多分辨率
@ai:ref PigOptions
]]

示例(JavaScript):

/**
 * @ai:module auth/token
 * @ai:status done
 * @ai:contract 输出:issueToken(userId) verify(token)
 * @ai:deps ./storage
 */

安装与启用

官方 README 给出的安装方式如下(请将路径换成本地 clone 或解压后的目录绝对路径):

dsh plugin --profile <profile> add link:<本目录绝对路径>

也可在本仓库工作区里用 harness 的 plugin_manager 安装 install_bundle,目标填本目录。

安装后重启或热载一次宿主。左侧栏会出现「项目索引」入口,设置 → 插件里也会多一页。

典型用法

模型可调用的工具

工具 用途
ai_index_scan 扫描或增量更新索引;改模块接口、状态或依赖后应调用
ai_index_query 按模块名或关键词查模块、符号、契约、风险、依赖
ai_index_review 交付后复盘,走原生问答卡片
ai_index_wheel 通用设施动手前的轮子检索;可回写检索结论做缓存

人工命令

/ai-index scan      # 扫描
/ai-index status    # 看状态
/ai-index review    # 复盘说明

设置 → 插件 → 项目索引,或左侧栏图标,可打开完整面板:指纹、模块表、风险面板、变更切片、快照预览、复盘结论。

产生的文件

文件 谁写 会不会进对话
.ai-index/meta.json 只有你 否
.ai-index/index.json 插件 否
.ai-index/snapshot.md 插件 是(只有稳定段)
.ai-index/master.md 插件 需要时读
.ai-index/cache.json 插件 否
.ai-index/decisions.json 插件(追加) 否
README.md 里的 <!-- ai-index:sync --> 区块 插件 否

第一次扫描时创建 meta.json,之后永不覆盖;你对它的修改是权威的。常用开关示例:

{
  "enabled": true,
  "injectSnapshot": true,
  "snapshotBudgetTokens": 1200,
  "snapshotTemplate": "general",
  "injectOrder": 60,
  "watch": false,
  "advisor": { "enabled": true, "maxQuestions": 4, "timeoutMs": 180000 },
  "wheel": { "enabled": true, "cacheDays": 7 }
}

snapshotTemplate 可选 general、minimal、deep。

适用场景与注意

适合需要在 DSH 中长期维护同一仓库、希望模型先看到结构化模块与契约摘要、又严格控制上下文 token 的开发者。也适合在改接口或依赖后,用增量扫描刷新风险面板,并在交付后用问答卡片把结论落盘。

使用前请注意:

  • 插件以当前 DSH 进程权限运行;安装前应自行阅读仓库源码与 MIT 许可证,确认可接受其行为(扫描工作区、写入 .ai-index/、可选注入快照等)。
  • 插件不 import 任何 @deepseek-ai/* 包,依赖 node 内置模块与浏览器 react;安装 bundle 不需要联网取包。
  • 社区目录 skillhub.cn 为独立站点,与 DeepSeek / 幻方无官方从属关系;DSH 生态理念是「一切皆插件」,本文介绍的是社区插件,而非官方应用商店条目。

设计取舍上,索引 100% 派生自源码,改标记后重扫即可;快照是注入用的唯一形态,装不下就裁剪段落,不无限增长;复盘结论进 decisions.json,需要落到源码的 @ai: 标记由模型通过普通编辑路径修改,你可审查与回滚。

结尾

dsh-ai-indexer 把「模块、契约、风险」从注释里抽出来,用增量扫描和 token 预算快照减轻每会话通读仓库的负担,并用交付后复盘把关键确认留在磁盘。若要安装或查标记细节,以 GitHub README 为准:

  • 目录页:https://www.skillhub.cn/plugins/cute-gugu/dsh-ai-indexer
  • 源码与文档:https://github.com/cute-gugu/dsh-ai-indexer
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜