Files
2026-07-12 21:26:08 +08:00

174 lines
8.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AGENTS.md
## 🧭 仓库导航(任何人 / AI 进来先读这里)
本仓库是 **llm-wiki monorepo**,含三个区:
| 区 | 位置 | 状态 |
|---|---|---|
| **agent 工作台**(开发主线) | `workbench/`server + web | 🚧 活跃开发 |
| **共享图谱引擎** | `packages/graph-engine/` | 🚧 随 agent 演进 |
| **Skill 形态** | 根目录 `SKILL.md` / `scripts/` / `templates/` / `platforms/` | ❄️ 成熟·维护冻结 |
➡️ **开发 agent 工作台(日常主线)**:先读 [workbench/AGENTS.md](workbench/AGENTS.md) + [workbench/PRODUCT.md](workbench/PRODUCT.md)——当前阶段、ADR、协作规则都在那里。
➡️ **本文件以下内容**:Skill 形态的安装与维护规则,**仅当你在维护 Skill 时才看**install.sh / SKILL.md / scripts / templates / platforms)。Skill 已功能成熟、进入维护冻结,不再追加新功能。
---
## 🏗️ monorepo 怎么连
```
workbench/web (React 19, SSE) ──HTTP POST + SSE──▶ workbench/server (Hono + @earendil-works/pi-coding-agent)
├─ spawn 根目录 scripts/Skill 已有能力,ADR-16 能力归属)
└─ 依赖 @llm-wiki/graph-engine
packages/graph-engine ──ESM + IIFE 双产物──▶ workbench/web 图谱视图 + Skill 离线 HTML(一个引擎、两个宿主,ADR-21)
```
- 权威架构图、技术栈与全部 ADR 见 [workbench/PRODUCT.md §3 / §7](workbench/PRODUCT.md);当前阶段与协作铁律见 [workbench/AGENTS.md](workbench/AGENTS.md)。
- **三类数据彻底分离**(别写错位置):知识库 `~/llm-wiki/<name>/`、应用数据 `~/.llm-wiki-agent/`、模型凭证 `~/.pi/agent/auth.json`pi-agent 管,权限 0600)。应用自己的 `config.json` **绝不存** API key。
## ⚙️ 开发命令速查
npm workspaces,三个包(根 `package.json` 不设 `"type": "module"`——Skill 的 CommonJS 测试要兼容,ESM 声明在各子包;ADR-20):
| 包 | 路径 | npm 名 |
|---|---|---|
| 前端 | `workbench/web` | `@llm-wiki-agent/web` |
| 后端 | `workbench/server` | `@llm-wiki-agent/server` |
| 图谱引擎 | `packages/graph-engine` | `@llm-wiki/graph-engine` |
| 操作 | 命令(从仓库根) |
|---|---|
| 一行启动(后端 `8787` + 前端 `5180`strictPort | `npm run dev` |
| 全仓类型检查 | `npm run typecheck` |
| 前端 lint | `npm run lint -w @llm-wiki-agent/web` |
| 前端单测(unit + dom | `npm run test -w @llm-wiki-agent/web` |
| 前端 Paper 视觉回归(playwright | `npm run visual:paper -w @llm-wiki-agent/web` |
| 引擎单测 | `npm run test -w @llm-wiki/graph-engine` |
| 后端单测(server 无聚合 test 脚本,用 node:test | `node --import tsx --test "workbench/server/src/**/*.test.ts"` |
要点:
- 测试统一用 Node 内置 `node --test`(不是 jest/vitest)。前端 DOM 测试走 jsdom + @testing-library/react,视觉回归用 playwright(仅 dev 依赖,不进运行时)。
- `web` / `server``build``typecheck``prebuild` / `pretypecheck` 钩子,会**自动先 build `@llm-wiki/graph-engine`**。改了引擎代码后,跑前端/后端的 typecheck 或 build 会自动带上最新引擎产物;单跑引擎自己的 `tsc --noEmit` 不会刷新 `dist/`
- Node `>=22.19.0`pi-coding-agent 硬要求,`.mise.toml` / `.nvmrc` 锁定)。
---
## Skill 形态:安装与维护
这是 llm-wiki 在 Codex 下的入口文件。
先看这三个文件:
- [README.md](README.md):多平台总说明
- [platforms/codex/AGENTS.md](platforms/codex/AGENTS.md)Codex 专属入口提示
- [SKILL.md](SKILL.md):核心能力和工作流
## Codex 安装动作
如果当前任务是安装这个 skill,执行:
```bash
bash install.sh --platform codex
```
默认安装到 `~/.codex/skills/llm-wiki`。如果用户机器上还是旧的 `~/.Codex/skills`,安装器也会自动兼容。
默认只准备知识库核心主线。如果这次要自动提取网页 / X / 微信公众号 / YouTube / 知乎,再执行:
```bash
bash install.sh --platform codex --with-optional-adapters
```
## 重要提醒
- 不要把这个仓库当成 Codex 专属仓库;Claude Code、OpenClaw、Hermes 也共用同一套核心内容
- 安装完成后,再按 [SKILL.md](SKILL.md) 的工作流继续做事
- 如果 OpenClaw 使用的是自定义技能目录,可以改用 `--target-dir <你的技能目录>/llm-wiki`
## 分支管理规则
改动代码(非纯文档/注释)时,按以下流程操作:
1. 开新分支:从 main 创建,命名表达用 feat 或 fix 前缀;Codex 环境默认使用 `codex/` 命名空间,例如 `codex/fix-cache-reliability-write-through`
2. 分步 commit:每完成一个逻辑单元就提交(脚本实现、测试、文档更新分开 commit)
3. 推送并创建 PR:推到远端后用 `gh pr create` 创建 PR
4. 合并:确认测试通过后在 GitHub 上合并
不需要开分支的情况:
- 只改了 AGENTS.md、CLAUDE.md、文档、注释
- 只是探索性阅读代码
设计文档或 plan 写完准备动手改代码时,也先开分支再开始实现。
## 使用顺序
安装完成后,按 [SKILL.md](SKILL.md) 中的工作流继续执行:
1. `init`
2. `ingest`
3. `batch-ingest`
4. `query`
5. `digest`
6. `lint`
7. `status`
8. `graph`
## 已记录的解决方案
`docs/solutions/` 存放过去解决问题的文档(bug、最佳实践、工作流改进),按类别分目录,每份有 YAML frontmatter`module``tags``problem_type`)。涉及已记录领域时(graph、cache、install、lint 等),先搜一下有没有现成经验。
## 推送前测试规则
每次 `git push` 前必须验证,按改动范围选深度:
### 第一层:快速检查(Codex 直接跑,1 分钟内)
不管改了什么都跑这 3 项:
1. `bash install.sh --dry-run --platform codex` — 安装脚本不报错
2. 改过的脚本如果有 `tests/fixtures/`,跑一下 diff 预期输出
3. `grep -r '本机用户路径\|真实姓名\|私有素材路径' scripts/ templates/ tests/ SKILL.md` — 没泄露隐私路径
### 第二/三层:工作流测试
- **第二层**(只改了 SKILL.md 里个别工作流):生成测试提示词写到文件,并用 Codex 跑涉及的工作流
- **第三层**(多工作流改动 / 版本号升级):生成全量回归提示词,在 Codex 跑完整流程(init → ingest → lint → digest → graph
素材复用 `~/Desktop/llm-wiki-cowork-test/raw-input/` 里的 3 篇文章,不用每次重新找。
跑完后生成 `test-report.md`,确认无阻塞问题后才执行 `git push`
## 推送前文档更新规则
每次 commit 含功能改动(feat/fix)后、`git push` 前,**必须**主动检查并更新以下文档,不需要用户提醒:
1. **CHANGELOG.md**:在顶部加新版本条目(日期、新增/改进/修复分类)
2. **README.md 功能列表**:新增功能或行为变化时,在"功能"章节补一条
3. **版本号**:如果改动涉及新功能,在 CHANGELOG 条目里用新版本号(按 v当前+1 递增)
跳过条件:纯文档/排版/注释改动不需要更新。
## Skill routing
当用户请求匹配可用 skill 时,优先使用对应 skill 的工作流。不要直接临时发挥;先打开对应 `SKILL.md`,按里面的流程做。
关键路由规则:
- Product ideas, "is this worth building", brainstorming → 使用 office-hours
- Bugs, errors, "why is this broken", 500 errors → 使用 investigate
- Ship, deploy, push, create PR → 使用 ship
- QA, test the site, find bugs → 使用 qa
- Code review, check my diff → 使用 review
- Update docs after shipping → 使用 document-release
- Weekly retro → 使用 retro
- Design system, brand → 使用 design-consultation
- Visual audit, design polish → 使用 design-review
- Architecture review → 使用 plan-eng-review
- Save progress, checkpoint, resume → 使用 checkpoint
- Code quality, health check → 使用 health