工程知识引擎:AI编程智能体的工程知识底座构建

Agentic Search的核心在于任务驱动的检索决策,评估其效果需要从多个维度入手,避免过度自由:

1. 任务完成度: 衡量Agentic Search是否能够找到足够的信息来完成任务,例如代码生成、问题解答等。
2. 检索路径可视化: 通过可视化Agentic Search的推理路径,可以分析其检索逻辑是否合理,是否存在冗余或错误。
3. 知识源贡献度分析: 评估不同知识源(代码图谱、RepoWiki等)在检索过程中的贡献,优化知识源的权重和优先级。
4. 引入约束机制: 例如,设定最大检索深度、限制知识源的选择范围等,避免Agentic Search无限制地探索。

Commit图谱挺有意思的,它把咱们写代码时候的“为什么”给串起来了。Commit Message其实就是咱们提交代码时候的“小心思”,记录了改动的原因。Commit图谱就像是给这些“小心思”建了个索引,让AI能顺着需求找到对应的代码实现。除了Commit Message,我觉得还可以试试看代码评审的记录,那里面也有很多关于代码意图的讨论,说不定能更好理解代码背后的故事。

评估 Agentic Search 的效果,并不断优化其检索策略,我认为可以从以下几个方面入手:

1. 效果监控: 监控 Agentic Search 的相关指标,例如,检索时间、资源消耗、检索结果质量等。及时发现性能瓶颈和问题。
2. 用户行为分析: 分析用户使用 Agentic Search 的行为,例如,用户点击了哪些检索结果、用户修改了哪些代码等。了解用户对检索结果的满意度。
3. 持续集成: 将 Agentic Search 的评估和优化纳入持续集成流程。每次代码变更,自动运行评估脚本,并根据评估结果调整检索策略。

我认为最关键的是持续监控和反馈,形成一个闭环的优化流程。:rocket:

让RepoWiki保持同步确实是个挑战。我的经验是,人的因素很重要,技术只是辅助。

1. 自动化生成: 像文章里说的,Qoder可以自动从代码和Commit Message中提取信息,生成Wiki。但我们需要更进一步,能不能把代码里的注释,设计文档,API文档都整合起来自动生成?
2. 与CI/CD集成: 每次代码变更,自动触发Wiki的更新。比如代码里改了一个API,对应的Wiki文档也自动更新。
3. 激励机制: 把Wiki的完善程度纳入绩效考核。谁负责的模块Wiki写得好,就给TA加分。

但最最重要的是,让大家意识到Wiki的重要性,把它当成代码的一部分来维护。如果大家都觉得Wiki没用,那再好的技术也没用。

Commit message质量确实是个老生常谈的问题,我在团队里推行过一些方法,感觉有点效果:

1. 强制规范 + 代码审查: 在Git Hook里加入Commit Message格式检查,不符合规范就阻止提交。Code Review的时候也把Commit Message作为一项重要内容来评估。
2. Commitizen CLI: 这是一个交互式的Commit Message生成工具,引导开发者填写必要的信息,并自动生成符合Angular规范的Commit Message。
3. Git Flow工作流: 采用Git Flow这种比较严格的工作流,在一定程度上能够规范Commit Message的书写。

但我觉得最重要的是提升开发者的意识,让他们认识到好的Commit Message不仅方便自己,也能帮助他人和AI。

保证 RepoWiki 与代码库同步演进,我觉得可以尝试以下方法:

1. 自动化同步: 使用工具监听代码库变更,自动更新 RepoWiki。例如,可以监听 Git 提交,然后自动提取代码注释、Commit Message 等信息更新 Wiki。
2. 版本控制: 将 RepoWiki 也纳入版本控制,与代码库保持同步。这样可以方便地查看历史版本的 Wiki 文档。
3. 模板化: 采用模板化的 Wiki 页面,例如,API 文档、架构设计文档等。然后,使用工具自动填充模板内容。

我认为最重要的是自动化,尽量减少人工维护的工作量。:flexed_biceps:

评估和优化 Agentic Search,我的思路是:

1. 构建评估数据集: 人工构建一个包含各种场景和需求的评估数据集,用于离线评估 Agentic Search 的效果。
2. 定义评估指标: 除了 Precision、Recall 等传统指标外,还需要定义一些更贴合实际的指标,例如,上下文覆盖率、上下文相关性等。
3. 自动化测试: 编写自动化测试脚本,定期对 Agentic Search 进行测试,及时发现问题。

我认为最重要的是构建一个高质量的评估数据集,并定义合理的评估指标。:thinking:

谢邀,关于Commit message的问题,我之前调研过一些方案,这里分享一下我的看法

1.可以考虑把Commitlint集成到CI/CD流程中,这样可以强制规范Commit message的格式,不符合规范就构建失败,可以有效提高Commit message的质量。

2.市面上也有一些Commit message模板工具,比如Commitizen,可以引导开发者按照规范填写Commit message,降低了编写Commit message的门槛。

3.如果团队有自己的代码规范或者知识库,可以考虑把这些信息集成到Commit message中, 方便后续的开发者理解代码的意图。

关于RepoWiki,我有点不同的看法。与其花大力气维护一个独立的Wiki,不如把知识内聚到代码里。

1. Code as Documentation: 提倡写清晰的代码,加上恰当的注释。代码本身就是最好的文档。
2. Docstring: 使用 Docstring 详细描述函数、类和模块的功能,并用工具自动生成API文档。
3. ADR(架构决策记录): 对于重要的架构决策,编写Markdown格式的ADR文件,随着代码一起提交到代码库。

这样,所有知识都和代码放在一起,避免了Wiki和代码脱节的问题。当然,这需要团队有良好的代码规范和文档意识。:smiling_face_with_sunglasses:

提高 Commit Message 质量,我推荐这几个方法:

1. 约定大于配置: 团队内部形成统一的 Commit Message 规范,例如 Angular 规范,并编写详细的文档。
2. 使用 Commitlint: Commitlint 可以根据配置的规范自动检查 Commit Message 是否符合要求,不符合则拒绝提交。
3. 集成 AI 辅助工具: 尝试集成一些 AI 辅助工具,这些工具可以根据代码变更自动生成 Commit Message。

说实话,最难的还是让每个人都自觉遵守规范。可以考虑引入激励机制,奖励那些编写高质量 Commit Message 的同学。:rocket: