English | 中文
中文文档 | English
同时支持 OpenAI 兼容协议(OpenAI / DeepSeek / 通义千问 / Ollama / Moonshot / 智谱 等)与 Anthropic Claude,通过配置文件随时切换,无需改代码。
- 🤖 自主 Agent 循环:模型可调用工具 → 工具结果回填 → 继续推理,直到给出最终答复
- ⚡ 流式输出:模型回复逐字打印,接近真实对话(
"streamOutput": false可关闭) - 🚀 并行工具调用:同一轮多个工具并发执行,同路径写操作自动退化为顺序(
confirmCommands开启时也顺序执行) - 🖥️ 工具调用可视化:执行工具时实时显示动作与耗时,
run_command附带输出预览("showToolCalls": false可关闭) - 🔁 自动重试:429 / 5xx / 连接失败自动指数退避重试(最多 2 次),流式已输出文本则不重试
- 🧠 上下文自动摘要:历史超限时先用 LLM 压缩最早对话,失败才回退丢弃旧消息
- 🎭 多工作模式:
/mode或 Tab 切换内置 8 种(code/plan/explain/review/debug/refactor/test/doc)+ 配置自定义模式;只读模式自动隐藏并拦截写工具 - 🎮 ADOFAI mod 适配:检测到 mod 项目自动注入开发上下文与 moddev / harmony / assetbundle 模式
- 🎨 Markdown 渲染:代码块 / 行内代码 / 加粗 / 标题着色(
"renderMarkdown": false可关闭) - ⌨️ 终端 TUI:斜杠命令菜单(过滤/方向键选择/数字执行/→ 填充)、命令历史(↑/↓,持久化、Ctrl+R 反向搜索)、TAB 补全、多行粘贴折叠、Shift+Enter 手动换行、Ctrl+L 清屏、
[模式]提示符 - 🔧 内置 231 个工具:颜色遵循
NO_COLOR(https://no-color.org)与TERM=dumb,输出重定向时自动关闭转义序列(此时行内代码以反引号、加粗以星号保留原有标记、代码块保留围栏,语义不丢);亮色背景终端可设CODEAGENT_THEME=light切换配色;CODEAGENT_THEME=contrast(深底)或contrast-light(浅底)启用高对比配色,把次要文本从 DarkGray 提到 Gray;CODEAGENT_ASCII=1让制表符退回纯 ASCII(▌ │ ─→| | -);read_file(offset/limit/tail)/read_files(批量读取多个文件)/compare_files(文本文件 unified diff)/compare_directories(目录差异比较)/project_stats(项目文件统计)/code_metrics_report(代码行数构成报告)/directory_size_report(目录空间报告)/file_info(单文件属性统计)/file_infos(批量文件属性统计)/replace_in_files(按 glob 批量替换)/copy_file(安全复制文本文件)/copy_files(批量复制映射)/move_file(安全移动/重命名)/move_files(批量移动映射)/delete_file(安全删除单个文件)/delete_files(批量安全删除)/find_duplicates(重复文件检测)/find_large_files(大文件扫描)/find_stale_files(陈旧文件扫描)/find_unreadable_files(不可读文件审计)/find_temporary_files(临时文件扫描)/find_empty_files(空文件扫描)/find_recent_files(近期文件扫描)/find_filename_conflicts(文件名冲突审计)/find_long_paths(长路径扫描)/backup_file(安全文件备份)/restore_backup(安全恢复备份)/find_empty_directories(空目录扫描)/find_symlinks(符号链接审计)/checksum_manifest(SHA256 清单)/encoding_report(编码分布报告)/normalize_line_endings(批量换行规范化)/create_directory(安全创建目录)/remove_empty_directory(安全删除空目录)/file_extension_report(文件扩展名统计报告)/git_file_type_report(Git 文件分类报告)/line_ending_report(换行风格和 BOM 报告)/directory_depth_report(目录深度报告)/directory_size_breakdown(顶层目录大小分布)/project_manifest_report(项目清单和生态报告)/config_key_report(配置键审计报告)/readme_section_report(README 章节报告)/changelog_report(CHANGELOG 版本报告)/i18n_string_report(中文字符串提取报告)/readme_link_check(Markdown 相对链接检查)/http_url_audit_report(硬编码 URL 审计)/test_inventory_report(测试文件清单报告)/test_flakiness_report(测试稳定性信号报告)/test_assertion_report(测试断言强度报告)/debug_leftover_report(调试残留报告)/exception_handling_report(异常处理审查报告)/resource_leak_report(资源泄漏报告)/naming_convention_report(命名规范报告)/code_style_report(代码风格报告)/comment_quality_report(注释质量报告)/concurrency_risk_report(并发风险报告)/dead_implementation_report(空实现报告)/input_validation_report(输入校验报告)/duplicate_code_report(重复代码报告)/test_isolation_report(测试隔离性报告)/async_correctness_report(async 正确性报告)/collection_performance_report(集合性能报告)/string_performance_report(字符串性能报告)/null_safety_report(空值安全报告)/logging_practice_report(日志规范报告)/api_usage_report(API 使用报告)/file_safety_report(文件安全报告)/dependency_version_report(依赖版本报告)/error_handling_detail_report(错误处理细节报告)/config_hardening_report(配置健壮性报告)/api_compatibility_report(API 兼容性报告)/performance_anti_pattern_report(性能反模式报告)/data_contract_report(数据契约报告)/test_quality_report(测试质量报告)/resource_lifecycle_report(资源生命周期报告)/localization_readiness_report(国际化准备度报告)/documentation_sync_report(文档同步报告)/input_sanitization_report(输入处理报告)/observability_report(可观测性报告)/build_config_report(构建配置报告)/cache_strategy_report(缓存策略报告)/concurrency_safety_report(并发安全报告)/collection_usage_report(集合使用报告)/expensive_call_report(调用开销报告)/state_management_report(状态管理报告)/log_hygiene_report(日志卫生报告)/argument_safety_report(实参安全报告)/lifetime_bounds_report(容量边界报告)/numeric_literal_report(数值字面量报告)/dead_branch_report(分支可达性报告)/event_subscription_report(事件订阅报告)/inheritance_shape_report(继承体系报告)/null_coalescing_report(空值处理报告)/equality_contract_report(相等性契约报告)/using_directive_report(using 指令报告)/disposable_pattern_report(IDisposable 报告)/string_format_report(字符串构造报告)/enum_usage_report(枚举使用报告)/operator_overload_report(运算符重载报告)/doc_comment_report(文档注释报告)/partial_method_report(partial 成员报告)/obsolete_usage_report(Obsolete 使用报告)/extension_method_report(扩展方法报告)/record_mutability_report(record 可变性报告)/nullable_annotation_report(可空性标注报告)/gitignore_quality_report(.gitignore 质量报告)/todo_comment_report(TODO 标记报告)/csharp_keyword_report(C# 关键字报告)/large_method_report(超大方法报告)/duplicate_method_report(重复实现报告)/config_key_usage_report(配置项使用报告)/magic_number_report(魔法数字报告)/gitattributes_quality_report(.gitattributes 质量报告)/line_ending_mixed_report(换行符混杂报告)/todo_marker_report(TODO/FIXME 标记报告)/ci_workflow_report(CI 工作流概览)/license_inventory_report(许可证清单报告)/dependency_lockfile_report(依赖锁定文件报告)/json_schema_report(JSON Schema 清单报告)/secret_scan_report(疑似秘密脱敏扫描)/env_var_reference_report(环境变量引用报告)/sensitive_file_inventory(敏感文件名清单)/gitignore_pattern_report(Gitignore 模式报告)/gitattributes_report(Gitattributes 规则报告)/git_hook_inventory(Git hooks 清单)/git_executable_bit_report(Git 文件模式报告)/git_config_report(Git 配置摘要)/git_lfs_report(Git LFS 状态报告)/git_gpg_status_report(Git 签名状态报告)/git_ignored_files(只读 Git 忽略文件清单)/git_path_diff(只读 Git 路径变化)/git_index_diagnostics(只读 Git 索引冲突诊断)/git_worktree_details(只读 Git worktree 详情)/git_stash_info(只读 Git stash 详情)/git_status(只读 Git 状态)/git_check_ignore(只读 Git ignore 检查)/git_check_attr(只读 Git 属性检查)/git_ls_files(只读 Git 文件清单)/git_repository_info(只读 Git 仓库信息)/git_repo_size_report(.git 目录体积报告)/git_fsck(只读 Git 完整性检查)/git_submodule_status(只读 Git 子模块状态)/git_describe(只读 Git 版本描述)/git_contributors(只读 Git 贡献者统计)/git_file_history(只读 Git 文件历史)/git_file_stats(只读 Git 文件统计)/git_object_info(只读 Git 对象类型和大小)/git_tree_entries(只读 Git tree 条目)/git_commit_info(只读 Git 提交元数据)/git_compare_refs(只读比较 Git 引用差异)/git_tag_info(只读 Git 标签信息)/git_diff(只读 Git 差异)/git_log(只读 Git 提交历史)/git_blame(只读逐行来源追踪)/git_show(只读提交详情)/git_branches(只读分支列表)/git_branch_age_report(只读分支时效报告)/git_remotes(只读远程地址,自动脱敏)/git_remote_sync_report(只读远程同步状态)/git_tags(只读标签列表)/git_reflog(只读 HEAD/引用移动记录)/git_worktrees(只读 linked worktree 列表)/git_stashes(只读 stash 列表)/write_file/edit_file(换行风格容错:LF↔CRLF 自动归一化匹配)/list_directory/glob/grep(支持 multiline 跨行匹配)/run_command/bash/powershell/apply_patch/stop(命令类工具自动选用 Git Bash / PowerShell)/update_tasks(更新任务清单,进度用/tasks查看);edit_file/write_file执行前展示彩色 diff 预览 - 🔁 Anthropic extended thinking 全支持:思考文本 + 签名与加密的 redacted_thinking 块随工具调用轮原样回传(缺失会被 API 400)
- ↩️ 会话自动落盘:
--continue恢复最近会话、/resume按编号恢复历史会话、/find <关键字>跨历史会话搜索、Esc 多级撤回逐轮回退;--no-session本次运行不落盘(隐私任务) - 📊 用量可见:状态栏显示本回合 token、当前上下文规模 ctx(含百分比,窗口大小自动识别常见模型)、思考强度(
auto自动探测模型推理档位并取最高)与当前 git 分支;/compact [重点]主动压缩历史(压缩过程显示进度;可附保留重点,如/compact 保留接口设计) - ✅ 配置校验:未知配置项 / 非法枚举值启动时明确警告(拼写错误不再静默失效)
- 🔌 双 Provider:OpenAI 兼容(chat completions + function calling)、Anthropic(messages + tool use)
- ⚙️ 配置文件
codeagent.json(项目级或~/.codeagent/config.json全局级),API Key 从环境变量读取 - 🛡️ 工作区沙箱:文件工具默认无法访问工作区之外;命令执行可选逐个确认
- 🔐 文件访问分级:strict(默认沙箱)/ whitelist(沙箱 + 只读白名单)/ full(完全放开),
/access或 Shift+Tab 实时切换并持久化 - 📝 会话日志:每轮对话写入
.codeagent/sessions/*.jsonl,可回看;超出maxSessionLogs(默认 30)自动清理最旧日志 - 🌍 编码自适应:读文件自动识别 BOM / UTF-8 / GB18030(GBK),中文老项目不乱码;写回与撤销保留原有 UTF-8 BOM
⚠️ 截断告警:输出被maxTokens截断时(finish_reason=length / stop_reason=max_tokens)明确提示,回复不完整不再静默- 💬 两种用法:一次请求
codeagent "任务"(支持管道附加 stdin 内容),或交互式 REPL
需要 .NET 10 SDK。
# 1. 构建
cd CodeAgent
dotnet build -c Release
# 2. 交互式配置供应商(推荐:终端里选供应商、填模型,自动生成 codeagent.json,保存前自动测试连接)
dotnet run --project src/CodeAgent -- --setup
# 或先生成示例配置再手动编辑: dotnet run --project src/CodeAgent -- --init
# 3. 按向导选择的方式设置 API Key(环境变量或直接输入),例如:
export OPENAI_API_KEY=sk-xxx # Windows (PowerShell): $env:OPENAI_API_KEY="sk-xxx"
# 5. 运行
dotnet run --project src/CodeAgent -- "帮我看下这个项目的结构,并写一个 README"也可以发布成单文件可执行程序:
dotnet publish src/CodeAgent -c Release -r win-x64 --self-contained false -o dist
./dist/codeagent.exe配置查找顺序:-c 指定的路径 → 当前目录 codeagent.json → ~/.codeagent/config.json → 内置默认值。
在 codeagent.json 的 modes 列表里定义自己的模式(/mode 即可切换):
"modes": [
{
"name": "fix",
"description": "修复模式:定位并修复 bug",
"systemPrompt": "You are CodeAgent in FIX mode. Reproduce the bug, find the root cause, apply a minimal fix, then verify with the build/tests.",
"tools": [] // 空数组 = 全部工具;填列表 = 仅限这些工具
}
]切换 Provider 的三种方式:
codeagent -p deepseek "任务..." # 命令行指定
CODEAGENT_PROVIDER=anthropic codeagent # 环境变量指定(-p 优先;兼容旧拼写 CODEGENT_PROVIDER)
CODEAGENT_MODEL=gpt-4o codeagent # 只换模型(-m 优先;兼容旧拼写 CODEGENT_MODEL)
# REPL 内: /model gpt-4o-mini (切模型)注意:
type: "openai"表示“OpenAI 兼容协议”,DeepSeek、通义、Ollama 等都走这个类型,只需换baseUrl和model。若模型不支持 function calling(如纯文本模型),Agent 会无法工作。
文件工具默认被工作区沙箱限制(fileAccess: "strict")。三种级别:
| 级别 | 说明 |
|---|---|
strict(默认) |
读写都限制在工作区内,无法访问工作区之外 |
whitelist |
工作区 + readOnlyDirs 只读白名单;读/搜索工具可访问白名单目录,但写工具与命令执行仍限工作区 |
full |
完全放开沙箱,所有文件可读可写(仅用于信任场景) |
切换方式(无需重启,且会写回配置文件持久化):
/access next # 循环切换 strict → whitelist → full
/access whitelist # 直接指定级别
# REPL 内 Shift+Tab 也可循环切换readOnlyDirs 用于 mod 开发等场景——需要读取兄弟项目(如 adofai-libs 反编译库)但绝不允许改动它。路径可为绝对路径,相对路径按工作区解析。
注意:白名单只在 fileAccess=whitelist 时生效。strict 档下读工具仍限工作区,full 档下完全放开——这两种档位配置了 readOnlyDirs 也不会启用(/config 的 Access 行会明确标注「未生效」,并把配了哪些目录另起一行列出,避免把没生效的护栏误读成正在保护)。
当工作目录被识别为 ADOFAI(A Dance of Fire and Ice)mod 项目(根目录存在 Info.json 且含 AssemblyName/EntryMethod,或存在 Assembly-CSharp.dll)时,会自动:
- 把 ADOFAI mod 开发专属上下文追加到系统提示(仅在未自定义
systemPrompt时注入); - 注入
moddev/harmony/assetbundle三个专属工作模式(同名自定义模式优先保留); - 若检测到
AdofaiKnowledge.md知识库,提示 Agent 开发前先阅读。
普通项目不受影响,无需任何配置。
codeagent "把 Program.cs 里的 TODO 都实现掉"
codeagent --cwd ../some-project "解释一下这个项目怎么构建"
codeagent --mode review "审查 src/Agent.cs" # 以指定工作模式启动(会话级覆盖 defaultMode,不写回配置)
codeagent --models # 列出当前 Provider 的可用模型
codeagent --continue # 恢复本项目最近一次会话继续对话
codeagent --resume 3 # 按 /resume 列表编号恢复历史会话
codeagent --continue "接着上次的任务继续" # 恢复会话后直接执行新请求
codeagent --no-session "..." # 本次运行不写会话日志(隐私敏感任务)每条消息自动落盘到 .codeagent/sessions/*.jsonl(saveSessions 控制),--continue 恢复最近一次;会话内 /resume 列出最近 10 次(相对时间 + 首条用户输入预览)并按编号恢复,/find <关键字> 跨历史会话搜索内容,/clear 后自动滚动新日志(不会误恢复已清空的历史);/export <编号> 把 /resume 列表中的历史会话导出为 Markdown(不带编号则导出当前对话;与命名快照撞名时快照优先)。
codeagent
codeagent> 帮我看看 src 下有哪些类
codeagent> 给 ToolRegistry 加一个单元测试
codeagent> /model claude-sonnet-4-5
codeagent> /clear
codeagent> /exitREPL 命令:/help /clear /compact /cls /model [名称|编号] /provider [名] /config /session /setup /undo /diff [N] /save /load /resume [编号] /find <关键字> /export [名/编号/all] /copy /prompt /files /stats /tasks /retry /tools /providers /models [关键字] /history [N] /thinking /shell /mode /access /diag /commands [reload] /vim [on|off] /hooks /output-style [名字] /statusline [命令|off] /doctor /exit /quit。
工作模式:/mode 查看,/mode plan 切换。内置 8 种:code(默认全功能)、plan / explain / review(只读,自动隐藏并拦截写工具)、debug / refactor / test / doc(全功能专用)。还可在 codeagent.json 的 modes 列表定义自定义模式(系统提示 + 工具范围)。
/undo 会撤销最近一次 write_file / edit_file 对文件的修改:新建的文件被删除,覆盖的文件恢复原内容(最多记住最近 50 次修改)。用法:/undo(撤销最近一次)、/undo N(撤销最近 N 次)、/undo list(列出历史)、/undo clear(清空撤销记录,已落盘改动不会回滚)。
/diff 显示最近一次修改的 diff(基于撤销快照与当前文件内容对比),方便审查 agent 的改动。
自定义命令:把 Markdown 模板放进 .codeagent/commands/(项目级)或 ~/.codeagent/commands/(用户级,所有项目可用),文件名就是命令名,子目录用 : 连接(db/migrate.md → /db:migrate)。正文即提示词,支持 $ARGUMENTS(整串实参)、$1…$9(按空白切分,认成对的引号)、$$(字面 $);可选 front matter 写 description 与 argument-hint。敲 / 就会出现在补全菜单里,/commands 列出已加载的命令、/commands reload 改完模板无需重启。同名时项目级盖住用户级;与内置命令重名、名字含空格、正文为空、超过 256 KB 的文件会被跳过并说明原因——不会静默失效。
vim 键位:/vim 切换(也接受 /vim on / /vim off,会写进配置)。开启后提示符末尾多出 [I] / [N] 标记当前模式;按 Esc 从插入切到普通。普通模式下 h l w b e 0 ^ $ gg G 移动、x dd dw db de D 删除、cw cc C 修改、u 撤销、i a A I 回到插入,支持数字前缀(3l、2dd)。方向键、Tab 补全、Ctrl+R 搜索在普通模式下照常可用。注意:vim 开启时 Esc 不再是「清空输入 / 撤回上一条消息」,它专职退出插入模式。
工具钩子:在 codeagent.json 里配 hooks,在工具执行前后跑自己的命令:
{
"hooks": [
{ "event": "preToolUse", "matcher": "write_file", "command": "pwsh -File scripts/guard.ps1", "timeoutSeconds": 10 },
{ "event": "postToolUse", "matcher": "*", "command": "gofmt -w ." }
]
}matcher 是 *(全部工具)或精确工具名(不分大小写)。命令经 config.shell 在工作区根执行;事件与工具名走环境变量 CODEAGENT_HOOK_EVENT、CODEAGENT_HOOK_TOOL,完整载荷(event/tool/arguments/cwd,post 阶段另有 result)以 JSON 经 stdin 传入。退出码语义:0 通过;2 否决——pre 阶段工具不再执行,post 阶段把 stderr 作为反馈交给模型;其它非 0 视为钩子自身出错,不拦工具但会在结果前附一行说明(不静默)。/hooks 列出当前真正会执行的钩子;/hooks check <工具名> 回答「这次调用到底会命中哪些钩子」(matcher 只认 * 或精确名,write 不会命中 write_file)。
输出风格:/output-style 列出、/output-style <名字> 切换并写入配置。内置 default(不追加任何内容)、explanatory(讲清楚为什么)、learning(边做边教);自定义风格放进 .codeagent/output-styles/*.md(项目级)或 ~/.codeagent/output-styles/*.md(用户级),文件名即风格名,可选 front matter 写 description。风格正文追加在系统提示末尾而不是替换它——替换会把工具用法和项目规则一起挤掉;default 与内置名不允许被文件覆盖,否则用户以为没配风格,行为却已经变了。
状态栏外部命令:/statusline <命令> 让自己的脚本参与状态栏——stdout 的首行整理成一段接在状态栏末尾(去 ANSI、折叠空白、最长 120 字符),/statusline 空参查看当前输出,/statusline off 关闭。脚本经 config.shell 在工作区根执行,载荷(mode/model/cwd/branch)以 JSON 经 stdin 传入,超时默认 2 秒(statusLineTimeoutSeconds)。三条约束:命令超时或失败时状态栏照常出(片段为空,不抛错);空间不够时这一段第一个被丢掉,不会把 ctx/目录挤没;改完 /statusline 会立刻跑一次并回显,避免「配了不知道有没有用」。
自检 /doctor:一次问清「配了但没生效」——配置文件来源与警告、Provider 密钥是否找得到、工作区与会话目录是否可写、shell 是否可用、git 是否可用与 .codeagent/ 是否已被忽略、规则文件、自定义命令(含坏模板条数)、输出风格是否真的存在、钩子条数、状态栏命令是否配了却没输出、vim 是否开启。每项给出级别 + 现场细节,非 Ok 的项必须带可操作建议:只说「有问题」不说「怎么办」的自检等于没做。
会话管理:/save <名> 把当前对话保存为命名快照(.codeagent/sessions/),/load <名> 恢复;/export [名] 把当前(或指定)会话导出为 Markdown 记录;/stats 显示本轮 token 用量;/tasks 显示模型当前的任务清单(长任务进度);/retry 重新执行上一条请求。
运行中按 Ctrl+C 或 Esc 可优雅取消当前轮(停止模型思考/工具执行,中断后历史会自动回滚为合法状态,可继续对话);空闲时按 Ctrl+C 退出程序。
交互输入:输入 /(兼容全角 /)自动弹出命令菜单(ANSI 原地渲染:↑/↓ 让 > 在列表内原地移动、→ 把选中命令填充到输入行(不执行,可继续加参数)、回车执行、Esc 关闭、继续输入即过滤;数字键 1-9 直接执行;老式终端乱码时设 "tuiAnsi": false 退回滚动式);快捷键:Esc(空输入时)撤回最近一轮对话(连按逐轮回退)、Tab(输入非 / 开头时)切换下一个工作模式(/mode next)、Shift+Tab 切换文件访问权限模式(strict→whitelist→full,/access 查看)、Alt+M(或 Ctrl+Shift+M)模式菜单、Alt+U 撤销、Alt+D 查看 diff、Alt+N 新建会话、Ctrl+←/Ctrl+→ 按词移动、Ctrl+Backspace/Ctrl+Delete 按词删除、Shift+Enter 插入换行(手动多行输入)、Home/End 当前行行首/行尾(多行输入)、Ctrl+L清屏(部分终端吞 Alt 时用 Ctrl+Shift 组合);菜单内Shift+Tab反向循环选择项;无菜单时↑/↓ 浏览命令历史、Ctrl+R反向搜索历史(持久化在.codeagent/history.txt)。每轮提示符上方显示**状态栏**:⏵ 模式 · 模型 · 目录 · token 用量。提示符显示当前模式、模型与目录,如 [debug|laguna-s-2.1:free] CodeAgent>`。
| 工具 | 说明 |
|---|---|
read_file |
带行号读取文件,支持 offset/limit 分段读取、tail 读末尾 N 行与 no_line_numbers;二进制文件与目录会给出明确提示 |
read_files |
一次读取最多 20 个文件;复用 read_file 的范围参数,限制总输出字符数,单文件失败可选择继续处理其他文件 |
compare_files |
比较两个文本文件并返回 unified diff;可忽略首尾空白/空行并限制输出行数 |
compare_directories |
比较两个目录的新增/删除/修改文件,并对公共文本文件生成差异摘要 |
project_stats |
统计项目文件数量、大小、扩展名分布;可筛选扩展名、统计行数并列出最大文件 |
code_metrics_report |
只读统计总行/空行/注释行/代码行并按目录聚合 |
source_composition_report |
只读按语言统计代码/注释/空白构成并标出欠注释文件 |
file_info |
查看单文件大小、时间、编码、行数/单词数和可选 SHA256,不输出正文 |
file_infos |
批量查看文件大小、编码、行数/单词数和可选 SHA256 |
replace_in_files |
按 glob 在多个文件中精确替换文本,支持 dry-run、忽略大小写、逐文件报告和撤销栈 |
copy_file |
安全复制文本文件,支持覆盖保护、dry-run、编码/时间戳保留和撤销 |
move_file |
安全移动/重命名文件,支持覆盖保护、dry-run、时间戳保留和可撤销记录 |
delete_file |
安全删除单个文件,支持 dry-run、missing_ok、可选 .bak 备份和可撤销恢复 |
find_duplicates |
按文件大小和 SHA256 查找完全重复文件,输出重复组及可回收空间 |
copy_files |
按多个 source/destination 映射批量复制文本文件,支持单项覆盖、dry-run 和错误汇总 |
git_status |
只读查看 Git 分支、工作区/暂存区状态和 diff 统计,使用参数化进程调用 |
git_check_ignore |
只读检查路径是否被 Git ignore 规则匹配,并显示匹配来源 |
git_check_attr |
只读查询路径的 Git 属性设置,例如 text、eol、filter 和 merge |
git_ls_files |
只读列出 Git 已跟踪或未跟踪文件,支持 glob、结果和输出限制 |
git_repository_info |
只读汇总仓库根目录、分支、浅克隆状态和对象计数 |
git_repo_size_report |
只读统计 .git 各部分体积并给出回收提示 |
git_fsck |
只读检查 Git 对象库、提交和引用完整性,支持 full/dangling 模式 |
git_submodule_status |
只读查看 Git 子模块初始化状态、提交指针和递归子模块 |
git_describe |
只读生成 Git 版本描述,支持标签匹配、长格式和 dirty 状态 |
git_contributors |
只读统计所有引用中的 Git 贡献者和提交数量 |
git_file_history |
只读查看单个文件的 Git 历史,支持跟随重命名和限制结果数 |
git_file_stats |
只读汇总 Git 文件大小、行数、类型和最近提交 |
git_object_info |
只读检查 Git 对象的类型和大小 |
git_tree_entries |
只读列出 Git tree 条目、类型和对象 ID |
git_commit_info |
只读查看提交 ID、Tree、父提交、作者和提交说明 |
git_compare_refs |
只读比较两个引用的领先、落后提交和共同祖先 |
git_tag_info |
只读查看 Git 标签指向对象、类型和注释信息 |
file_extension_report |
只读统计文件扩展名数量和总大小 |
git_file_type_report |
只读按源码/测试/配置/文档/资源分类已跟踪文件 |
line_ending_report |
只读统计 LF/CRLF、BOM 和二进制文件状态 |
directory_depth_report |
只读分析目录深度分布和最深层目录 |
directory_size_breakdown |
只读按顶层子目录汇总文件数量和大小 |
git_worktree_details |
只读查看 linked worktree 的 HEAD、分支和锁定状态 |
git_stash_info |
只读查看 Git stash 的元数据和变更文件 |
project_manifest_report |
只读发现项目清单并汇总生态信息 |
target_framework_report |
只读汇总目标框架并标出预览/EOL 风险 |
config_key_report |
只读审计配置键并标出拼写错误 |
readme_section_report |
只读提取 README 标题结构并提示章节缺失 |
changelog_report |
只读解析 CHANGELOG 版本与条目统计 |
i18n_string_report |
只读提取中文字符串字面量以评估 i18n 范围 |
readme_link_check |
只读检查 Markdown 相对链接是否失效 |
doc_freshness_report |
只读检查文档失效锚点、版本号不一致与陈旧引用 |
http_url_audit_report |
只读审计硬编码 URL 并标出占位地址 |
test_inventory_report |
只读发现测试文件并汇总测试框架和断言线索 |
test_flakiness_report |
只读扫描测试中的易波动因素并给出建议 |
test_assertion_report |
只读审查断言强度:恒真断言、空断言与硬编码文案 |
debug_leftover_report |
只读扫描调试残留:断点、等待按键与被注释的测试 |
exception_handling_report |
只读审查异常处理:空 catch、捕获过宽与未使用变量 |
resource_leak_report |
只读审查资源释放:缺 using/Dispose 与未释放字段 |
naming_convention_report |
只读检查文件名/类型名一致性与含义模糊的命名 |
code_style_report |
只读统计 var 占比、大括号风格混用与缺失文件头 |
comment_quality_report |
只读检查 TODO 责任人、空注释行与标记分布 |
concurrency_risk_report |
只读检查并发风险:阻塞等待、未 await、静态可变状态 |
dead_implementation_report |
只读检查空实现:未实现、恒返回常量、只调用 base |
input_validation_report |
只读检查输入校验:环境变量判空、Parse/TryParse、参数越界 |
duplicate_code_report |
只读检查重复代码:相同片段与同名常量重复定义 |
test_isolation_report |
只读检查测试隔离性:共享状态、非确定性依赖、缺少清理 |
async_correctness_report |
只读检查 async:async void、无 await、Task 无 return、缺取消令牌 |
collection_performance_report |
只读检查集合性能:泄漏内部集合、循环内 LINQ、重复物化 |
string_performance_report |
只读检查字符串/正则性能:循环内 Regex、嵌套量词、循环内拼接 |
null_safety_report |
只读检查空值安全:下标未判存在、OrDefault 链式、缺 ?? 兜底 |
logging_practice_report |
只读检查日志规范:写控制台、只取 Message、catch 吞异常 |
api_usage_report |
只读检查 API 调用:硬编码 URL、无超时、反序列化未校验 |
file_safety_report |
只读检查文件操作安全:删除未校验、符号链接、路径拼接 |
dependency_version_report |
只读检查依赖版本:通配符、浮动版本、平台锁定 |
error_handling_detail_report |
只读检查错误处理细节:静默默认值、丢 inner、未观察 Task |
config_hardening_report |
只读检查配置健壮性:硬编码密钥、明文口令、不安全默认 |
api_compatibility_report |
只读检查 API 兼容性:仍在用已废弃成员、Obsolete 缺说明、可空漂移 |
performance_anti_pattern_report |
只读检查性能反模式:循环内重复计算、嵌套线性检索、循环内分配 |
data_contract_report |
只读检查数据契约:字段/属性混用、字典键用 object、可变 static |
test_quality_report |
只读检查测试质量:恒真断言、弱断言、缺少断言 |
resource_lifecycle_report |
只读检查资源生命周期:可释放对象未托管、订阅未退订、只有终结器 |
localization_readiness_report |
只读检查国际化准备度:硬编码中文文案、缺本地化资源、日期格式硬编码 |
documentation_sync_report |
只读检查文档同步:公开成员缺文档、README 未登记、注释掉的死代码 |
input_sanitization_report |
只读检查输入处理:shell 拼接未加引号、输入无上限、参数未校验 |
observability_report |
只读检查可观测性:日志含敏感字段、错误被静默、Console 代替日志 |
build_config_report |
只读检查构建配置:版本号不一致、流水线用 Debug、.gitignore 缺项 |
cache_strategy_report |
只读检查缓存策略:无界缓存、重复计算、缓存键不唯一 |
concurrency_safety_report |
只读检查并发安全:跨 await 持锁、无保护写共享集合、裸线程 |
collection_usage_report |
只读检查集合使用:循环内 += 拼接、List.Contains 查找、反复物化 |
expensive_call_report |
只读检查调用开销:循环内昂贵调用、循环内 new Regex、调用散落多处 |
state_management_report |
只读检查状态管理:单例持有可变集合、暴露可变集合、Reset 覆盖不全 |
log_hygiene_report |
只读检查日志卫生:日志含敏感字段、异常夹带请求全文、调试残留 |
argument_safety_report |
只读检查实参传递安全:入参直用路径、缺参数校验、命令未用 ArgumentList |
lifetime_bounds_report |
只读检查容量与边界:按入参分配数组、无上限收集、魔法数字阈值 |
numeric_literal_report |
只读检查数值与单位:魔法数字、浮点相等比较、字节/字符混用 |
dead_branch_report |
只读检查分支可达性:两分支都 return、悬空 return、恒真/恒假条件 |
event_subscription_report |
只读检查事件订阅:缺少解绑、lambda 订阅、静态事件 |
inheritance_shape_report |
只读检查继承体系:非空字段未初始化、new 隐藏成员、成员隐藏 |
null_coalescing_report |
只读检查空值处理:过长 ?? 链、连续判空、判空后反复解引用 |
equality_contract_report |
只读检查相等性契约:Equals 缺 GetHashCode、== 与 Equals 混用、struct 用 Equals |
using_directive_report |
只读检查 using 指令:正文未引用的命名空间、隐式 System.* 噪音、System.* 过多 |
disposable_pattern_report |
只读检查 IDisposable:有终结器未抑制、缺少 Dispose 实现、字段未释放 |
string_format_report |
只读检查字符串构造:循环内 += 拼接、格式串参数不匹配、IFormattable 未配合 |
enum_usage_report |
只读检查枚举:switch 缺 default、位运算缺 [Flags]、枚举比大小 |
operator_overload_report |
只读检查运算符重载:成对运算符只重载一半、相等语义不一致 |
doc_comment_report |
只读检查 XML 文档注释:公开成员缺 summary、标签未闭合、summary 为空 |
partial_method_report |
只读检查 partial 成员:partial 只写一半、方法只有声明没有实现、类型跨文件拆分 |
obsolete_usage_report |
只读检查 [Obsolete]:标注了却仍在用、error:true 仍在用、未写替代方案 |
extension_method_report |
只读检查扩展方法:非 static 类里的扩展方法、首参缺 this、定义在嵌套类 |
record_mutability_report |
只读检查 record 不变性:持有可变集合字段、有会改状态的成员、record struct |
nullable_annotation_report |
只读检查可空性标注:#nullable disable、裸引用类型、集合元素未标 ? |
gitignore_quality_report |
只读检查 .gitignore:反斜杠跨平台失效、绝对路径、通配符过宽、常见产物漏忽略 |
todo_comment_report |
只读检查 TODO/FIXME 标记:无归属人、无关联工单、标记在被注释掉的代码里 |
csharp_keyword_report |
只读检查 C# 关键字:声明名与关键字同形或仅差大小写、多余的 @ 前缀 |
large_method_report |
只读检查超大方法:方法体过长、嵌套过深、参数过多、分支过多 |
duplicate_method_report |
只读检查重复实现:方法体逐字重复、方法名重复、重复注释块 |
config_key_usage_report |
只读检查配置项:声明了却从未读取、读取了却无声明、命名风格不一致 |
magic_number_report |
只读检查魔法数字:重复字面量、比较/算术里的裸字面量、端口/超时/缓冲区量级 |
gitattributes_quality_report |
只读检查 .gitattributes:缺 text=auto、缺 eol 声明、规则矛盾/重复、二进制误当文本 |
line_ending_mixed_report |
只读检查换行符混杂:仓库 CRLF/LF 混用、单文件内混用、末尾无换行 |
stale_comment_report |
只读检查脱节注释:复述标识符的注释、注释掉的死代码、待办/过期标记 |
string_concat_perf_report |
只读检查字符串拼接性能:循环体内反复 += 或 = a + b、循环里不变的字面量前缀、超长多段拼接 |
test_placeholder_report |
只读检查测试占位与空壳:没有断言的测试、恒真断言、空断言、被注释掉的测试 |
public_api_surface_report |
只读检查公开 API 稳定性:可变默认值、公开字段、只能靠位置传的 bool 参数 |
optional_param_dropped_report |
只读检查接口实现与接口声明的签名漂移:实现漏了可选参数默认值、少了 ref/out/in、返回类型不一致 |
switch_exhaustiveness_report |
只读检查 switch 完备性:缺 default、对 enum 的 switch 漏成员、case 重复书写 |
linq_query_report |
只读检查 LINQ 查询陷阱:循环体内重复查询、同一序列枚举两遍、循环体里的单谓词 LINQ |
swallowed_exception_report |
只读检查被吞掉的异常:空 catch 块、既不抛也不记录、catch 类型与抛出类型不符 |
equals_gethashcode_report |
只读检查 Equals/GetHashCode 契约:漏写 GetHashCode、漏写 Equals、两个方法依据的字段不一致 |
deferred_query_report |
只读检查 LINQ 延迟执行陷阱:未物化的查询、foreach 中修改集合、同一变量被反复枚举 |
boxing_allocation_report |
只读检查热路径上的隐式分配:装箱、循环体内的字符串插值、ToList() 后立刻被枚举 |
time_unit_confusion_report |
只读检查时间单位的陷阱:名字说毫秒值像秒、名字说秒值像毫秒、超时值没有单位 |
culture_format_report |
只读检查区域设置陷阱:ToString/Parse 未指定文化、ToUpper/ToLower 未用不变文化 |
concurrent_mutation_report |
只读检查并发写入共享状态:并行写共享集合、未加锁的计数器自增、并行里改写捕获变量 |
undisposed_stream_report |
只读检查流与句柄泄漏:可释放对象没包 using、手动 Dispose、直接返回可释放对象 |
null_assignment_report |
只读检查可空性陷阱:非空变量被赋 null、判空后仍直接解引用、非空方法 return null |
boolean_parameter_report |
只读检查布尔参数陷阱:可选参数排在必选参数之后、语义不明的布尔开关、签名里参数重名 |
hardcoded_secret_report |
只读检查源码里的硬编码凭据:API Key/Token/口令字面量、连接串口令、密钥进了日志或异常 |
path_escape_report |
只读检查路径逃逸:Path.Combine 未校验根目录、.. 上跳、用字符串前缀判断路径归属 |
duplicate_logic_report |
只读检查复制粘贴:同一字面量多个常量名、除名字外相同的方法体、散落的魔法数字 |
silent_catch_report |
只读检查静默失败:空 catch、catch 变量未使用、catch 后返回默认值 |
interface_contract_report |
只读检查接口契约漂移:接口成员未实现、参数类型悄悄对不上、可能漏写 override |
testability_report |
只读检查可测性:过长的方法、private 里藏着的长逻辑、if/else 不成对 |
lock_misuse_report |
只读检查锁的使用:lock 块里有 await、锁了值类型/字面量、同一把锁嵌套 |
dependency_inversion_report |
只读检查依赖倒置缺口:字段/构造参数声明成具体类型、直接 new 基础设施 |
ownership_report |
只读检查资源所有权:IDisposable 却没 Dispose、收到可释放参数但没说清所有权、注入字段释放责任不明 |
weak_assertion_report |
只读检查弱断言:测试里没有断言、恒真断言、测试内吞掉异常、共享可变静态状态 |
untrusted_input_report |
只读检查不可信输入:命令/SQL 拼接、未校验的外部路径、动态加载外部程序集 |
retry_safety_report |
只读检查重试的正确性:固定间隔无退避、没有次数上限、重试里包含非幂等写操作 |
state_machine_report |
只读检查状态机漏洞:状态字段被赋枚举外的值、switch 缺 default、状态变更无前置校验 |
observability_gap_report |
只读检查可观测性缺口:catch 无痕迹、关键写操作无日志、日志无关联标识 |
time_zone_report |
只读检查时区陷阱:Now 与 UtcNow 混用、Kind 丢失后换算、用 DateTime 存时刻 |
collection_edge_report |
只读检查集合边界:未判空就取首/聚合、索引访问代替 TryGetValue、循环里的 List.Contains |
contract_evolution_report |
只读检查契约演进风险:必需参数没有默认值、返回内部集合引用、接口成员无默认实现 |
config_robustness_report |
只读检查配置脆弱性:环境变量不判空、解析失败静默兜底、数值型配置没有范围校验 |
float_precision_report |
只读检查浮点/金额精度:浮点字面量参与算术、浮点用 == 比较、Math.Round 未指定舍入模式、Parse 未固定区域 |
enum_flag_report |
只读检查枚举/标志误用:枚举与数字字面量比较、[Flags] 枚举用 == 判断、布尔与 true/false 比较 |
async_misuse_report |
只读检查 async/await 误用:.Result/.Wait() 同步阻塞死锁、async 里没有 await、发射后不管导致异常丢失 |
api_version_pin_report |
只读检查项目文件依赖版本:版本用 ^ ~ * 范围未锁死、预发布版本、同一个包锁了多个版本 |
nested_try_report |
只读检查 try/finally 控制流陷阱:内层 catch 吞掉异常、finally 里 return/throw 覆盖原异常、循环里 finally 用 return 结束迭代 |
iterator_yield_report |
只读检查迭代器陷阱:迭代器里用 return 提前截断序列、yield 出现在 try-catch 中、迭代器里做阻塞 I/O |
switch_fallthrough_report |
只读检查 switch 穿透:case 分支没写 break/return 就落进下一个 case、default 不在最后 |
linq_deferred_report |
只读检查 LINQ 延迟执行:延迟查询被反复使用、循环里反复枚举同一条查询、查询后改写集合 |
string_interpolation_report |
只读检查字符串拼接写法:循环里 + 拼接(O(n²))、多段拼接未用插值、循环里拼日志 |
array_bounds_report |
只读检查数组越界:arr[arr.Length] off-by-one、减法索引无下界保护、可能为空的结果直接取下标 |
readonly_struct_report |
只读检查 struct 语义:readonly struct 里声明 setter、可变 struct 当集合键后又被改写、防御性拷贝 |
integer_overflow_report |
只读检查整数运算静默错误:unchecked 溢出回绕、整数除法向零截断、窄化强制转换丢精度 |
default_parameter_report |
只读检查默认参数值陷阱:默认值是共享的可变对象、默认取 DateTime.Now、默认值不是常量表达式 |
lost_update_report |
只读检查共享计数器的丢失更新:共享字段 ++/+=/读改写却既没 lock 也没 Interlocked |
doc_comment_report |
只读检查 XML 文档注释:公开成员缺 summary、标签未闭合、summary 为空 |
partial_method_report |
只读检查 partial 成员:partial 只写一半、方法只有声明没有实现、类型跨文件拆分 |
obsolete_usage_report |
只读检查 [Obsolete]:标注了却仍在用、error:true 仍在用、未写替代方案 |
extension_method_report |
只读检查扩展方法:非 static 类里的扩展方法、首参缺 this、定义在嵌套类 |
record_mutability_report |
只读检查 record 不变性:持有可变集合字段、有会改状态的成员、record struct |
nullable_annotation_report |
只读检查可空性标注:#nullable disable、裸引用类型、集合元素未标 ? |
gitignore_quality_report |
只读检查 .gitignore:反斜杠跨平台失效、绝对路径、通配符过宽、常见产物漏忽略 |
todo_comment_report |
只读检查 TODO/FIXME 标记:无归属人、无关联工单、标记在被注释掉的代码里 |
csharp_keyword_report |
只读检查 C# 关键字:声明名与关键字同形或仅差大小写、多余的 @ 前缀 |
large_method_report |
只读检查超大方法:方法体过长、嵌套过深、参数过多、分支过多 |
duplicate_method_report |
只读检查重复实现:方法体逐字重复、方法名重复、重复注释块 |
config_key_usage_report |
只读检查配置项:声明了却从未读取、读取了却无声明、命名风格不一致 |
magic_number_report |
只读检查魔法数字:重复字面量、比较/算术里的裸字面量、端口/超时/缓冲区量级 |
gitattributes_quality_report |
只读检查 .gitattributes:缺 text=auto、缺 eol 声明、规则矛盾/重复、二进制误当文本 |
line_ending_mixed_report |
只读检查换行符混杂:仓库 CRLF/LF 混用、单文件内混用、末尾无换行 |
stale_comment_report |
只读检查脱节注释:复述标识符的注释、注释掉的死代码、待办/过期标记 |
string_concat_perf_report |
只读检查字符串拼接性能:循环体内反复 += 或 = a + b、循环里不变的字面量前缀、超长多段拼接 |
test_placeholder_report |
只读检查测试占位与空壳:没有断言的测试、恒真断言、空断言、被注释掉的测试 |
public_api_surface_report |
只读检查公开 API 稳定性:可变默认值、公开字段、只能靠位置传的 bool 参数 |
optional_param_dropped_report |
只读检查接口实现与接口声明的签名漂移:实现漏了可选参数默认值、少了 ref/out/in、返回类型不一致 |
switch_exhaustiveness_report |
只读检查 switch 完备性:缺 default、对 enum 的 switch 漏成员、case 重复书写 |
linq_query_report |
只读检查 LINQ 查询陷阱:循环体内重复查询、同一序列枚举两遍、循环体里的单谓词 LINQ |
swallowed_exception_report |
只读检查被吞掉的异常:空 catch 块、既不抛也不记录、catch 类型与抛出类型不符 |
equals_gethashcode_report |
只读检查 Equals/GetHashCode 契约:漏写 GetHashCode、漏写 Equals、两个方法依据的字段不一致 |
deferred_query_report |
只读检查 LINQ 延迟执行陷阱:未物化的查询、foreach 中修改集合、同一变量被反复枚举 |
boxing_allocation_report |
只读检查热路径上的隐式分配:装箱、循环体内的字符串插值、ToList() 后立刻被枚举 |
time_unit_confusion_report |
只读检查时间单位的陷阱:名字说毫秒值像秒、名字说秒值像毫秒、超时值没有单位 |
culture_format_report |
只读检查区域设置陷阱:ToString/Parse 未指定文化、ToUpper/ToLower 未用不变文化 |
concurrent_mutation_report |
只读检查并发写入共享状态:并行写共享集合、未加锁的计数器自增、并行里改写捕获变量 |
undisposed_stream_report |
只读检查流与句柄泄漏:可释放对象没包 using、手动 Dispose、直接返回可释放对象 |
null_assignment_report |
只读检查可空性陷阱:非空变量被赋 null、判空后仍直接解引用、非空方法 return null |
boolean_parameter_report |
只读检查布尔参数陷阱:可选参数排在必选参数之后、语义不明的布尔开关、签名里参数重名 |
hardcoded_secret_report |
只读检查源码里的硬编码凭据:API Key/Token/口令字面量、连接串口令、密钥进了日志或异常 |
path_escape_report |
只读检查路径逃逸:Path.Combine 未校验根目录、.. 上跳、用字符串前缀判断路径归属 |
duplicate_logic_report |
只读检查复制粘贴:同一字面量多个常量名、除名字外相同的方法体、散落的魔法数字 |
silent_catch_report |
只读检查静默失败:空 catch、catch 变量未使用、catch 后返回默认值 |
interface_contract_report |
只读检查接口契约漂移:接口成员未实现、参数类型悄悄对不上、可能漏写 override |
testability_report |
只读检查可测性:过长的方法、private 里藏着的长逻辑、if/else 不成对 |
lock_misuse_report |
只读检查锁的使用:lock 块里有 await、锁了值类型/字面量、同一把锁嵌套 |
dependency_inversion_report |
只读检查依赖倒置缺口:字段/构造参数声明成具体类型、直接 new 基础设施 |
ownership_report |
只读检查资源所有权:IDisposable 却没 Dispose、收到可释放参数但没说清所有权、注入字段释放责任不明 |
weak_assertion_report |
只读检查弱断言:测试里没有断言、恒真断言、测试内吞掉异常、共享可变静态状态 |
untrusted_input_report |
只读检查不可信输入:命令/SQL 拼接、未校验的外部路径、动态加载外部程序集 |
retry_safety_report |
只读检查重试的正确性:固定间隔无退避、没有次数上限、重试里包含非幂等写操作 |
state_machine_report |
只读检查状态机漏洞:状态字段被赋枚举外的值、switch 缺 default、状态变更无前置校验 |
observability_gap_report |
只读检查可观测性缺口:catch 无痕迹、关键写操作无日志、日志无关联标识 |
time_zone_report |
只读检查时区陷阱:Now 与 UtcNow 混用、Kind 丢失后换算、用 DateTime 存时刻 |
collection_edge_report |
只读检查集合边界:未判空就取首/聚合、索引访问代替 TryGetValue、循环里的 List.Contains |
contract_evolution_report |
只读检查契约演进风险:必需参数没有默认值、返回内部集合引用、接口成员无默认实现 |
config_robustness_report |
只读检查配置脆弱性:环境变量不判空、解析失败静默兜底、数值型配置没有范围校验 |
float_precision_report |
只读检查浮点/金额精度:浮点字面量参与算术、浮点用 == 比较、Math.Round 未指定舍入模式、Parse 未固定区域 |
enum_flag_report |
只读检查枚举/标志误用:枚举与数字字面量比较、[Flags] 枚举用 == 判断、布尔与 true/false 比较 |
async_misuse_report |
只读检查 async/await 误用:.Result/.Wait() 同步阻塞死锁、async 里没有 await、发射后不管导致异常丢失 |
api_version_pin_report |
只读检查项目文件依赖版本:版本用 ^ ~ * 范围未锁死、预发布版本、同一个包锁了多个版本 |
nested_try_report |
只读检查 try/finally 控制流陷阱:内层 catch 吞掉异常、finally 里 return/throw 覆盖原异常、循环里 finally 用 return 结束迭代 |
iterator_yield_report |
只读检查迭代器陷阱:迭代器里用 return 提前截断序列、yield 出现在 try-catch 中、迭代器里做阻塞 I/O |
switch_fallthrough_report |
只读检查 switch 穿透:case 分支没写 break/return 就落进下一个 case、default 不在最后 |
linq_deferred_report |
只读检查 LINQ 延迟执行:延迟查询被反复使用、循环里反复枚举同一条查询、查询后改写集合 |
string_interpolation_report |
只读检查字符串拼接写法:循环里 + 拼接(O(n²))、多段拼接未用插值、循环里拼日志 |
array_bounds_report |
只读检查数组越界:arr[arr.Length] off-by-one、减法索引无下界保护、可能为空的结果直接取下标 |
readonly_struct_report |
只读检查 struct 语义:readonly struct 里声明 setter、可变 struct 当集合键后又被改写、防御性拷贝 |
integer_overflow_report |
只读检查整数运算静默错误:unchecked 溢出回绕、整数除法向零截断、窄化强制转换丢精度 |
default_parameter_report |
只读检查默认参数值陷阱:默认值是共享的可变对象、默认取 DateTime.Now、默认值不是常量表达式 |
lost_update_report |
只读检查共享计数器的丢失更新:共享字段 ++/+=/读改写却既没 lock 也没 Interlocked |
todo_marker_report |
只读扫描 TODO/FIXME/XXX/HACK 等待办标记 |
ci_workflow_report |
只读汇总 CI 工作流触发器、runner 和命令 |
workflow_hygiene_report |
只读审查工作流触发条件、冗余 needs 与缺失超时 |
license_inventory_report |
只读发现许可证文件、清单许可证和 SPDX 标识 |
dependency_lockfile_report |
只读发现依赖锁定文件并汇总生态、大小和条目数 |
nuget_reference_report |
只读审查 PackageReference 浮动版本、重复引用与弃用包 |
json_schema_report |
只读汇总 JSON Schema 的 $id/标题/draft |
secret_scan_report |
只读扫描疑似密钥和凭据并对匹配值脱敏 |
env_var_reference_report |
只读汇总代码引用的环境变量 |
sensitive_file_inventory |
只读发现可能包含私密配置的文件名 |
gitignore_pattern_report |
只读分析 .gitignore 的模式、否定规则和通配符 |
gitignore_rule_report |
只读找出被忽略却仍追踪的文件和永不生效的否定规则 |
gitattributes_report |
只读分析 .gitattributes 的路径和属性规则 |
editorconfig_report |
只读检查 .editorconfig 重复条目、缺 root 与未纳管配置 |
git_hook_inventory |
只读列出 Git hooks 活动项和示例项 |
git_executable_bit_report |
只读统计索引中的可执行位/符号链接/子模块 |
git_config_report |
只读汇总 Git 配置键、来源和 section 分布 |
git_lfs_report |
只读查看 Git LFS 可用性、跟踪模式和已跟踪文件 |
git_gpg_status_report |
只读查看 Git 签名配置和最近提交签名状态 |
git_ignored_files |
只读列出 Git 忽略规则覆盖的未跟踪文件 |
git_path_diff |
只读比较两个引用之间指定路径的文件变化 |
git_index_diagnostics |
只读诊断 Git 索引未合并文件和冲突阶段 |
git_diff |
只读查看未暂存或已暂存的 unified diff,支持上下文行数、超时和输出限制 |
git_log |
只读查看 Git 提交历史,支持路径、关键字、作者筛选和文件列表 |
git_blame |
只读追踪每行代码的提交、作者和日期,支持行范围和输出限制 |
git_show |
只读查看指定提交的作者、消息、统计和 unified diff,支持路径筛选 |
git_branches |
只读列出本地/远程 Git 分支及最新提交摘要,支持模式筛选和数量限制 |
git_branch_age_report |
只读按最后提交时间排序并标出陈旧分支 |
git_remotes |
只读列出 Git remote 及 fetch/push 地址,自动隐藏 URL 凭据 |
git_remote_sync_report |
只读比较各分支与其上游的领先/落后提交数 |
git_tags |
只读列出 Git 标签、对象类型、日期和主题,支持模式筛选和数量限制 |
git_reflog |
只读查看 HEAD 或全部分支的 Git reflog 移动记录 |
git_worktrees |
只读查看 linked worktree、HEAD、分支及锁定状态,外部路径自动脱敏 |
git_stashes |
只读查看 Git stash 标识、哈希、日期和说明 |
find_large_files |
按文件大小扫描并列出项目中的大文件,支持扩展名和数量限制 |
find_empty_directories |
递归查找空目录,支持深度、结果数量和隐藏目录筛选 |
find_symlinks |
审计符号链接/junction,显示目标和断链状态且不跟随链接 |
checksum_manifest |
生成项目文件 SHA256 校验清单,支持扩展名、大小和数量限制 |
encoding_report |
汇总项目文件编码分布,识别 UTF-8、BOM 和 GB18030/GBK |
normalize_line_endings |
批量将文本文件换行规范为 LF/CRLF,支持预览、备份和撤销 |
create_directory |
安全创建目录,支持递归父目录、exist_ok、dry-run 和符号链接保护 |
remove_empty_directory |
安全删除空目录,拒绝非空目录、文件和符号链接,支持 dry-run |
find_stale_files |
按最后修改时间查找长期未更新文件,支持天数、扩展名和数量限制 |
directory_size_report |
按目录汇总文件数量和占用空间,定位项目空间热点 |
find_unreadable_files |
审计当前进程无法读取的项目文件并报告原因 |
find_temporary_files |
查找 .bak、.tmp、.orig、.swp 等临时和备份残留 |
backup_file |
安全创建单文件备份,支持自定义后缀、目标、覆盖和 dry-run |
restore_backup |
从备份安全恢复文件,覆盖前可自动保存 .pre-restore,支持 dry-run |
find_empty_files |
查找项目中的零字节文件,支持扩展名、隐藏文件和数量限制 |
find_recent_files |
查找近期修改过的文件,支持时间窗口、扩展名和数量限制 |
find_filename_conflicts |
审计忽略大小写后可能跨目录冲突的同名文件 |
find_long_paths |
查找可能触及传统 Windows 路径限制的长路径 |
move_files |
按多个 source/destination 映射批量移动文件,支持单项覆盖、dry-run 和错误汇总 |
delete_files |
批量安全删除文件,支持 dry-run、missing_ok、备份、错误继续和撤销 |
write_file |
创建/覆盖文件,自动建父目录;缺 content 会报错而非写空文件;内容与现状相同则跳过写入 |
edit_file |
精确文本替换(类似补丁),重复匹配会报错;replace_all 可全部替换,old/new 相同或未命中会明确报错,撤销可精确恢复 |
list_directory |
列出目录树,跳过构建/缓存目录 |
glob |
按模式找文件,如 src/**/*.cs;pattern 可用字符串或数组,支持 *、?、**、字符类 [ab]/[a-z]/[!abc] |
grep |
正则搜索内容,智能大小写 + 上下文行;支持 include/exclude(glob)限定文件范围、multiline 跨行匹配、count_only 计数、invert 反转、word 整词、files_only 仅文件名、max_results 截断 |
run_command |
执行 shell 命令(构建/测试/git),带超时;支持 env 附加环境变量;Windows 自动使用 Git Bash / PowerShell |
bash |
在 bash(Git Bash)中执行命令,支持管道、环境变量与 Unix 工具链;支持 env 附加环境变量 |
powershell |
在 PowerShell(优先 pwsh 7,否则 Windows PowerShell 5.1)中执行命令,支持管道与对象;支持 env 附加环境变量 |
session_search |
在历史会话记录与命名快照中搜索关键字,最新在前——跨会话回顾之前的结论与改动 |
stop |
模型完成任务后结束本轮 |
src/CodeAgent/
├── Program.cs # CLI 入口:参数解析 + 交互式 REPL
├── Config.cs # 配置模型与加载(codeagent.json / 环境变量)
├── InputLine.cs # 输入行:斜杠命令菜单 / 历史浏览 / 快捷键分发
├── EditableLine.cs # 可编辑文本缓冲(光标移动、插入删除、词导航)
├── HistoryStore.cs # 命令历史持久化(.codeagent/history.txt)
├── ConsoleRenderer.cs # 模型回复 Markdown 终端渲染
├── Modes.cs # 工作模式目录(内置 8 种 + 自定义)
├── SetupWizard.cs # 交互式供应商配置向导
├── AdofaiContext.cs # ADOFAI mod 项目自动适配
├── Util.cs # 通用工具(glob 转换、diff、文本截断等)
├── Providers/
│ ├── ProviderModels.cs # 与 Provider 无关的消息/工具调用中间表示
│ ├── IAgentProvider.cs # Provider 抽象
│ ├── OpenAiProvider.cs # OpenAI 兼容协议实现
│ ├── AnthropicProvider.cs# Anthropic messages API + tool use
│ └── ProviderFactory.cs # 按配置创建 Provider
├── Tools/
│ ├── ToolRegistry.cs # 工具注册/分发 + 工作区沙箱
│ ├── FileTools.cs # read_file / write_file / edit_file / list_directory
│ ├── ReadFilesTool.cs # read_files 批量文件读取
│ ├── CompareFilesTool.cs # compare_files 文本差异比较
│ ├── CompareDirectoriesTool.cs # compare_directories 目录差异比较
│ ├── ProjectStatsTool.cs # project_stats 项目统计
│ ├── CodeMetricsReportTool.cs # code_metrics_report 代码行数构成报告
│ ├── SourceCompositionReportTool.cs # source_composition_report 按语言代码构成
│ ├── FileInfoTool.cs # file_info 单文件属性
│ ├── FileInfosTool.cs # file_infos 批量文件属性
│ ├── ReplaceInFilesTool.cs # replace_in_files 批量替换
│ ├── CopyFileTool.cs # copy_file 安全复制
│ ├── MoveFileTool.cs # move_file 安全移动
│ ├── DeleteFileTool.cs # delete_file 安全删除
│ ├── FindDuplicatesTool.cs # find_duplicates 重复文件检测
│ ├── CopyFilesTool.cs # copy_files 批量复制
│ ├── GitStatusTool.cs # git_status 只读 Git 状态
│ ├── GitCheckIgnoreTool.cs # git_check_ignore Git ignore 检查
│ ├── GitCheckAttrTool.cs # git_check_attr Git 属性检查
│ ├── GitLsFilesTool.cs # git_ls_files Git 文件清单
│ ├── GitRepositoryInfoTool.cs # git_repository_info Git 仓库信息
│ ├── GitRepoSizeReportTool.cs # git_repo_size_report .git 体积报告
│ ├── GitFsckTool.cs # git_fsck Git 完整性检查
│ ├── GitSubmoduleStatusTool.cs # git_submodule_status Git 子模块状态
│ ├── GitDescribeTool.cs # git_describe Git 版本描述
│ ├── GitContributorsTool.cs # git_contributors Git 贡献者统计
│ ├── GitFileHistoryTool.cs # git_file_history Git 文件历史
│ ├── GitFileStatsTool.cs # git_file_stats Git 文件统计
│ ├── GitObjectInfoTool.cs # git_object_info Git 对象信息
│ ├── GitTreeEntriesTool.cs # git_tree_entries Git tree 条目
│ ├── GitCommitInfoTool.cs # git_commit_info Git 提交元数据
│ ├── GitCompareRefsTool.cs # git_compare_refs Git 引用比较
│ ├── GitTagInfoTool.cs # git_tag_info Git 标签信息
│ ├── FileExtensionReportTool.cs # file_extension_report 扩展名统计
│ ├── GitFileTypeReportTool.cs # git_file_type_report Git 文件分类
│ ├── LineEndingReportTool.cs # line_ending_report 换行报告
│ ├── DirectoryDepthReportTool.cs # directory_depth_report 目录深度报告
│ ├── DirectorySizeBreakdownTool.cs # directory_size_breakdown 目录大小分布
│ ├── GitWorktreeDetailsTool.cs # git_worktree_details Git worktree 详情
│ ├── GitStashInfoTool.cs # git_stash_info Git stash 详情
│ ├── ProjectManifestReportTool.cs # project_manifest_report 项目清单报告
│ ├── TargetFrameworkReportTool.cs # target_framework_report 目标框架报告
│ ├── ConfigKeyReportTool.cs # config_key_report 配置键审计
│ ├── ReadmeSectionReportTool.cs # readme_section_report README 章节报告
│ ├── ChangelogReportTool.cs # changelog_report CHANGELOG 版本报告
│ ├── I18nStringReportTool.cs # i18n_string_report 中文字符串报告
│ ├── ReadmeLinkCheckTool.cs # readme_link_check Markdown 链接检查
│ ├── DocFreshnessReportTool.cs # doc_freshness_report 文档新鲜度
│ ├── HttpUrlAuditReportTool.cs # http_url_audit_report 硬编码 URL 审计
│ ├── TestInventoryReportTool.cs # test_inventory_report 测试清单报告
│ ├── TestFlakinessReportTool.cs # test_flakiness_report 测试稳定性报告
│ ├── TestAssertionReportTool.cs # test_assertion_report 测试断言强度报告
│ ├── DebugLeftoverReportTool.cs # debug_leftover_report 调试残留报告
│ ├── ExceptionHandlingReportTool.cs # exception_handling_report 异常处理报告
│ ├── ResourceLeakReportTool.cs # resource_leak_report 资源泄漏报告
│ ├── NamingConventionReportTool.cs # naming_convention_report 命名规范报告
│ ├── CodeStyleReportTool.cs # code_style_report 代码风格报告
│ ├── CommentQualityReportTool.cs # comment_quality_report 注释质量报告
│ ├── ConcurrencyRiskReportTool.cs # concurrency_risk_report 并发风险报告
│ ├── DeadImplementationReportTool.cs # dead_implementation_report 空实现报告
│ ├── InputValidationReportTool.cs # input_validation_report 输入校验报告
│ ├── DuplicateCodeReportTool.cs # duplicate_code_report 重复代码报告
│ ├── TestIsolationReportTool.cs # test_isolation_report 测试隔离性报告
│ ├── AsyncCorrectnessReportTool.cs # async_correctness_report async 正确性报告
│ ├── CollectionPerformanceReportTool.cs # collection_performance_report 集合性能报告
│ ├── StringPerformanceReportTool.cs # string_performance_report 字符串性能报告
│ ├── NullSafetyReportTool.cs # null_safety_report 空值安全报告
│ ├── LoggingPracticeReportTool.cs # logging_practice_report 日志规范报告
│ ├── ApiUsageReportTool.cs # api_usage_report API 使用报告
│ ├── FileSafetyReportTool.cs # file_safety_report 文件安全报告
│ ├── DependencyVersionReportTool.cs # dependency_version_report 依赖版本报告
│ ├── ErrorHandlingDetailReportTool.cs # error_handling_detail_report 错误处理细节报告
│ ├── ConfigHardeningReportTool.cs # config_hardening_report 配置健壮性报告
│ ├── ApiCompatibilityReportTool.cs # api_compatibility_report API 兼容性报告
│ ├── PerformanceAntiPatternReportTool.cs # performance_anti_pattern_report 性能反模式报告
│ ├── DataContractReportTool.cs # data_contract_report 数据契约报告
│ ├── TestQualityReportTool.cs # test_quality_report 测试质量报告
│ ├── ResourceLifecycleReportTool.cs # resource_lifecycle_report 资源生命周期报告
│ ├── LocalizationReadinessReportTool.cs # localization_readiness_report 国际化准备度报告
│ ├── DocumentationSyncReportTool.cs # documentation_sync_report 文档同步报告
│ ├── InputSanitizationReportTool.cs # input_sanitization_report 输入处理报告
│ ├── ObservabilityReportTool.cs # observability_report 可观测性报告
│ ├── BuildConfigReportTool.cs # build_config_report 构建配置报告
│ ├── CacheStrategyReportTool.cs # cache_strategy_report 缓存策略报告
│ ├── ConcurrencySafetyReportTool.cs # concurrency_safety_report 并发安全报告
│ ├── CollectionUsageReportTool.cs # collection_usage_report 集合使用报告
│ ├── ExpensiveCallReportTool.cs # expensive_call_report 调用开销报告
│ ├── StateManagementReportTool.cs # state_management_report 状态管理报告
│ ├── LogHygieneReportTool.cs # log_hygiene_report 日志卫生报告
│ ├── ArgumentSafetyReportTool.cs # argument_safety_report 实参安全报告
│ ├── LifetimeBoundsReportTool.cs # lifetime_bounds_report 容量边界报告
│ ├── NumericLiteralReportTool.cs # numeric_literal_report 数值字面量报告
│ ├── DeadBranchReportTool.cs # dead_branch_report 分支可达性报告
│ ├── EventSubscriptionReportTool.cs # event_subscription_report 事件订阅报告
│ ├── InheritanceShapeReportTool.cs # inheritance_shape_report 继承体系报告
│ ├── NullCoalescingReportTool.cs # null_coalescing_report 空值处理报告
│ ├── EqualityContractReportTool.cs # equality_contract_report 相等性契约报告
│ ├── UsingDirectiveReportTool.cs # using_directive_report using 指令报告
│ ├── DisposablePatternReportTool.cs # disposable_pattern_report IDisposable 报告
│ ├── StringFormatReportTool.cs # string_format_report 字符串构造报告
│ ├── EnumUsageReportTool.cs # enum_usage_report 枚举使用报告
│ ├── OperatorOverloadReportTool.cs # operator_overload_report 运算符重载报告
│ ├── DocCommentReportTool.cs # doc_comment_report 文档注释报告
│ ├── PartialMethodReportTool.cs # partial_method_report partial 成员报告
│ ├── ObsoleteUsageReportTool.cs # obsolete_usage_report Obsolete 使用报告
│ ├── ExtensionMethodReportTool.cs # extension_method_report 扩展方法报告
│ ├── RecordMutabilityReportTool.cs # record_mutability_report record 可变性报告
│ ├── NullableAnnotationReportTool.cs # nullable_annotation_report 可空性标注报告
│ ├── GitignoreQualityReportTool.cs # gitignore_quality_report .gitignore 质量报告
│ ├── TodoCommentReportTool.cs # todo_comment_report TODO 标记报告
│ ├── CsharpKeywordReportTool.cs # csharp_keyword_report C# 关键字报告
│ ├── LargeMethodReportTool.cs # large_method_report 超大方法报告
│ ├── DuplicateMethodReportTool.cs # duplicate_method_report 重复实现报告
│ ├── ConfigKeyUsageReportTool.cs # config_key_usage_report 配置项使用报告
│ ├── MagicNumberReportTool.cs # magic_number_report 魔法数字报告
│ ├── GitattributesQualityReportTool.cs # gitattributes_quality_report .gitattributes 质量报告
│ ├── LineEndingMixedReportTool.cs # line_ending_mixed_report 换行符混杂报告
│ ├── StaleCommentReportTool.cs # stale_comment_report 脱节注释报告
│ ├── StringConcatPerfReportTool.cs # string_concat_perf_report 字符串拼接性能报告
│ ├── TestPlaceholderReportTool.cs # test_placeholder_report 测试占位报告
│ ├── PublicApiSurfaceReportTool.cs # public_api_surface_report 公开 API 稳定性报告
│ ├── OptionalParamDroppedReportTool.cs # optional_param_dropped_report 接口签名漂移报告
│ ├── SwitchExhaustivenessReportTool.cs # switch_exhaustiveness_report switch 完备性报告
│ ├── LinqQueryReportTool.cs # linq_query_report LINQ 查询陷阱报告
│ ├── SwallowedExceptionReportTool.cs # swallowed_exception_report 异常吞噬报告
│ ├── EqualsGetHashCodeReportTool.cs # equals_gethashcode_report Equals/GetHashCode 契约报告
│ ├── DeferredQueryReportTool.cs # deferred_query_report LINQ 延迟执行报告
│ ├── BoxingAllocationReportTool.cs # boxing_allocation_report 隐式分配报告
│ ├── TimeUnitConfusionReportTool.cs # time_unit_confusion_report 时间单位混淆报告
│ ├── CultureFormatReportTool.cs # culture_format_report 区域设置报告
│ ├── ConcurrentMutationReportTool.cs # concurrent_mutation_report 并发写入报告
│ ├── UndisposedStreamReportTool.cs # undisposed_stream_report 流泄漏报告
│ ├── NullAssignmentReportTool.cs # null_assignment_report 可空性报告
│ ├── BooleanParameterReportTool.cs # boolean_parameter_report 布尔参数报告
│ ├── HardcodedSecretReportTool.cs # hardcoded_secret_report 硬编码凭据报告
│ ├── PathEscapeReportTool.cs # path_escape_report 路径逃逸报告
│ ├── DuplicateLogicReportTool.cs # duplicate_logic_report 重复逻辑报告
│ ├── SilentCatchReportTool.cs # silent_catch_report 静默失败报告
│ ├── InterfaceContractReportTool.cs # interface_contract_report 接口契约报告
│ ├── TestabilityReportTool.cs # testability_report 可测性报告
│ ├── LockMisuseReportTool.cs # lock_misuse_report 锁使用报告
│ ├── DependencyInversionReportTool.cs # dependency_inversion_report 依赖倒置报告
│ ├── OwnershipReportTool.cs # ownership_report 资源所有权报告
│ ├── WeakAssertionReportTool.cs # weak_assertion_report 弱断言报告
│ ├── UntrustedInputReportTool.cs # untrusted_input_report 不可信输入报告
│ ├── RetrySafetyReportTool.cs # retry_safety_report 重试安全报告
│ ├── StateMachineReportTool.cs # state_machine_report 状态机报告
│ ├── ObservabilityGapReportTool.cs # observability_gap_report 可观测性缺口报告
│ ├── TimeZoneReportTool.cs # time_zone_report 时区报告
│ ├── CollectionEdgeReportTool.cs # collection_edge_report 集合边界报告
│ ├── ContractEvolutionReportTool.cs # contract_evolution_report 契约演进报告
│ ├── ConfigRobustnessReportTool.cs # config_robustness_report 配置健壮性报告
│ ├── FloatPrecisionReportTool.cs # float_precision_report 浮点精度报告
│ ├── EnumFlagReportTool.cs # enum_flag_report 枚举/标志报告
│ ├── AsyncMisuseReportTool.cs # async_misuse_report async 误用报告
│ ├── ApiVersionPinReportTool.cs # api_version_pin_report 依赖版本报告
│ ├── NestedTryReportTool.cs # nested_try_report 嵌套 try 报告
│ ├── IteratorYieldReportTool.cs # iterator_yield_report 迭代器报告
│ ├── SwitchFallthroughReportTool.cs # switch_fallthrough_report switch 穿透报告
│ ├── LinqDeferredReportTool.cs # linq_deferred_report LINQ 延迟执行报告
│ ├── StringInterpolationReportTool.cs # string_interpolation_report 字符串拼接报告
│ ├── ArrayBoundsReportTool.cs # array_bounds_report 数组越界报告
│ ├── ReadonlyStructReportTool.cs # readonly_struct_report readonly struct 报告
│ ├── IntegerOverflowReportTool.cs # integer_overflow_report 整数溢出报告
│ ├── DefaultParameterReportTool.cs # default_parameter_report 默认参数报告
│ ├── LostUpdateReportTool.cs # lost_update_report 丢失更新报告
│ ├── DocCommentReportTool.cs # doc_comment_report 文档注释报告
│ ├── PartialMethodReportTool.cs # partial_method_report partial 成员报告
│ ├── ObsoleteUsageReportTool.cs # obsolete_usage_report Obsolete 使用报告
│ ├── ExtensionMethodReportTool.cs # extension_method_report 扩展方法报告
│ ├── RecordMutabilityReportTool.cs # record_mutability_report record 可变性报告
│ ├── NullableAnnotationReportTool.cs # nullable_annotation_report 可空性标注报告
│ ├── GitignoreQualityReportTool.cs # gitignore_quality_report .gitignore 质量报告
│ ├── TodoCommentReportTool.cs # todo_comment_report TODO 标记报告
│ ├── CsharpKeywordReportTool.cs # csharp_keyword_report C# 关键字报告
│ ├── LargeMethodReportTool.cs # large_method_report 超大方法报告
│ ├── DuplicateMethodReportTool.cs # duplicate_method_report 重复实现报告
│ ├── ConfigKeyUsageReportTool.cs # config_key_usage_report 配置项使用报告
│ ├── MagicNumberReportTool.cs # magic_number_report 魔法数字报告
│ ├── GitattributesQualityReportTool.cs # gitattributes_quality_report .gitattributes 质量报告
│ ├── LineEndingMixedReportTool.cs # line_ending_mixed_report 换行符混杂报告
│ ├── StaleCommentReportTool.cs # stale_comment_report 脱节注释报告
│ ├── StringConcatPerfReportTool.cs # string_concat_perf_report 字符串拼接性能报告
│ ├── TestPlaceholderReportTool.cs # test_placeholder_report 测试占位报告
│ ├── PublicApiSurfaceReportTool.cs # public_api_surface_report 公开 API 稳定性报告
│ ├── OptionalParamDroppedReportTool.cs # optional_param_dropped_report 接口签名漂移报告
│ ├── SwitchExhaustivenessReportTool.cs # switch_exhaustiveness_report switch 完备性报告
│ ├── LinqQueryReportTool.cs # linq_query_report LINQ 查询陷阱报告
│ ├── SwallowedExceptionReportTool.cs # swallowed_exception_report 异常吞噬报告
│ ├── EqualsGetHashCodeReportTool.cs # equals_gethashcode_report Equals/GetHashCode 契约报告
│ ├── DeferredQueryReportTool.cs # deferred_query_report LINQ 延迟执行报告
│ ├── BoxingAllocationReportTool.cs # boxing_allocation_report 隐式分配报告
│ ├── TimeUnitConfusionReportTool.cs # time_unit_confusion_report 时间单位混淆报告
│ ├── CultureFormatReportTool.cs # culture_format_report 区域设置报告
│ ├── ConcurrentMutationReportTool.cs # concurrent_mutation_report 并发写入报告
│ ├── UndisposedStreamReportTool.cs # undisposed_stream_report 流泄漏报告
│ ├── NullAssignmentReportTool.cs # null_assignment_report 可空性报告
│ ├── BooleanParameterReportTool.cs # boolean_parameter_report 布尔参数报告
│ ├── HardcodedSecretReportTool.cs # hardcoded_secret_report 硬编码凭据报告
│ ├── PathEscapeReportTool.cs # path_escape_report 路径逃逸报告
│ ├── DuplicateLogicReportTool.cs # duplicate_logic_report 重复逻辑报告
│ ├── SilentCatchReportTool.cs # silent_catch_report 静默失败报告
│ ├── InterfaceContractReportTool.cs # interface_contract_report 接口契约报告
│ ├── TestabilityReportTool.cs # testability_report 可测性报告
│ ├── LockMisuseReportTool.cs # lock_misuse_report 锁使用报告
│ ├── DependencyInversionReportTool.cs # dependency_inversion_report 依赖倒置报告
│ ├── OwnershipReportTool.cs # ownership_report 资源所有权报告
│ ├── WeakAssertionReportTool.cs # weak_assertion_report 弱断言报告
│ ├── UntrustedInputReportTool.cs # untrusted_input_report 不可信输入报告
│ ├── RetrySafetyReportTool.cs # retry_safety_report 重试安全报告
│ ├── StateMachineReportTool.cs # state_machine_report 状态机报告
│ ├── ObservabilityGapReportTool.cs # observability_gap_report 可观测性缺口报告
│ ├── TimeZoneReportTool.cs # time_zone_report 时区报告
│ ├── CollectionEdgeReportTool.cs # collection_edge_report 集合边界报告
│ ├── ContractEvolutionReportTool.cs # contract_evolution_report 契约演进报告
│ ├── ConfigRobustnessReportTool.cs # config_robustness_report 配置健壮性报告
│ ├── FloatPrecisionReportTool.cs # float_precision_report 浮点精度报告
│ ├── EnumFlagReportTool.cs # enum_flag_report 枚举/标志报告
│ ├── AsyncMisuseReportTool.cs # async_misuse_report async 误用报告
│ ├── ApiVersionPinReportTool.cs # api_version_pin_report 依赖版本报告
│ ├── NestedTryReportTool.cs # nested_try_report 嵌套 try 报告
│ ├── IteratorYieldReportTool.cs # iterator_yield_report 迭代器报告
│ ├── SwitchFallthroughReportTool.cs # switch_fallthrough_report switch 穿透报告
│ ├── LinqDeferredReportTool.cs # linq_deferred_report LINQ 延迟执行报告
│ ├── StringInterpolationReportTool.cs # string_interpolation_report 字符串拼接报告
│ ├── ArrayBoundsReportTool.cs # array_bounds_report 数组越界报告
│ ├── ReadonlyStructReportTool.cs # readonly_struct_report readonly struct 报告
│ ├── IntegerOverflowReportTool.cs # integer_overflow_report 整数溢出报告
│ ├── DefaultParameterReportTool.cs # default_parameter_report 默认参数报告
│ ├── LostUpdateReportTool.cs # lost_update_report 丢失更新报告
│ ├── TodoMarkerReportTool.cs # todo_marker_report 待办标记报告
│ ├── CiWorkflowReportTool.cs # ci_workflow_report CI 工作流概览
│ ├── WorkflowHygieneReportTool.cs # workflow_hygiene_report 工作流卫生
│ ├── LicenseInventoryReportTool.cs # license_inventory_report 许可证清单报告
│ ├── DependencyLockfileReportTool.cs # dependency_lockfile_report 依赖锁定报告
│ ├── NuGetReferenceReportTool.cs # nuget_reference_report NuGet 引用报告
│ ├── JsonSchemaReportTool.cs # json_schema_report JSON Schema 清单报告
│ ├── SecretScanReportTool.cs # secret_scan_report 疑似秘密脱敏扫描
│ ├── EnvVarReferenceReportTool.cs # env_var_reference_report 环境变量引用报告
│ ├── SensitiveFileInventoryTool.cs # sensitive_file_inventory 敏感文件名清单
│ ├── GitignorePatternReportTool.cs # gitignore_pattern_report Gitignore 模式报告
│ ├── GitignoreRuleReportTool.cs # gitignore_rule_report Gitignore 规则失效
│ ├── GitattributesReportTool.cs # gitattributes_report Gitattributes 规则报告
│ ├── EditorConfigReportTool.cs # editorconfig_report EditorConfig 报告
│ ├── GitHookInventoryTool.cs # git_hook_inventory Git hooks 清单
│ ├── GitExecutableBitReportTool.cs # git_executable_bit_report Git 文件模式报告
│ ├── GitConfigReportTool.cs # git_config_report Git 配置摘要
│ ├── GitLfsReportTool.cs # git_lfs_report Git LFS 状态报告
│ ├── GitGpgStatusReportTool.cs # git_gpg_status_report Git 签名状态报告
│ ├── GitIgnoredFilesTool.cs # git_ignored_files Git 忽略文件清单
│ ├── GitPathDiffTool.cs # git_path_diff Git 路径变化
│ ├── GitIndexDiagnosticsTool.cs # git_index_diagnostics Git 索引诊断
│ ├── GitDiffTool.cs # git_diff 只读 Git 差异
│ ├── GitLogTool.cs # git_log 只读 Git 历史
│ ├── GitBlameTool.cs # git_blame 只读逐行来源
│ ├── GitShowTool.cs # git_show 只读提交详情
│ ├── GitBranchesTool.cs # git_branches 只读分支列表
│ ├── GitBranchAgeReportTool.cs # git_branch_age_report 分支时效报告
│ ├── GitRemotesTool.cs # git_remotes 只读远程地址
│ ├── GitRemoteSyncReportTool.cs # git_remote_sync_report 远程同步报告
│ ├── GitTagsTool.cs # git_tags 只读标签列表
│ ├── GitReflogTool.cs # git_reflog 只读引用移动记录
│ ├── GitWorktreesTool.cs # git_worktrees 只读 worktree 列表
│ ├── GitStashesTool.cs # git_stashes 只读 stash 列表
│ ├── FindLargeFilesTool.cs # find_large_files 大文件扫描
│ ├── FindEmptyDirectoriesTool.cs # find_empty_directories 空目录扫描
│ ├── FindSymlinksTool.cs # find_symlinks 符号链接审计
│ ├── ChecksumManifestTool.cs # checksum_manifest SHA256 清单
│ ├── EncodingReportTool.cs # encoding_report 编码报告
│ ├── NormalizeLineEndingsTool.cs # normalize_line_endings 换行规范化
│ ├── CreateDirectoryTool.cs # create_directory 安全创建目录
│ ├── RemoveEmptyDirectoryTool.cs # remove_empty_directory 安全删除空目录
│ ├── FindStaleFilesTool.cs # find_stale_files 陈旧文件扫描
│ ├── DirectorySizeReportTool.cs # directory_size_report 目录空间报告
│ ├── FindUnreadableFilesTool.cs # find_unreadable_files 不可读文件审计
│ ├── FindTemporaryFilesTool.cs # find_temporary_files 临时文件扫描
│ ├── BackupFileTool.cs # backup_file 安全文件备份
│ ├── RestoreBackupTool.cs # restore_backup 安全恢复备份
│ ├── FindEmptyFilesTool.cs # find_empty_files 空文件扫描
│ ├── FindRecentFilesTool.cs # find_recent_files 近期文件扫描
│ ├── FindFileNameConflictsTool.cs # find_filename_conflicts 文件名冲突审计
│ ├── FindLongPathsTool.cs # find_long_paths 长路径扫描
│ ├── MoveFilesTool.cs # move_files 批量移动
│ ├── DeleteFilesTool.cs # delete_files 批量安全删除
│ ├── SearchTools.cs # glob / grep
│ ├── CommandTool.cs # run_command
│ └── SessionTools.cs # stop
└── Agent/
├── Agent.cs # Agent 主循环:调用 → 执行工具 → 回填 → 直至完成;上下文裁剪/压缩
└── Agent.Session.cs # 会话持久化:jsonl 逐条日志、命名快照、Markdown 导出
- 文件工具被工作区沙箱限制,无法读写工作区之外的路径。
run_command会执行模型给出的命令(在你的工作区内、以你的权限)。如不信任,设"confirmCommands": true逐个确认,或"allowCommands": false完全禁用。- API Key 建议通过环境变量注入,避免写进配置仓库;
codeagent.json若入库请先加入.gitignore。 - 会话日志可能包含代码内容,注意
.codeagent/目录不要提交到公共仓库。
DeepSeek 报 400? 部分模型不接受 temperature 或 max_tokens 特定值,可在配置中调整;若仍失败,检查模型名是否与官网一致。
Ollama 怎么用? ollama serve 启动后,配 baseUrl: http://localhost:11434/v1,apiKeyEnv 留空(代码中空环境变量会回退到默认名,此时可设 apiKey: "ollama" 占位),模型名如 qwen2.5-coder:7b。
Claude 一直重试? 检查 ANTHROPIC_API_KEY 是否设置、余额是否充足;Anthropic 要求消息角色交替,本工具已做归一化处理。
模型没调用工具就回复了? 该模型可能不支持 function calling / tool use,换支持的工具型模型(如 gpt-4o、claude-sonnet、deepseek-chat、qwen3-coder)。
启动时提示「未知配置项」? codeagent.json 里有拼写错误或已废弃的字段——加载器会忽略它,所以该配置从未生效。对照配置参考修正名称即可;provider 内部的未知键也会同样报告。
/compact 的摘要在 Claude 上丢了? 没丢——插入对话中间的摘要会自动转成 user 角色块(Anthropic 没有中途 system 角色)。
ADOFAI 项目里配置文件被写入注入文本 / CODEAGENT_PROVIDER 变成了默认 provider? 已修复:会话级注入与覆盖不再被 /model 等保存操作持久化。旧配置里如已被写入过一次,手动删除那段文本即可。
- 项目介绍 — 定位、整体架构与设计取舍
- 配置参考 —
codeagent.json全部字段逐项说明 - 工作模式 — 内置 8 种模式与自定义模式
- 工具参考 — 10 个内置工具的参数与行为细节
- 快捷键参考 — 输入行全部按键(菜单/历史/Ctrl+R/Alt 组合)
- 常见问题 — 界面错位、Provider 报错等排障
- 开发指南 — 如何构建、测试与参与开发
MIT