feat: 增强记忆体系并补齐 TUI 记忆命令支持#63
Conversation
Codecov Report❌ Patch coverage is 📢 Thoughts on this report? Let us know! |
|
|
||
| - `rule` | ||
| - `llm` | ||
| - `auto` | ||
|
|
There was a problem hiding this comment.
抛开方案本身是否正确不谈,这里的 rule、llm、auto 分别是什么意思?各自的输入、输出、触发条件、执行行为和适用场景是什么?文档里都没有写清楚。
如果连核心概念和行为定义都缺失,这份文档就不能算是架构设计文档,最多只是一些未经展开的想法罗列。
| ### 3. 工作会话记忆 | ||
|
|
||
| 按工作区持久化,用于恢复当前工作状态,例如: | ||
|
|
||
| - 当前任务 | ||
| - 最近完成的动作 | ||
| - 当前进行中的事项 | ||
| - 下一步计划 | ||
| - 最近涉及的文件 | ||
| - 最近对话轮次 |
There was a problem hiding this comment.
这里我比较怀疑这层设计的必要性。
这些内容,例如当前任务、最近动作、下一步计划、最近对话轮次,本质上都属于会话上下文的一部分,理论上已经可以通过 messages/context 来维护。
在这种前提下,再额外引入一层“工作会话记忆”做持久化,收益是什么?如果没有明确收益,这基本就是在增加额外复杂度和维护负担。
There was a problem hiding this comment.
恢复退出的状态
我理解“恢复退出状态”这个诉求。
但如果目标只是恢复上次工作现场,是否有考虑过 session / resume 机制,而不是单独再抽一层 memory。像 Claude / Codex 的做法,本质上也是先把 resume 做好。
所以这里的关键问题是:
这部分为什么必须是 memory?它和 session 的职责边界是什么?
如果边界讲不清楚,就很容易变成重复设计,既增加复杂度,也增加维护负担。
There was a problem hiding this comment.
此外,先不讨论方案本身,这里的“记住改过什么文件”我也比较怀疑其必要性。
首先,这类记录天然会非常多,实际使用下来很容易迅速膨胀成噪音,而不是有效记忆。
其次,这部分本质上和 Git 的职责是重复的。文件变更记录本来就应该以 Git 作为事实来源,需要查看时完全可以通过命令或工具链获取。
这类能力本身已经有现成模块可以承载了,没有必要再额外做一套新的。
如果只是重复已有能力,而且效果不一定比现有方案更好,那这部分设计的收益是很不好评估的。
| ```yaml | ||
| memory: | ||
| extractor: "rule" | ||
| extractor_model: "" | ||
| extractor_timeout_seconds: 20 | ||
| ``` |
There was a problem hiding this comment.
你们这里有很多能力都在暴露给用户做配置。问题是,配置项一多,用户面对的就不再是“灵活性”,而是实实在在的心智负担。
像这里的 extractor、extractor_model、extractor_timeout_seconds,都需要用户理解其含义、差异和影响范围,这本身就说明方案还不够收敛。
建议尽量减少不必要的配置暴露,把能够在系统内部收敛掉的复杂度收敛掉,而不是转嫁给用户。
test(provider): improve coverage for generate attempt helpers
变更概述
本 PR 围绕 NeoCode 的记忆能力做了一轮增强,主要包括:
rule、llm、auto/remember手动记忆未稳定落库的问题/todo add对多词内容解析不完整的问题主要改动
1. 记忆能力增强
MemoryExtractormemory.extractor、memory.extractor_model、memory.extractor_timeout_seconds等配置项AGENTS.md、.neocode/memory.md等显式约定文件2. 聊天上下文拼装优化
3. TUI 命令扩展与修复
新增/补齐以下命令支持:
/memory/memory-list/project-memory/resume/remember <text>/memory-mode同时补充
/help面板中的命令说明,避免实际可用命令与帮助信息不一致。4. 交互问题修复
/remember仅依赖提取器推断、导致提示成功但不一定真正保存的问题/todo add只能读取首个单词作为内容的问题,现已支持多词内容并识别尾部优先级参数配置变更
新增示例配置项:
memory.project_filesmemory.project_prompt_charsmemory.extractormemory.extractor_modelmemory.extractor_timeout_seconds同时统一 provider 命名中的
doubao表达。文档更新
测试
已运行:
go test ./internal/server/service ./internal/tui/services ./internal/tui/components ./internal/tui/core