gov-hub: A Project Map for AI Coding Agents

前言

DSH 的理念是「一切皆插件」,插件的作用是把某类具体能力接进 agent 的工作流,而不是替 agent 重写推理。gov-hub(songzhou666/gov-hub)就是这类插件的典型:它解决的问题是 agent 每开一个新会话都要重新付一遍的「发现成本」——列目录、全文搜索、读一堆无关文件,最后才找到那一份权威文档,token 烧在导航上,还经常读错文件。

已有做法是靠 glob / grep 在目录里蛮力翻找。gov-hub 的做法是把「某个结论、规范、报告在哪个文件」预先记录进工作区里的 registry.yaml,之后 agent 用一条 lookup 命令直达权威文件。它做的是文件级导航(该读哪份文档),不做代码符号索引,查函数和类仍要用宿主自带的 grep。

本文介绍这个插件的定位、命令、安装方式和使用边界。

这是什么

gov-hub 是一个工作流类 DSH 插件,同时也可作为通用 Agent Skill 单独使用,维护者为 songzhou666(README 中的署名为 songzhou)。核心是一个只依赖 PyYAML 的 Python CLI(govhub.py),加上工作区里的三份普通文件:

  • registry.yaml,人可读的登记表:路径、关键词、「这条能回答什么」、权威级别;
  • gov-hub.yaml,范围声明:agent 只在声明的目录内活动,越界不静默扩界;
  • .govhub/index.json,可随时重建的检索索引,是生成物,永远不作为权威引用。

状态为 0.3.0,许可证 MIT,Python 要求 ≥ 3.9。插件以 dsh.bundle 形式声明在 package.json 中,当前目录页显示星标为 0。

核心功能

命令只有三条主链路,配套命令若干。关键设计是:该不该启用、要不要向用户提问,由命令的输出决定,而不是交给模型自由裁量。

命令 作用
ensure 入口闸门:已启用返回 [OK],先查表;用户已拒绝返回 [MUTED],静默;未声明则打印欢迎说明加 [NEXT],由 agent 问一次
lookup "<关键词或整句问法>" 分层打分(标题、关键词、能回答什么、路径,相等满分、包含半分),同分按权威级别排序,返回权威文件路径
add <文件> --keywords ... --answers "..." 回灌:任何「靠翻找才找到」的权威文件,一条命令登记并同步索引

lookup 的打分逻辑是:标题匹配、关键词匹配、条目声明的「能回答什么」匹配、路径匹配,四层各自打分,相等得满分、包含得半分。

配套命令包括:

  • init,范围确认加登记表骨架;
  • check,登记表与磁盘一致性机检;
  • status,四段健康灯体检;
  • suggest,从查询轨迹里提炼该补的条目;
  • attach / detach,在 AGENTS.md 里写或删自己的标记块,块外内容不动;
  • install / uninstall,安装与卸载。

四段健康灯分别对应供给(登记表一致性)、执行、产出、回灌四端,各自绑定机检。loose 档默认零假设、只读治理,mapped 档声明容器映射后才启用后三段扫描。

安装与启用

仓库提供了一键安装脚本,不依赖插件市场:

# 1. 获取源码
git clone https://github.com/songzhou666/gov-hub.git
cd gov-hub
pip install pyyaml                          # 唯一第三方依赖

# 2. 一键安装:技能文件进发现根 + AGENTS.md 入口块 + 自检
python govhub.py install                    # 用户级(推荐),所有会话生效
python govhub.py install --scope project    # 或仅当前项目(.dsh/skills/)

# 3. 卸载:完全可逆,工作区里的地图数据不会被删
python govhub.py uninstall

在非 DSH 宿主(如 Claude Code)上,用 --skill-dir 显式指定技能目录,入口块用 attach --file 写入该宿主的入口文件:

python govhub.py install   --skill-dir <宿主技能目录>        # 如 Claude Code:~/.claude/skills
python govhub.py attach    --root <工作区> --file <工作区>/CLAUDE.md

安装完成后即全自动。在任何会话里问「登录的测试结论在哪个文件?」,agent 会先 ensure 判断该不该用地图,再 lookup 命中权威文件,作答后顺手把新读到的文件 add 回地图。不需要用户记命令。

无网络、无虚拟环境要求,唯一依赖是 PyYAML,没有降级路径。仓库自带两个虚构示例工作区(loose / mapped 档),可以直接跑通验证:

python govhub.py check  --root seeds/sample-workspace   # 结果:通过 ✅(6 条)
python govhub.py lookup 账期 --root seeds/sample-workspace
# [  7.0] rule.billing-cycle · canonical · rules/03_账期对账规则.md

典型用法

先初始化,登记表中的候选目录需要人工确认后才固化:

python govhub.py init --root <工作区>

# 登记一条资产(自动机检 + 同步索引)
python govhub.py add docs/登录测试报告.md --root <工作区> \
  --keywords 登录,验证码,测试结论 --answers "登录验证码的测试结论与证据"

# 检索
python govhub.py lookup "登录 验证码 结论" --root <工作区>

# 机检 / 体检 / 补条目提案
python govhub.py check   --root <工作区>
python govhub.py status  --root <工作区>
python govhub.py suggest --root <工作区>

# 把入口块写进 AGENTS.md(幂等;detach 只移除标记块,块外不动)
python govhub.py attach --root <工作区> --scope project
python govhub.py detach --root <工作区> --scope project

登记纪律:同一主题下有多份独立文件(如各子端各一份清单)时每份一条,不要合并成总表。地图里不记录数量或统计值,数量现数即可,写进地图必然过期。

查找失败时的处理流程:如实说「地图上没有」,用普通方式查找,找到权威文件后立刻 add,下次就命中;suggest 会把高频未命中词提成待办。

效果数据与出处

以下数据来自仓库自带的 bench/bench_lookup.py、bench/RESULTS.md 与 docs/PERFORMANCE.md,口径先看说明再看数字。

微基准在真实项目资产区(36 个 Markdown 文件、167 条登记表)上,用 10 个来自登记表的真实高频词做对照,两条路径都包含「读目标文件」的成本,差值纯粹是「找到该读哪个文件」:

指标 蛮力导航 项目地图 差距
单查询导航成本 9,901 ~ 140,949 chars 276 ~ 719 chars 最高约 376 倍
10 查询累计(中性高频词,bench_lookup.py 可复现) 624,262 chars(约 37.5 万 tokens) 4,173 chars(约 2,500 tokens) 降低 99.3%
10 查询累计(早期业务词,同口径另一组) 110,758 chars(约 6.6 万 tokens) 3,617 chars(约 2,200 tokens) 降低 96.7%

端到端在约 5.7 万个文件的真实工作区上,同一句「登录验证码那里发现了什么问题?」:无地图时 141s+、40 次调用未答完;回灌 3 条后第二问 40s、5 次调用答完(快 3.5 倍、调用减少 8 倍)。命中组稳定在 23~75s / 4~10 次调用,蛮力组 93~230s / 15~40 次调用,最悬殊一对 tokens 差约 6.8 倍。

口径与边界:

  • 微基准未计蛮力路径的试错重试、误读返工与上下文污染,数字偏保守;
  • token 按 chars × 0.6 粗估,只看量级;
  • 端到端样本量小(每组 2~4 轮)、单工作区、单日,问题不完全相同,量级可比、非精确比值。

还有一条容易踩坑的实测结论:装了不等于立刻省钱。空表首日仍会走蛮力(实测 43 次调用),收益在回灌 2~3 轮、覆盖高频问题后才兑现,所以 add 才是这套东西的核心循环。

适用场景与注意

适用:有长期积累的文档、规范、报告、测试证据,且 agent 需要反复回答「某结论在哪、什么时候做过什么」的工作区。

不适用:写业务功能代码、检索代码符号(用宿主自带 grep 更快)、问「上次我们聊了什么」(地图不含对话内容)、工作区里没有任何权威文档。

让位条款:若项目已有自己的查询协议(如 AGENTS.md 里定义了 lookup 工具、自有 _registry.yaml),以项目协议为准,本技能整体忽略、不邀请初始化。

隐私与硬边界:

  • 纯本地,所有命令不发起网络请求、不上传任何数据、不收集统计;
  • 只新增,除显式执行的 install / attach / init / add 外不写任何工作区文件;
  • 完全可逆,detach 只移除自己的标记块,uninstall 撤销安装;
  • 地图只索引路径与关键词,不复制文件内容,.govhub/ 删掉即消失;
  • 换电脑地图还在,地图数据都在工作区里跟着仓库走,技能重新 install 即可。

另外提一句:插件在运行时以当前 DSH 进程权限执行命令,init、add、attach 都会写入工作区文件,安装前建议先检查源码与许可证(MIT)。

结尾

gov-hub 的价值在于把「哪个文件是权威」这份知识从模型的临时推断搬进工作区里的普通文本文件,让 agent 每次会话不再重新翻一遍目录。它的效果数据来自仓库自带的实验脚本,能不能兑现取决于有没有持续回灌——空表不会自动省钱,add 才是循环的关键。

目录页:https://www.skillhub.cn/plugins/songzhou666/gov-hub
GitHub:https://github.com/songzhou666/gov-hub

羽毛球分组比赛记分
小程序二维码

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

Xiaoye