将 Codegraph CLI 封装为 DSH 的八个代码智能工具:符号搜索、调用者/被调用者、影响分析、代码库探索、符号/文件读取、索引状态与同步。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:errrepe/dsh-codegraph-plugin
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
该插件的 README 只有英文版本。
DSH (DeepSeek Harness) profile bundle que expõe o codegraph como oito tools de inteligência de código para o modelo. O plugin mantém um índice do workspace atual em sincronismo e dá ao agente busca de símbolos, análise de chamadas, análise de impacto e leitura de código — sem grep às cegas.
Pré-requisito: o CLI
codegraphinstalado e noPATH(o plugin executa o CLI; não o gerencia). Em macOS/Linux:cargo install codegraph # ou siga as instruções da repo do codegraph codegraph --version # verifique antes de prosseguir
Instalação
O pacote é um DSH profile bundle — instalável em qualquer profile com um comando:
dsh plugin --profile web add /caminho/para/este/checkout
# ou, uma vez publicado no npm:
dsh plugin --profile web add dsh-codegraph
# ou direto do GitHub:
dsh plugin --profile web add github:errrepe/dsh-codegraph-plugin
O comando registra o bundle em dsh.profile.bundles e o plugin carrega no próximo boot do profile. Reinicie o processo DSH do profile para o plugin fazer efeito.
Para remover:
dsh plugin --profile web remove dsh-codegraph
Como funciona
- Cada tool executa
codegraph <subcommand>na cwd da sessão que chamou — o projeto cujo índice é lido é sempre o workspace em que o agente está trabalhando. A execução usa a sandbox policy da própria sessão, o que permite ao SQLite (WAL) do índice abrir dentro de workspaces confinados. - Projeto sem índice: rode
codegraph initna raiz do projeto (via bash) uma única vez. Depois disso, chamecodegraph_syncapós editar arquivos para que as queries reflitam o código atual. - Saída:
query/callers/callees/impactretornam JSON estruturado;explore/node/status/syncretornam texto formatado. Todos os argumentos dinâmicos são shell-quoted de forma segura (single-quote POSIX); há testes de round-trip por bash real (node test/quote.test.js).
Configuracao em Settings/Plugins e System Prompt
O plugin agora expõe um card em Settings > Plugins (aba Configuráveis) com key: codegraph:
- Ativar Codegraph (
enabled, padrãotrue): quando ligado, as oito tools permanecem registradas. Quando desligado, cada tool retorna erroCodegraph is disabled in Settings > Plugins— sem derrubar o boot. - Instruir o modelo via system prompt (
injectPrompt, padrãotrue): quando ligado junto comenabled, o host injeta a seçãocodegraph-guidance(ordem 50) em todo prompt montado. A seção ensina o modelo a preferir o grafo aogrepcego. Veja o digest emlib/index.js(CODEGRAPH_PROMPT). Desligar remove a seção sem deixar resíduo (renderPromptdescarta seções vazias).
Persistência: as duas flags vivem no namespace codegraph em ~/.dsh/settings.yaml (camadas: defaults da schema < base do composition < documento do usuário). A UI faz POST /api/dsh-codegraph/describe e POST /api/dsh-codegraph/mutate (loopback-only) e reage a conflitos de revisão. O toggle afeta o próximo step do modelo sem reinício.
Comportamento esperado pelo upstream colbymchenry/codegraph (https://github.com/colbymchenry/codegraph): o grafo entrega contexto cirúrgico em uma chamada. O digest instrui o modelo a: verificar codegraph_status antes da primeira busca (se sem índice, rodar codegraph init), usar codegraph_explore como primeira escolha para perguntas abertas (retorna símbolos + source agrupado por arquivo + caminhos de chamada + blast radius em um shot), seguir codegraph_query com codegraph_node para leitura exata, mapear impacto com codegraph_callers/impact antes de refatorar, e rodar codegraph_sync após editar. Reserve grep/glob apenas para texto não-código ou quando status indica ausência de índice.
Tools
| Tool | O que faz | Saída |
|---|---|---|
codegraph_query |
Busca símbolos (funções, classes, métodos) por nome, com filtro por kind | JSON |
codegraph_callers |
Quem chama um símbolo — primeiro passo antes de mudar uma função | JSON |
codegraph_callees |
O que um símbolo chama | JSON |
codegraph_impact |
Raio de impacto de mudar um símbolo (dependentes + testes que cobrem) | JSON |
codegraph_explore |
Explora uma área: símbolos relevantes, código-fonte, caminhos de chamada, dependentes — em um shot | texto |
codegraph_node |
Lê o código-fonte completo de um símbolo (+ trail de chamadas), ou lê um arquivo com line numbers e dependentes | texto |
codegraph_status |
Estatísticas do índice: contagens de arquivos/nodes/edges, por kind e linguagem | texto |
codegraph_sync |
Sincroniza o índice com as mudanças desde a última indexação | texto |
Compatibilidade e resiliência
Settings/Plugins: o host registra o namespace
codegraphvia@deepseek-ai/dsh-settings(installSettingsSectioncom fallback manual). Se o serviço estiver ausente (host antigo/headless), o plugin cai paraenabled: truee sem bridge — nunca bloqueia o boot.System prompt: a seção
codegraph-guidancevive em@deepseek-ai/dsh-system-promptordem 50 (depois da persona 0, antes do guia de tools 100+). Texto é função decurrent(); quandoenabledéfalseouinjectPromptéfalse, retorna""e não deixa resíduo.O
defineTooldo harness é resolvido em runtime (import guardado com fallback), pois não é uma dependência resolvível de bundles de terceiros. Se indisponível, o plugin loga um aviso e não registra os tools — nunca derruba o boot do DSH.Sem sessão com cwd (ex.: uso headless sem agent): os tools retornam erro explícito, não crasham.
CLI ausente ou projeto sem índice: o erro do próprio CLI é devolvido ao modelo como erro do tool.
Desenvolvimento
npm run check # node --check nos módulos
npm test # testes de quoting/argv (bash real round-trip)
Estrutura: lib/index.js (host half — registro dos tools, namespace codegraph, seção codegraph-guidance, bridge /api/dsh-codegraph/*), lib/client.js (browser half — card settings.plugin.item key codegraph em Settings > Plugins), lib/quote.js (builders de argv puros e testáveis), cordis.patch.yml (row codegraph do composition).
Licença
MIT — veja LICENSE.
FAQ
Does codegraph need to be installed? Yes — the plugin shells out to the codegraph CLI on the host PATH. Install via cargo install codegraph or from https://github.com/colbymchenry/codegraph.
When to call codegraph_sync? After editing files, so subsequent query/explore calls see the new code. status shows whether the index is stale.
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 34236
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 5325
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1137
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 518
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 508
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 490
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。