pi-anchor 0.2.1 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +101 -195
- package/README_zh.md +115 -205
- package/dist/{chunk-B652T7QR.js → chunk-G72UHPBN.js} +218 -121
- package/dist/extension.cjs +286 -168
- package/dist/extension.js +73 -48
- package/dist/index.cjs +220 -121
- package/dist/index.d.cts +7 -1
- package/dist/index.d.ts +7 -1
- package/dist/index.js +5 -1
- package/package.json +1 -1
- package/src/decay.ts +54 -52
- package/src/extension.ts +74 -55
- package/src/matcher.ts +27 -6
- package/src/settlement.ts +5 -3
- package/src/store.ts +75 -18
- package/src/tui.ts +82 -59
- package/src/types.ts +1 -0
package/README_zh.md
CHANGED
|
@@ -1,61 +1,69 @@
|
|
|
1
1
|
# ⌖ Anchor
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
<em>告别发霉的 TODO.md。零 Git 历史污染,0 闲置 Token 损耗,代码提交自动核销结算。</em>
|
|
6
|
-
</p>
|
|
3
|
+
> **面向 AI 编程智能体的零污染、0 闲置 Token 跨会话任务记忆系统**
|
|
4
|
+
> 告别发霉的 TODO.md。零 Git 历史污染,0 闲置 Token 损耗,代码提交自动核销结算。
|
|
7
5
|
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
<a href="#测试与质量保障">🧪 质量验证</a>
|
|
16
|
-
</p>
|
|
6
|
+
[](https://github.com/3ZEROS12/anchor/actions/workflows/ci.yml)
|
|
7
|
+
[](package.json)
|
|
8
|
+
[](tsconfig.json)
|
|
9
|
+
[](tests/store.test.ts)
|
|
10
|
+
[](package.json)
|
|
11
|
+
[](#1-绝对零仓库污染与跨进程文件锁)
|
|
12
|
+
[](LICENSE)
|
|
17
13
|
|
|
18
|
-
|
|
19
|
-
<a href="https://github.com/3ZEROS12/anchor/actions/workflows/ci.yml">
|
|
20
|
-
<img src="https://github.com/3ZEROS12/anchor/actions/workflows/ci.yml/badge.svg" alt="CI 状态">
|
|
21
|
-
</a>
|
|
22
|
-
<img src="https://img.shields.io/badge/Node-v20+-22c55e.svg" alt="Node v20+">
|
|
23
|
-
<img src="https://img.shields.io/badge/TypeScript-Strict-3b82f6.svg" alt="TypeScript Strict">
|
|
24
|
-
<img src="https://img.shields.io/badge/Tests-26%20通过-22c55e.svg" alt="Tests: 26 Passed">
|
|
25
|
-
<img src="https://img.shields.io/badge/启动耗时-%3C%2090ms-success.svg" alt="启动耗时: < 90ms">
|
|
26
|
-
<img src="https://img.shields.io/badge/存储-零仓库污染-success.svg" alt="零仓库污染">
|
|
27
|
-
<img src="https://img.shields.io/badge/开源协议-MIT-f97316.svg" alt="License: MIT">
|
|
28
|
-
</p>
|
|
14
|
+
[English](./README.md) | **简体中文**
|
|
29
15
|
|
|
30
16
|
<p align="center">
|
|
31
|
-
<img src="assets/hero.svg" alt="Anchor
|
|
17
|
+
<img src="assets/hero-zh.svg" alt="Anchor 终端仪表盘实录" width="820">
|
|
32
18
|
</p>
|
|
33
19
|
|
|
20
|
+
```text
|
|
21
|
+
⌖ Anchors (4 active):
|
|
22
|
+
|
|
23
|
+
[Today · 今日聚焦]
|
|
24
|
+
01 [Today] 今天完成anchor项目后端优化 Desktop Today Today 10:02
|
|
25
|
+
|
|
26
|
+
[Upcoming · 近期排期]
|
|
27
|
+
02 [Upcoming] 明天优化并发文件锁单元测试 Desktop Tomorrow Yesterday 21:34
|
|
28
|
+
03 [Upcoming] 重构鉴权模块为HttpOnly Cookie Desktop Tomorrow Today 10:02
|
|
29
|
+
04 [Upcoming] 完善CLI交互式仪表盘与TUI组件 Desktop In 2d Today 10:02
|
|
30
|
+
|
|
31
|
+
Use `anchor done <id>` to complete.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
34
|
---
|
|
35
35
|
|
|
36
|
-
##
|
|
36
|
+
## 核心价值:为什么需要 Anchor?
|
|
37
|
+
|
|
38
|
+
使用终端编程智能体(Claude Code、Pi、Aider 等)结对开发时,开发者普遍面临三个具体痛点:
|
|
37
39
|
|
|
38
|
-
|
|
40
|
+
### 1. 终端一关即失忆(Session Amnesia)
|
|
41
|
+
按下 `Ctrl+C` 退出终端,Agent 内存中的上下文被清空。未完成的代码重构计划、临时交代的排期与多步约定随之丢失。
|
|
39
42
|
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
+
### 2. TODO.md 污染 Git 且拖垮上下文
|
|
44
|
+
在工程根目录下维护 `TODO.md` 或 `AGENTS.md`:
|
|
45
|
+
- 会产生大量 `update todo`、`fix checklist` 之类的 Git 杂质提交;
|
|
46
|
+
- **每一轮对话都要把几十行陈旧清单塞入 System Prompt**,白白消耗大量 Token 预算,还会分散模型对当前核心代码的注意力。
|
|
43
47
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
48
|
+
### 3. 告别手动打勾与清单发霉
|
|
49
|
+
写完代码后,工程师极少会专程打开 Markdown 逐个打勾。未勾选的旧任务烂在仓库里,越积越多。
|
|
50
|
+
现存的第三方方案走向了重型极端(例如 `beads` 往代码仓库塞入 200MB 的 Dolt SQL 数据库,`engram` 启动常驻后台的 Go 守护进程与向量检索库)。
|
|
47
51
|
|
|
48
|
-
**Anchor
|
|
52
|
+
**Anchor 采取了克制而轻量的工程解法**:
|
|
53
|
+
- **零仓库污染**:任务状态保存在全局主目录 `~/.anchor/state.json`,项目 Git 历史 100% 纯净;
|
|
54
|
+
- **0 闲置 Token 损耗**:第 1 轮冷启动注入任务,第 2 轮起保持 0 Token 稳态,绝不浪费推理预算;
|
|
55
|
+
- **语法安全 JIT 唤醒**:Agent 触碰相关代码文件时,以对应语言的单行安全注释精准唤醒,严格跳过 JSON、ENV 与锁文件;
|
|
56
|
+
- **自动核销与防误触抽屉**:代码提交命中任务描述或退出终端时自动核销;交互式面板提供防误触二级菜单。
|
|
49
57
|
|
|
50
58
|
---
|
|
51
59
|
|
|
52
|
-
##
|
|
60
|
+
## 工作机制:行为-结果矩阵
|
|
53
61
|
|
|
54
62
|
```text
|
|
55
63
|
┌──────────────────────────────────────────────────────────────────────────────┐
|
|
56
|
-
│ Anchor
|
|
64
|
+
│ Anchor 核心生命周期状态机 │
|
|
57
65
|
└──────────────────────────────────────┬───────────────────────────────────────┘
|
|
58
|
-
│ 记录任务:
|
|
66
|
+
│ 记录任务: anchor "重构鉴权为 HttpOnly Cookie"
|
|
59
67
|
▼
|
|
60
68
|
┌───────────────────────────────────────────────┐
|
|
61
69
|
│ [活跃期 ACTIVE] (首轮注入提示) │
|
|
@@ -80,192 +88,82 @@
|
|
|
80
88
|
└──────────────────────────────┘ └────────────────────────────────┘
|
|
81
89
|
```
|
|
82
90
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
├── archive.jsonl # 已完成任务的追加归档日志
|
|
90
|
-
└── graveyard.jsonl # 超期衰减淘汰的清理日志
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
* **零依赖排他锁**:使用 Node 原生 `fs.openSync(lockPath, 'wx')` 实现跨进程排他锁,彻底消除多终端窗口并发读写 `state.json` 时的竞争覆盖风险。
|
|
94
|
-
* **僵尸锁自动熔断**:写入持有锁进程的 PID 与时间戳。若检测到持有者进程已死亡(`process.kill(pid, 0)`)或锁持有超时(>5000ms),自动安全回收重占。
|
|
95
|
-
* **Windows NTFS 写入重试**:落盘采用临时文件(`state.tmp.${pid}.${timestamp}`)配合原子重命名与自旋重试,彻底杜绝断电或杀进程时的半截文件损坏。
|
|
96
|
-
|
|
97
|
-
### 2. 0-Token 稳态与多语言语法安全 JIT 唤醒
|
|
98
|
-
* **第 1 轮(冷启动注入)**:通过 `before_agent_start` 识别会话轮次,仅在第一轮为大模型注入当前工程未完成的 Anchor 概览与极简指引。
|
|
99
|
-
* **第 2 轮起(工作流零损耗)**:任务清单彻底从 System Prompt 中隐形。正常写代码轮次消耗 **0 Token**,绝不稀释模型注意力。
|
|
100
|
-
* **多语言精确语法适配**:当 Agent 读写关联文件时,Anchor 依据文件后缀精确匹配合法注释语法,绝不污染代码:
|
|
101
|
-
- 双斜杠 `//`:`ts`, `tsx`, `js`, `jsx`, `go`, `rs`, `java`, `c`, `cpp`, `cs`, `swift`, `dart`, `zig`
|
|
102
|
-
- 井号 `#`:`py`, `rb`, `sh`, `bash`, `zsh`, `yaml`, `yml`, `toml`, `dockerfile`, `ps1`
|
|
103
|
-
- 标记语言 `<!-- -->`:`html`, `xml`, `svg`, `vue`, `svelte`
|
|
104
|
-
- 块注释 `/* */`:`css`, `scss`, `less`
|
|
105
|
-
- 短横线 `--`:`sql`, `lua`, `hs`
|
|
106
|
-
* **语法安全防护(严格跳过)**:对 **JSON、ENV、Lockfile 及二进制文件**坚决返回 `null`,绝不强行注入注释,从根本上防止破坏格式解析器。
|
|
107
|
-
* **单会话去重防刷屏**:同一任务在同一会话中多次触碰仅在首次注入单行提示,后续操作保持静默。
|
|
108
|
-
|
|
109
|
-
### 3. 通用智能体协议解耦 (Universal Agent Protocol)
|
|
110
|
-
Anchor 采用分层解耦架构,核心调度逻辑与具体 Agent 运行时彻底分离:
|
|
111
|
-
* **`AnchorProtocol`(纯核心)**:独立管理状态机、生命周期钩子、JIT 语法过滤与任务匹配,不绑定任何第三方 Agent 运行环境。
|
|
112
|
-
* **`AgentAdapter`(极薄适配层)**:提供统一的宿主桥接接口(`getCwd`, `notify`),几行代码即可适配 Pi 扩展、Claude Code、Cursor、Aider 或自定义 MCP 协议服务。
|
|
113
|
-
|
|
114
|
-
### 4. 双时间维度:交付排期与立项时效
|
|
115
|
-
Anchor 从两个正交的时间维度管理任务,兼顾“何时要交”与“立项多久”:
|
|
116
|
-
* **交付排期(`targetDate`)**:计划交工日期。支持自然语言词汇(今天、今晚、明天、后天、周五、下周一)自动折算为标准公历日期。界面呈现为 `Today`、`Tomorrow`、`In 2d`、`Daily`、`Someday`。
|
|
117
|
-
* **立项时效(`createdAt`)**:创建时的物理时间戳。界面直观显示为 `Today 10:02`、`Yesterday 21:34` 等。
|
|
118
|
-
|
|
119
|
-
任务按时间与类型自动分组:
|
|
120
|
-
* **`[Today]`(今日聚焦 & 逾期)**:今日到期或已逾期的任务,当前会话的核心攻坚项。
|
|
121
|
-
* **`[Upcoming]`(近期排期)**:明天、后天或未来指定截期的任务(支持 `--due friday`)。
|
|
122
|
-
* **`[Habits]`(每日循环)**:日常例行循环任务。当天打勾后隐身,明日零点自动复苏。
|
|
123
|
-
* **`[Backlog]`(长期备忘)**:无指定日期的宏观架构愿景(`Someday`)。
|
|
124
|
-
|
|
125
|
-
### 5. 零心智负担的自动核销与生命周期结算
|
|
126
|
-
* **Git Commit 自动语义匹配**:内置基于标准 `Intl.Segmenter` 的多语系分词引擎。代码提交信息(如 `git commit -m "fix(auth): migrate to HttpOnly cookies"`)命中任务描述时自动核销结案。
|
|
127
|
-
* **退出终端一键确认**:检测到本会话修改了任务关联的文件时,退出终端前弹出极简单键确认:
|
|
128
|
-
```text
|
|
129
|
-
⌖ 任务核销确认
|
|
130
|
-
任务 #anc-1 [重构鉴权模块] 关联的文件已在本会话中修改 (src/auth/jwt.ts)。
|
|
131
|
-
是否标记已完成并归档? [回车确认] / [Esc 保留]
|
|
132
|
-
```
|
|
133
|
-
* **一键撤销(Undo)**:手抖误划掉任务时,敲入 `anchor undo` 瞬间逆向回滚恢复。
|
|
91
|
+
| 动作 / 场景 | 你做什么 | Anchor 幕后动作 | AI 得到什么 | 适用场景 |
|
|
92
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
93
|
+
| **立项锚定** | 终端输入 `/pin "重构鉴权"` | 原子写入 `~/.anchor/state.json` | 首轮注入任务指引,第 2 轮起脱敏隐形(0 Token) | 跨会话记录多步计划与长效目标 |
|
|
94
|
+
| **代码触碰** | 正常阅读或修改代码 | 自动匹配关联文件后缀 | 注入对应语法的单行安全注释,绝不破坏代码 | Agent 触碰相关业务模块时 |
|
|
95
|
+
| **代码提交** | `git commit -m "feat: ..."` | 借助 `Intl.Segmenter` 分词匹配 | 自动核销任务并归档至 `archive.jsonl` | 完成开发里程碑,自动打勾 |
|
|
96
|
+
| **会话退出** | 输入 `exit` 或退出终端 | 扫描已改动文件与活跃任务的交集 | 弹出单键核销确认:`[Enter 归档] / [Esc 保留]` | 结束会话,零遗漏确认 |
|
|
134
97
|
|
|
135
98
|
---
|
|
136
99
|
|
|
137
|
-
##
|
|
100
|
+
## 核心特性与 v0.2.1 加固机制
|
|
138
101
|
|
|
139
|
-
###
|
|
140
|
-
|
|
141
|
-
* 无活跃任务时:100% 物理隐身(0 字符输出)。
|
|
142
|
-
|
|
143
|
-
### 全局命令行 (`anchor`) 与交互面板 (`/anchor`)
|
|
102
|
+
### 1. 绝对零仓库污染与跨进程文件锁
|
|
103
|
+
所有状态统一保存在用户主目录 `~/.anchor/`,项目内绝不创建任何 `.anchor` 目录:
|
|
144
104
|
```text
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
[Upcoming · 近期排期]
|
|
151
|
-
02 [Upcoming] 补齐多终端并发文件锁单元测试 Desktop Tomorrow Yesterday 21:34
|
|
152
|
-
03 [Upcoming] 升级 CLI 交互动画与高亮样式 Desktop Tomorrow Today 10:02
|
|
153
|
-
04 [Upcoming] 梳理并发布 npm 0.2.0 版本制品 Desktop In 2d Today 10:02
|
|
154
|
-
|
|
155
|
-
Use `anchor done <id>` to complete.
|
|
105
|
+
~/.anchor/
|
|
106
|
+
├── state.json # 活跃与休眠任务状态表 (< 10KB,原子写入)
|
|
107
|
+
├── state.lock # 跨进程纯同步原子排他锁 (零依赖)
|
|
108
|
+
├── archive.jsonl # 已完成归档的历史账本 (追加写入)
|
|
109
|
+
└── graveyard.jsonl # 超期脱落墓地账本 (追加写入)
|
|
156
110
|
```
|
|
157
|
-
*
|
|
158
|
-
*
|
|
159
|
-
*
|
|
160
|
-
|
|
161
|
-
---
|
|
111
|
+
* **零依赖排他锁**:使用 Node 原生 `fs.openSync` 保证多终端并发读写安全;
|
|
112
|
+
* **死锁自动熔断回收**:若持有锁的进程已终止或超时(5000ms),系统自动安全回收重占;
|
|
113
|
+
* **原子写入与崩溃自愈**:写入临时文件后执行原子重命名,带 Windows NTFS 自旋重试。损坏文件自动备份为 `state.corrupt.${timestamp}.json` 并安全回退。
|
|
162
114
|
|
|
163
|
-
|
|
115
|
+
### 2. 防误触结算抽屉与详情查看器 (v0.2.1)
|
|
116
|
+
在 `/anchor` 仪表盘中选中任务后,弹出二级操作菜单:
|
|
117
|
+
* `✓ Settle (完成归档)`:核销并归档任务,提示可通过 `/anchor undo` 撤销恢复;
|
|
118
|
+
* `ℹ View details & associated files`:直接在终端查看完整任务描述、目标日期、关联文件列表与自动化物理验证命令;
|
|
119
|
+
* `↩ Cancel`:安全取消退出,避免直接敲击回车意外核销未完成事项。
|
|
164
120
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
| **底层架构** | 分布式 SQL 关系图谱 | 向量与 SQLite 外部库 | 静态 Markdown 纯文本 | **轻量解耦协议核心 + 原子状态机** |
|
|
168
|
-
| **并发安全** | 依赖 SQL 事务 | 守护进程单点处理 | 多终端编辑直接产生冲突 | **跨进程原子排他锁 (死进程自愈)** |
|
|
169
|
-
| **工作区清洁度** | 仓库内塞入 200MB Dolt 数据库 | 外部系统服务 | **频繁产生 Git 杂质提交** | **100% 零仓库污染 (`~/.anchor/`)** |
|
|
170
|
-
| **Token 损耗** | 每轮中/高消耗 | 高(注入长文历史) | 极高(陈旧文本成倍累积) | **0 Token 闲置(仅文件触碰 JIT 唤醒)** |
|
|
171
|
-
| **JIT 语法安全** | 不支持文件注释 | 无语法感知 | 静态文本无防护 | **精确匹配 30+ 语言注释,跳过 JSON** |
|
|
172
|
-
| **任务时效** | 单层平铺 | 单层平铺 | 静态复选框 | **双时间维度(交付排期 + 立项时间)** |
|
|
173
|
-
| **任务结算与核销** | 手动命令 `close` | 无自动结算机制 | 人工修改文本打勾 | **Git Commit 自动识别 + 退出前一键核销** |
|
|
174
|
-
| **衰减清理** | 手动 prune | 无衰退机制 | 长期堆积发霉 | **静默衰退(临时任务 48h 自动清理)** |
|
|
175
|
-
| **启动耗时** | 重型 CLI 初始化 | Go 守护进程常驻 | 无 | **< 90ms 预打包瞬时秒开** |
|
|
176
|
-
| **环境依赖** | 外部 Dolt 二进制 | 外部 Go 编译产物 | 无 | **零原生外部依赖(纯 TypeScript)** |
|
|
121
|
+
### 3. 截断开括号守卫 (v0.2.1 · Invariant 11)
|
|
122
|
+
在仪表盘字符串视觉列宽截断算法中,自动清除省略号前紧邻的孤立未闭合开括号(`(`、`[`、`{`、`(`、`【`),消除标点破裂与视觉毛刺。
|
|
177
123
|
|
|
178
|
-
|
|
124
|
+
### 4. 0-Token 稳态经济与多语言语法安全 JIT
|
|
125
|
+
* **第 1 轮冷启动**:注入当前工作区的活跃任务承诺与简要行动指南;
|
|
126
|
+
* **第 2 轮起 0 损耗**:任务清单从 System Prompt 中彻底脱敏移除,普通写代码轮次消耗 **0 Token**;
|
|
127
|
+
* **语法安全严格跳过**:根据文件扩展名动态生成合法单行注释(`//`, `#`, `<!-- -->`, `/* */`)。对 **JSON、ENV、Lockfile 与二进制文件坚决返回 null 严格跳过**,杜绝破坏代码解析器。
|
|
179
128
|
|
|
180
|
-
|
|
129
|
+
### 5. 冷启动前置物理执行验证
|
|
130
|
+
任务声明 `verifyCommand` 时,系统在启动时自动执行该物理命令。验证通过的任务即刻就地核销,释放认知带宽。
|
|
181
131
|
|
|
182
|
-
|
|
183
|
-
```bash
|
|
184
|
-
# 全局安装
|
|
185
|
-
npm install -g pi-anchor
|
|
132
|
+
---
|
|
186
133
|
|
|
187
|
-
|
|
188
|
-
npx pi-anchor
|
|
189
|
-
```
|
|
134
|
+
## 常用命令
|
|
190
135
|
|
|
191
|
-
|
|
136
|
+
### 命令行速查
|
|
192
137
|
```bash
|
|
193
|
-
anchor #
|
|
194
|
-
anchor "
|
|
195
|
-
anchor "
|
|
196
|
-
anchor done 1 #
|
|
197
|
-
anchor
|
|
138
|
+
anchor # 查看活跃任务列表(Neovim 极客排版)
|
|
139
|
+
anchor "重构鉴权模块" # 快速立项新任务
|
|
140
|
+
anchor "提交实证报告" --due friday # 指定周五到期
|
|
141
|
+
anchor done 1 # 完成第 1 行任务(支持连续编号)
|
|
142
|
+
anchor done anc-5 # 按具体 ID 完成任务
|
|
143
|
+
anchor undo # 撤销上一次完成归档
|
|
198
144
|
```
|
|
199
145
|
|
|
200
|
-
###
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
// 监听会话启动
|
|
208
|
-
protocol.handleSessionStart();
|
|
209
|
-
|
|
210
|
-
// 第 1 轮注入提示,第 2 轮返回 null (0 Tokens)
|
|
211
|
-
const coldStartPrompt = protocol.handleBeforeTurn(1, process.cwd());
|
|
212
|
-
|
|
213
|
-
// 工具触碰文件时获取安全注释
|
|
214
|
-
const { annotation } = protocol.handleToolResult({
|
|
215
|
-
toolName: 'read',
|
|
216
|
-
filePath: 'src/auth.ts',
|
|
217
|
-
cwd: process.cwd()
|
|
218
|
-
});
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
### 3. 作为 Pi Coding Agent 扩展
|
|
222
|
-
在 Pi 扩展目录中安装:
|
|
223
|
-
```bash
|
|
224
|
-
pi install npm:pi-anchor
|
|
225
|
-
```
|
|
146
|
+
### Pi 扩展内交互命令
|
|
147
|
+
| 命令 | 说明 |
|
|
148
|
+
| :--- | :--- |
|
|
149
|
+
| `/pin "任务描述"` | 快速立项当前工程的跨会话任务 |
|
|
150
|
+
| `/anchor` | 在终端内弹出全景交互式任务仪表盘 |
|
|
151
|
+
| 状态栏 `⌖ N` | 底部常驻微标签,有活跃任务时显示数量,无任务时 100% 静默隐形 |
|
|
226
152
|
|
|
227
153
|
---
|
|
228
154
|
|
|
229
|
-
##
|
|
230
|
-
|
|
231
|
-
采用标准 TypeScript 严格模式构建,使用 Node.js 原生测试运行器实现核心链路 100% 测试覆盖:
|
|
232
|
-
|
|
233
|
-
```bash
|
|
234
|
-
npm run build # tsup 双格式打包 (ESM/CJS) 与 .d.ts 类型生成
|
|
235
|
-
npm run typecheck # TypeScript 严格类型检查 (0 错误)
|
|
236
|
-
npm test # 全套自动化单元测试 (26/26 全绿通过)
|
|
237
|
-
```
|
|
155
|
+
## 横向技术对比
|
|
238
156
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
✔ SessionTouchObserver - matches CJK commit messages with segmentation
|
|
250
|
-
✔ SessionTouchObserver - separates read inspection from edit mutation
|
|
251
|
-
✔ Lock - acquireSyncLock acquires, holds, and releases exclusive lockfile
|
|
252
|
-
✔ Lock - acquireSyncLock safely reclaims stale lock from dead PID
|
|
253
|
-
✔ Context - makeSafeTaskAnnotation produces language-accurate comments and skips JSON
|
|
254
|
-
✔ Protocol - AnchorProtocol lifecycle handles cold-start and safe JIT
|
|
255
|
-
✔ AnchorStore - basic CRUD & atomic writes
|
|
256
|
-
✔ AnchorStore - corrupt state recovery
|
|
257
|
-
✔ AnchorStore - daily recurring task completes for today and wakes tomorrow
|
|
258
|
-
✔ AnchorStore - temporal durability keywords and project detection
|
|
259
|
-
✔ AnchorStore - atomicRenameWithRetry successfully replaces files atomically
|
|
260
|
-
✔ AnchorTUI - status bar reflects active state cleanly with ⌖ N
|
|
261
|
-
✔ AnchorTUI - formatTargetDate and formatCreationTime render clear dual-timeline
|
|
262
|
-
✔ AnchorTUI - openAnchorDashboard renders Plan 2 Neovim/Geek layout with folder metadata
|
|
263
|
-
✔ AnchorTUI - getDisplayWidth and padToWidth properly align CJK full-width columns
|
|
264
|
-
✔ AnchorTUI - updateStartupBanner renders clean widget above editor
|
|
265
|
-
✔ AnchorTUI - truncateToWidth properly handles ANSI escape sequences and bounds width
|
|
266
|
-
|
|
267
|
-
ℹ pass 26, fail 0
|
|
268
|
-
```
|
|
157
|
+
| 核心维度 | `gastownhall/beads` | `Gentleman-Programming/engram` | `TODO.md` / `AGENTS.md` | **Anchor ⚓** |
|
|
158
|
+
| :--- | :--- | :--- | :--- | :--- |
|
|
159
|
+
| **架构拓扑** | 分布式 SQL 图谱 | 向量检索与 SQLite 常驻进程 | 静态 Markdown 文件 | **轻量解耦协议 + 单文件原子状态机** |
|
|
160
|
+
| **仓库整洁度** | 塞入 200MB Dolt 数据库 | 系统常驻守护进程 | 频繁制造 Git 提交杂质 | **100% 零仓库污染 (`~/.anchor/`)** |
|
|
161
|
+
| **每轮 Token 开销** | 中高频次全量注入 | 高 (全量提示词召回) | 严重 (陈旧清单持续膨胀) | **0 Token 稳态 (仅在触碰文件时 JIT 唤醒)** |
|
|
162
|
+
| **语法注入安全** | 无安全机制 | 原始文本直接拼接 | 静态未格式化文本 | **多语言语法安全注释,JSON/ENV 严格跳过** |
|
|
163
|
+
| **任务结算与核销** | 手动命令 `close` | 无自动结算机制 | 人工修改文本打勾 | **Git Commit 自动识别 + 退出前一键核销** |
|
|
164
|
+
| **并发读写安全** | SQL 事务排他锁 | 守护进程单点调度 | Git 合并冲突频繁 | **零外部依赖 Node 原生原子排他文件锁** |
|
|
165
|
+
| **启动性能损耗** | 较重 CLI 引导 | Go 进程通信延迟 | 无损耗 | **< 90ms 轻量打包生产产物** |
|
|
166
|
+
| **底层运行依赖** | 外部 Dolt 二进制 | 外部 Go 二进制 | 无依赖 | **零原生二进制外部依赖 (纯 TypeScript)** |
|
|
269
167
|
|
|
270
168
|
---
|
|
271
169
|
|
|
@@ -283,12 +181,24 @@ npm test # 全套自动化单元测试 (26/26 全绿通过)
|
|
|
283
181
|
|
|
284
182
|
Anchor 选择了一条极度克制的工程路径:把状态移出代码仓库,托管在用户主目录下的单文件轻量状态表(`~/.anchor/state.json`);首轮对话注入冷启动上下文,第 2 轮起保持 0 Token 损耗;通过语言对应的语法安全注释在触碰代码时精准唤醒,并在代码提交或会话退出时自动核销。
|
|
285
183
|
|
|
286
|
-
|
|
184
|
+
在 v0.2.1 中,我们还为 `/anchor` 增加了防误触详情面板,按回车可以从容查看关联文件与执行命令,并在排版算法中消除了开括号截断毛刺。
|
|
287
185
|
|
|
288
186
|
希望 Anchor 能让你的代码仓库保持干净,把专注力还给代码本身。
|
|
289
187
|
|
|
290
188
|
---
|
|
291
189
|
|
|
190
|
+
## 质量验证与构建
|
|
191
|
+
|
|
192
|
+
基于严格 TypeScript 与 Node 原生测试运行器,保持 100% 标准库覆盖:
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
npm run typecheck # TypeScript 严格类型检查 (0 错误)
|
|
196
|
+
npm test # 全套自动化单元测试 (29/29 全绿通过)
|
|
197
|
+
npm run build # tsup 双格式打包 (ESM/CJS) 与 .d.ts 类型生成
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
292
202
|
## 开源协议
|
|
293
203
|
|
|
294
|
-
MIT
|
|
204
|
+
MIT © [Jason Song](https://github.com/3ZEROS12)
|