ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

DeepChat 内置 code-review 技能:文件型技能体系下的代码审查实战指南

DeepChat 内置 code-review 技能:文件型技能体系下的代码审查实战指南 DeepChat 内置 code-review 技能文件型技能体系下的代码审查实战指南【免费下载链接】deepchatDeepChat - A smart assistant that connects powerful AI to your personal world项目地址: https://gitcode.com/GitHub_Trending/dee/deepchat导读DeepChat 在仓库中随附了一套面向 Agent 的文件型技能file-based skill体系其中code-review技能为 AI 助手提供了一套结构化、可复用的代码审查方法论从代码质量、最佳实践、安全与性能四个维度分析代码并按摘要—分级问题—改进建议—亮点四段式输出审查报告。本文将完整解析该技能的定义文件 resources/skills/code-review/SKILL.md并结合 DeepChat 主进程的技能发现、路由、工具授权与执行源码讲清楚一个 SKILL.md 如何变成 Agent 的能力读完即可自行编写或评估同类审查技能。一、技能全貌一份 SKILL.md 定义一个专家角色DeepChat 的技能是基于文件的知识模块核心是一个遵循特定 frontmatter 规范的 Markdown 清单文件SKILL.md配套目录还可以存放脚本、模板与资源。code-review技能即位于 resources/skills/code-review/其清单头部frontmatter如下--- name: code-review description: Comprehensive code review assistant that analyzes code quality, security, and best practices allowedTools: - read_file - list_files - search_files ---三个字段的语义与约束可以从源码得到印证name技能唯一标识。发现器要求它与所在目录名完全一致否则发出name-mismatch警告且必须匹配^[a-z0-9][a-z0-9._-]*$的命名模式长度上限 255 字符相关校验见 src/main/skill/discoveryWorker.tsdescription一段面向语义匹配的简介。技能路由目录会把该描述投影进上下文用于模型判断何时激活其码点上限为 1024见 src/main/skill/routingCatalog.tsallowedTools技能声明的额外工具白名单解析与归一化逻辑见下文第四节。二、四大审查维度从清单到可执行的检查单SKILL.md 的正文部分是激活后注入系统提示的行为指南。它把审查工作收敛为四个焦点领域这既是给模型的约束也是一份可直接照做的审查清单1. 代码质量Code Quality关注可读性与可维护性、命名规范、代码组织与结构以及 DRYDont Repeat Yourself原则。实际操作中对应命名是否自解释、函数是否单一职责、模块边界是否清晰、是否存在可提取的重复逻辑。2. 最佳实践Best Practices关注语言惯用法language-specific idioms、设计模式的使用是否恰当、错误处理是否完备、日志实践是否合理。例如异常是否被吞掉、错误路径是否有日志兜底、是否滥用全局状态等。3. 安全Security关注输入校验、认证/授权问题、数据清洗data sanitization并对照 OWASP Top 10 常见漏洞清单逐项排查——包括注入SQL/命令注入、越权访问、敏感信息泄露、不安全的反序列化等。4. 性能Performance关注算法效率、内存占用、数据库查询优化与缓存机会。典型场景包括是否有不必要的 N1 查询、是否在大循环内分配对象、热点路径是否缺少缓存、是否存在无界增长的数据结构。三、四段式审查输出可直接落进 PR 评论的格式SKILL.md 规定任何一次审查都必须按以下四部分输出保证结果结构稳定、便于消费Summary摘要简要概述代码的用途与整体质量先给结论再给依据Issues Found发现的问题按严重程度分类列出问题原文档定义了三档——Critical致命/阻断、Major重要/应尽快修复、Minor次要/可选优化Suggestions改进建议给出具体、可执行的改进方案并尽量附带代码示例而不是泛泛而谈Positive Aspects亮点明确指出做得好的地方——正面反馈同样是高质量 review 的组成部分。四、激活时机什么时候触发审查SKILL.md 的 Usage 一节定义了三个激活条件用户要求进行代码审查user asks for code review用户希望对其实现获得反馈wants feedback on their implementation用户请求对代码做安全审计requests security audit of code。这三个条件对应description中的code review / security audit关键词二者共同服务于技能路由模型先通过目录中的短描述判断该不该用这个技能激活后再读取完整正文获取详细行为规范。五、源码视角一份 SKILL.md 如何成为 Agent 能力理解了技能内容本身再来看 DeepChat 如何把这份清单变成可运行的 Agent 能力涉及四道主流程全部可在 src/main/skill/ 目录下找到实现。5.1 发现扫描与 frontmatter 解析DeepChat 使用内联 workerskill-discovery递归扫描技能根目录只收集名为SKILL.md的文件src/main/skill/discoveryWorker.ts并跳过符号链接、以.开头及含.backup-的目录。frontmatter 通过gray-matter解析且显式禁止 JavaScript 引擎求值杜绝恶意表达式注入src/main/skill/frontmatter.ts。解析时name与description是必填字段缺失即告警并跳过该技能platforms、metadata、allowedTools、executionSupportPaths均为可选字段src/main/skill/discoveryWorker.ts。5.2 路由用 1024 码点描述换取语义匹配发现完成后技能的name description category platforms会被投影成路由卡片routing card。DeepChat 依据上下文长度按 2% 的比例预算 token上限 2000 tokens见 src/main/skill/routingCatalog.ts在预算内优先输出完整描述装不下时逐级降级为截断描述→仅技能名→省略并提示用skill_list搜索。这就是为什么code-review的 description 必须精炼——它直接决定了模型能否在预算内识别出该技能。5.3 授权allowedTools 的归一化与白名单技能声明的allowedTools并不会原样生效而是先经过工具名归一化src/main/skill/toolNameMapping.ts。该表会把旧版/别名命名映射为规范名例如read_file→readwrite_file→writelist_directory→lsglob_search→globgrep_search→grepedit_file→editexecute_command→exec映射后的名称若不在规范白名单中会发出警告并按原样保留src/main/skill/toolNameMapping.ts。值得注意的是code-review声明的read_file会被规范映射为read而list_files、search_files在当前映射表中没有对应条目从源码结构看它们会被当作非规范名称保留并产生告警——这提示技能作者在编写 frontmatter 时应优先使用规范工具名。5.4 执行纯指令技能与带脚本技能的分野code-review技能只有SKILL.md属于纯指令型技能激活后正文注入系统提示Agent 直接使用被授权的工具完成审查不涉及脚本运行。若技能目录附带脚本则走 src/main/skill/skillExecutionService.ts 的执行管线它支持python / node / shell三类运行时与auto / system / builtin运行时策略并受一系列硬性限额约束定义于 src/shared/types/skill.ts限额项默认值说明参数个数上限128超出即拒绝执行单参数长度上限8192 字符防止超长参数参数总长度上限24576 字符整体预算控制stdin 长度上限1 MiB 字符标准输入注入控制输出字节上限16 MiB超限即终止进程默认超时120000 ms见 skillExecutionService.ts执行前还会经过授权解析器src/main/skill/skillExecutionAuthority.ts的多重一致性校验执行请求必须绑定到会话 Tape 的 ViewManifest技能物化包、环境变量绑定、哈希均需逐项匹配任一漂移即 fail-closed 拒绝派发——即便只是审查技能DeepChat 也以对待可执行插件同等的严谨度管理其加载边界。六、实践在 DeepChat 中使用与验证 code-review 技能查看技能内置技能随应用发布位于resources/skills/下的独立目录code-review清单全文即本文所依据的 resources/skills/code-review/SKILL.md。同类内置技能还包括 resources/skills/deepchat-cli/SKILL.md、resources/skills/deepchat-settings/SKILL.md、resources/skills/git-commit/SKILL.md 等。触发审查在会话中直接提出请 review 这段代码这份实现有什么问题或对该模块做一次安全审计即可命中技能的三个激活条件。审查输入边界技能通过allowedTools限定只能读取与搜索文件read/ls/grep一族不涉及写入与命令执行从机制上保证审查动作是只读的。技能归属与作用域内置技能归属deepchatAgentsrc/main/skill/agentSkillRoots.ts其他 Agent 的技能则隔离在.agent-scopes/agentId/子目录且禁止符号链接与目录逃逸src/main/skill/agentSkillRoots.ts。七、扩展示例如何仿写一个审查类技能参照code-review的骨架编写自己的技能只需三步在技能根目录下新建skill-name/SKILL.mdfrontmatter 中声明name与目录同名、小写连字符命名、精炼的description建议一句话点明触发场景控制在百字内以节省路由预算、以及allowedTools优先写规范工具名正文按审查焦点 输出格式 激活时机组织把审查标准写成可执行的检查项如需脚本支撑在目录内放入脚本并遵循技能运行时策略与限额见 5.4 节表格。仓库中的技能文件为只读资源安装与导入技能请使用 DeepChat 设置界面的技能管理入口或skill_list/skill_manage工具实现见 src/main/skill/skillTools.ts不要直接改动仓库内容。结语code-review技能的价值在于它把代码审查这个模糊的专家行为压缩成一份带 frontmatter 元数据、四大审查维度、四段式输出格式与明确触发条件的 Markdown 清单再交给 DeepChat 文件型技能管线去完成发现、路由、授权与安全校验。理解这份清单与其背后的 src/main/skill/ 实现既能帮助你用好现成的审查能力也能让你在需要时快速写出同构的专业技能。【免费下载链接】deepchatDeepChat - A smart assistant that connects powerful AI to your personal world项目地址: https://gitcode.com/GitHub_Trending/dee/deepchat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表