资讯动态

Repowise Context 命令实战:用一张「分诊卡」替代批量读文件,快速摸清任意文件/模块/符号的架构画像

发布时间:2026/10/10 15:52:23 来源:尧图企业网站定制
【免费下载链接】repowiseCodebase intelligence for AI and humans: code health scores, auto-generated docs, git analytics, dead code detection, and architectural decisions via MCP.项目地址https://gitcode.com/gh_mirrors/re/repowise点击查看免费下载Repowise 的context命令对应 MCP 工具get_context是一条面向文件、模块与符号的分诊triage卡命令它不返回源码正文而是返回每个目标的标题、摘要、架构分层、热点/修复历史、文档新鲜度以及可选的关联关系块。本文以仓库中的 命令说明文档 为骨架结合 CLI 实现 与 MCP 服务端实现 展开带你掌握repowise context的完整调用方式、全部--include可选块的含义、底层解析与预算机制以及它与symbol、ask、why、risk等命令的协作模式。读完后你可以用一条命令批量完成代码审查前的「情报收集」而不必打开大量源文件。一、context是什么一张卡装下「文件是什么 谁在碰它」context的核心定位是relationships and risk signals, not source bytes关联关系和风险信号而非源码字节。默认卡片包含title / summary目标的标题与摘要来自索引生成的文档页layer架构分层architectural layerstale bit文档新鲜度标记docs freshness是否过期hotspot高变更热度标记churnfix historybug 修复历史修复次数、最近修复距今天数、是否 bug 磁铁可选的 relationship blocks调用方、被调用方、归属、指标、决策、骨架等通过--include按需开启。从源码看这条命令是 MCP 工具get_context的 CLI 适配器context_cmd.py 中context_command通过get_context(targetslist(targets), includelist(include) or None, compactnot no_compact)拉取原始载荷再经project()裁剪为精简卡片。服务端 get_context 是真正的编排者单目标解析与预算上限分别落在 targets.py 和 truncation.py。为什么强调「不返回源码」设计目标之一是把多轮 Agent 会话的缓存 prompt 前缀做小——常见目标下get_context响应保持在约 2k token 以内见 context.py 模块文档。它解决的是「这是什么、和什么相关」的定位问题要看函数体请用repowise symbol或直接 Read 文件。二、使用步骤从索引检查到卡片呈现命令文档给出了标准操作流程此处结合实现细节逐条展开检查索引若仓库根目录下没有.repowise/目录说明尚未建立索引。此时应提示 This repo isnt indexed yet. Runrepowise initfirst. 并停止——context的所有信号都来自索引文档页、符号表、git 元数据、知识图谱没有索引就没有卡片。初始化命令详见 init.md。解析目标从$ARGUMENTS中解析 targets。如果为空主动询问要检查哪个文件、模块或path::Symbol符号而不是猜测。执行并呈现运行repowise context为每个目标呈现一张卡片layer分层、stale过期位、hotspot热点、summary摘要当存在修复历史时特别标出fix history。服务端的目标解析遵循一条file → module → symbol → 回退阶梯见 targets.py 的_resolve_one_target先按file_page:{target}匹配文件页再按module_page精确匹配目录失败后做路径段边界上的部分匹配api能匹配src/api但不会误配apiclient含::的 id 走resolve_symbol_rows与get_symbol同一套查找保证两个工具对同一 id 解析一致裸符号名按名称精确匹配再退化为名称模糊匹配最多 10 个候选之后依次回退到 graph 节点index-only 模式、git_metadata有 git 记录但无 wiki 页、真实文件预览从未索引过的活文件、path::Name文件回退、模糊路径建议按目录前缀或文件名片段给出 suggestions。也就是说即使目标文件没有生成文档页只要它存在于 git 历史或磁盘上context也能给出诚实的卡片或明确提示而不是编造结构。三、调用形态与参数详解3.1 TARGETS三种目标写法TARGETS 可以是文件路径、模块路径目录、或path/to/file.py::Symbol符号 id并且支持一次性批量传入batch them in one callrepowise context src/api/routes.py src/api/auth.py # 批量文件 repowise context src/api # 模块目录 repowise context src/api/routes.py::login --include callers # 符号级从服务端实现看批量目标由asyncio.gather并发解析见 context.py且return_exceptionsTrue会把单个目标的失败隔离成该目标自己的error卡片不会拖垮整批请求。3.2 调用形态速查场景命令默认分诊repowise context targets…加可选块可重复--include callers\|callees\|ownership\|metrics\|decisions\|skeleton\|…更丰富的卡片repowise context targets… --no-compact机器可读 / 原始载荷--format json/--full典型示例与 CLI_REFERENCE.md 一致repowise context src/api/routes.py src/api/auth.py repowise context src/api/routes.py::login --include callers --include metrics repowise context src/api/routes.py --include skeleton3.3--include可选块全表CLI 端 context_cmd.py 以 click.Choice 严格校验--include的取值服务端 context.py 模块文档 给出了每个块的精确语义。合并如下块含义适用目标full_doc完整 wiki markdown 内容 页面 agent digest问题、标识符、git 信号任意callers谁调用了该符号仅符号callees该符号调用了什么仅符号references符号的每一个存活编辑点定义、导入、调用、其他提及及列表是否完整complete: true时就是「改名/全量更新调用方」任务的完整编辑集仅符号ownership主要所有者、bus factor、贡献者数量任意last_change最近一次提交的日期与作者任意metricsPageRank、betweenness、百分位排名任意community社区成员身份 邻居任意decisions治理该目标的决策分三条车道decisions已接受且生效、candidates提议中、history接受后又撤回后两者仅在非空时出现且有上限任意skeleton函数体省略、行号经过校验的文件渲染签名 高 PageRank 函数体文件skeleton保留全部非函数代码省略每个函数/方法体文件healthcode-health 分数与生物标记biomarkers任意doc_drift提到该文件的文档及其漂移状态文件symbols文件卡中的全部符号而非默认按 PageRank 排名的前 15 个文件docs与freshness两个块始终返回工具契约约定 defaults are always returned即使不传--include显式传入也是合法无操作。其余块每个约 200–500 字节会通过缓存回放膨胀后续每一轮 Agent 对话所以必须显式--include才会出现见 context.py。一个值得注意的健壮性设计未知的--include取值不会静默忽略而是被放入ignored_arguments并在响应中具名报告issue #1496。原因很实在——未知 key 若被静默丢弃响应会和「从未请求」完全一致typo 会被当成真实答案。3.4--no-compact与骨架skeleton--no-compact为每张卡添加结构、imports 与 docstring对应服务端compactFalse。--include skeleton追加省略函数体、行号经过校验的文件形状。CLI 端在表格路径上不会打印几千行源码而是摘要呈现mode / tokens / full_tokens / pct_of_full提示--format json查看完整文本见 context_cmd.py_render。需要某个函数的确切函数体时请优先用repowise symbol或 MCP 的get_symbol把卡片上给出的symbol_id直接传过去若符号行没有symbol_id则以path::name形式定位。这正是命令文档强调的协作方式context给地图symbol给正文各自保持响应小巧。3.5 共享目标定位参数--path、--repo、--no-workspace与其他 tool-adapter 命令ask/context/symbol/why行为一致详见 CLI_REFERENCE.md 共享选项Flag说明--path仓库或 workspace根目录默认当前目录--repoworkspace 内的仓库别名--no-workspace即使在 workspace 内也强制单仓库模式--formattable默认或json--full输出完整工具载荷 JSON隐含--format json注意context用--path指定仓库而不是旧命令的尾部[PATH]位置参数正是因为context接受可变数量 targets尾部路径会被吞掉。四、输出格式精简投影与完整载荷--format json输出的是裁剪后的 CLI 投影而非工具完整响应--full才是编辑器 MCP 客户端收到的原始 dict。投影逻辑在 context_cmd.py 的project()保留target、type、docs.title → title、docs.summary → summary、architectural_layer.name → layer、freshness.is_stale → stale以及卡片携带的每个其他 key——hotspot、fix_history、episodes、--include skeleton请求的骨架块、以及每个--include块按其自身名字原样透传丢弃parent_page、freshness.confidence_score、_meta中除 freshness key 外的部分错误与降级信号永不裁剪无法解析的目标只携带errortombstone 场景还带successor_paths重定向与hint顶层的truncated、dropped_targets、dropped_symbols、dropped_blocks、recovery只要「有话要说」就保留请求了但响应里完全缺失的目标会被单独列入not_found——这样 typo 路径与「索引里无话可说」不会混淆。_project_one的注释点明了设计哲学裁剪采用黑名单而非白名单——白名单一旦漏掉某个--include块就会把「点名要的块」变成「调了 flag 却看不见任何变化」而黑名单的最坏后果只是载荷略大。同样的哲学贯彻到_render表格路径对未知块做通用渲染_flatten摊平为一行绝不静默丢弃context_cmd.py_render。参考测量以本仓库为样本见 CLI_REFERENCE.md单文件context的裁剪投影约0.9 KB--full原始载荷约12.4 KB——差距主要来自裁剪掉了非信号性的_meta与不必要字段而改变答案的内容错误、not-found、did-you-mean 列表、截断标记、continuation token、歧义信号在两种格式下都会完整保留。五、边界与错误处理不编造结构命令文档的三条 Notes 在实现层面都有坚实支撑优先批处理context一次调用批量出卡比用 Read 打开多个文件更省 token——尤其适合 Agent 在动手改代码前的侦察阶段。无法解析的目标返回error卡targets.py在解析阶梯全部落空后返回Target not found: target并尽力给出suggestions同一目录下的文件、或按文件名片段匹配的候选被exclude_patterns排除的目标会得到明确提示因体积过大未入索引的文件会得到实时计算的解释如 minified / unreadable / exceeds maximum size附 KB 数与「Read the file directly」建议tombstone索引后文件被删除/重命名返回重定向路径而非误导性卡片。Agent 应如实报告 error 卡而不是凭空编造结构。分工明确合成问答用repowise ask对应 ask.md「代码为什么长成这样」用repowise why对应 why.mdhotspot / fix history 出现时正确下一步是调用get_risk或repowise risk看风险评估。六、底层机制补充预算、并发与跨仓库富化响应预算默认响应适配24,000 序列化字符非空include时为32,000超出部分按块裁剪并携带_meta.omitted恢复引用omission_marker形如[repowise#ref: N lines omitted; restore: repowise expand ref]可直接喂给repowise expand。预算逻辑统一实现在_budget/budgeter.pytruncation.py只是历史命名的薄封装见 truncation.py。_meta.recovery_unavailable则点名存储故障。符号列表上限紧凑模式下文件卡默认携带按「类型 → PageRank → 起始行」排序的前15个符号_SYMBOL_CAP超出时给出symbols_total与提示Pass include[symbols] for the full listtargets.pyinclude[symbols]关闭该上限。跨仓库富化在 workspace 模式下若启用了跨仓库富化器卡片还会附带cross_repo块——co_changes_with协同变更伙伴取前 5与contracts作为 provider/consumer 的契约链接各取前 5context.py。episodes卡片会携带绑定到该目标的 dated episodes 计数作为get_why的引子——一个数字邀请后续追问一段长文则会花掉所有只想看分诊卡的调用者的预算因此缺席而非为零。七、Agent 与编辑器集成context在 Claude Code 与 Codex 插件中都以 tool-adapter 命令形式暴露Claude Code 侧见 plugins/claude-code/commands/context.md共享命令定义见 plugins/shared/commands/context.mdCodex 侧还有一份注入 Agent 上下文的 prompt 模板 repowise-context.md。命令的 frontmatter 声明了允许工具为Bash(repowise context:*)与Read即 Agent 可以仅凭repowise context输出决定下一步行动而无需先读入源码。实战建议在开始任何「先理解再修改」的任务前把涉及的每个文件批量丢给repowise context先读卡片上的 layer / hotspot / fix history / freshness对 hotspot 或修复频繁的文件接repowise risk对要精确修改的函数用symbol_id接repowise symbol对「为什么这么设计」的疑问接repowise why。这条链路覆盖了从定位、风险评估到正文获取的完整侦查闭环而每一步的响应都被刻意控制在很小的 token 预算内。赞分享【免费下载链接】repowiseCodebase intelligence for AI and humans: code health scores, auto-generated docs, git analytics, dead code detection, and architectural decisions via MCP.项目地址https://gitcode.com/gh_mirrors/re/repowise点击查看免费下载相关推荐Repowise Context 命令实战指南用一张分诊卡片替代大段源码阅读Repowise Context 命令实战指南用一张分诊卡片替代大段源码阅读 导读 repowise context 是 Repowise 为 AI AgRepowise Context 深度指南一条命令为文件、模块与符号生成智能 Triage CardRepowise Context 深度指南一条命令为文件、模块与符号生成智能 Triage Card 导读 Repowise Context 是 Repowihimalaya Gmail 命令模块重构一子命令一文件的模块布局实践himalaya Gmail 命令模块重构一子命令一文件的模块布局实践 本篇技术指南聚焦 himalayaCLI 邮件管理工具在 2026 08 14 落CLI上一篇如何安装 Fluent for Steam把 Steam 换成 Windows 11 风格的完整指南下一篇RealSense D455点云生成教程三步从深度图走到三维点云创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑