有没有办法给 code agent 提供知识库?

6 月 21 日
 saySilence

问题描述

据我所知,现在的编程 agent 很大程度上受限于上下文长度,各个工具对此的策略都是压缩上下文。
claude code 和 hermes 有个记忆系统但是我不太了解。
我在使用 agent 的途中,发现他总是犯同样的错,现在的解决途径是把问题写在 AGENTS.md 里面。
随着项目开发,在 AGENTS.md 里面做补充越来越像是打补丁,而且有些问题并不常见,但是每次都犯错误真的很难受。
可能有以下问题:

2831 次点击
所在节点    程序员
13 条回复
Mumu2580
6 月 21 日
先建立一个知识库。然后写提示词里面去。暴露 mcp 路径 api ,ok 这个是 外挂知识库了 。接下来是优化搜索技术 相关性 召回这些了。先不用管那么多。搞个 md 文档库就可以了。

然后开发 skill 写清楚步骤,强制读就可以了。强行注入。每次都开新的 sub 去开发。

主的只给改动范围。然后 subagent cr 核对。收敛起来了好一点。(会有很多不必要的 cr 的,后面也懒得看了。反驳辩护一轮修完得了)

然后挂定时跑。走事件驱动。(后面还犯的,我就放弃了 又不是不能跑)
NewExist
6 月 21 日
楼上没毛病 也可以基于 cc 的 hooks 去做一些召回 和会话的上传,会话上传后可以基于会话在做一个收敛,常见 bug 和一些少的规范可以在提取到知识库中
calvinHxx
6 月 21 日
。。。你说的这玩意 不就是 skill 嘛。。自己建一个 docs 文件夹 一边开发一边沉淀就好了。慢慢的你的 ai 就会越来"聪明"
383394544
6 月 22 日
没听过 git 吗
runking
6 月 22 日
https://github.com/monkey-sking/ai-memory-hub
感觉我这个有可能解决你这个问题
JasonYip
6 月 22 日
写 docs 在 claude.md 或者 agent.md 写上这个索引 让 agent 有需要的时候去找
saySilence
6 月 22 日
@calvinHxx 普通 skill 应该是不太行的,他的触发条件过于单调,agent 不知道什么时候去查知识库,而且并没有向量化,查的时候只知道根据关键词搜索,同样的问题换个表述可能查不出来。
saySilence
6 月 22 日
@Mumu2580 你的意思是搞个知识库服务器,然后通过 mcp 提供服务,在对话开始的时候强制查询吗?定时跑是什么意思,有没有办法让他在中途遇到问题的时候再去知识库里面找找解决方案呢?
lmoon
6 月 22 日
我是用 obsidian lifeos 去做的,做个人或者项目的知识库沉淀,然后用 obsidian-fast-note-sync 同步和暴露 mcp 服务
Mumu2580
6 月 22 日
@saySilence ✍️成 skill 拼到提示词里面。 定时跑是说知识库整理,太多的话效果不好。mcp 意思是 实在太多的话暴露 api 包一个 mcp ,用 mcp 查询,不走 agent 自带的读文件了。中间自己✍️代码喂相关内容。查数据库 查向量库,调其他垂直 agent 等。目前看小场景直接 doc 目录就可以了 提示词里面写什么时候去查。最好还是直接拼接进去少一轮工具调用

doc 目录 md 文件 知识库里面错误的直接自己改。
huija
6 月 22 日
其实是一样的,本地的话,你就用 skill ,大家一起用,维护一个文件服务器封装成 mcp 其实就可以了
coefu
6 月 22 日
你这个问题是一个 很核心也很基本的问题。

1 ,♾️ context ,这是理想目标。不过理论上可能是达不到了,因为过去的 context 一旦存在压缩,就必然有信息损失,如果能找到一种 信息的无损压缩方法,就很嗨皮了。

2 ,知识 和 经验,又不同,大部分静态知识 可以 lora / TTT ,搞进基础模型参数里。但是经验 是在迭代更新的,要么像 git 那样显式的版本控制,要么 memory 。但是都存在一个基本问题, 什么时候 记,什么时候 取。当前,就我来看,你只能显式的声明,把你认为重要的要模型记住的东西 写入 memory ,下次让模型先从 memory 里读 相关的内容。因为既然做不到 ♾️ context ,在不同 context 之间,只能用这种显式的有状态来同步。
saySilence
6 月 25 日
@coefu 知识库 mcp 的方案无法解决何时调用的问题,AI 该跑偏还是跑偏。假如写个通用的提示词,比如“遇到问题先去知识库进行查询”,那大概率还是提问的开头开始查询,而且大多数情况下都是多此一举。所以目前的方案可能还是 AGENTS.md 里面做一个较为通用的路由,比如根据接口、根据页面,有通用的文档规则让他能够主动去看。较为特殊的部分,显式声明,就像你说的那样。
通用的知识库的话,只能通过主动询问的方式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.ih06.com/t/1221777

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX