makecindy / makecindy/cindy

feat(project-context): 支持使用 Codex 维护项目知识

Open
#4,231 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
2.7k
Forks
401
Avg merge
21h 48m
Merged PRs (30d)
776

Description

## 使用场景 / Use case

已经使用 Codex CLI 的开发者,希望直接通过 `project-context refresh` 探索源码并维护项目知识,通过 `update` 根据小 diff 更新知识,供后续 Cindy 会话按需读取。

## 当前问题 / Current limitation

主分支的配置类型已经接受 `agent: codex`,但 `packages/project-context/src/adapters/factory.ts` 会抛出未实现错误。知识维护目前只有 Claude Code adapter,Codex 用户因此需要额外安装和登录 Claude Code。

`packages/project-context/README.md` 的 Adapter、配置示例和 Limitations 已将 Codex 列为未来扩展方向。Desktop 已有的 Codex 会话和 TOC 消费能力不包含这个独立维护 CLI。

## 期望方案 / Proposed solution

- 增加本地 Codex CLI adapter,实现现有 `AgentAdapter` 的 refresh 和 rewrite 操作,默认仍为 Claude Code。
- 复用 `agent_options.command`、`model`、`timeout`、`refreshTimeout`,从目标仓库根目录执行。
- 使用只读 sandbox、禁止交互审批、通过 stdin 传入维护请求。区分 JSONL 过程事件与最终正文,等待成功终态及进程退出后读取最终文件。
- 验证 Markdown 最小结构,再由宿主写入知识和同步元数据。异常保持原有 stale 恢复流程。
- 不包含 custom/Pi adapter、新 Agent Loop、自动安装登录、Desktop 生命周期或知识事实自动验证。

### 验收标准

- `agent: codex` 的 refresh 和小 diff update 均能维护知识;未配置 agent 时继续使用 Claude Code。
- refresh 从真实源码获取内容;update 收到对应 diff,均使用目标仓库根目录。
- 过程与工具输出不进入知识正文;必须同时满足成功终态、无失败终态及退出码 0。
- 正文缺失、为空、格式不合格、缺少既有二级章节、摘要不兼容 TOC、超时或 CLI 失败均保留旧正文并标 stale;`refresh --stale` 可恢复。
- `--check-only` 不启动 Agent;冻结模块继续跳过;宿主保持 frontmatter、manifest、TOC 和锁的现有行为。
- 自动测试不启动真实模型、不读取 Codex 凭证;覆盖进程协议和命令层失败恢复,真实 Git 只留一条 smoke。
- 独立记录一次真实 Codex 读取合成源码的 smoke,不把模拟测试当作真实集成通过。

## 已考虑的替代方案 / Alternatives considered

- 继续使用 Claude Code:当前可用,但不能解决仅使用 Codex 的开发者的额外依赖。
- 复用 Desktop/maker-core 的私有执行器:引入不必要的宿主耦合,不适合独立 CLI。
- 只调用一次模型 API:无法覆盖本地源码探索和 CLI 登录复用,不满足维护场景。

Contributor guide

Open the contributing guide

Research direction

Start in packages/project-context/src/adapters/factory.ts and read the adapter and configuration guidance in packages/project-context/README.md. Trace the existing Claude Code refresh and rewrite flow before defining the Codex CLI process and stdin protocol. Done means refresh and diff updates meet the listed success, validation, stale-recovery, check-only, and test requirements without launching real models in automated tests.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
cli, tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Clearly specified
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.