Files
HomeAgent/internal/agent/core/encshell_premise_test.go
JianFeeeee 4e70b8d5d8 refactor(module): 核心仓 Go module 路径改为 github.com/JianFeeeee/HologramAgent
批 1,不含 SDK 仓与目录改名。

- go.mod 第 1 行 module 路径
- 366 个 .go 文件的完整前缀 github.com/JianFeeeee/HomeAgent 机械替换
  (857 处,仅完整前缀;展示名/注释里的 HomeAgent 字样留给批 5)
- 未改:third_party 目录名、SDK 自身 go.mod module、go.mod replace 目标、
  homed/waiter 可执行名、.hmap 后缀
2026-10-21 12:17:19 +08:00

55 lines
1.8 KiB
Go
Raw 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.

package core
// 前提验证:插件 enc_shell 的**命令参数**是否已被内核填好明文?
//
// 若已填 ⇒ 插件自己的 lookupAnySecret 对内核别名是**死代码**,
// 且「保留 enc_shell」的理由只剩 argv 保护(脚本走 stdin)。
//
// 这决定了 SDK 该不该暴露 Fill():
// · 若插件本来就能从 args 拿到明文 ⇒ 暴露 Fill 不新增任何权限
// · 若拿不到 ⇒ 暴露 Fill 会削弱边界(插件可枚举 List 再逐个 Fill)
import (
"strings"
"testing"
sdk "github.com/JianFeeeee/HologramAgent/internal/sdk"
)
func TestPremise_EncShellCommandPrefilledByKernel(t *testing.T) {
store := newScrubStore(t)
a, _, _ := newRootForResidents(t)
const tok = "ghp_ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
alias, err := store.Submit(tok, "测")
if err != nil {
t.Fatal(err)
}
var cmdSaw string
if err := a.stageHost.RegisterTool("probe_encsh", sdk.ToolDef{
Name: "probe_encsh", Description: "模拟 enc_shell",
Parameters: map[string]interface{}{"type": "object"},
}, func(args map[string]interface{}) (interface{}, error) {
cmdSaw, _ = args["command"].(string)
return "ok", nil
}); err != nil {
t.Fatal(err)
}
if _, err := a.stageHost.ExecuteTool("probe_encsh", map[string]interface{}{
"command": "curl -H 'Authorization: token @{" + alias + "}'",
}); err != nil {
t.Fatal(err)
}
if strings.Contains(cmdSaw, "@{"+alias+"}") {
t.Fatal("handler 仍看到别名 ⇒ 内核没填,插件需要自己的填充逻辑")
}
if !strings.Contains(cmdSaw, tok) {
t.Fatalf("handler 应看到明文,实际 %q", cmdSaw)
}
t.Logf("✅ 内核已填 ⇒ 插件对**内核别名**的填充是死代码;" +
"插件仍需自己解析的是**平台凭据**(@ {gitea-local},含连字符,内核不认)")
}