Bundle
@shelken/dsh-co-authored-by
dsh (DeepSeek Harness) 插件:agent 提交代码时自动注入 Co-authored-by 信息
- Source
- shelken
- stars
- 2 stars
- License
- MIT
- Updated
- Updated 19 hours ago
Readme
# dsh-co-authored-by
dsh (DeepSeek Harness) 插件:agent 提交时自动注入 Co-authored-by 信息
> [!NOTE]
> 本仓库代码完全使用 DeepSeek V4 进行规划和编码
## 功能
- agent 直接执行 `git commit` 时懒安装 `prepare-commit-msg` hook,自动追加 `Co-Authored-By: <model> <noreply@deepseek.com>` 与 `Generated-By: dsh <版本>` trailer(不改命令,幂等)
- hook 安装后覆盖该仓库后续所有 commit(含脚本内间接 commit)
- 与仓库已有 hook 兼容:安装前备份、链式执行;会话结束自动卸载并恢复
- 模型身份取当前会话实际使用的模型显示名,解析失败回退模型 id / unknown
- read-only 沙箱下 commit 被拒时,可经用户批准一次性升级到 workspace-write
## 快速上手
1. 本地开发用 patch 覆盖层:`dsh web --patch ./cordis.patch.yml`(需 dsh CLI)
2. 安装到 profile:`dsh plugin --profile demo add <包名或 tarball>`
3. agent 正常提交即可,无需额外命令
详细说明见[用户指南](docs/user-guide/README.md)
## 配置
零配置即用。全部字段有默认值,可按需在 profile 的 cordis.patch.yml 覆盖:
```yaml
- insert:
- id: co-authored-by
config:
enable: true
emailDomain: noreply@deepseek.com
modelNameFormat: display
sandboxUpgradeRequest: true
```
| 字段 | 默认值 | 作用 |
| --- | --- | --- |
| `enable` | `true` | 插件总开关 |
| `emailDomain` | `noreply@deepseek.com` | Co-Authored-By trailer 的邮箱域名 |
| `modelNameFormat` | `display` | 模型名取显示名(`display`)还是 id(`id`) |
| `sandboxUpgradeRequest` | `true` | read-only 沙箱下是否请求升级;`false` 时不请求,由 dsh 内置 sandbox_permissions 机制兜底 |
## 测试
- 单元:trailer 注入逻辑、模型身份回退链、配置校验、hook 安装/链式/卸载
- e2e:真实 dsh 栈(agent loop + bash 工具)驱动 `git commit`,断言注入与会话结束卸载
## 贡献
提 issue 或 PR,见 [GitHub 仓库](https://github.com/shelken/dsh-co-authored-by)。规划与决策票见 wayfinder 地图 issue(`wayfinder:map` 标签)。版本发布流程见 [docs/versioning.md](docs/versioning.md)。
## 许可证
MIT
Install
dsh plugin --profile web add github:shelken/dsh-co-authored-by
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install shelken-dsh-co-authored-by from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.