
【免费下载链接】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 与 Claude Code 之间存在两个相互独立的集成方向claude_cliLLM Provider本文主题让 repowise 通过你本地的 Claude Code CLI 生成 wiki 页面从而用 Claude 订阅替代 API Key而claude-codeAgent TargetIntegrations则让 Claude Code 反向调用 repowise 的 MCP 工具。两者互不依赖启用一个不会启用另一个。本文将围绕claude_cliProvider 展开从启用方式、运行原理、token 记账、并发与推理控制到安全设计并结合 claude_cli.py 源码与 test_claude_cli_provider.py 测试讲清它“如何工作”以及“为什么这样设计”。双向集成的两种方向方向是什么相关文档repowise 调用 Claude Codeclaude_cliLLM Providerrepowise 运行本地 Claude Code CLI 编写 wiki 页面Claude 订阅即可无需 API Key本文Claude Code 调用 repowiseclaude-codeAgent TargetClaude Code 获得 repowise 的 MCP 工具可询问代码库问题Integrationsclaude_cli与codex_cli、opencode同属“CLI-backed”Provider 一族——它们不通过 HTTP 调用 API而是 shell 出本地已登录的编码 Agent CLI认证发生在 repowise 视野之外。claude_cliProvider 概览当你想让页面生成走本地 Claude Code CLI、而不是ANTHROPIC_API_KEY时使用claude_clirepowise init --provider claude_cli --yes对于已有索引REPOWISE_PROVIDERclaude_cli repowise generate --unwritten若想持久化该选择写入.repowise/config.yamlprovider: claude_cli model: claude_cli/claude-haiku-4-5前置条件# 安装 Claude Code然后认证一次 claude login任何能运行claude -p的订阅方案都可用——Pro、Max、Team 或 Enterprise。repowise 从不接触你的凭据凭据由 CLI 持有认证在带外完成与codex_cli、opencode的处理方式完全一致。从注册表看claude_cli属于KEYLESS_PROVIDERSregistry.py即无需 API Key 即可“可用”因此在 provider 解析时永远不会因“缺少 key”被拒绝。Provider 实际执行的命令repowise 通过asyncio.create_subprocess_exec启动的完整命令形如claude -p --output-format json --model model --max-turns 1 \ --strict-mcp-config --tools --system-prompt system [--effort level]关键设计claude_cli.py用户提示词走 stdin提示词携带文件上下文、可能很大不放入 argv系统提示词走--system-prompt该参数会替换Claude Code 的 agent 前缀而非追加——repowise 的提示词是完整指令集编码 Agent 的框架只与它竞争移除工具目录--tools 清空工具目录并追加一条最终系统指令要求“直接在一次响应中回答”。即使只有单轮预算这条指令也是必要的单独拒绝个别工具仍可能让模型尝试调用一次、消耗该轮然后以error_max_turns返回而没有任何页面正文对应测试 test_error_subtype_raises--max-turns 1将调用限定为纯补全自身无文件系统或网络访问。底层实现的补充说明可从源码结构确认--system-prompt内容为f{prompt}\n\n{_TOOLLESS_SYSTEM_INSTRUCTION}其中_TOOLLESS_SYSTEM_INSTRUCTION You have no tools available for this task. Do not attempt to call tools. Answer the user directly in a single response.。每条调用限时 600 秒_EXEC_TIMEOUT_SECONDS超时或取消都会 kill 子进程对应测试 test_timeout_kills_process_and_raises。输出解析与 token 记账Provider 解析 stdout 上的单个 JSON 对象取result作为页面内容并映射usage字段Claude Code 字段repowise 字段usage.input_tokensusage.cache_read_input_tokensusage.cache_creation_input_tokensinput_tokensusage.input_tokens单独usage.uncached_input_tokensusage.output_tokensoutput_tokensusage.cache_read_input_tokenscached_tokensusage.cache_creation_input_tokens记入usage不计为 cachedstop_reason归一化后的stop_reason这是全文中最重要的记账细节Claude Code 把一个提示词账单拆成三个互不相交的字段只有未命中的剩余部分才落在input_tokens里。页面提示词携带巨大的稳定前缀所以同一页面类型的第一个页面主要是缓存写入之后每个页面都是缓存读取——如果只读input_tokens会得到每页 2 个 token 这种近乎为零的数值。repowise 把三者求和因此repowise status、repowise costs和运行报告展示的 token 量才是模型实际读到的提示词总量对应测试 test_input_tokens_is_the_prompt_total用例覆盖“首次页面写缓存”“后续页面读缓存”“短提示词全在未缓存余量”三种形态。解析本身是容错的claude_cli.pystdout 前面可能有警告噪音因此先尝试整段json.loads失败则从后往前逐行扫描以{开头的行。错误处理上非零退出码优先读取 stderr/stdout 尾部文本跳过 JSON 负载若载荷带api_error_status则会提取其 HTTP 状态码例如 404 会以claude -p reported failure (404: Theres an issue with the selected model.).呈现。零成本定价与成本账本claude_cli/*模型定价为$0.00因为计费由订阅承担而非按 token 的 API 支出。这一点由注册表与定价表共同保证模型标签统一加claude_cli/前缀_model_label使成本估算按零计费pricing.py 中claude_cli/: (0.0, 0.0)每次调用仍以该标签记入llm_costs账本$0.00所以repowise costs能显示运行记录而不是“No cost records found”CLI 自身的total_cost_usd仍记录在usage.reported_cost_usd下仅用于审计。对应测试 test_cost_ledger_row_carries_the_prompt_total 确认账本记录的是带前缀的标签与求和后的 token 总量test_subscription_usage_is_priced_at_zero 则验证带前缀为零、裸 slug 走 API 计价不受影响。成本跟踪器即使抛错也不会中断生成测试 test_a_failing_cost_tracker_does_not_break_generation因为它是非关键遥测。默认模型与模型选择默认模型为claude_cli/claude-haiku-4-5与anthropicProvider 的默认一致——后者 docstring 称 haiku“对文档页面而言绰绰有余”claude_cli.py。选择其他模型repowise init --provider claude_cli --model claude_cli/claude-sonnet-4-6claude_cli/前缀输入时可选——裸 slug 同样可用且两者都能经.repowise/config.yaml往返repowise init --provider claude_cli --model claude-opus-4-6从源码看claude_cli.py_normalize_model接受持久化的claude_cli/slug标签与裸 slug因此从 config 读回的值可以正确往返不会变成claude_cli/claude_cli/...。available_model_options()目前提供三个选项claude_cli.pyhaiku-4-5推荐“fastest; ample for doc pages”、sonnet-4-6“better prose, slower”、opus-4-6“highest quality; heaviest on subscription limits”。CLI 没有可查询的机器可读模型目录因此这是策展列表而非发现结果。并发控制每个页面都是一个完整的 CLI 进程而订阅限额按账号计算。串行化会让 68 页的 wiki 耗时约一小时并发过高则触发账号限额、导致运行失败。Provider 将自身限制为4个并发进程init也对 CLI-backed Provider 将--concurrency上限设为 4。可通过环境变量覆盖REPOWISE_CLAUDE_CLI_CONCURRENCY2 repowise generate --unwritten该变量既能降低也能提高限额因此 4 是默认值而非强制上限。在限额更宽的订阅方案上提高并发是合理的但这也是运行中途触发账号限额最快的方式。实现上claude_cli.py_resolve_concurrency解析该环境变量非法值回退默认值且下限为 1信号量按事件循环绑定_get_semaphore。预算大致为每页约 9k 输出 token、耗时数分钟与你的交互式 Claude Code 会话共享同一限额。在大仓库上优先用--path限定运行范围而不是全量重新生成。推理模式ReasoningClaude Code 的--effort标志直接映射到low、medium、high、xhigh、maxauto则省略该标志、保留 CLI 默认。repowise 的off、none、minimal模式在 Claude CLI 中没有对应项因此这些模式被警告并忽略而不是让整个文档运行失败对应测试 test_unsupported_reasoning_warns_but_does_not_raisereasoningnone时依然成功返回、argv 中不出现--effort。受支持的推理模式集合定义在 claude_cli.py。两个值得知道的细节--bare永远不会被传递。它看似正确的隔离标志但文档明确写着“Anthropic 认证严格是ANTHROPIC_API_KEY或apiKeyHelperOAuth 和 keychain 永不被读取”——这会摧毁本 Provider 的整个存在意义。隔离来自中性工作目录加--strict-mcp-config。测试 test_generate_success 明确断言--bare not in args。子进程不在你的仓库中运行。Claude Code 会从工作目录自动发现CLAUDE.md因此在仓库内运行会把项目的 agent 指令注入每个页面的提示词——浪费 token并让仓库特定规则扭曲文档措辞。Provider 每次调用在一个全新的空 scratch 目录中运行调用后即删除tempfile.TemporaryDirectory(prefixrepowise-claude-cli-)生成器所需的一切都已包含在提示词里。测试 test_generate_runs_outside_the_repo 断言cwd包含repowise-claude-cli-前缀且目录在调用后不存在。这也是claude_cli不在REPO_PATH_PROVIDERS中的原因——与codex_cli、opencode不同它不需要被告知仓库路径registry.py。安全设计使用asyncio.create_subprocess_exec——绝不用shellTrue模型名在进入 argv 前按^[a-zA-Z0-9][a-zA-Z0-9._/\-]*$校验测试 test_invalid_model_name_is_rejected 用claude; rm -rf /验证拒绝所有工具被禁用--tools 且--max-turns 1调用是纯补全自身无文件系统或网络访问--strict-mcp-config阻止子进程加载来自用户或项目配置的 MCP 服务器。CLI 未找到时shutil.which(claude)返回空会立即抛出ProviderError提示“Claude Code CLI not found. Install it from https://claude.com/claude-code, then run claude login.”测试 test_missing_cli_raises。在 Provider 体系中如何注册与解析claude_cli是内置 Provider 之一registry.py懒加载到repowise.core.providers.llm.claude_cli.ClaudeCliProvider缺失依赖时提示安装anthropic-ai/claude-code。它属于KEYLESS_PROVIDERSprovider_is_usable(claude_cli)恒为 True——认证在带外完成没有可检查的环境变量因此也没有拒绝它的依据测试 test_registered_as_keyless_provider。通过get_provider(claude_cli)即可实例化测试 test_resolves_through_the_registry 验证默认解析到claude_cli/claude-haiku-4-5。小结claude_cliProvider 是 repowise 用“订阅代替 API Key”生成文档的通道一条claude -p命令、一次claude login认证、一个持久化的 provider 配置即可让本地 Claude Code CLI 承担整本 wiki 的生成。它的价值不仅在于省去密钥管理更在于把 token 记账、成本账本、并发自限和进程隔离做得与远程 API Provider 同等严谨——而“提示词三分账求和”“scratch 目录防 CLAUDE.md 注入”“--bare禁用”这三处设计恰恰是源码与测试最能说明问题的细节。赞分享【免费下载链接】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 集成 OpenCode用本地 CLI 驱动 Wiki 生成与 Agent 接入实战指南Repowise 集成 OpenCode用本地 CLI 驱动 Wiki 生成与 Agent 接入实战指南 导读 本文以 examples/opencode/Claude Code Router文档生成自动化API文档创建Claude Code Router文档生成自动化API文档创建 概述 Claude Code Router是一个强大的工具允许您在不使用Anthropic后端API网关LLM 网关大模型Claude Code自动文档生成从代码到API文档的全流程Claude Code自动文档生成从代码到API文档的全流程 你是否还在为手动编写API文档而烦恼面对不断迭代的代码文档总是滞后于开发进度ClaudeAI 应用AI 技能/插件开发工具上一篇Next-Admin主题定制完全手册打造个性化企业后台的终极方案下一篇突破性技术方案PythonVista项目深度解析 - 让Windows Vista和Server 2008完美运行Python 3.8版本创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考