Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

switching memory off switches skills off, and the chat then denies the feature exists

未关闭
#1,379 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
58/100
Issue 类型
缺陷
描述清晰度
描述清楚
活跃度
活跃
技术栈
go
领域
cli

调研方向

Start with importForeignSkillsBeforeFirstMessage in cmd/codeaf/chatv3.go:1169, then read renderSkillCatalog in internal/session/skillcatalog.go:64 and useSkillTool in internal/session/tools_skill.go:71. Trace both memory states through the real chat surface and the /skill picker. Done means memory-off users are told skills are switched off and the setting is named, while memory-on users see and can use the skill shelf.

由索引模型根据 Issue 内容生成。

描述

area:session bug sev:serious

What happened

A person with eighty-one skills on disk asked the chat "can you use skills ?" and
was told:

If you meant skills in the Claude Code SKILL.md sense, codeaf has no such
mechanism — harnesses and the notebook are what it has instead.

The binary was built from the head that carries the skills wave and its manual
pages. The feature was there. The answer denies it exists.

Why

memory.enabled was off.

~/.codeaf/config.json   memory.enabled = off
~/.codeaf/graph.db      59.7 MB, facts table: 0 rows
~/.claude/skills        40 direct-child SKILL.md
~/.agents/skills        41 direct-child SKILL.md

importForeignSkillsBeforeFirstMessage (cmd/codeaf/chatv3.go:1169) returns on
its first line when memory is nil. Nothing is recorded, so
renderSkillCatalog (internal/session/skillcatalog.go:64) reads an empty
shelf and emits zero bytes, and useSkillTool (internal/session/tools_skill.go:71)
withholds the verb. Every one of those is behaving as designed.

The model then has no shelf, no verb, and no sentence about either, so it
reasons from the silence and invents a denial.

The two defects

One. Skills are gated on a setting that names something else, and nothing says
so.
A person switches memory off to stop the program remembering things about
them. They also switch off skills, and are not told. That is one decision
producing two outcomes with only one of them disclosed.

Two. "Absent because impossible here" and "absent because it does not exist"
are the same silence.
The absent-not-broken law works: it stops a model
planning a reply around a call that can only refuse. It does not stop the model
reasoning from the silence and concluding the capability was never built. The
law needs a companion clause rather than an exception: WHEN A CAPABILITY IS
WITHHELD BY A SETTING, SOMETHING HAS TO SAY SO.

This is not the emptiness law's territory. That law is about a number nobody has
yet: draw nothing rather than $0.00. It was never a licence to hide the
difference between "you have no skills" and "skills are switched off here".

Replication

  1. A profile with memory.enabled = off and any number of SKILL.md folders
    under a scanned root.
  2. Ask the chat whether it can use skills.
  3. It denies the feature exists, rather than saying it is switched off.

Acceptance

End to end, through the real surface, in BOTH states.

  • With memory off: the answer says skills are switched off on this machine and
    names the setting. It does not say codeaf has no such mechanism.
  • With memory on: the shelf is there and the answer is yes.
  • The /skill picker with memory off says the same thing rather than drawing an
    empty list.

Then whatever mechanism carries it. One candidate: the catalog emits a single
line when the store is absent and the roots are not, which costs a person with
no skills nothing, because that person has no roots either.

Not in scope

#1378 is the manual side: no heading answers the capability question in either
state. Fixing the sentence here does not fix retrieval there, and neither is a
substitute for the other.

主要语言
Go
星标
115
派生
14
平均合并
9 小时 37 分钟
30 天内合并 PR
755

环境准备

我们还没有检查这个项目的环境配置文件。先看它的 README,通用步骤见我们的新手贡献指南。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

Agent-Field/CodeAF 的其他 Issue

查看 Agent-Field/CodeAF 的全部 Issue

相似的 Issue

更多 Go Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。