@geekjourneyx/findo 1.2.1 → 1.2.3
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/CHANGELOG.md +13 -0
- package/README.md +10 -4
- package/package.json +3 -1
- package/scripts/run.js +6 -1
- package/skills/findo/SKILL.md +105 -0
- package/skills/findo/test-prompts.json +17 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.2.3
|
|
4
|
+
|
|
5
|
+
- Keep `skills/findo` as pure Agent Skill content and remove Go code from `skills/`.
|
|
6
|
+
- Load bundled skill content through `internal/skillcontent` using the repository or npm package `skills/` directory.
|
|
7
|
+
- Ship `skills/findo` in npm packages and GitHub Release archives, and smoke-test `findo skills read` from npm installs.
|
|
8
|
+
- Simplify `skills/findo/SKILL.md` into a concise English Agent SOP.
|
|
9
|
+
|
|
10
|
+
## v1.2.2
|
|
11
|
+
|
|
12
|
+
- Remove the duplicated internal Agent skill copy.
|
|
13
|
+
- Move toward a single root Agent skill source after removing the mirrored internal copy.
|
|
14
|
+
- Update release checks to guard against mirrored skill files.
|
|
15
|
+
|
|
3
16
|
## v1.2.1
|
|
4
17
|
|
|
5
18
|
- Move embedded skill implementation under `internal/skillcontent` instead of exposing it from the module root.
|
package/README.md
CHANGED
|
@@ -27,7 +27,7 @@ The npm package installs the matching GitHub Release binary for your platform an
|
|
|
27
27
|
Alternative Go install:
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
|
-
go install github.com/geekjourneyx/findo/cmd/findo@v1.2.
|
|
30
|
+
go install github.com/geekjourneyx/findo/cmd/findo@v1.2.3
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
Prebuilt binaries and checksums are available on the [GitHub Releases](https://github.com/geekjourneyx/findo/releases) page.
|
|
@@ -117,7 +117,13 @@ Human output defaults to a table. Use `--json` for scripts, agents, CI, and down
|
|
|
117
117
|
|
|
118
118
|
## Agent Skill
|
|
119
119
|
|
|
120
|
-
|
|
120
|
+
Recommended Agent Skills install:
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
npx skills add geekjourneyx/findo
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Findo also ships the same Agent SOP with the CLI package so agents can read instructions that match the executable on `PATH`:
|
|
121
127
|
|
|
122
128
|
```bash
|
|
123
129
|
findo skills list --json
|
|
@@ -125,7 +131,7 @@ findo skills read findo
|
|
|
125
131
|
findo skills read findo --json
|
|
126
132
|
```
|
|
127
133
|
|
|
128
|
-
`skills read` defaults to raw Markdown for direct agent context. With `--json`, the same content is returned in the `content` field with version metadata. Use this when
|
|
134
|
+
`skills read` defaults to raw Markdown for direct agent context. With `--json`, the same content is returned in the `content` field with version metadata. Use this when you need to verify the SOP bundled with the installed CLI.
|
|
129
135
|
|
|
130
136
|
## Output
|
|
131
137
|
|
|
@@ -133,7 +139,7 @@ Retrieval commands return a stable envelope. A successful JSON response looks li
|
|
|
133
139
|
|
|
134
140
|
```json
|
|
135
141
|
{
|
|
136
|
-
"version": "1.2.
|
|
142
|
+
"version": "1.2.3",
|
|
137
143
|
"query": {
|
|
138
144
|
"text": "AI Agent 商业化",
|
|
139
145
|
"mode": "search",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@geekjourneyx/findo",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "Install the findo CLI from the matching GitHub Release bundle.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -21,6 +21,8 @@
|
|
|
21
21
|
"files": [
|
|
22
22
|
"scripts/install.js",
|
|
23
23
|
"scripts/run.js",
|
|
24
|
+
"skills/findo/SKILL.md",
|
|
25
|
+
"skills/findo/test-prompts.json",
|
|
24
26
|
"README.md",
|
|
25
27
|
"CHANGELOG.md",
|
|
26
28
|
"LICENSE"
|
package/scripts/run.js
CHANGED
|
@@ -6,6 +6,7 @@ const { execFileSync } = require("child_process");
|
|
|
6
6
|
|
|
7
7
|
const ext = process.platform === "win32" ? ".exe" : "";
|
|
8
8
|
const binaryPath = path.join(__dirname, "..", "bin", `findo${ext}`);
|
|
9
|
+
const skillsPath = path.join(__dirname, "..", "skills");
|
|
9
10
|
|
|
10
11
|
if (!fs.existsSync(binaryPath)) {
|
|
11
12
|
console.error(
|
|
@@ -15,7 +16,11 @@ if (!fs.existsSync(binaryPath)) {
|
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
try {
|
|
18
|
-
|
|
19
|
+
const env = { ...process.env };
|
|
20
|
+
if (!env.FINDO_SKILLS_DIR && fs.existsSync(skillsPath)) {
|
|
21
|
+
env.FINDO_SKILLS_DIR = skillsPath;
|
|
22
|
+
}
|
|
23
|
+
execFileSync(binaryPath, process.argv.slice(2), { stdio: "inherit", env });
|
|
19
24
|
} catch (error) {
|
|
20
25
|
if (typeof error.status === "number") {
|
|
21
26
|
process.exit(error.status);
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: findo
|
|
3
|
+
description: >-
|
|
4
|
+
Use Findo, an Agent Native Go CLI for Chinese internet research. Use when the user asks to search Chinese web sources, Zhihu, Zhihu hotlists, Bocha, Volcengine Ark, Chinese internet topics, source-backed briefs, contradiction checks, counterintuitive topic discovery, popular answers, live provider testing, or current Chinese web signals.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Findo
|
|
8
|
+
|
|
9
|
+
Use `findo` to retrieve Chinese internet sources through provider APIs and return source-backed answers. Prefer `--json` for agent workflows.
|
|
10
|
+
|
|
11
|
+
## Before Running
|
|
12
|
+
|
|
13
|
+
Check availability:
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
findo version
|
|
17
|
+
findo config show --json
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
If `findo` is missing and the user asked for setup, install it:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm install -g @geekjourneyx/findo
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Never print `.env`, API keys, bearer tokens, raw config files, or CI secrets. Treat redacted config values as expected.
|
|
27
|
+
|
|
28
|
+
## Choose A Source
|
|
29
|
+
|
|
30
|
+
Use the narrowest source that matches the task:
|
|
31
|
+
|
|
32
|
+
| Need | Command |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| Broad web evidence | `findo bocha "<query>" --json --limit 5` |
|
|
35
|
+
| Web-grounded direct answer | `findo volc "<query>" --json --limit 1` |
|
|
36
|
+
| Zhihu opinions and discussions | `findo zhihu "<query>" --json --limit 5` |
|
|
37
|
+
| Zhihu-backed global web search | `findo zhihu web "<query>" --json --limit 5` |
|
|
38
|
+
| Current Zhihu hotlist | `findo hot zhihu --json` |
|
|
39
|
+
| Available source IDs | `findo sources --json` |
|
|
40
|
+
|
|
41
|
+
Use Zhihu for opinion-rich questions, Bocha for broad corroboration, Volcengine for synthesized direct answers, and hotlist for current attention.
|
|
42
|
+
|
|
43
|
+
For Zhihu global search only, filters are valid:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
findo zhihu web "<query>" --filter 'host=="example.com"' --search-db realtime --json
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Research Workflow
|
|
50
|
+
|
|
51
|
+
1. Rewrite the user request into 2-5 concrete Chinese queries with aliases, product names, and time qualifiers when useful.
|
|
52
|
+
2. Start with `--limit 3` to `--limit 5`; increase only when coverage is weak.
|
|
53
|
+
3. Inspect `status`, `results`, `source_status`, and `errors` in JSON output.
|
|
54
|
+
4. Cross-check important claims across sources before presenting them as facts.
|
|
55
|
+
5. Separate source claims from your inference. Mention provider failures when they reduce confidence.
|
|
56
|
+
|
|
57
|
+
## Answer Shape
|
|
58
|
+
|
|
59
|
+
For research answers:
|
|
60
|
+
|
|
61
|
+
```markdown
|
|
62
|
+
**Conclusion**
|
|
63
|
+
One concise answer.
|
|
64
|
+
|
|
65
|
+
**Evidence**
|
|
66
|
+
- Source, title, URL, key point.
|
|
67
|
+
- Source, title, URL, key point.
|
|
68
|
+
|
|
69
|
+
**Assessment**
|
|
70
|
+
What is likely true, what is uncertain, and what to verify next.
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
For topic discovery:
|
|
74
|
+
|
|
75
|
+
```markdown
|
|
76
|
+
**Topic Candidates**
|
|
77
|
+
1. Topic: why it matters, source signal, suggested angle.
|
|
78
|
+
2. Topic: why it matters, source signal, suggested angle.
|
|
79
|
+
|
|
80
|
+
**Counterintuitive Point**
|
|
81
|
+
What contradicts common assumptions.
|
|
82
|
+
|
|
83
|
+
**Next Step**
|
|
84
|
+
Exact follow-up searches or validation steps.
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Failure Handling
|
|
88
|
+
|
|
89
|
+
| Signal | Action |
|
|
90
|
+
| --- | --- |
|
|
91
|
+
| `credential_missing` or exit `4` | Check redacted config; ask for the relevant provider key if needed. |
|
|
92
|
+
| Exit `2` | Remove incompatible flags and rerun the simplest valid command. |
|
|
93
|
+
| Exit `5` | Retry once with a smaller limit, then switch provider. |
|
|
94
|
+
| Exit `6` | Narrow the query and reduce `--limit`. |
|
|
95
|
+
| Exit `7` | Rewrite with alternate Chinese terms or broaden to Bocha/Zhihu global search. |
|
|
96
|
+
|
|
97
|
+
When one provider fails, continue with configured alternatives if the user asked for research rather than debugging.
|
|
98
|
+
|
|
99
|
+
## Guardrails
|
|
100
|
+
|
|
101
|
+
- Do not scrape browsers or websites when a Findo provider can answer the task.
|
|
102
|
+
- Do not use `--filter` or `--search-db` outside `findo zhihu web`.
|
|
103
|
+
- Do not treat `findo sources --json` as proof that credentials work; it is only source inventory.
|
|
104
|
+
- Do not present one provider's output as verified fact when sources conflict.
|
|
105
|
+
- Do not expand a narrow question into broad trend research unless the user asks for topic discovery.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": 1,
|
|
4
|
+
"prompt": "搜一下知乎,帮我找 10 个反直觉、颠覆认知的程序员话题,看看热门回答都在说什么。",
|
|
5
|
+
"expected": "Uses findo zhihu or findo zhihu web with JSON output, summarizes topic candidates with sources, and separates evidence from inference."
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"id": 2,
|
|
9
|
+
"prompt": "帮我检查当前 findo 是否已经配置好,分别用最小 limit 测一下知乎、Bocha 和火山引擎能不能正常返回,但不要读取或输出任何密钥。",
|
|
10
|
+
"expected": "Checks version and redacted config, runs minimal provider smoke calls with --limit 1, reports provider statuses, and avoids reading or exposing secrets."
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"id": 3,
|
|
14
|
+
"prompt": "我想调研一个中文互联网话题,先用 Bocha 查全网,再用火山引擎给一个直答,最后告诉我哪些结论不确定。",
|
|
15
|
+
"expected": "Runs narrow Bocha and Volcengine queries with --json, cross-checks claims, reports URLs and uncertainty, and preserves provider failures if any."
|
|
16
|
+
}
|
|
17
|
+
]
|