作为开发者,我们都知道一份好的项目文档有多重要,特别是 GitHub 上的 Wiki。但要手动维护这些文档,真的让人头疼,尤其是当项目代码量大、迭代快的时候。代码读完,架构理清,内容组织好,这些工作往往耗时耗力,结果还可能因为疏忽而不够及时和全面。
这时,一个能自动搞定这一切的 GitHub Wiki 智能助手,听起来就像是魔法。这篇教程里,我将带你用 Claude Opus 4.5 和 Anthropic 的 Claude Agent SDK,一步步打造这样一个自动化工具。它不只是翻译代码,更是理解项目结构,然后自动生成高质量的多页 Wiki 内容,并且直接推送到你的仓库里。想象一下,只需一条指令,文档就自动更新了,这会是多么的省心!
我个人觉得,这个交互式的命令行工具,不仅操作流畅,而且智能度也很够用,完全是为开发者量身定做的。接下来,我们会按部就班地完成三件事:环境搭建,助手开发,最后在真实项目上跑跑看,感受它的魔力。
为 Claude Opus 4.5 GitHub Wiki 教程准备环境
在开始用 Opus 4.5 构建 GitHub Wiki 助手之前,确保你的环境配置是正确。这一节我会带着你一步步完成所有必要的准备工作。
1. Claude Opus 4.5 Wiki 助手运行前提
首先,你需要满足以下条件:
- Python 3.11 或更高版本:这是 Claude Agent SDK 所需要的。
- Node.js 和 npm:用于安装 Claude Code,它是我们应用的核心骨架,负责提供代理、工具以及与 MCP 服务器的集成。
2. 安装并认证 Claude Code
打开你的终端(可以是 Command Prompt、PowerShell 或是 macOS Terminal),然后执行以下命令来安装 Claude Code CLI:
npm install -g @anthropic-ai/claude-code
安装完成后,在终端中输入 claude 启动 Claude Code。接着,在 Claude 的聊天界面里输入 /login 进行认证,这样你才能访问 Opus 4.5 模型和相关工具,就像下面图片展示的。

如果你想深入了解 Claude Code,我推荐你看看 DataCamp 上的相关教程。
3. 生成细粒度 GitHub 个人访问令牌(PAT)
为了让助手能操作你的 GitHub 仓库,我们需要一个细粒度的个人访问令牌。你可以这样生成:
前往 GitHub,导航到:
Settings → Developer Settings → Personal Access Tokens → Fine-grained tokens。
创建一个新令牌,在“Repository”(仓库)部分选择你要使用的仓库,然后配置权限。为了安全起见,建议为令牌设置一个较短的有效期。

然后,将你的个人访问令牌设置为环境变量:
export GITHUB_PAT="你的-github-个人访问令牌"
4. 初始化你的 GitHub Wiki
GitHub 目前不支持先在本地创建 Wiki。所以,你必须手动初始化 Wiki:
- 打开你的 GitHub 仓库。
- 点击
Wiki标签页。 - 点击“Create the first page”(创建第一个页面)。
- 保存页面(标题随意)。

5. 安装 Claude Agent SDK
最后一步是安装 Claude Agentic 框架。它负责处理从使用 MCP 到调用工具、创建文件,甚至将更改推送到远程仓库的所有事情。
pip install claude-agent-sdk
使用 Claude Opus 4.5 构建自动化 Wiki 助手
现在,我们开始编写名为 gh_wiki_cli.py 的 Python CLI 应用程序。这个文件将包含配置、代理、工具、MCP 客户端、系统提示、CLI 应用程序本身以及辅助函数。这些组件将确保用户能够提供仓库链接,而代理知道如何正确处理它以发布 GitHub wiki。
1. 导入必要的模块
这部分会引入 Python 标准库模块、类型提示以及 Claude Agent SDK 的核心组件。
asyncio:用于异步 I/O 操作(聊天和流式处理)。os,sys:用于环境变量和程序退出。dataclass:用于跟踪会话统计数据。- Claude Agent SDK 导入:用于与代理和 MCP 工具进行通信。
import asyncio
import os
import sys
from dataclasses import dataclass
from typing import Dict
# --- SDK Imports ---
from claude_agent_sdk import (
AssistantMessage,
ClaudeAgentOptions,
ClaudeSDKClient,
McpSdkServerConfig,
ResultMessage,
TextBlock,
ToolResultBlock,
ToolUseBlock,
)
2. 系统提示词:助手的“大脑”
这是代理的“大脑”。我们会指示 Opus 4.5 模型应如何行为以及如何使用工具。这里使用的系统提示词,是我精心设计的,旨在让模型能够理解并遵循特定的工作流程和约束。
SYSTEM_PROMPT = """
You are an expert Technical Writer and GitHub Wiki specialist.
TOOLS
- Read, Write, Glob, Grep:
- Use these to inspect files and folders in the project directory (e.g. /tmp/Issue-Analyzer) and in wiki_clone/.
- Use them to list files, read contents, and search for patterns.
- Write:
- Use this ONLY to write or update three wiki pages inside wiki_clone/:
- wiki_clone/Home.md
- wiki_clone/Getting-Started.md
- wiki_clone/Architecture-and-Tools.md
- Bash:
- Bash is ONLY allowed for git commands, never for inspection or editing.
- Allowed commands (with cd wiki_clone/ when needed):
- git clone <repo>.wiki.git wiki_clone (if wiki_clone does not already exist)
- git status
- git add .
- git commit -m "Update wiki"
- git push
- Do NOT use Bash for ls, cat, grep, find, python, or any other way of reading/writing files.
WORKFLOW
1. When the user gives a GitHub repo URL:
- Use Bash to clone the wiki if wiki_clone/ does not already exist:
git clone <repo>.wiki.git wiki_clone
2. Use Read/Glob/Grep (and any GitHub MCP tools) to explore the project:
- Read important files in the project folder (e.g. README, docs/, src/).
- Use that information to generate documentation.
3. Use Write to create or update ONLY:
- wiki_clone/Home.md
- wiki_clone/Getting-Started.md
- wiki_clone/Architecture-and-Tools.md
4. When the wiki pages are ready:
- Use Bash from wiki_clone/ to:
git add .
git commit -m "Update wiki"
git push
RULES
- You may READ from the whole project directory and wiki_clone/.
- You may WRITE only to the three wiki pages inside wiki_clone/.
- Never use Bash to inspect or edit files; only use it for git commands.
- Keep documentation clear, concise, and in GitHub Wiki style.
"""
3. CLI 输出的颜色处理
这部分代码让 CLI 的输出更友好,即使没有安装 colorama 也能正常工作。
- 尝试使用
colorama来显示彩色文本。 - 如果
colorama未安装,则回退到MockColors,确保脚本仍能运行(只是没有颜色,也不会崩溃)。
try:
from colorama import Fore, Style, init
init()
except ImportError:
class MockColors:
def __getattr__(self, name):
return ""
Fore = Style = MockColors()
4. 跟踪会话统计信息
一个简单的小数据类 dataclass 用于记录会话的成本、轮次和持续时间。
total_cost:来自 Claude SDK 的总花费(美元)。total_turns:发送的用户查询总次数。duration_ms:累计持续时间(毫秒)。
@dataclass
class SessionStats:
total_cost: float = 0.0
total_turns: int = 0
duration_ms: int = 0
5. 创建代理选项
接下来,我们将创建 ClaudeAgentOptions 对象并连接到 MCP 服务器。下面的函数会验证所需的环境变量,配置 GitHub MCP 服务器(如果可用),并限制代理可以使用的工具。
我们有意限制了 allowed_tools,以便 Opus 4.5 能够:将 Bash 用于 Git 操作,调用 GitHub MCP 服务器来检查仓库内容,以及使用 Read/Write(连同 Glob 和 Grep)来处理和验证本地 Markdown 文件。
def create_agent_options() -> ClaudeAgentOptions:
"""Validates env vars and configures the agent options."""
anthropic_key = os.getenv("ANTHROPIC_API_KEY")
github_pat = os.getenv("GITHUB_PAT")
if not anthropic_key:
print(
f"{Fore.RED}Error: ANTHROPIC_API_KEY environment variable is required.{Style.RESET_ALL}"
)
sys.exit(1)
# Configure MCP servers
mcp_servers: Dict[str, McpSdkServerConfig] = {}
if github_pat:
mcp_servers["github"] = {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {"Authorization": f"Bearer {github_pat}"},
}
return ClaudeAgentOptions(
model="claude-opus-4-5",
system_prompt=SYSTEM_PROMPT,
mcp_servers=mcp_servers,
permission_mode="bypassPermissions",
allowed_tools=[
"Read",
"Write",
"Glob",
"Grep",
"Bash",
"mcp__github__*",
],
)
6. 处理流式响应
这个函数会监听来自代理的响应流,并打印文本、工具使用情况以及工具输出。
- 使用
client.receive_response()作为异步流。 - 实时打印助手的文本内容。
- 当工具被调用时 → 打印
[Tool Use: ...]。 - 当工具返回输出时 → 截断并打印一个简短的单行预览。
- 当
ResultMessage到达时 → 使用成本和持续时间更新SessionStats。
async def process_response_stream(client: ClaudeSDKClient, stats: SessionStats):
"""Handles the stream of messages from the agent."""
async for message in client.receive_response():
# 1. Handle Assistant Content (Text & Tool Requests)
if isinstance(message, AssistantMessage):
for block in message.content:
if isinstance(block, TextBlock):
print(block.text, end="", flush=True)
elif isinstance(block, ToolUseBlock):
print(f"\n{Fore.CYAN}[Tool Use: {block.name}]{Style.RESET_ALL}")
# 2. Handle Tool Results (Outputs)
if hasattr(message, "content") and isinstance(message.content, list):
for block in message.content:
if isinstance(block, ToolResultBlock):
# Truncate output for cleaner CLI
raw_output = str(block.content)
clean_output = raw_output.replace("\n", " ")
short_output = (
clean_output[:200] + "..."
if len(clean_output) > 200
else clean_output
)
print(
f"{Fore.YELLOW} -> [Output]: {short_output}{Style.RESET_ALL}"
)
# 3. Handle Result Metrics (Cost & Usage)
if isinstance(message, ResultMessage):
if message.total_cost_usd:
stats.total_cost += message.total_cost_usd
if message.duration_ms:
stats.duration_ms += message.duration_ms
7. 打印会话总结
在会话结束时,为 CLI 应用程序显示友好的统计信息,包括轮次、持续时间和美元成本。
- 将
duration_ms转换为秒。 - 显示总成本,格式化为四位小数。
def print_summary(stats: SessionStats):
"""Prints the final session statistics."""
print(f"\n\n{Fore.GREEN}=== Session Summary ==={Style.RESET_ALL}")
print(f"Total Turns: {stats.total_turns}")
print(f"Duration: {stats.duration_ms / 1000:.2f}s")
print(f"Total Cost: ${stats.total_cost:.4f}")
print(f"{Fore.GREEN}======================={Style.RESET_ALL}")
8. 主异步函数
这是应用程序的核心控制流:它处理设置、连接服务、读取用户输入和发送查询。这个函数调用 create_agent_options() 并初始化统计信息。它会打印一个欢迎横幅,并指定启用了哪些 MCP 服务器。它还会使用异步上下文创建一个 ClaudeSDKClient。
应用程序运行一个简单的 REPL(Read-Eval-Print Loop):
- 输入 ’exit’ 或 ‘quit’ 退出应用程序。
- 每个有效查询都会使
stats.total_turns增加 1。 await client.query(user_input)发送用户消息。await process_response_stream(...)打印流式结果。- 捕获任何异常,并以红色显示错误消息。
- 最后,函数总是调用
print_summary(stats)。
async def main():
options = create_agent_options()
stats = SessionStats()
# Welcome message
print(f"{Fore.GREEN}=== GitHub Wiki AI Agent (Auto-Mode) ==={Style.RESET_ALL}")
print(
f"MCP Servers: {', '.join(options.mcp_servers.keys()) if options.mcp_servers else 'None'}"
)
print("Ask me to help with a GitHub wiki by mentioning the repository URL!")
print("Type 'exit' to quit.\n")
async with ClaudeSDKClient(options=options) as client:
try:
await client.connect()
while True:
try:
user_input = input(f"\n{Fore.BLUE}>> {Style.RESET_ALL}").strip()
except EOFError:
break
if not user_input:
continue
if user_input.lower() in ["exit", "quit"]:
break
stats.total_turns += 1
# Send query
await client.query(user_input)
print() # Spacer
# Process response stream using helper function
await process_response_stream(client, stats)
except Exception as e:
print(f"\n{Fore.RED}Session Error: {e}{Style.RESET_ALL}")
finally:
print_summary(stats)
9. 脚本入口点
最后,我们定义脚本的入口点,以便在直接执行文件时运行 CLI。下面的代码块启动主异步循环并处理干净的关闭:
if __name__ == "__main__":
try:
asyncio.run(main())
except KeyboardInterrupt:
print("\nSession interrupted.")
sys.exit(0)
测试自动化 Wiki 助手
所有东西安装好后,启动 CLI 聊天应用,并确保你的 Claude Code CLI 应用能正常工作:
python gh_wiki_cli.py
现在你可以像聊天界面一样与助手交互。可以问一些通用问题,或者直接告诉它为你的仓库构建 Wiki:
create the github wiki for https://github.com/kingabzpro/ECom-Intel

如果用户要求创建 Wiki,助手会自动执行以下操作:
- Wiki 克隆:创建或复用
wiki_clone/文件夹,并拉取最新的 Wiki 内容。 - 仓库检查:使用 MCP 工具读取 GitHub 仓库中的关键文件。
- 页面生成:自动起草并编写页面,例如:
Home.mdGetting-Started.mdArchitecture-and-Tools.md
- 提交并推送:助手会将新页面暂存、提交,并推送到:
<你的仓库>.wiki.git。 - 成功输出示例:完成后,你将看到一条清晰的确认消息。Wiki 将会在
https://github.com/kingabzpro/ECom-Intel/wiki上线。
我对助手能够收集演示图片、图表和其他关键信息,然后为 Wiki 组装出一个连贯的主页印象深刻。

Wiki 现在包含一个合适的目录、对助手和工具的解释,以及清晰的“入门”说明。

在运行结束时,会话总结显示,这次单独的会话花费了将近 1 美元,对于生成一个三页的 Wiki 来说,这的确有些昂贵了。如果仓库更大,我们需要一个比如 12 页的 Wiki,成本将显著上升。
=== Session Summary ===
Total Turns: 1
Duration: 282.99s
Total Cost: $0.9047
=======================
在第二次测试中,我让助手为另一个仓库创建 Wiki:
create the github wiki for https://github.com/kingabzpro/Issue-Analyzer
结果甚至更好。生成的 Wiki,可以在 https://github.com/kingabzpro/Issue-Analyzer/wiki 访问,现在包含了关于项目功能和如何入门的规范文档。

它包括了结构良好的表格、架构图和其他核心部分,让你能在大约五分钟内理解整个项目,而不是花费数天时间阅读代码。

最后的思考
当我第一次听说 Opus 4.5 被誉为世界上最好的编码和代理模型时,我感到由衷的兴奋,特别是它的定价与 Sonnet 模型相近。然而,当我意识到实验性地构建一个小应用就花费了大约 15 美元的 API 使用费时,我的热情有所减退。

Opus 4.5 虽然强大,但很昂贵。我也曾尝试使用 Haiku 和 Sonnet 复现相同的工作流程,但再这类代理型、文档密集型任务中,体验明显要差。这两者常常会回退到使用 Bash 工具,即使我明确要求它们使用 MCP 工具来读取 GitHub 文件。此外,它们解决问题的方式通常更迂回、更耗时。
如果你优先考虑准确性、可靠性和高质量的代码与文档生成,Opus 4.5 绝对值得考虑。但是,如果你的用例没那么关键,或者你对成本非常敏感,那么你可能更倾向于使用 Sonnet 甚至更便宜的开源模型。特别是对于大型仓库的多步骤代理工作流,Opus 4.5 相关的成本可能会迅速飙升。
如果你对这个项目感兴趣,你可以在这里找到完整的源代码,克隆再本地运行:kingabzpro/GitHub-Wiki-Agent。
如果你渴望继续构建 AI 智能体,我推荐你看看 Multi-Agent Systems with LangGraph 课程。
关于
关注我获取更多资讯