把 Obsidian 知识库接进 Claude Code:400 行代码实现 AI 长期记忆

自动化编码工作流中的记忆系统集成

在现代软件开发中,自动化工具和智能助手可以显著提高效率。本文介绍一种基于Harness和Claude Code的记忆系统集成方案,旨在确保编码过程中能有效利用项目经验、规范文档及历史问题记录,以减少翻车风险。

一、背景与目标

背景

在大型项目开发中,团队成员可能面临以下挑战:

  • 对项目的标准规范不够熟悉。
  • 缺乏对以往遇到的问题和解决方案的记忆。
  • 需要频繁查阅文档获取信息。

为解决这些问题,我们设计了一套记忆系统集成方案,将其嵌入到自动化编码工作流Harness:developer中。这套系统的目的是在开发过程中自动提供必要的上下文信息,从而帮助开发者避免重复犯错,并提高工作效率和代码质量。

目标

  • 实现在任务开始前对项目规范、历史问题的全面记忆加载。
  • 在每次编写或修改文件之前,注入针对具体文件的相关文档和警告信息。
  • 及时记录新的错误模式并将其纳入知识库。

二、系统架构

本方案的主要组成部分包括:

  1. 规范与踩坑预加载
  2. 组件记忆召回
  3. 编码过程中隐式上下文注入(通过PreToolUse钩子)
  4. 编码完成后的合规核查及问题回流
  5. 踩坑记录的标准化结构化

1. 规范与踩坑预加载

在开发任务开始前,系统会执行以下步骤:

  • 根据项目原型识别涉及的规范域。
  • 扫描并读取相关文档和历史问题库中的摘要信息,并将其追加到计划文档中。

例如,在启动商户管理模块开发时,系统会自动加载API、组件等相关的标准规范文件以及可能遇到的历史坑点信息。此操作能确保开发者在正式编码前具备充分的背景知识准备。

2. 组件记忆召回

通过解析原型页面中的数据字段与UI组件需求,映射对应的业务组件,并查询其文档及历史问题记录。

  • 实例化场景:当开发人员编辑core/api/src/payment-orders/index.ts时,系统会自动注入API模块的规范信息以及关于该API使用的常见错误模式。

3. 编码过程中隐式上下文注入

在每次写入文件之前,通过注册PreToolUse钩子来调用自定义脚本(如recall.sh),根据即将编辑文件的类型和路径决定注入何种文档或警告。

  • 实例化场景:当开发者尝试修改一个.vue类型的表单页面时,系统会自动提示该表单中使用的Arco Form组件的相关属性配置及常见问题。

4. 编码完成后的合规核查及问题回流

编码完成后,Verify技能会对变更文件进行如下检查:

  • 合规性:确保所用业务组件的使用方式遵循标准规范。
  • 历史问题:如果存在已知踩坑情况,则需确认是否触碰过这些问题。

同时设立新错误记录机制,鼓励开发人员主动将发现的新错误模式反馈到系统中,进一步完善知识库。比如,在修复一个与Arco Form相关的必填提示校验问题后,用户可以选择将其固化为新的踩坑记录以便后续参考。

5. 踩坑记录的标准化结构化

通过使用/pit-record命令来创建并管理这些错误模式的文档,要求开发者在报告新问题时遵循统一格式。这样可以确保所有的历史问题都易于被检索和查阅,从而指导未来的开发工作更加顺利进行。

三、实践效果与展望

该集成方案已经在实际项目中得到应用,并显著提升了团队的工作效率和代码质量。未来我们计划进一步扩展此系统的能力范围,比如引入机器学习技术来自动识别潜在的问题模式;或者将文档检索功能迁移到云端服务端实现快速响应。

通过这种智能记忆系统的集成,我们的开发过程变得更加高效和可靠,为复杂的软件项目提供了一个强大的辅助工具支持平台。随着项目的迭代发展和技术进步,这一方案也将持续得到优化和完善,以更好地服务于团队成员的需求。


以上就是关于自动化编码工作流中记忆系统集成的详细介绍。这套解决方案不仅提高了编程效率,还大大减少了因缺乏经验和规范而引起的错误率,为软件开发领域带来了新的可能性和方向。希望未来有更多的创新应用于这一领域,推动整个行业向着更加智能、高效的路径发展。

整个系统的信息流

把上面几个介入点串起来,一个完整的编码任务信息流是这样的:

用户启动开发流程时,首先通过 /Harness:developer 进入特定模块的开发阶段,例如商户管理模块:

用户: /Harness:developer 商户管理模块开发
         │
         ▼
  Step 1: 原型勘察 + 规范预加载 + 组件记忆召回(面向模块整体)
         │
         ▼
  Step 2-6: 编码阶段,实时注入规范和组件 API 到每个编辑的文件中
         │
         ▼
  Step 7: /Harness:verify 验证阶段
           - 组件 API 合规核查(comp-lookup)
           - 踩坑触碰检测
           - 新问题记录到 pit-record 
         │
         ▼
  Step 8: 日志归档
         │
         ▼
  下次同类任务开始时,新踩坑自动参与匹配

整个流程中,AI 编码前有丰富的知识上下文支持:宏观的规范预加载、微观的文件级注入、以及验证阶段的踩坑检测。这些信息为每次编码提供了坚实的基础,并通过闭环反馈机制不断完善。

组件 API 查询工具

在组件 API 层,有一个名为 comp-lookup 的命令行工具用于查询和管理组件文档:

node fetch.mjs NormalTable --api-only   # 查自定义组件
node fetch.mjs form --api-only          # 查 Arco 组件
node fetch.mjs form normal-table --api-only --compact  # 批量查,每组件限80行
node fetch.mjs --list                   # 列出所有可查询组件

这些命令帮助开发者快速获取所需信息。此外,在每个组件的文档中自动添加相关踩坑记录:

## API

...(Arco Form 完整 Props/Events 表格)...

---

## ⚠️ 已知踩坑(来自知识库)

- **Arco Form 必填提示与提交校验脱节** (2026-04-21)
  - tags: vue3, arco-form
  - 详情:`docs/规范/前端通用文档/踩坑记录/2026-04-21-arco-form-校验脱节.md`

> 编码前请阅读以上踩坑,避免重复出现。

这样的结构确保了开发者在使用组件时能够及时了解潜在问题并采取预防措施。

回归测试的重要性

为了保证 recall.sh 脚本的稳定性和可靠性,编写了大量的回归测试用例:

── 路径域映射(14 个)
  ✅ core/api/src/payment-orders/index.ts → api
  ✅ apps/merchant/src/layout/default.vue → layout
  ✅ random/path/file.ts → 空(未知路径不注入)

── tool_input 嵌套格式兼容性测试
  ✅ tool_input 嵌套格式 → 含 '规范:api'
  ✅ tool_input.path 格式 → 含 '规范:stores'

── 嵌套 slot template 组件提取
  ✅ 嵌套 template → 识别 select(slot 内)
  ✅ 嵌套 template → 识别 normal-table
  ✅ 嵌套 template → 识别 tag(深层 slot)

── .vue + 域规范双注入测试
  ✅ .vue in components/ → 组件 API 注入
  ✅ .vue in components/ → 域规范注入

══════════════════════════════════════════════
  结果:PASS=33  FAIL=0  TOTAL=33
══════════════════════════════════════════════

这些测试涵盖了不同路径下的各种情况,确保了脚本的全面性和健壮性。

设计选择说明

  • 为什么是 PreToolUse 而不是 PostToolUse?

    • 使用 PreToolUse 可以在编码开始之前注入必要的规范和组件信息,使得 AI 在生成代码时能够充分利用这些上下文知识。
  • 规范内容为什么只取前60个非空行?

    • 过多的规则可能导致重要部分被掩盖。通过选择性地提取核心约束规则,可以确保 AI 能够集中处理关键问题。
  • 未收录组件如何静默处理?

    • 如果某个组件没有独立文档,则不会显示任何错误信息或警告,而是直接跳过这些组件。这样既避免了不必要的干扰,也保留了其他有文档支持的组件的正常使用。

文件结构概述

项目中的文件和目录组织如下:

.claude/
├── hooks/
│   ├── recall.sh              # PreToolUse 钩子主体(~250 行 bash + Python)
│   └── recall.test.sh         # 33 个回归测试
└── settings.json              # 钩子注册

.agents/skills/
├── harness-developer/         # 主编码工作流(含记忆预加载)
│   └── SKILL.md
├── harness-verify/            # 代码审查工作流(含组件 API + 踏坑触碰核查)
│   └── SKILL.md
├── api-add/                   # API 生成流程(含踩坑预检)
│   └── SKILL.md
├── pit-record/                # 踏坑结构化写入工作流
│   └── SKILL.md
└── comp-lookup/               # 组件 API + 践踏 CLI 查询工具
    ├── fetch.mjs              # 主查询脚本
    ├── fetch.test.mjs         # 10 个回归测试
    └── references/
        ├── custom/            # 自定义组件文档库
        └── arco/              # Arco Design 组件文档库

docs/doc/通用前端规范/
├── 规范/                      # 权威源,软链接到 .claude/rules/(10 份)
└── 践踏记录/
    ├── 践踏记录.md            # MOC 索引
    └── 2026-04-21-*.md        # 单个践踏文档

这种结构确保了每个模块的功能清晰且易于维护。

效果评估与未来改进方向

系统在几个方面已经取得了显著效果:

  • 编辑 API 文件时,自动加载相关规范。
  • 使用特定组件时,能够提供详细的警告和建议以避免常见问题的出现。
  • 在代码验证阶段,发现了新的践踏并通过 pit-record 记录下来。

然而还有一些需要改进的地方:

  • 提高 views/ 下文件中践踏匹配的准确性。
  • 实现从 AI 编码经验中自动提炼新践踏并写入知识库的功能。
  • 探索更多利用 Obsidian 的搜索和反向链接功能的方法以增强系统扩展性和灵活性。

通过持续优化和完善,这套简单而有效的机制将能够进一步提高开发效率和代码质量。


> 🔗 相关阅读AI长期记忆