@twinklerg/coden 0.1.5 → 0.1.7
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 +53 -6
- package/dist/index.js +350 -193
- package/dist/plugin/index.d.ts +6 -0
- package/dist/plugin/index.js +1 -1
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -10,7 +10,7 @@ CodeN(Code NJU)是一个用 TypeScript 独立实现的极简编程智能体
|
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
12
|
bun add -g @twinklerg/coden # 或 npm install -g @twinklerg/coden
|
|
13
|
-
coden --version # 0.1.
|
|
13
|
+
coden --version # 0.1.6
|
|
14
14
|
coden --help
|
|
15
15
|
```
|
|
16
16
|
|
|
@@ -34,6 +34,7 @@ just check
|
|
|
34
34
|
export CODEN_OPENAI_API_KEY=...
|
|
35
35
|
coden "修复当前项目的测试失败"
|
|
36
36
|
coden -p --auto "实现功能并运行测试"
|
|
37
|
+
coden --smart-approve "实现功能并运行测试"
|
|
37
38
|
|
|
38
39
|
export CODEN_ANTHROPIC_API_KEY=...
|
|
39
40
|
coden --provider anthropic --model claude-sonnet-4-20250514
|
|
@@ -44,9 +45,9 @@ coden --resume # 列出当前工作区的会话
|
|
|
44
45
|
|
|
45
46
|
无 prompt 时进入 REPL。交互式 REPL 支持完整多行编辑:Enter 提交;终端可区分该按键时,Shift+Enter 插入换行;所有终端均可在行尾输入单个 `\` 后按 Enter 继续下一行(`\\` 表示保留一个字面反斜杠)。支持多行粘贴、跨行方向键编辑和当前进程内输入历史。传统终端若无法区分 Shift+Enter,请使用行尾 `\`。
|
|
46
47
|
|
|
47
|
-
支持 `/help`、`/session`、`/sessions`、`/compact`、`/reload`、`/new` 和 `/quit`。启动横幅会显示当前版本与 16 位 workspace hash。
|
|
48
|
+
支持 `/help`、`/skills`、`/session`、`/sessions`、`/compact`、`/reload`、`/new` 和 `/quit`。启动横幅会显示当前版本与 16 位 workspace hash。
|
|
48
49
|
|
|
49
|
-
核心选项:`--provider`、`--model`、`-p/--print`、`--resume [session-id]`、`--auto`、`--verbose`、`--max-steps`、可重复的 `--plugin` 和 `--version`。
|
|
50
|
+
核心选项:`--provider`、`--model`、`-p/--print`、`--resume [session-id]`、`--smart-approve`、`--auto`、`--allow-outside-workspace`、`--verbose`、`--max-steps`、可重复的 `--plugin` 和 `--version`。
|
|
50
51
|
|
|
51
52
|
## 配置
|
|
52
53
|
|
|
@@ -56,6 +57,8 @@ coden --resume # 列出当前工作区的会话
|
|
|
56
57
|
{
|
|
57
58
|
"provider": "openai",
|
|
58
59
|
"model": "gpt-5-mini",
|
|
60
|
+
"approvalModel": "gpt-5-mini",
|
|
61
|
+
"approvalStrictness": "medium",
|
|
59
62
|
"maxSteps": 20,
|
|
60
63
|
"contextWindow": 128000,
|
|
61
64
|
"reservedOutputTokens": 8192,
|
|
@@ -71,13 +74,57 @@ coden --resume # 列出当前工作区的会话
|
|
|
71
74
|
|
|
72
75
|
`env` 字段(用户级与项目级均可)声明环境变量(含敏感密钥),加载配置时注入进程环境,无需手动 `export`。两级 `env` 合并时**项目级逐键覆盖用户级**;注入**不覆盖** `shell` 中已导出的同名变量(CLI > 环境变量 > 配置 env)。密钥请放 `~/.config/coden/` 或 `.coden/`(已被 `gitignore` 忽略、默认不入库),不要放进会被提交、共享或分发的目录。
|
|
73
76
|
|
|
77
|
+
`approvalModel` 使用与任务相同的 provider 和凭据,未设置时回退到 `model`。`approvalStrictness` 只能是 `soft`、`medium` 或 `hard`,默认 `medium`。
|
|
78
|
+
|
|
74
79
|
会话和 trace 位于 `$XDG_DATA_HOME/coden/sessions/<workspace-hash>/`(默认 `~/.local/share/coden`)。
|
|
75
80
|
|
|
81
|
+
## Agent Skills
|
|
82
|
+
|
|
83
|
+
CodeN 兼容 [Agent Skills](https://agentskills.io/specification) 的渐进式披露格式。启动时扫描以下目录的直接子目录;每个候选项必须为 `<skill-name>/SKILL.md`:
|
|
84
|
+
|
|
85
|
+
```text
|
|
86
|
+
~/.agents/skills/<skill-name>/SKILL.md
|
|
87
|
+
<workspace>/skills/<skill-name>/SKILL.md
|
|
88
|
+
<workspace>/.agents/skills/<skill-name>/SKILL.md
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
其中 `skills/` 用于仓库随附、可公开分发的 Skill,`.agents/skills/` 用于本地安装的项目级 Skill。同名条目按上述顺序覆盖,因此本地安装的项目级 Skill 优先级最高。
|
|
92
|
+
|
|
93
|
+
项目级 Skill 覆盖同名用户级 Skill。`SKILL.md` 使用 YAML frontmatter,最小内容如下:
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
---
|
|
97
|
+
name: pdf-processing
|
|
98
|
+
description: Use when reading or modifying PDF documents.
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
# PDF workflow
|
|
102
|
+
|
|
103
|
+
Read the relevant files before changing them.
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
启动上下文只包含有效 Skill 的名称和描述,不会注入完整正文。任务匹配时,模型调用只接受名称的 `activate_skill` 加载完整说明和 Skill 绝对根目录;引用的 `references/`、`scripts/` 等资源仍按需使用普通工具读取。`/skills` 不调用模型,按名称列出当前生效的名称、描述和 `project`/`user` 来源。Skill 仅在启动时发现,文件变更需重启后生效。无效、超限或通过符号链接逃逸扫描根目录的条目会被跳过;`--verbose` 显示原因。
|
|
107
|
+
|
|
108
|
+
仓库提供 [`coden-tool-plugin-development`](skills/coden-tool-plugin-development/SKILL.md) Skill,用于指导兼容 Agent Skills 的编程智能体创建、修改和测试本地 TypeScript 或 npm 分发的 CodeN 工具插件,并完成发布前验证。可从本仓库安装指定 Skill:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npx skills add TwinklerG/CodeN --skill coden-tool-plugin-development
|
|
112
|
+
```
|
|
113
|
+
|
|
76
114
|
## 工具与权限
|
|
77
115
|
|
|
78
|
-
|
|
116
|
+
默认提供 `read`、`write`、`edit`、`bash` 和只读的 `activate_skill`;没有有效 Skill 时,激活工具会返回 `skill.not_found`。结构化文件工具按最终真实路径(新文件按最近存在的真实父目录)分类,避免符号链接绕过:
|
|
117
|
+
|
|
118
|
+
| 模式 | 工作区内 `read`/`write`/`edit` | 工作区外 `read`/`write`/`edit` |
|
|
119
|
+
| --- | --- | --- |
|
|
120
|
+
| 默认交互模式 | `read` 自动允许;`write`/`edit` 人工确认 | 作为修改操作请求逐次或会话授权 |
|
|
121
|
+
| `--smart-approve` | `read` 自动允许;普通 `write`/`edit` 逐次由独立 LLM 审查,不确定时人工确认 | 直接人工确认 |
|
|
122
|
+
| `--auto` | 自动允许 | 返回 `permission.outside_workspace_denied` |
|
|
123
|
+
| `--auto --allow-outside-workspace` | 自动允许 | 自动允许 |
|
|
124
|
+
|
|
125
|
+
`--allow-outside-workspace` 只能与 `--auto` 一起使用,并且**只**控制 `read`、`write`、`edit`。它会允许修改当前工作区之外的任意文本文件,应仅在明确需要时使用。`activate_skill` 仅自动读取已发现且重新验证过的入口 `SKILL.md`;使用普通 `read` 访问用户级 Skill 的附属资源仍适用表中的外部路径规则。
|
|
79
126
|
|
|
80
|
-
**这不是通用安全沙箱。** `bash` 和 TypeScript
|
|
127
|
+
**这不是通用安全沙箱。** `bash` 不受结构化文件路径开关约束,仍以工作区作为当前目录但可以访问外部路径;`bash` 和 TypeScript 插件拥有当前用户进程权限。风险分类是防误操作的启发式护栏。Bash 超时会终止其进程组;主进程内的插件只能通过 `AbortSignal` 协作取消,忽略信号的可信插件可能在超时结果返回后继续运行。
|
|
81
128
|
|
|
82
129
|
## 本地 TypeScript 插件
|
|
83
130
|
|
|
@@ -87,7 +134,7 @@ CodeN 扫描:
|
|
|
87
134
|
- `<workspace>/.coden/plugins/*.ts`
|
|
88
135
|
- `--plugin` 或配置中的附加目录
|
|
89
136
|
|
|
90
|
-
|
|
137
|
+
项目插件首次加载始终需人工信任确认;`--auto` 只跳过工具调用确认,不会跳过工作区插件信任。智能审批对每次普通工作区内修改独立审查;危险、工作区外、无效输出、超时或模型故障都转人工,且没有输入时失败关闭。LLM 审批不是沙箱。插件应避免模块顶层副作用;`/reload` 基于内容哈希重建模块并原子替换 Registry(内容未变的插件复用已加载模块)。
|
|
91
138
|
|
|
92
139
|
**插件必须是自包含单文件**:Bun 的模块缓存按真实路径去重且忽略查询参数,因此 CodeN 通过 `data:text/typescript` URL 加载插件源码以保证重载生效——相对路径导入(`./helper.ts`)无法解析,npm 包导入(`import pc from "picocolors"`)正常工作。
|
|
93
140
|
|